From c8db4f2b6aa7103ce3bd86c1c0378cff0f7e00ec Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Thu, 15 Sep 2022 17:51:26 +0200 Subject: [PATCH 01/79] [Lens] Add accessibility and some functional tests for annotations (#140417) * :white_check_mark: Add accessibility tests for more layer types * :recycle: Add index number to layer removal button test id * :white_check_mark: Add more missing dataviews tests * :sparkles: Add annotation helpers + refactor combobox option selection code * :white_check_mark: Re-align test id using lens prefix * :white_check_mark: Add basic functional test for query annotation * :recycle: Always use index for remove layer test id * :recycle: Small refactor * :bug: Fix new queryinput changes --- .../config_panel/config_panel.test.tsx | 6 +- .../config_panel/layer_panel.test.tsx | 8 +- .../config_panel/remove_layer_button.tsx | 2 +- .../shared_components/filter_query_input.tsx | 3 + .../annotations_panel.tsx | 1 + .../annotations_config_panel/index.test.tsx | 6 +- .../query_annotation_panel.tsx | 3 +- .../tooltip_annotation_panel.tsx | 1 + x-pack/test/accessibility/apps/lens.ts | 10 + .../apps/lens/group3/annotations.ts | 23 +++ .../apps/lens/group3/error_handling.ts | 11 + .../fixtures/kbn_archiver/lens/errors.json | 195 ++++++++++++++++++ .../test/functional/page_objects/lens_page.ts | 89 +++++--- 13 files changed, 322 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx index 5c1b5c4d9d8a6..65c714c1731b8 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx @@ -166,7 +166,7 @@ describe('ConfigPanel', () => { .first() .instance(); act(() => { - instance.find('[data-test-subj="lnsLayerRemove"]').first().simulate('click'); + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().simulate('click'); }); instance.update(); act(() => { @@ -193,7 +193,7 @@ describe('ConfigPanel', () => { .first() .instance(); act(() => { - instance.find('[data-test-subj="lnsLayerRemove"]').at(0).simulate('click'); + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().simulate('click'); }); instance.update(); act(() => { @@ -219,7 +219,7 @@ describe('ConfigPanel', () => { .first() .instance(); act(() => { - instance.find('[data-test-subj="lnsLayerRemove"]').at(2).simulate('click'); + instance.find('[data-test-subj="lnsLayerRemove--1"]').first().simulate('click'); }); instance.update(); act(() => { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx index cb45519250a81..3b0f46e5e6157 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx @@ -137,7 +137,7 @@ describe('LayerPanel', () => { it('should show the reset button when single layer', async () => { const { instance } = await mountWithProvider(); expect( - instance.find('[data-test-subj="lnsLayerRemove"]').first().props()['aria-label'] + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().props()['aria-label'] ).toContain('Reset layer'); }); @@ -146,7 +146,7 @@ describe('LayerPanel', () => { ); expect( - instance.find('[data-test-subj="lnsLayerRemove"]').first().props()['aria-label'] + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().props()['aria-label'] ).toContain('Delete layer'); }); @@ -155,7 +155,7 @@ describe('LayerPanel', () => { delete layerPanelAttributes.activeVisualization.removeLayer; const { instance } = await mountWithProvider(); expect( - instance.find('[data-test-subj="lnsLayerRemove"]').first().props()['aria-label'] + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().props()['aria-label'] ).toContain('Reset visualization'); }); @@ -165,7 +165,7 @@ describe('LayerPanel', () => { ); act(() => { - instance.find('[data-test-subj="lnsLayerRemove"]').first().simulate('click'); + instance.find('[data-test-subj="lnsLayerRemove--0"]').first().simulate('click'); }); instance.update(); act(() => { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/remove_layer_button.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/remove_layer_button.tsx index 64c4d808f255a..651ad3f2526aa 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/remove_layer_button.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/remove_layer_button.tsx @@ -158,7 +158,7 @@ export function RemoveLayerButton({ size="xs" iconType={isOnlyLayer ? 'eraser' : 'trash'} color="danger" - data-test-subj="lnsLayerRemove" + data-test-subj={`lnsLayerRemove--${layerIndex}`} aria-label={ariaLabel} title={ariaLabel} onClick={() => { diff --git a/x-pack/plugins/lens/public/shared_components/filter_query_input.tsx b/x-pack/plugins/lens/public/shared_components/filter_query_input.tsx index db585f5f28204..9a2ec76d4c799 100644 --- a/x-pack/plugins/lens/public/shared_components/filter_query_input.tsx +++ b/x-pack/plugins/lens/public/shared_components/filter_query_input.tsx @@ -37,6 +37,7 @@ export function FilterQueryInput({ helpMessage, label = filterByLabel, initiallyOpen, + ['data-test-subj']: dataTestSubj, }: { inputFilter: Query | undefined; onChange: (query: Query) => void; @@ -44,6 +45,7 @@ export function FilterQueryInput({ helpMessage?: string | null; label?: string; initiallyOpen?: boolean; + ['data-test-subj']?: string; }) { const [filterPopoverOpen, setFilterPopoverOpen] = useState(Boolean(initiallyOpen)); const { inputValue: queryInput, handleInputChange: setQueryInput } = useDebouncedValue({ @@ -133,6 +135,7 @@ export function FilterQueryInput({ onChange={setQueryInput} isInvalid={!isQueryInputValid} onSubmit={() => {}} + data-test-subj={dataTestSubj} /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx index 5d68e29a88d08..8b36ee762a236 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx @@ -264,6 +264,7 @@ export const AnnotationsPanel = ( } }} fieldIsInvalid={!fieldIsValid} + data-test-subj="lnsXY-annotation-query-based-text-decoration-field-picker" autoFocus={!selectedField} /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx index 5514e3062213e..f405985748fd2 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx @@ -284,16 +284,16 @@ describe('AnnotationsPanel', () => { ); expect( - component.find('[data-test-subj="annotation-query-based-field-picker"]').exists() + component.find('[data-test-subj="lnsXY-annotation-query-based-field-picker"]').exists() ).toBeTruthy(); expect( - component.find('[data-test-subj="annotation-query-based-query-input"]').exists() + component.find('[data-test-subj="lnsXY-annotation-query-based-query-input"]').exists() ).toBeTruthy(); // The provided indexPattern has 2 date fields expect( component - .find('[data-test-subj="annotation-query-based-field-picker"]') + .find('[data-test-subj="lnsXY-annotation-query-based-field-picker"]') .at(0) .prop('options') ).toHaveLength(2); diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx index 69cd398c562bf..8bf926a70e402 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx @@ -84,6 +84,7 @@ export const ConfigPanelQueryAnnotation = ({ onChange={(query: Query) => { onChange({ filter: { type: 'kibana_query', ...query } }); }} + data-test-subj="lnsXY-annotation-query-based-query-input" indexPattern={currentIndexPattern} /> @@ -114,7 +115,7 @@ export const ConfigPanelQueryAnnotation = ({ } }} fieldIsInvalid={!fieldIsValid} - data-test-subj="annotation-query-based-field-picker" + data-test-subj="lnsXY-annotation-query-based-field-picker" /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/tooltip_annotation_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/tooltip_annotation_panel.tsx index c8ea7a0ed2ece..586d83b993b9c 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/tooltip_annotation_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/tooltip_annotation_panel.tsx @@ -198,6 +198,7 @@ export function TooltipSection({ onFieldSelectChange(choice, index); }} fieldIsInvalid={!fieldIsValid} + data-test-subj={`lnsXY-annotation-tooltip-field-picker--${index}`} autoFocus={isNew && value == null} /> diff --git a/x-pack/test/accessibility/apps/lens.ts b/x-pack/test/accessibility/apps/lens.ts index a48476f5ce5dc..4029cf7787551 100644 --- a/x-pack/test/accessibility/apps/lens.ts +++ b/x-pack/test/accessibility/apps/lens.ts @@ -160,6 +160,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await a11y.testAppSnapshot(); }); + it('lens XY chart with reference line layer', async () => { + await PageObjects.lens.createLayer('referenceLine'); + await a11y.testAppSnapshot(); + }); + + it('lens XY chart with annotations layer', async () => { + await PageObjects.lens.createLayer('annotations'); + await a11y.testAppSnapshot(); + }); + it('saves lens chart', async () => { await PageObjects.lens.save(lensChartName); await a11y.testAppSnapshot(); diff --git a/x-pack/test/functional/apps/lens/group3/annotations.ts b/x-pack/test/functional/apps/lens/group3/annotations.ts index e139677737b42..e090385dfc91a 100644 --- a/x-pack/test/functional/apps/lens/group3/annotations.ts +++ b/x-pack/test/functional/apps/lens/group3/annotations.ts @@ -78,5 +78,28 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.closeDimensionEditor(); await testSubjects.existOrFail('xyVisGroupedAnnotationIcon'); }); + + it('should add query annotation layer and allow edition', async () => { + await PageObjects.lens.removeLayer(1); + await PageObjects.lens.createLayer('annotations'); + + expect((await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`)).length).to.eql(2); + expect( + await ( + await testSubjects.find('lnsXY_xAnnotationsPanel > lns-dimensionTrigger') + ).getVisibleText() + ).to.eql('Event'); + await testSubjects.click('lnsXY_xAnnotationsPanel > lns-dimensionTrigger'); + await testSubjects.click('lnsXY_annotation_query'); + await PageObjects.lens.configureQueryAnnotation({ + queryString: '*', + timeField: 'utc_time', + textDecoration: { type: 'name' }, + extraFields: ['clientip'], + }); + await PageObjects.lens.closeDimensionEditor(); + + await testSubjects.existOrFail('xyVisGroupedAnnotationIcon'); + }); }); } diff --git a/x-pack/test/functional/apps/lens/group3/error_handling.ts b/x-pack/test/functional/apps/lens/group3/error_handling.ts index 794547fb96f05..4d63e6d12306c 100644 --- a/x-pack/test/functional/apps/lens/group3/error_handling.ts +++ b/x-pack/test/functional/apps/lens/group3/error_handling.ts @@ -64,6 +64,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.waitForMissingDataViewWarningDisappear(); await PageObjects.lens.waitForEmptyWorkspace(); }); + + it('works fine when the dataViews is missing for referenceLines and annotations', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName( + 'lnsXYWithReferenceLinesAndAnnotationsWithNonExistingDataView' + ); + await PageObjects.lens.clickVisualizeListItemTitle( + 'lnsXYWithReferenceLinesAndAnnotationsWithNonExistingDataView' + ); + await PageObjects.lens.waitForMissingDataViewWarning(); + }); }); }); } diff --git a/x-pack/test/functional/fixtures/kbn_archiver/lens/errors.json b/x-pack/test/functional/fixtures/kbn_archiver/lens/errors.json index 9ecc14164d863..49cfc4715ad4c 100644 --- a/x-pack/test/functional/fixtures/kbn_archiver/lens/errors.json +++ b/x-pack/test/functional/fixtures/kbn_archiver/lens/errors.json @@ -75,4 +75,199 @@ "type": "lens", "updated_at": "2021-10-19T13:41:04.038Z", "version": "WzU2NjEsMl0=" +} + +{ + "attributes": { + "description": "", + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "3c85b7f0-3227-43e7-88ac-9416c6311ebc": { + "columns": { + "951ad12c-8fae-4e81-964d-84827e387515": { + "label": "order_date", + "dataType": "date", + "operationType": "date_histogram", + "sourceField": "order_date", + "isBucketed": true, + "scale": "interval", + "params": { + "interval": "auto", + "includeEmptyRows": true, + "dropPartials": false + } + }, + "e311d921-2525-4fb1-9716-94fe787ad623": { + "label": "Count of records", + "dataType": "number", + "operationType": "count", + "isBucketed": false, + "scale": "ratio", + "sourceField": "___records___", + "params": { + "emptyAsNull": true + } + } + }, + "columnOrder": [ + "951ad12c-8fae-4e81-964d-84827e387515", + "e311d921-2525-4fb1-9716-94fe787ad623" + ], + "incompleteColumns": {} + }, + "5321ae4b-8f8a-4300-a9bc-ec7245e2cb0f": { + "columns": { + "735cacfd-52af-4ff9-afa5-0e14c1b7c7fd": { + "label": "Static value: 127.5", + "dataType": "number", + "operationType": "static_value", + "isStaticValue": true, + "isBucketed": false, + "scale": "ratio", + "params": { + "value": "127.5" + }, + "references": [] + } + }, + "columnOrder": [ + "735cacfd-52af-4ff9-afa5-0e14c1b7c7fd" + ], + "incompleteColumns": {} + } + } + } + + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "legend": { + "isVisible": true, + "position": "right" + }, + "valueLabels": "hide", + "fittingFunction": "None", + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "gridlinesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "preferredSeriesType": "bar_stacked", + "layers": [ + { + "layerId": "3c85b7f0-3227-43e7-88ac-9416c6311ebc", + "accessors": [ + "e311d921-2525-4fb1-9716-94fe787ad623" + ], + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "layerType": "data", + "xAccessor": "951ad12c-8fae-4e81-964d-84827e387515" + }, + { + "layerId": "5321ae4b-8f8a-4300-a9bc-ec7245e2cb0f", + "layerType": "referenceLine", + "accessors": [ + "735cacfd-52af-4ff9-afa5-0e14c1b7c7fd" + ], + "yConfig": [ + { + "forAccessor": "735cacfd-52af-4ff9-afa5-0e14c1b7c7fd", + "axisMode": "left" + } + ] + }, + { + "layerId": "396c620c-1b6b-4754-a8fa-7f0e830a825c", + "layerType": "annotations", + "annotations": [ + { + "label": "Event", + "type": "manual", + "key": { + "type": "point_in_time", + "timestamp": "2022-07-25T22:00:00.000Z" + }, + "icon": "triangle", + "id": "13354257-3cd4-46b5-9462-d3fbbab6a433" + }, + { + "type": "query", + "id": "06539b10-c487-4aba-bf21-761c014c8d60", + "label": "Event", + "key": { + "type": "point_in_time" + }, + "icon": "triangle", + "textVisibility": true, + "textField": "customer_gender", + "filter": { + "type": "kibana_query", + "query": "*", + "language": "kuery" + }, + "extraFields": [ + "category.keyword" + ] + } + ] + } + ] + } + }, + "title": "lnsXYWithReferenceLinesAndAnnotationsWithNonExistingDataView", + "visualizationType": "lnsXY" + }, + "coreMigrationVersion": "8.0.0", + "id": "3454af30-30e2-11ec-8dbc-f13e30d4f8ac1", + "migrationVersion": { + "lens": "8.0.0" + }, + "references": [ + { + "id": "nonExistingDataView", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "nonExistingDataView", + "name": "indexpattern-datasource-layer-3c85b7f0-3227-43e7-88ac-9416c6311ebc", + "type": "index-pattern" + }, + { + "id": "nonExistingDataView", + "name": "indexpattern-datasource-layer-5321ae4b-8f8a-4300-a9bc-ec7245e2cb0f", + "type": "index-pattern" + }, + { + "id": "nonExistingDataView", + "name": "xy-visualization-layer-396c620c-1b6b-4754-a8fa-7f0e830a825c", + "type": "index-pattern" + } + ], + "type": "lens", + "updated_at": "2021-10-19T13:41:04.038Z", + "version": "WzU2NjEsMl0=" } \ No newline at end of file diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 20412284aa92f..abcf958e87128 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -104,6 +104,55 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont }); }, + async selectOptionFromComboBox(testTargetId: string, name: string) { + const target = await testSubjects.find(testTargetId, 1000); + await comboBox.openOptionsList(target); + await comboBox.setElement(target, name); + }, + + async configureQueryAnnotation(opts: { + queryString: string; + timeField: string; + textDecoration?: { type: 'none' | 'name' | 'field'; textField?: string }; + extraFields?: string[]; + }) { + // type * in the query editor + const queryInput = await testSubjects.find('lnsXY-annotation-query-based-query-input'); + await queryInput.type(opts.queryString); + await testSubjects.click('indexPattern-filters-existingFilterTrigger'); + await this.selectOptionFromComboBox( + 'lnsXY-annotation-query-based-field-picker', + opts.timeField + ); + if (opts.textDecoration) { + await testSubjects.click(`lnsXY_textVisibility_${opts.textDecoration.type}`); + if (opts.textDecoration.textField) { + await this.selectOptionFromComboBox( + 'lnsXY-annotation-query-based-text-decoration-field-picker', + opts.textDecoration.textField + ); + } + } + if (opts.extraFields) { + for (const field of opts.extraFields) { + await this.addFieldToTooltip(field); + } + } + }, + + async addFieldToTooltip(fieldName: string) { + const lastIndex = ( + await find.allByCssSelector('[data-test-subj^="lnsXY-annotation-tooltip-field-picker"]') + ).length; + await retry.try(async () => { + await testSubjects.click('lnsXY-annotation-tooltip-add_field'); + await this.selectOptionFromComboBox( + `lnsXY-annotation-tooltip-field-picker--${lastIndex}`, + fieldName + ); + }); + }, + /** * Changes the specified dimension to the specified operation and (optinally) field. * @@ -150,9 +199,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont }); } if (opts.field) { - const target = await testSubjects.find('indexPattern-dimension-field'); - await comboBox.openOptionsList(target); - await comboBox.setElement(target, opts.field); + await this.selectOptionFromComboBox('indexPattern-dimension-field', opts.field); } if (opts.formula) { @@ -188,15 +235,17 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont isPreviousIncompatible?: boolean; }) { if (opts.operation) { - const target = await testSubjects.find('indexPattern-subFunction-selection-row'); - await comboBox.openOptionsList(target); - await comboBox.setElement(target, opts.operation); + await this.selectOptionFromComboBox( + 'indexPattern-subFunction-selection-row', + opts.operation + ); } if (opts.field) { - const target = await testSubjects.find('indexPattern-reference-field-selection-row'); - await comboBox.openOptionsList(target); - await comboBox.setElement(target, opts.field); + await this.selectOptionFromComboBox( + 'indexPattern-reference-field-selection-row', + opts.field + ); } }, @@ -588,10 +637,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont ).length; await retry.try(async () => { await testSubjects.click('indexPattern-terms-add-field'); - // count the number of defined terms - const target = await testSubjects.find(`indexPattern-dimension-field-${lastIndex}`, 1000); - await comboBox.openOptionsList(target); - await comboBox.setElement(target, field); + await this.selectOptionFromComboBox(`indexPattern-dimension-field-${lastIndex}`, field); }); }, @@ -608,7 +654,6 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont }); // count the number of defined terms const target = await testSubjects.find(`indexPattern-dimension-field-${lastIndex}`); - // await comboBox.openOptionsList(target); for (const field of fields) { await comboBox.setCustom(`indexPattern-dimension-field-${lastIndex}`, field); await comboBox.openOptionsList(target); @@ -661,9 +706,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await testSubjects.setValue('column-label-edit', label, { clearWithKeyboard: true }); }, async editDimensionFormat(format: string) { - const formatInput = await testSubjects.find('indexPattern-dimension-format'); - await comboBox.openOptionsList(formatInput); - await comboBox.setElement(formatInput, format); + await this.selectOptionFromComboBox('indexPattern-dimension-format', format); }, async editDimensionColor(color: string) { const colorPickerInput = await testSubjects.find('~indexPattern-dimension-colorPicker'); @@ -812,17 +855,15 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * Returns the number of layers visible in the chart configuration */ async getLayerCount() { - const elements = await testSubjects.findAll('lnsLayerRemove'); - return elements.length; + return (await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`)).length; }, /** * Adds a new layer to the chart, fails if the chart does not support new layers */ - async createLayer(layerType: string = 'data') { + async createLayer(layerType: 'data' | 'referenceLine' | 'annotations' = 'data') { await testSubjects.click('lnsLayerAddButton'); - const layerCount = (await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`)) - .length; + const layerCount = await this.getLayerCount(); await retry.waitFor('check for layer type support', async () => { const fasterChecks = await Promise.all([ @@ -1257,9 +1298,9 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont }, /** resets visualization/layer or removes a layer */ - async removeLayer() { + async removeLayer(index: number = 0) { await retry.try(async () => { - await testSubjects.click('lnsLayerRemove'); + await testSubjects.click(`lnsLayerRemove--${index}`); if (await testSubjects.exists('lnsLayerRemoveModal')) { await testSubjects.exists('lnsLayerRemoveConfirmButton'); await testSubjects.click('lnsLayerRemoveConfirmButton'); From 66ff2d0511104f1a7fae3b691d140ef53921230c Mon Sep 17 00:00:00 2001 From: Pablo Machado Date: Thu, 15 Sep 2022 17:52:08 +0200 Subject: [PATCH 02/79] Enhancements to Risk Tabs in Host & User Pages (#140270) --- api_docs/security_solution.devdocs.json | 6 +- .../common/experimental_features.ts | 3 - .../public/app/deep_links/index.ts | 3 - .../cti_details/host_risk_summary.test.tsx | 35 +--- .../cti_details/host_risk_summary.tsx | 26 ++- .../cti_details/threat_summary_view.test.tsx | 16 +- .../cti_details/threat_summary_view.tsx | 23 +-- .../event_details/cti_details/translations.ts | 37 ++-- .../cti_details/user_risk_summary.tsx | 67 +++++++ .../event_details/event_details.tsx | 11 +- .../event_details/use_risk_score_data.test.ts | 94 +++++++++ .../event_details/use_risk_score_data.ts | 77 ++++++++ .../common/components/header_page/title.tsx | 1 + .../common/components/header_page/types.ts | 2 + .../navigation/nav_item_beta_badge.tsx | 4 +- .../common/components/navigation/nav_links.ts | 1 + .../security_side_nav/security_side_nav.tsx | 1 + .../solution_grouped_nav_panel.tsx | 4 +- .../navigation/solution_grouped_nav/types.ts | 3 + .../navigation/tab_navigation/index.tsx | 4 +- .../navigation/tab_navigation/types.ts | 3 + .../common/components/navigation/types.ts | 6 + .../use_navigation_items.tsx | 9 +- .../public/common/links/types.ts | 6 + .../components/hosts_table/index.test.tsx | 15 +- .../hosts/components/hosts_table/index.tsx | 8 +- .../hosts/components/kpi_hosts/index.tsx | 4 +- .../security_solution/public/hosts/links.ts | 1 - .../public/hosts/pages/details/index.tsx | 5 +- .../hosts/pages/details/nav_tabs.test.tsx | 26 ++- .../public/hosts/pages/details/nav_tabs.tsx | 5 + .../public/hosts/pages/hosts.tsx | 6 +- .../public/hosts/pages/nav_tabs.tsx | 5 + .../components/landing_links_icons.tsx | 4 +- .../components/landing_links_images.tsx | 8 +- .../entity_analytics/header/index.test.tsx | 4 +- .../entity_analytics/header/index.tsx | 31 ++- .../host_risk_score/index.test.tsx | 39 ++-- .../host_risk_score/index.tsx | 21 +- .../user_risk_score/index.test.tsx | 39 ++-- .../user_risk_score/index.tsx | 21 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../components/host_overview/index.test.tsx | 152 +++++++------- .../components/host_overview/index.tsx | 63 +++--- .../__snapshots__/index.test.tsx.snap | 4 +- .../components/user_overview/index.test.tsx | 185 +++++++++--------- .../components/user_overview/index.tsx | 65 +++--- .../public/overview/links.ts | 11 +- .../overview/pages/entity_analytics.tsx | 11 +- .../public/overview/pages/translations.ts | 7 + .../risk_score/containers/all/index.test.tsx | 27 +-- .../risk_score/containers/all/index.tsx | 23 ++- .../public/risk_score/containers/index.ts | 13 +- .../risk_score/containers/kpi/index.tsx | 10 +- .../event_details/expandable_event.tsx | 4 - .../side_panel/event_details/flyout/body.tsx | 4 - .../side_panel/event_details/flyout/index.tsx | 34 ---- .../side_panel/event_details/helpers.tsx | 9 +- .../side_panel/event_details/index.test.tsx | 7 + .../side_panel/event_details/index.tsx | 34 ---- .../users/components/kpi_users/index.tsx | 4 +- .../security_solution/public/users/links.ts | 1 - .../public/users/pages/details/index.tsx | 5 +- .../public/users/pages/details/nav_tabs.tsx | 5 + .../public/users/pages/nav_tabs.tsx | 5 + .../public/users/pages/users.tsx | 7 +- .../factory/hosts/all/index.test.ts | 41 +--- .../factory/hosts/all/index.ts | 7 +- .../translations/translations/fr-FR.json | 2 - .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - .../test/security_solution_cypress/config.ts | 3 - .../threat_intelligence_cypress/config.ts | 2 - 73 files changed, 807 insertions(+), 630 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/event_details/cti_details/user_risk_summary.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.test.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.ts diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index f6e7dcb001687..de0462d8c99de 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -64,7 +64,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 entityAnalyticsDashboardEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly responseActionsConsoleEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly disableIsolationUIPendingStatuses: 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 socTrendsEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false, @@ -1095,7 +1095,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; entityAnalyticsDashboardEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; insightsRelatedAlertsByProcessAncestry: boolean; extendedRuleExecutionLoggingEnabled: boolean; socTrendsEnabled: 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; pendingActionResponsesWithAck: boolean; policyListEnabled: boolean; policyResponseInFleetEnabled: boolean; threatIntelligenceEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; insightsRelatedAlertsByProcessAncestry: boolean; extendedRuleExecutionLoggingEnabled: boolean; socTrendsEnabled: boolean; }>; }" ], "path": "x-pack/plugins/security_solution/server/config.ts", "deprecated": false, @@ -1141,4 +1141,4 @@ "misc": [], "objects": [] } -} \ No newline at end of file +} diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index cf0222e6f1faa..bc908da4b43e4 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -17,13 +17,10 @@ export const allowedExperimentalValues = Object.freeze({ excludePoliciesInFilterEnabled: false, kubernetesEnabled: true, disableIsolationUIPendingStatuses: false, - riskyHostsEnabled: false, - riskyUsersEnabled: false, pendingActionResponsesWithAck: true, policyListEnabled: true, policyResponseInFleetEnabled: true, threatIntelligenceEnabled: false, - entityAnalyticsDashboardEnabled: false, /** * This is used for enabling the end-to-end tests for the security_solution telemetry. diff --git a/x-pack/plugins/security_solution/public/app/deep_links/index.ts b/x-pack/plugins/security_solution/public/app/deep_links/index.ts index 6ac3a0aa7a3ff..99db764285ab7 100644 --- a/x-pack/plugins/security_solution/public/app/deep_links/index.ts +++ b/x-pack/plugins/security_solution/public/app/deep_links/index.ts @@ -173,7 +173,6 @@ export const securitySolutionsDeepLinks: SecuritySolutionDeepLink[] = [ title: ENTITY_ANALYTICS, path: ENTITY_ANALYTICS_PATH, features: [FEATURE.general], - experimentalKey: 'entityAnalyticsDashboardEnabled', isPremium: true, keywords: [ i18n.translate('xpack.securitySolution.search.entityAnalytics', { @@ -296,7 +295,6 @@ export const securitySolutionsDeepLinks: SecuritySolutionDeepLink[] = [ defaultMessage: 'Host risk', }), path: `${HOSTS_PATH}/hostRisk`, - experimentalKey: 'riskyHostsEnabled', }, { id: SecurityPageName.sessions, @@ -386,7 +384,6 @@ export const securitySolutionsDeepLinks: SecuritySolutionDeepLink[] = [ defaultMessage: 'User risk', }), path: `${USERS_PATH}/userRisk`, - experimentalKey: 'riskyUsersEnabled', }, { id: SecurityPageName.usersEvents, diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.test.tsx index 0c6cf454e73ee..2320b85113c3c 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.test.tsx @@ -9,9 +9,9 @@ import React from 'react'; import { render } from '@testing-library/react'; import { TestProviders } from '../../../mock'; -import { NO_HOST_RISK_DATA_DESCRIPTION } from './translations'; import { HostRiskSummary } from './host_risk_summary'; import { RiskSeverity } from '../../../../../common/search_strategy'; +import { getEmptyValue } from '../../empty_value'; describe('HostRiskSummary', () => { it('renders host risk data', () => { @@ -60,36 +60,7 @@ describe('HostRiskSummary', () => { expect(getByTestId('loading')).toBeInTheDocument(); }); - it('renders no host data message when module is diabled', () => { - const hostRisk = { - loading: false, - isModuleEnabled: false, - result: [ - { - '@timestamp': '1641902530', - host: { - name: 'test-host-name', - risk: { - multipliers: [], - calculated_score_norm: 9999, - calculated_level: RiskSeverity.low, - rule_risks: [], - }, - }, - }, - ], - }; - - const { getByText } = render( - - - - ); - - expect(getByText(NO_HOST_RISK_DATA_DESCRIPTION)).toBeInTheDocument(); - }); - - it('renders no host data message when there is no host data', () => { + it('renders empty value when there is no host data', () => { const hostRisk = { loading: false, isModuleEnabled: true, @@ -102,6 +73,6 @@ describe('HostRiskSummary', () => { ); - expect(getByText(NO_HOST_RISK_DATA_DESCRIPTION)).toBeInTheDocument(); + expect(getByText(getEmptyValue())).toBeInTheDocument(); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.tsx index 970656933b938..536d77c8c8319 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/host_risk_summary.tsx @@ -6,12 +6,13 @@ */ import React from 'react'; -import { EuiLoadingSpinner, EuiPanel, EuiSpacer, EuiLink, EuiText } from '@elastic/eui'; +import { EuiLoadingSpinner, EuiPanel, EuiLink } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import * as i18n from './translations'; import { EnrichedDataRow, ThreatSummaryPanelHeader } from './threat_summary_view'; import { RiskScore } from '../../severity/common'; import type { HostRisk } from '../../../../risk_score/containers'; +import { getEmptyValue } from '../../empty_value'; import { RISKY_HOSTS_DOC_LINK } from '../../../../../common/constants'; const HostRiskSummaryComponent: React.FC<{ @@ -41,24 +42,19 @@ const HostRiskSummaryComponent: React.FC<{ {hostRisk.loading && } - {!hostRisk.loading && (!hostRisk.isModuleEnabled || hostRisk.result?.length === 0) && ( - <> - - - {i18n.NO_HOST_RISK_DATA_DESCRIPTION} - - - )} - - {hostRisk.isModuleEnabled && hostRisk.result && hostRisk.result.length > 0 && ( + {!hostRisk.loading && ( <> + hostRisk.result && hostRisk.result.length > 0 ? ( + + ) : ( + getEmptyValue() + ) } /> diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.test.tsx index b87c96c34632a..23e1da2dde8c0 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.test.tsx @@ -27,6 +27,14 @@ jest.mock('../../../lib/kibana', () => ({ jest.mock('../table/action_cell', () => ({ ActionCell: () => <> })); jest.mock('../table/field_name_cell'); +const RISK_SCORE_DATA_ROWS = 2; + +const EMPTY_RISK_SCORE = { + loading: false, + isModuleEnabled: true, + result: [], +}; + describe('ThreatSummaryView', () => { const eventId = '5d1d53da502f56aacc14c3cb5c669363d102b31f99822e5d369d4804ed370a31'; const timelineId = 'detections-page'; @@ -38,6 +46,7 @@ describe('ThreatSummaryView', () => { buildEventEnrichmentMock({ 'matched.id': ['test.id'], 'matched.field': ['test.field'] }), buildEventEnrichmentMock({ 'matched.id': ['other.id'], 'matched.field': ['other.field'] }), ]; + const { getByText, getAllByTestId } = render( { enrichments={enrichments} eventId={eventId} timelineId={timelineId} - hostRisk={null} + hostRisk={EMPTY_RISK_SCORE} + userRisk={EMPTY_RISK_SCORE} /> ); expect(getByText('Enriched with Threat Intelligence')).toBeInTheDocument(); - expect(getAllByTestId('EnrichedDataRow')).toHaveLength(enrichments.length); + expect(getAllByTestId('EnrichedDataRow')).toHaveLength( + enrichments.length + RISK_SCORE_DATA_ROWS + ); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx index a7a371e60cf9e..866d7ae0a6c39 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/threat_summary_view.tsx @@ -26,8 +26,9 @@ import type { TimelineEventsDetailsItem, } from '../../../../../common/search_strategy'; import { HostRiskSummary } from './host_risk_summary'; +import { UserRiskSummary } from './user_risk_summary'; import { EnrichmentSummary } from './enrichment_summary'; -import type { HostRisk } from '../../../../risk_score/containers'; +import type { HostRisk, UserRisk } from '../../../../risk_score/containers'; const UppercaseEuiTitle = styled(EuiTitle)` text-transform: uppercase; @@ -125,7 +126,8 @@ const ThreatSummaryViewComponent: React.FC<{ enrichments: CtiEnrichment[]; eventId: string; timelineId: string; - hostRisk: HostRisk | null; + hostRisk: HostRisk; + userRisk: UserRisk; isDraggable?: boolean; isReadOnly?: boolean; }> = ({ @@ -135,13 +137,10 @@ const ThreatSummaryViewComponent: React.FC<{ eventId, timelineId, hostRisk, + userRisk, isDraggable, isReadOnly, }) => { - if (!hostRisk && enrichments.length === 0) { - return null; - } - return ( <> @@ -152,11 +151,13 @@ const ThreatSummaryViewComponent: React.FC<{ - {hostRisk && ( - - - - )} + + + + + + + = ({ userRisk }) => ( + <> + + + + + ), + }} + /> + } + /> + + {userRisk.loading && } + + {!userRisk.loading && ( + <> + 0 ? ( + + ) : ( + getEmptyValue() + ) + } + /> + + )} + + +); + +export const UserRiskSummary = React.memo(UserRiskSummaryComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx index 11ca04b1224de..92f4c57964e10 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx @@ -40,8 +40,8 @@ import { EnrichmentRangePicker } from './cti_details/enrichment_range_picker'; import { Reason } from './reason'; import { InvestigationGuideView } from './investigation_guide_view'; import { Overview } from './overview'; -import type { HostRisk } from '../../../risk_score/containers'; import { Insights } from './insights/insights'; +import { useRiskScoreData } from './use_risk_score_data'; type EventViewTab = EuiTabbedContentTab; @@ -67,7 +67,6 @@ interface Props { rawEventData: object | undefined; timelineTabType: TimelineTabs | 'flyout'; timelineId: string; - hostRisk: HostRisk | null; handleOnEventClosed: () => void; isReadOnly?: boolean; } @@ -111,7 +110,6 @@ const EventDetailsComponent: React.FC = ({ rawEventData, timelineId, timelineTabType, - hostRisk, handleOnEventClosed, isReadOnly, }) => { @@ -148,6 +146,8 @@ const EventDetailsComponent: React.FC = ({ const enrichmentCount = allEnrichments.length; + const { hostRisk, userRisk, isLicenseValid } = useRiskScoreData(data); + const summaryTab: EventViewTab | undefined = useMemo( () => isAlert @@ -193,10 +193,11 @@ const EventDetailsComponent: React.FC = ({ isReadOnly={isReadOnly} /> - {(enrichmentCount > 0 || hostRisk) && ( + {enrichmentCount > 0 && isLicenseValid && ( = ({ goToTableTab, handleOnEventClosed, isReadOnly, + userRisk, + isLicenseValid, ] ); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.test.ts b/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.test.ts new file mode 100644 index 0000000000000..4dee4aeb3008d --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.test.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { TestProviders } from '../../mock'; +import { ONLY_FIRST_ITEM_PAGINATION, useRiskScoreData } from './use_risk_score_data'; +import { useUserRiskScore, useHostRiskScore } from '../../../risk_score/containers'; +import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; + +const mockUseUserRiskScore = useUserRiskScore as jest.Mock; +const mockUseHostRiskScore = useHostRiskScore as jest.Mock; +const mockUseBasicDataFromDetailsData = useBasicDataFromDetailsData as jest.Mock; +jest.mock('../../../risk_score/containers'); +jest.mock('../../../timelines/components/side_panel/event_details/helpers'); +const defaultResult = { + data: [], + inspect: {}, + isInspected: false, + isLicenseValid: true, + isModuleEnabled: true, + refetch: () => {}, + totalCount: 0, +}; +const defaultRisk = { + loading: false, + isModuleEnabled: true, + result: [], +}; + +const defaultArgs = [ + { + field: 'host.name', + isObjectArray: false, + }, +]; + +describe('useRiskScoreData', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseUserRiskScore.mockReturnValue([false, defaultResult]); + mockUseHostRiskScore.mockReturnValue([false, defaultResult]); + mockUseBasicDataFromDetailsData.mockReturnValue({ + hostName: 'host', + userName: 'user', + }); + }); + test('returns expected default values', () => { + const { result } = renderHook(() => useRiskScoreData(defaultArgs), { + wrapper: TestProviders, + }); + expect(result.current).toEqual({ + hostRisk: defaultRisk, + userRisk: defaultRisk, + isLicenseValid: true, + }); + }); + + test('builds filter query for risk score hooks', () => { + renderHook(() => useRiskScoreData(defaultArgs), { + wrapper: TestProviders, + }); + expect(mockUseUserRiskScore).toHaveBeenCalledWith({ + filterQuery: { terms: { 'user.name': ['user'] } }, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: false, + }); + expect(mockUseHostRiskScore).toHaveBeenCalledWith({ + filterQuery: { terms: { 'host.name': ['host'] } }, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: false, + }); + }); + + test('skips risk score hooks with no entity name', () => { + mockUseBasicDataFromDetailsData.mockReturnValue({ hostName: undefined, userName: undefined }); + renderHook(() => useRiskScoreData(defaultArgs), { + wrapper: TestProviders, + }); + expect(mockUseUserRiskScore).toHaveBeenCalledWith({ + filterQuery: undefined, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: true, + }); + expect(mockUseHostRiskScore).toHaveBeenCalledWith({ + filterQuery: undefined, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: true, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.ts b/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.ts new file mode 100644 index 0000000000000..eb462671afd94 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/event_details/use_risk_score_data.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useMemo } from 'react'; +import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import type { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; +import { buildHostNamesFilter, buildUserNamesFilter } from '../../../../common/search_strategy'; +import type { HostRisk, UserRisk } from '../../../risk_score/containers'; +import { useUserRiskScore, useHostRiskScore } from '../../../risk_score/containers'; + +export const ONLY_FIRST_ITEM_PAGINATION = { + cursorStart: 0, + querySize: 1, +}; + +export const useRiskScoreData = (data: TimelineEventsDetailsItem[]) => { + const { hostName, userName } = useBasicDataFromDetailsData(data); + + const hostNameFilterQuery = useMemo( + () => (hostName ? buildHostNamesFilter([hostName]) : undefined), + [hostName] + ); + + const [ + hostRiskLoading, + { + data: hostRiskData, + isLicenseValid: isHostLicenseValid, + isModuleEnabled: isHostRiskModuleEnabled, + }, + ] = useHostRiskScore({ + filterQuery: hostNameFilterQuery, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: !hostNameFilterQuery, + }); + + const hostRisk: HostRisk = useMemo( + () => ({ + loading: hostRiskLoading, + isModuleEnabled: isHostRiskModuleEnabled, + result: hostRiskData, + }), + [hostRiskData, hostRiskLoading, isHostRiskModuleEnabled] + ); + + const userNameFilterQuery = useMemo( + () => (userName ? buildUserNamesFilter([userName]) : undefined), + [userName] + ); + + const [ + userRiskLoading, + { + data: userRiskData, + isLicenseValid: isUserLicenseValid, + isModuleEnabled: isUserRiskModuleEnabled, + }, + ] = useUserRiskScore({ + filterQuery: userNameFilterQuery, + pagination: ONLY_FIRST_ITEM_PAGINATION, + skip: !userNameFilterQuery, + }); + + const userRisk: UserRisk = useMemo( + () => ({ + loading: userRiskLoading, + isModuleEnabled: isUserRiskModuleEnabled, + result: userRiskData, + }), + [userRiskLoading, isUserRiskModuleEnabled, userRiskData] + ); + + return { userRisk, hostRisk, isLicenseValid: isHostLicenseValid && isUserLicenseValid }; +}; diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/title.tsx b/x-pack/plugins/security_solution/public/common/components/header_page/title.tsx index 0353d4f76c1c9..0f54c6f579a9f 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_page/title.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_page/title.tsx @@ -59,6 +59,7 @@ const TitleComponent: React.FC = ({ draggableArguments, title, badgeOptio label={badgeOptions.text} tooltipContent={badgeOptions.tooltip} tooltipPosition="bottom" + size={badgeOptions.size} /> ) : ( diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/types.ts b/x-pack/plugins/security_solution/public/common/components/header_page/types.ts index 358a8118e5cc3..698178480045d 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_page/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/header_page/types.ts @@ -6,6 +6,7 @@ */ import type { EuiBadgeProps } from '@elastic/eui'; +import type { BetaBadgeSize } from '@elastic/eui/src/components/badge/beta_badge/beta_badge'; import type React from 'react'; export type TitleProp = string | React.ReactNode; @@ -19,4 +20,5 @@ export interface BadgeOptions { text: React.ReactNode; tooltip?: React.ReactNode; color?: EuiBadgeProps['color']; + size?: BetaBadgeSize; } diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx index ddccbee1546d3..bef5ba4d8362d 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx @@ -10,12 +10,12 @@ import { css } from '@emotion/react'; import { EuiBetaBadge, useEuiTheme } from '@elastic/eui'; import { BETA } from '../../translations'; -export const NavItemBetaBadge = () => { +export const NavItemBetaBadge = ({ text }: { text?: string }) => { const { euiTheme } = useEuiTheme(); return ( ...(link.landingImage != null ? { image: link.landingImage } : {}), ...(link.skipUrlState != null ? { skipUrlState: link.skipUrlState } : {}), ...(link.isBeta != null ? { isBeta: link.isBeta } : {}), + ...(link.betaOptions != null ? { betaOptions: link.betaOptions } : {}), ...(link.links && link.links.length ? { links: formatNavLinkItems(link.links), diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx index 4b7c58ce2ba0b..ce239c34eae4a 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx @@ -78,6 +78,7 @@ const useFormatSideNavItem = (): FormatSideNavItems => { label: current.title, description: current.description, isBeta: current.isBeta, + betaOptions: current.betaOptions, ...getSecuritySolutionLinkProps({ deepLinkId: current.id }), }); } diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/solution_grouped_nav_panel.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/solution_grouped_nav_panel.tsx index 4516f103f9167..2c7dbf4074983 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/solution_grouped_nav_panel.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/solution_grouped_nav_panel.tsx @@ -156,7 +156,7 @@ const SolutionNavPanelCategories: React.FC = ({ const SolutionNavPanelItems: React.FC = ({ items, onClose }) => ( <> - {items.map(({ id, href, onClick, label, description, isBeta }) => ( + {items.map(({ id, href, onClick, label, description, isBeta, betaOptions }) => ( = ({ items, on }} > {label} - {isBeta && } + {isBeta && } {description} diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/types.ts b/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/types.ts index f9e186930e247..f47e1755cc796 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/navigation/solution_grouped_nav/types.ts @@ -18,6 +18,9 @@ export interface DefaultSideNavItem { items?: DefaultSideNavItem[]; categories?: LinkCategories; isBeta?: boolean; + betaOptions?: { + text: string; + }; } export interface CustomSideNavItem { diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx index d364a5526a226..abc4350eb83fa 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx @@ -23,6 +23,7 @@ const TabNavigationItemComponent = ({ name, isSelected, isBeta, + betaOptions, }: TabNavigationItemProps) => { const { getAppUrl, navigateTo } = useNavigation(); @@ -47,7 +48,7 @@ const TabNavigationItemComponent = ({ isSelected={isSelected} href={appHref} onClick={handleClick} - append={isBeta && } + append={isBeta && } > {name} @@ -92,6 +93,7 @@ export const TabNavigationComponent: React.FC = ({ navTabs, disabled={tab.disabled} isSelected={isSelected} isBeta={tab.isBeta} + betaOptions={tab.betaOptions} /> ); }), diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts b/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts index fa8d0a0e3fa17..2e687d09f290e 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts @@ -21,4 +21,7 @@ export interface TabNavigationItemProps { name: string; isSelected: boolean; isBeta?: boolean; + betaOptions?: { + text: string; + }; } diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/types.ts b/x-pack/plugins/security_solution/public/common/components/navigation/types.ts index 5a4c346be2e12..84341f5321169 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/navigation/types.ts @@ -62,6 +62,9 @@ export interface NavTab { urlKey?: UrlStateType; pageId?: SecurityPageName; isBeta?: boolean; + betaOptions?: { + text: string; + }; } export const securityNavKeys = [ SecurityPageName.alerts, @@ -113,4 +116,7 @@ export interface NavLinkItem { title: string; skipUrlState?: boolean; isBeta?: boolean; + betaOptions?: { + text: string; + }; } diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx index 2a8d977760cbf..83a8e97f0a65e 100644 --- a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx +++ b/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_navigation_items.tsx @@ -77,9 +77,7 @@ function usePrimaryNavigationItemsToDisplay(navTabs: Record) { const isPolicyListEnabled = useIsExperimentalFeatureEnabled('policyListEnabled'); const mlCapabilities = useMlCapabilities(); const hasMlPermissions = hasMlLicense(mlCapabilities) && hasMlUserPermissions(mlCapabilities); - const isEntityAnalyticsDashboardEnabled = useIsExperimentalFeatureEnabled( - 'entityAnalyticsDashboardEnabled' - ); + const uiCapabilities = useKibana().services.application.capabilities; return useMemo( () => @@ -99,9 +97,7 @@ function usePrimaryNavigationItemsToDisplay(navTabs: Record) { ...(navTabs[SecurityPageName.kubernetes] != null ? [navTabs[SecurityPageName.kubernetes]] : []), - ...(isEntityAnalyticsDashboardEnabled && hasMlPermissions - ? [navTabs[SecurityPageName.entityAnalytics]] - : []), + ...(hasMlPermissions ? [navTabs[SecurityPageName.entityAnalytics]] : []), ], }, { @@ -163,7 +159,6 @@ function usePrimaryNavigationItemsToDisplay(navTabs: Record) { [ uiCapabilities.siem.show, navTabs, - isEntityAnalyticsDashboardEnabled, hasCasesReadPermissions, canSeeHostIsolationExceptions, isPolicyListEnabled, diff --git a/x-pack/plugins/security_solution/public/common/links/types.ts b/x-pack/plugins/security_solution/public/common/links/types.ts index 210a5f4a59754..f9a2c5776262f 100644 --- a/x-pack/plugins/security_solution/public/common/links/types.ts +++ b/x-pack/plugins/security_solution/public/common/links/types.ts @@ -84,6 +84,12 @@ export interface LinkItem { * Displays the "Beta" badge. Defaults to false. */ isBeta?: boolean; + /** + * Customize the "Beta" badge content. + */ + betaOptions?: { + text: string; + }; /** * Icon that is displayed on menu navigation landing page. * Only required for pages that are displayed inside a landing page. diff --git a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx index a5ebfadd071eb..1da0711f21aa7 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx @@ -24,7 +24,6 @@ import { HostsTableType } from '../../store/model'; import { HostsTable } from '.'; import { mockData } from './mock'; import { render } from '@testing-library/react'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; jest.mock('../../../common/lib/kibana'); @@ -45,7 +44,11 @@ jest.mock('../../../common/components/query_bar', () => ({ jest.mock('../../../common/components/link_to'); -jest.mock('../../../common/hooks/use_experimental_features'); +const mockUseMlCapabilities = jest.fn(); + +jest.mock('../../../common/components/ml/hooks/use_ml_capabilities', () => ({ + useMlCapabilities: () => mockUseMlCapabilities(), +})); describe('Hosts Table', () => { const loadPage = jest.fn(); @@ -81,8 +84,8 @@ describe('Hosts Table', () => { expect(wrapper.find('HostsTable')).toMatchSnapshot(); }); - test('it renders "Host Risk classfication" column when "riskyHostsEnabled" feature flag is enabled', () => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + test('it renders "Host Risk classfication" column when "isPlatinumOrTrialLicense" is truthy', () => { + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); const { queryByTestId } = render( @@ -104,8 +107,8 @@ describe('Hosts Table', () => { expect(queryByTestId('tableHeaderCell_node.risk_4')).toBeInTheDocument(); }); - test("it doesn't renders 'Host Risk classfication' column when 'riskyHostsEnabled' feature flag is disabled", () => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); + test("it doesn't renders 'Host Risk classfication' column when 'isPlatinumOrTrialLicense' is falsy", () => { + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: false }); const { queryByTestId } = render( diff --git a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.tsx b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.tsx index 6b701b7f7a8ef..4aeb80bbdeecd 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.tsx @@ -27,10 +27,10 @@ import type { import { HostsFields } from '../../../../common/search_strategy/security_solution/hosts'; import type { Direction, RiskSeverity } from '../../../../common/search_strategy'; import type { HostEcs, OsEcs } from '../../../../common/ecs/host'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; import { SecurityPageName } from '../../../../common/constants'; import { HostsTableType } from '../../store/model'; import { useNavigateTo } from '../../../common/lib/kibana/hooks'; +import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; const tableType = hostsModel.HostsTableType.hosts; @@ -132,7 +132,7 @@ const HostsTableComponent: React.FC = ({ }, [direction, sortField, type, dispatch] ); - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; const dispatchSeverityUpdate = useCallback( (s: RiskSeverity) => { @@ -151,8 +151,8 @@ const HostsTableComponent: React.FC = ({ ); const hostsColumns = useMemo( - () => getHostsColumns(riskyHostsFeatureEnabled, dispatchSeverityUpdate), - [dispatchSeverityUpdate, riskyHostsFeatureEnabled] + () => getHostsColumns(isPlatinumOrTrialLicense, dispatchSeverityUpdate), + [dispatchSeverityUpdate, isPlatinumOrTrialLicense] ); const sorting = useMemo(() => getSorting(sortField, direction), [sortField, direction]); diff --git a/x-pack/plugins/security_solution/public/hosts/components/kpi_hosts/index.tsx b/x-pack/plugins/security_solution/public/hosts/components/kpi_hosts/index.tsx index f7c9352f3a951..ea7e12b75a5f8 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/kpi_hosts/index.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/kpi_hosts/index.tsx @@ -18,11 +18,11 @@ import { RISKY_HOSTS_DOC_LINK } from '../../../../common/constants'; export const HostsKpiComponent = React.memo( ({ filterQuery, from, indexNames, to, setQuery, skip, updateDateRange }) => { - const [_, { isModuleEnabled }] = useHostRiskScore(); + const [loading, { isLicenseValid, isModuleEnabled }] = useHostRiskScore(); return ( <> - {isModuleEnabled === false && ( + {isLicenseValid && !isModuleEnabled && !loading && ( <> = ({ detailName, hostDeta dispatch(setHostDetailsTablesActivePageToZero()); }, [dispatch, detailName]); - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; return ( <> @@ -206,7 +205,7 @@ const HostDetailsComponent: React.FC = ({ detailName, hostDeta diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx index 442f16dc444fe..3dcebfc19706f 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx @@ -52,21 +52,31 @@ describe('navTabsHostDetails', () => { expect(tabs).toHaveProperty(HostsTableType.risk); }); - test('it should display Beta badge for sessions tab only', () => { + test('it should display Beta badge for sessions tab', () => { const tabs = navTabsHostDetails({ hasMlUserPermissions: false, isRiskyHostsEnabled: true, hostName: mockHostName, }); - Object.values(tabs).forEach((item) => { - const tab = item as TabNavigationItemProps; + const sessionsTab = Object.values(tabs).find( + (item) => item.id === HostsTableType.sessions + ); - if (tab.id === HostsTableType.sessions) { - expect(tab.isBeta).toEqual(true); - } else { - expect(tab.isBeta).toEqual(undefined); - } + expect(sessionsTab?.isBeta).toEqual(true); + }); + + test('it should display Beta badge for risk tab', () => { + const tabs = navTabsHostDetails({ + hasMlUserPermissions: false, + isRiskyHostsEnabled: true, + hostName: mockHostName, }); + + const riskTab = Object.values(tabs).find( + (item) => item.id === HostsTableType.risk + ); + + expect(riskTab?.isBeta).toEqual(true); }); }); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx index d070b19035dfe..7113131e3c3fc 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx @@ -10,6 +10,7 @@ import * as i18n from '../translations'; import type { HostDetailsNavTab } from './types'; import { HostsTableType } from '../../store/model'; import { HOSTS_PATH } from '../../../../common/constants'; +import { TECHNICAL_PREVIEW } from '../../../overview/pages/translations'; const getTabsOnHostDetailsUrl = (hostName: string, tabName: HostsTableType) => `${HOSTS_PATH}/name/${hostName}/${tabName}`; @@ -55,6 +56,10 @@ export const navTabsHostDetails = ({ name: i18n.NAVIGATION_HOST_RISK_TITLE, href: getTabsOnHostDetailsUrl(hostName, HostsTableType.risk), disabled: false, + isBeta: true, + betaOptions: { + text: TECHNICAL_PREVIEW, + }, }, [HostsTableType.sessions]: { id: HostsTableType.sessions, diff --git a/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx b/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx index 9d6687a771f36..f853502c22666 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx @@ -55,8 +55,6 @@ import { useSourcererDataView } from '../../common/containers/sourcerer'; import { useDeepEqualSelector, useShallowEqualSelector } from '../../common/hooks/use_selector'; import { useInvalidFilterQuery } from '../../common/hooks/use_invalid_filter_query'; import { ID } from '../containers/hosts'; -import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; - import { LandingPageComponent } from '../../common/components/landing_page'; import { hostNameExistsFilter } from '../../common/components/visualization_actions/utils'; @@ -146,8 +144,6 @@ const HostsComponent = () => { [indexPattern, query, tabsFilters, uiSettings] ); - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); - useInvalidFilterQuery({ id: ID, filterQuery, kqlError, query, startDate: from, endDate: to }); const onSkipFocusBeforeEventsTable = useCallback(() => { @@ -208,7 +204,7 @@ const HostsComponent = () => { diff --git a/x-pack/plugins/security_solution/public/hosts/pages/nav_tabs.tsx b/x-pack/plugins/security_solution/public/hosts/pages/nav_tabs.tsx index e8ec705bd84d9..ba278ad7fdb59 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/nav_tabs.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/nav_tabs.tsx @@ -10,6 +10,7 @@ import * as i18n from './translations'; import { HostsTableType } from '../store/model'; import type { HostsNavTab } from './navigation/types'; import { HOSTS_PATH } from '../../../common/constants'; +import { TECHNICAL_PREVIEW } from '../../overview/pages/translations'; const getTabsOnHostsUrl = (tabName: HostsTableType) => `${HOSTS_PATH}/${tabName}`; @@ -51,6 +52,10 @@ export const navTabsHosts = ({ name: i18n.NAVIGATION_HOST_RISK_TITLE, href: getTabsOnHostsUrl(HostsTableType.risk), disabled: false, + isBeta: true, + betaOptions: { + text: TECHNICAL_PREVIEW, + }, }, [HostsTableType.sessions]: { id: HostsTableType.sessions, diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx index b82ecc9215a05..7ccd58117b3b2 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx @@ -36,7 +36,7 @@ const StyledEuiTitle = styled(EuiTitle)` export const LandingLinksIcons: React.FC = ({ items }) => ( - {items.map(({ title, description, id, icon, isBeta }) => ( + {items.map(({ title, description, id, icon, isBeta, betaOptions }) => ( = ({ items }) {isBeta && ( - + )} diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx index b5479e0e6c5a9..ff7c791c01e32 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx @@ -57,7 +57,7 @@ const SecuritySolutionLink = withSecuritySolutionLink(Link); export const LandingLinksImages: React.FC = ({ items }) => ( - {items.map(({ title, description, image, id, isBeta }) => ( + {items.map(({ title, description, image, id, isBeta, betaOptions }) => ( {/* Empty onClick is to force hover style on `EuiPanel` */} @@ -78,7 +78,7 @@ export const LandingLinksImages: React.FC = ({ items }) => ( {title} - {isBeta && } + {isBeta && } @@ -114,7 +114,7 @@ const SecuritySolutionCard = withSecuritySolutionLink(PrimaryTitleCard); export const LandingImageCards: React.FC = React.memo(({ items }) => ( - {items.map(({ id, image, title, description, isBeta }) => ( + {items.map(({ id, image, title, description, isBeta, betaOptions }) => ( = React.memo(({ ite {title} - {isBeta && } + {isBeta && } } diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.test.tsx index feed7baf8819a..c7e7eb411d4f8 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.test.tsx @@ -24,8 +24,8 @@ const mockSeverityCount: SeverityCount = { [RiskSeverity.critical]: 99, }; -jest.mock('../../../../common/hooks/use_experimental_features', () => ({ - useIsExperimentalFeatureEnabled: () => true, +jest.mock('../../../../common/components/ml/hooks/use_ml_capabilities', () => ({ + useMlCapabilities: () => ({ isPlatinumOrTrialLicense: true, capabilities: {} }), })); jest.mock('../../../../risk_score/containers', () => { diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.tsx index 4ee2bab00f1db..f94c7d52f6fce 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/header/index.tsx @@ -9,6 +9,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle } from '@elastic/eui'; import styled from 'styled-components'; import { useDispatch } from 'react-redux'; import { sum } from 'lodash/fp'; +import { ML_PAGES, useMlHref } from '@kbn/ml-plugin/public'; import { useHostRiskScoreKpi, useUserRiskScoreKpi } from '../../../../risk_score/containers'; import { LinkAnchor, useGetSecuritySolutionLinkProps } from '../../../../common/components/links'; import { Direction, RiskScoreFields, RiskSeverity } from '../../../../../common/search_strategy'; @@ -20,9 +21,10 @@ import { hostsActions } from '../../../../hosts/store'; import { usersActions } from '../../../../users/store'; import { getTabsOnUsersUrl } from '../../../../common/components/link_to/redirect_to_users'; import { UsersTableType } from '../../../../users/store/model'; -import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useNotableAnomaliesSearch } from '../../../../common/components/ml/anomaly/use_anomalies_search'; import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useKibana } from '../../../../common/lib/kibana'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; const StyledEuiTitle = styled(EuiTitle)` color: ${({ theme: { eui } }) => eui.euiColorVis9}; @@ -35,8 +37,11 @@ export const EntityAnalyticsHeader = () => { const { data } = useNotableAnomaliesSearch({ skip: false, from, to }); const dispatch = useDispatch(); const getSecuritySolutionLinkProps = useGetSecuritySolutionLinkProps(); - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; + + const { + services: { ml, http }, + } = useKibana(); const [goToHostRiskTabFilterdByCritical, hostRiskTabUrl] = useMemo(() => { const { onClick, href } = getSecuritySolutionLinkProps({ @@ -85,13 +90,17 @@ export const EntityAnalyticsHeader = () => { const totalAnomalies = useMemo(() => sum(data.map(({ count }) => count)), [data]); + const jobsUrl = useMlHref(ml, http.basePath.get(), { + page: ML_PAGES.ANOMALY_DETECTION_JOBS_MANAGE, + }); + return ( - {riskyHostsFeatureEnabled && ( + {isPlatinumOrTrialLicense && ( - + {hostsSeverityCount[RiskSeverity.critical]} @@ -108,10 +117,10 @@ export const EntityAnalyticsHeader = () => { )} - {riskyUsersFeatureEnabled && ( + {isPlatinumOrTrialLicense && ( - + {usersSeverityCount[RiskSeverity.critical]} @@ -131,12 +140,16 @@ export const EntityAnalyticsHeader = () => { - + {totalAnomalies} - {i18n.ANOMALIES} + + + {i18n.ANOMALIES} + + diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.test.tsx index 156527bd11e11..4f4edd279a568 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.test.tsx @@ -11,6 +11,7 @@ import { TestProviders } from '../../../../common/mock'; import { EntityAnalyticsHostRiskScores } from '.'; import { RiskSeverity } from '../../../../../common/search_strategy'; import type { SeverityCount } from '../../../../common/components/severity/types'; +import { useHostRiskScore, useHostRiskScoreKpi } from '../../../../risk_score/containers'; const mockSeverityCount: SeverityCount = { [RiskSeverity.low]: 1, @@ -20,10 +21,6 @@ const mockSeverityCount: SeverityCount = { [RiskSeverity.critical]: 1, }; -jest.mock('../../../../common/hooks/use_experimental_features', () => ({ - useIsExperimentalFeatureEnabled: () => true, -})); - const mockUseQueryToggle = jest .fn() .mockReturnValue({ toggleStatus: false, setToggleStatus: jest.fn() }); @@ -32,30 +29,26 @@ jest.mock('../../../../common/containers/query_toggle', () => { useQueryToggle: () => mockUseQueryToggle(), }; }); - -const mockUseHostRiskScore = jest - .fn() - .mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: true }, - ]); -jest.mock('../../../../risk_score/containers', () => { - return { - useHostRiskScoreKpi: () => ({ severityCount: mockSeverityCount, loading: false }), - useHostRiskScore: (params: unknown) => mockUseHostRiskScore(params), - }; -}); +const defaultProps = { + data: undefined, + inspect: null, + refetch: () => {}, + isModuleEnabled: true, + isLicenseValid: true, +}; +const mockUseHostRiskScore = useHostRiskScore as jest.Mock; +const mockUseHostRiskScoreKpi = useHostRiskScoreKpi as jest.Mock; +jest.mock('../../../../risk_score/containers'); describe('EntityAnalyticsHostRiskScores', () => { beforeEach(() => { jest.clearAllMocks(); + mockUseHostRiskScoreKpi.mockReturnValue({ severityCount: mockSeverityCount, loading: false }); + mockUseHostRiskScore.mockReturnValue([false, defaultProps]); }); it('renders enable button when module is disable', () => { - mockUseHostRiskScore.mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: false }, - ]); + mockUseHostRiskScore.mockReturnValue([false, { ...defaultProps, isModuleEnabled: false }]); const { getByTestId } = render( @@ -66,10 +59,6 @@ describe('EntityAnalyticsHostRiskScores', () => { }); it("doesn't render enable button when module is enable", () => { - mockUseHostRiskScore.mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: true }, - ]); const { queryByTestId } = render( diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx index fa3cda0921c83..69881a1287155 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx @@ -40,7 +40,6 @@ import { useCheckSignalIndex } from '../../../../detections/containers/detection import { RiskScoreDonutChart } from '../common/risk_score_donut_chart'; import { BasicTableWithoutBorderBottom } from '../common/basic_table_without_border_bottom'; import { useEnableHostRiskFromUrl } from '../../../../common/hooks/use_enable_host_risk_from_url'; -import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; const TABLE_QUERY_ID = 'hostRiskDashboardTable'; @@ -56,7 +55,6 @@ export const EntityAnalyticsHostRiskScores = () => { const [selectedSeverity, setSelectedSeverity] = useState([]); const getSecuritySolutionLinkProps = useGetSecuritySolutionLinkProps(); const dispatch = useDispatch(); - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); const severityFilter = useMemo(() => { const [filter] = generateSeverityFilter(selectedSeverity, RiskScoreEntity.host); @@ -69,14 +67,15 @@ export const EntityAnalyticsHostRiskScores = () => { skip: !toggleStatus, }); - const [isTableLoading, { data, inspect, refetch, isModuleEnabled }] = useHostRiskScore({ - filterQuery: severityFilter, - skip: !toggleStatus, - pagination: { - cursorStart: 0, - querySize: 5, - }, - }); + const [isTableLoading, { data, inspect, refetch, isLicenseValid, isModuleEnabled }] = + useHostRiskScore({ + filterQuery: severityFilter, + skip: !toggleStatus, + pagination: { + cursorStart: 0, + querySize: 5, + }, + }); useQueryInspector({ queryId: TABLE_QUERY_ID, @@ -124,7 +123,7 @@ export const EntityAnalyticsHostRiskScores = () => { ); }, []); - if (!riskyHostsFeatureEnabled) { + if (!isLicenseValid) { return null; } diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.test.tsx index 030dbe51d74fc..6ddfd912e832f 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.test.tsx @@ -11,6 +11,7 @@ import { TestProviders } from '../../../../common/mock'; import { EntityAnalyticsUserRiskScores } from '.'; import { RiskSeverity } from '../../../../../common/search_strategy'; import type { SeverityCount } from '../../../../common/components/severity/types'; +import { useUserRiskScore, useUserRiskScoreKpi } from '../../../../risk_score/containers'; const mockSeverityCount: SeverityCount = { [RiskSeverity.low]: 1, @@ -20,10 +21,6 @@ const mockSeverityCount: SeverityCount = { [RiskSeverity.critical]: 1, }; -jest.mock('../../../../common/hooks/use_experimental_features', () => ({ - useIsExperimentalFeatureEnabled: () => true, -})); - const mockUseQueryToggle = jest .fn() .mockReturnValue({ toggleStatus: false, setToggleStatus: jest.fn() }); @@ -33,29 +30,27 @@ jest.mock('../../../../common/containers/query_toggle', () => { }; }); -const mockUseUserRiskScore = jest - .fn() - .mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: true }, - ]); -jest.mock('../../../../risk_score/containers', () => { - return { - useUserRiskScoreKpi: () => ({ severityCount: mockSeverityCount, loading: false }), - useUserRiskScore: (params: unknown) => mockUseUserRiskScore(params), - }; -}); +const defaultProps = { + data: undefined, + inspect: null, + refetch: () => {}, + isModuleEnabled: true, + isLicenseValid: true, +}; + +const mockUseUserRiskScore = useUserRiskScore as jest.Mock; +const mockUseUserRiskScoreKpi = useUserRiskScoreKpi as jest.Mock; +jest.mock('../../../../risk_score/containers'); describe('EntityAnalyticsUserRiskScores', () => { beforeEach(() => { jest.clearAllMocks(); + mockUseUserRiskScoreKpi.mockReturnValue({ severityCount: mockSeverityCount, loading: false }); + mockUseUserRiskScore.mockReturnValue([false, defaultProps]); }); it('renders enable button when module is disable', () => { - mockUseUserRiskScore.mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: false }, - ]); + mockUseUserRiskScore.mockReturnValue([false, { ...defaultProps, isModuleEnabled: false }]); const { getByTestId } = render( @@ -66,10 +61,6 @@ describe('EntityAnalyticsUserRiskScores', () => { }); it("doesn't render enable button when module is enable", () => { - mockUseUserRiskScore.mockReturnValue([ - false, - { data: undefined, inspect: null, refetch: () => {}, isModuleEnabled: true }, - ]); const { queryByTestId } = render( diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx index 68ed1082f4c05..e37235b9b1dfd 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx @@ -37,7 +37,6 @@ import { getTabsOnUsersUrl } from '../../../../common/components/link_to/redirec import { RISKY_USERS_DOC_LINK } from '../../../../users/components/constants'; import { RiskScoreDonutChart } from '../common/risk_score_donut_chart'; import { BasicTableWithoutBorderBottom } from '../common/basic_table_without_border_bottom'; -import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; const TABLE_QUERY_ID = 'userRiskDashboardTable'; @@ -53,7 +52,6 @@ export const EntityAnalyticsUserRiskScores = () => { const [selectedSeverity, setSelectedSeverity] = useState([]); const getSecuritySolutionLinkProps = useGetSecuritySolutionLinkProps(); const dispatch = useDispatch(); - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); const severityFilter = useMemo(() => { const [filter] = generateSeverityFilter(selectedSeverity, RiskScoreEntity.user); @@ -66,14 +64,15 @@ export const EntityAnalyticsUserRiskScores = () => { skip: !toggleStatus, }); - const [isTableLoading, { data, inspect, refetch, isModuleEnabled }] = useUserRiskScore({ - filterQuery: severityFilter, - skip: !toggleStatus, - pagination: { - cursorStart: 0, - querySize: 5, - }, - }); + const [isTableLoading, { data, inspect, refetch, isLicenseValid, isModuleEnabled }] = + useUserRiskScore({ + filterQuery: severityFilter, + skip: !toggleStatus, + pagination: { + cursorStart: 0, + querySize: 5, + }, + }); useQueryInspector({ queryId: TABLE_QUERY_ID, @@ -120,7 +119,7 @@ export const EntityAnalyticsUserRiskScores = () => { ); }, []); - if (!riskyUsersFeatureEnabled) { + if (!isLicenseValid) { return null; } diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap index 540a36debf280..a79c7abde9cc8 100644 --- a/x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Host Summary Component rendering it renders the default Host Summary 1`] = ` +exports[`Host Summary Component it renders the default Host Summary 1`] = ` `; -exports[`Host Summary Component rendering it renders the panel view Host Summary 1`] = ` +exports[`Host Summary Component it renders the panel view Host Summary 1`] = ` ({ - useHostRiskScore: jest.fn().mockReturnValue([ - true, - { - data: undefined, - isModuleEnabled: false, - }, - ]), -})); +const defaultProps = { + data: undefined, + inspect: null, + refetch: () => {}, + isModuleEnabled: true, + isLicenseValid: true, +}; + +jest.mock('../../../risk_score/containers/all'); + +const mockUseHostRiskScore = useHostRiskScore as jest.Mock; describe('Host Summary Component', () => { - describe('rendering', () => { - const mockProps = { - anomaliesData: mockAnomalies, - data: mockData.Hosts.edges[0].node, - endDate: '2019-06-18T06:00:00.000Z', - id: 'hostOverview', - indexNames: [], - isInDetailsSidePanel: false, - isLoadingAnomaliesData: false, - loading: false, - narrowDateRange: jest.fn(), - startDate: '2019-06-15T06:00:00.000Z', - hostName: 'testHostName', - }; + const mockProps = { + anomaliesData: mockAnomalies, + data: mockData.Hosts.edges[0].node, + endDate: '2019-06-18T06:00:00.000Z', + id: 'hostOverview', + indexNames: [], + isInDetailsSidePanel: false, + isLoadingAnomaliesData: false, + loading: false, + narrowDateRange: jest.fn(), + startDate: '2019-06-15T06:00:00.000Z', + hostName: 'testHostName', + }; - test('it renders the default Host Summary', () => { - const wrapper = shallow( - - - - ); + beforeEach(() => { + jest.clearAllMocks(); + mockUseHostRiskScore.mockReturnValue([true, { ...defaultProps, isModuleEnabled: false }]); + }); - expect(wrapper.find('HostOverview')).toMatchSnapshot(); - }); + test('it renders the default Host Summary', () => { + const wrapper = shallow( + + + + ); - test('it renders the panel view Host Summary', () => { - const panelViewProps = { - ...mockProps, - isInDetailsSidePanel: true, - }; + expect(wrapper.find('HostOverview')).toMatchSnapshot(); + }); - const wrapper = shallow( - - - - ); + test('it renders the panel view Host Summary', () => { + const panelViewProps = { + ...mockProps, + isInDetailsSidePanel: true, + }; - expect(wrapper.find('HostOverview')).toMatchSnapshot(); - }); + const wrapper = shallow( + + + + ); - test('it renders host risk score and level', () => { - const panelViewProps = { - ...mockProps, - isInDetailsSidePanel: true, - }; - const risk = 'very high host risk'; - const riskScore = 9999999; + expect(wrapper.find('HostOverview')).toMatchSnapshot(); + }); - (useHostRiskScore as jest.Mock).mockReturnValue([ - false, - { - data: [ - { - host: { - name: 'testHostmame', - risk: { - rule_risks: [], - calculated_score_norm: riskScore, - calculated_level: risk, - }, + test('it renders host risk score and level', () => { + const panelViewProps = { + ...mockProps, + isInDetailsSidePanel: true, + }; + const risk = 'very high host risk'; + const riskScore = 9999999; + mockUseHostRiskScore.mockReturnValue([ + false, + { + ...defaultProps, + data: [ + { + host: { + name: 'testHostmame', + risk: { + rule_risks: [], + calculated_score_norm: riskScore, + calculated_level: risk, }, }, - ], - isModuleEnabled: true, - }, - ]); + }, + ], + }, + ]); - const { getByTestId } = render( - - - - ); + const { getByTestId } = render( + + + + ); - expect(getByTestId('host-risk-overview')).toHaveTextContent(risk); - expect(getByTestId('host-risk-overview')).toHaveTextContent(riskScore.toString()); - }); + expect(getByTestId('host-risk-overview')).toHaveTextContent(risk); + expect(getByTestId('host-risk-overview')).toHaveTextContent(riskScore.toString()); }); }); diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx index d3a1f601445fd..83b6243c4e04d 100644 --- a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx @@ -83,7 +83,7 @@ export const HostOverview = React.memo( [hostName] ); - const [_, { data: hostRisk, isModuleEnabled }] = useHostRiskScore({ + const [_, { data: hostRisk, isLicenseValid }] = useHostRiskScore({ filterQuery, skip: hostName == null, }); @@ -101,39 +101,32 @@ export const HostOverview = React.memo( ); const [hostRiskScore, hostRiskLevel] = useMemo(() => { - if (isModuleEnabled) { - const hostRiskData = hostRisk && hostRisk.length > 0 ? hostRisk[0] : undefined; - return [ - { - title: i18n.HOST_RISK_SCORE, - description: ( - <> - {hostRiskData - ? Math.round(hostRiskData.host.risk.calculated_score_norm) - : getEmptyTagValue()} - - ), - }, - - { - title: i18n.HOST_RISK_CLASSIFICATION, - description: ( - <> - {hostRiskData ? ( - - ) : ( - getEmptyTagValue() - )} - - ), - }, - ]; - } - return [undefined, undefined]; - }, [hostRisk, isModuleEnabled]); + const hostRiskData = hostRisk && hostRisk.length > 0 ? hostRisk[0] : undefined; + return [ + { + title: i18n.HOST_RISK_SCORE, + description: ( + <> + {hostRiskData + ? Math.round(hostRiskData.host.risk.calculated_score_norm) + : getEmptyTagValue()} + + ), + }, + { + title: i18n.HOST_RISK_CLASSIFICATION, + description: ( + <> + {hostRiskData ? ( + + ) : ( + getEmptyTagValue() + )} + + ), + }, + ]; + }, [hostRisk]); const column: DescriptionList[] = useMemo( () => [ @@ -273,7 +266,7 @@ export const HostOverview = React.memo( )} - {hostRiskScore && hostRiskLevel && ( + {isLicenseValid && ( `; -exports[`User Summary Component rendering it renders the panel view User Summary 1`] = ` +exports[`User Summary Component it renders the panel view User Summary 1`] = ` ({ - useUserRiskScore: jest.fn().mockReturnValue([ - true, - { - data: undefined, - isModuleEnabled: false, - }, - ]), -})); +const defaultProps = { + data: undefined, + inspect: null, + refetch: () => {}, + isModuleEnabled: true, + isLicenseValid: true, +}; + +jest.mock('../../../risk_score/containers/all'); + +const mockUseUserRiskScore = useUserRiskScore as jest.Mock; describe('User Summary Component', () => { - describe('rendering', () => { - const mockProps: UserSummaryProps = { - anomaliesData: mockAnomalies, - data: { - user: { - id: ['aa7ca589f1b8220002f2fc61c64cfbf1'], - name: ['username'], - domain: ['domain'], - }, - host: { - ip: ['10.142.0.7', 'fe80::4001:aff:fe8e:7'], - os: { - family: ['debian'], - name: ['Debian GNU/Linux'], - }, + const mockProps: UserSummaryProps = { + anomaliesData: mockAnomalies, + data: { + user: { + id: ['aa7ca589f1b8220002f2fc61c64cfbf1'], + name: ['username'], + domain: ['domain'], + }, + host: { + ip: ['10.142.0.7', 'fe80::4001:aff:fe8e:7'], + os: { + family: ['debian'], + name: ['Debian GNU/Linux'], }, }, - endDate: '2019-06-18T06:00:00.000Z', - id: 'userOverview', - isInDetailsSidePanel: false, - isLoadingAnomaliesData: false, - loading: false, - narrowDateRange: jest.fn(), - startDate: '2019-06-15T06:00:00.000Z', - userName: 'testUserName', - indexPatterns: [], + }, + endDate: '2019-06-18T06:00:00.000Z', + id: 'userOverview', + isInDetailsSidePanel: false, + isLoadingAnomaliesData: false, + loading: false, + narrowDateRange: jest.fn(), + startDate: '2019-06-15T06:00:00.000Z', + userName: 'testUserName', + indexPatterns: [], + }; + + beforeEach(() => { + jest.clearAllMocks(); + mockUseUserRiskScore.mockReturnValue([true, { ...defaultProps, isModuleEnabled: false }]); + }); + + test('it renders the default User Summary', () => { + const wrapper = shallow( + + + + ); + + expect(wrapper.find('UserOverview')).toMatchSnapshot(); + }); + + test('it renders the panel view User Summary', () => { + const panelViewProps = { + ...mockProps, + isInDetailsSidePanel: true, + }; + + const wrapper = shallow( + + + + ); + + expect(wrapper.find('UserOverview')).toMatchSnapshot(); + }); + + test('it renders user risk score and level', () => { + const panelViewProps = { + ...mockProps, + isInDetailsSidePanel: true, }; + const risk = 'very high hos risk'; + const riskScore = 9999999; - test('it renders the default User Summary', () => { - const wrapper = shallow( - - - - ); - - expect(wrapper.find('UserOverview')).toMatchSnapshot(); - }); - - test('it renders the panel view User Summary', () => { - const panelViewProps = { - ...mockProps, - isInDetailsSidePanel: true, - }; - - const wrapper = shallow( - - - - ); - - expect(wrapper.find('UserOverview')).toMatchSnapshot(); - }); - - test('it renders user risk score and level', () => { - const panelViewProps = { - ...mockProps, - isInDetailsSidePanel: true, - }; - const risk = 'very high hos risk'; - const riskScore = 9999999; - - (useUserRiskScore as jest.Mock).mockReturnValue([ - false, - { - data: [ - { - user: { - name: 'testUsermame', - risk: { - rule_risks: [], - calculated_level: risk, - calculated_score_norm: riskScore, - }, + mockUseUserRiskScore.mockReturnValue([ + false, + { + ...defaultProps, + data: [ + { + user: { + name: 'testUsermame', + risk: { + rule_risks: [], + calculated_level: risk, + calculated_score_norm: riskScore, }, }, - ], - isModuleEnabled: true, - }, - ]); + }, + ], + }, + ]); - const { getByTestId } = render( - - - - ); + const { getByTestId } = render( + + + + ); - expect(getByTestId('user-risk-overview')).toHaveTextContent(risk); - expect(getByTestId('user-risk-overview')).toHaveTextContent(riskScore.toString()); - }); + expect(getByTestId('user-risk-overview')).toHaveTextContent(risk); + expect(getByTestId('user-risk-overview')).toHaveTextContent(riskScore.toString()); }); }); diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx index 6c5f4a952e9a7..32a488f896ab9 100644 --- a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx @@ -10,7 +10,6 @@ import { euiLightVars as lightTheme, euiDarkVars as darkTheme } from '@kbn/ui-th import { getOr } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; -import type { RiskSeverity } from '../../../../common/search_strategy'; import { buildUserNamesFilter } from '../../../../common/search_strategy'; import { DEFAULT_DARK_MODE } from '../../../../common/constants'; import type { DescriptionList } from '../../../../common/utility_types'; @@ -81,7 +80,7 @@ export const UserOverview = React.memo( () => (userName ? buildUserNamesFilter([userName]) : undefined), [userName] ); - const [_, { data: userRisk, isModuleEnabled }] = useUserRiskScore({ + const [_, { data: userRisk, isLicenseValid }] = useUserRiskScore({ filterQuery, skip: userName == null, }); @@ -91,7 +90,7 @@ export const UserOverview = React.memo( ), @@ -99,38 +98,32 @@ export const UserOverview = React.memo( ); const [userRiskScore, userRiskLevel] = useMemo(() => { - if (isModuleEnabled) { - const userRiskData = userRisk && userRisk.length > 0 ? userRisk[0] : undefined; - return [ - { - title: i18n.USER_RISK_SCORE, - description: ( - <> - {userRiskData - ? Math.round(userRiskData.user.risk.calculated_score_norm) - : getEmptyTagValue()} - - ), - }, - { - title: i18n.USER_RISK_CLASSIFICATION, - description: ( - <> - {userRiskData ? ( - - ) : ( - getEmptyTagValue() - )} - - ), - }, - ]; - } - return [undefined, undefined]; - }, [userRisk, isModuleEnabled]); + const userRiskData = userRisk && userRisk.length > 0 ? userRisk[0] : undefined; + return [ + { + title: i18n.USER_RISK_SCORE, + description: ( + <> + {userRiskData + ? Math.round(userRiskData.user.risk.calculated_score_norm) + : getEmptyTagValue()} + + ), + }, + { + title: i18n.USER_RISK_CLASSIFICATION, + description: ( + <> + {userRiskData ? ( + + ) : ( + getEmptyTagValue() + )} + + ), + }, + ]; + }, [userRisk]); const column = useMemo( () => [ @@ -255,7 +248,7 @@ export const UserOverview = React.memo( )} - {userRiskScore && userRiskLevel && ( + {isLicenseValid && ( { const { indicesExist, loading: isSourcererLoading, indexPattern } = useSourcererDataView(); + return ( <> {indicesExist ? ( <> - + ({ useSpaceId: jest.fn().mockReturnValue('default'), })); -jest.mock('../../../common/hooks/use_experimental_features', () => ({ - useIsExperimentalFeatureEnabled: jest.fn(), -})); - jest.mock('../../../common/hooks/use_app_toasts'); +const mockUseMlCapabilities = jest.fn(); +jest.mock('../../../common/components/ml/hooks/use_ml_capabilities', () => ({ + useMlCapabilities: () => mockUseMlCapabilities(), +})); + const mockUseSearchStrategy = useSearchStrategy as jest.Mock; -const mockUseIsExperimentalFeatureEnabled = useIsExperimentalFeatureEnabled as jest.Mock; const mockSearch = jest.fn(); const mockRefetch = jest.fn(); @@ -43,7 +42,7 @@ let appToastsMock: jest.Mocked>; (useAppToasts as jest.Mock).mockReturnValue(appToastsMock); }); test('does not search if feature is not enabled', () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(false); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: false }); mockUseSearchStrategy.mockReturnValue({ loading: false, result: { @@ -65,6 +64,7 @@ let appToastsMock: jest.Mocked>; data: undefined, inspect: {}, isInspected: false, + isLicenseValid: false, isModuleEnabled: false, refetch: mockRefetch, totalCount: 0, @@ -73,7 +73,7 @@ let appToastsMock: jest.Mocked>; }); test('if query skipped and feature is enabled, isModuleEnabled should be true', () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); mockUseSearchStrategy.mockReturnValue({ loading: false, result: { @@ -94,6 +94,7 @@ let appToastsMock: jest.Mocked>; data: undefined, inspect: {}, isInspected: false, + isLicenseValid: true, isModuleEnabled: true, refetch: mockRefetch, totalCount: 0, @@ -102,7 +103,7 @@ let appToastsMock: jest.Mocked>; }); test('handle index not found error', () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); mockUseSearchStrategy.mockReturnValue({ loading: false, @@ -130,6 +131,7 @@ let appToastsMock: jest.Mocked>; data: undefined, inspect: {}, isInspected: false, + isLicenseValid: true, isModuleEnabled: false, refetch: mockRefetch, totalCount: 0, @@ -138,7 +140,7 @@ let appToastsMock: jest.Mocked>; }); test('show error toast', () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); const error = new Error(); mockUseSearchStrategy.mockReturnValue({ @@ -161,7 +163,7 @@ let appToastsMock: jest.Mocked>; }); test('runs search if feature is enabled', () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); mockUseSearchStrategy.mockReturnValue({ loading: false, result: { @@ -187,7 +189,7 @@ let appToastsMock: jest.Mocked>; }); test('return result', async () => { - mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); mockUseSearchStrategy.mockReturnValue({ loading: false, result: { @@ -209,6 +211,7 @@ let appToastsMock: jest.Mocked>; data: [], inspect: {}, isInspected: false, + isLicenseValid: true, isModuleEnabled: true, refetch: mockRefetch, totalCount: 0, diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx index ef58555629c81..49605e5c227d4 100644 --- a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx +++ b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx @@ -20,10 +20,10 @@ import * as i18n from './translations'; import type { InspectResponse } from '../../../types'; import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import { isIndexNotFoundError } from '../../../common/utils/exceptions'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; import type { inputsModel } from '../../../common/store'; import { useSpaceId } from '../../../common/hooks/use_space_id'; import { useSearchStrategy } from '../../../common/containers/use_search_strategy'; +import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; export interface RiskScoreState { data: undefined | StrategyResponseType['data']; @@ -31,7 +31,8 @@ export interface RiskScoreState extends UseRiskScoreParams { defaultIndex: string | undefined; factoryQueryType: T; - featureEnabled: boolean; } export const initialResult: Omit< @@ -66,7 +66,6 @@ export const useHostRiskScore = (params?: UseRiskScoreParams) => { const { timerange, onlyLatest, filterQuery, sort, skip = false, pagination } = params ?? {}; const spaceId = useSpaceId(); const defaultIndex = spaceId ? getHostRiskIndex(spaceId, onlyLatest) : undefined; - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); return useRiskScore({ timerange, @@ -75,7 +74,6 @@ export const useHostRiskScore = (params?: UseRiskScoreParams) => { sort, skip, pagination, - featureEnabled: riskyHostsFeatureEnabled, defaultIndex, factoryQueryType: RiskQueries.hostsRiskScore, }); @@ -86,7 +84,6 @@ export const useUserRiskScore = (params?: UseRiskScoreParams) => { const spaceId = useSpaceId(); const defaultIndex = spaceId ? getUserRiskIndex(spaceId, onlyLatest) : undefined; - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); return useRiskScore({ timerange, onlyLatest, @@ -94,7 +91,6 @@ export const useUserRiskScore = (params?: UseRiskScoreParams) => { sort, skip, pagination, - featureEnabled: riskyUsersFeatureEnabled, defaultIndex, factoryQueryType: RiskQueries.usersRiskScore, }); @@ -106,7 +102,6 @@ const useRiskScore = ): [boolean, RiskScoreState] => { @@ -127,6 +122,7 @@ const useRiskScore = ({ @@ -134,10 +130,13 @@ const useRiskScore = { - if (!skip && riskScoreRequest != null && featureEnabled) { + if (!skip && riskScoreRequest != null && isPlatinumOrTrialLicense) { search(riskScoreRequest); } - }, [featureEnabled, riskScoreRequest, search, skip]); + }, [isPlatinumOrTrialLicense, riskScoreRequest, search, skip]); return [loading, riskScoreResponse]; }; diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/index.ts b/x-pack/plugins/security_solution/public/risk_score/containers/index.ts index 323a6d26acb34..605bbd7d0d6b1 100644 --- a/x-pack/plugins/security_solution/public/risk_score/containers/index.ts +++ b/x-pack/plugins/security_solution/public/risk_score/containers/index.ts @@ -5,7 +5,10 @@ * 2.0. */ -import type { HostRiskScore } from '../../../common/search_strategy/security_solution/risk_score'; +import type { + HostRiskScore, + UserRiskScore, +} from '../../../common/search_strategy/security_solution/risk_score'; export * from './all'; export * from './kpi'; @@ -24,6 +27,12 @@ export const enum HostRiskScoreQueryId { export interface HostRisk { loading: boolean; - isModuleEnabled?: boolean; + isModuleEnabled: boolean; result?: HostRiskScore[]; } + +export interface UserRisk { + loading: boolean; + isModuleEnabled: boolean; + result?: UserRiskScore[]; +} diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/kpi/index.tsx b/x-pack/plugins/security_solution/public/risk_score/containers/kpi/index.tsx index 6d4ee5c73c5f6..2c137a8bf1e06 100644 --- a/x-pack/plugins/security_solution/public/risk_score/containers/kpi/index.tsx +++ b/x-pack/plugins/security_solution/public/risk_score/containers/kpi/index.tsx @@ -28,9 +28,9 @@ import { import { useKibana } from '../../../common/lib/kibana'; import { isIndexNotFoundError } from '../../../common/utils/exceptions'; import type { ESTermQuery } from '../../../../common/typed_json'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; import type { SeverityCount } from '../../../common/components/severity/types'; import { useSpaceId } from '../../../common/hooks/use_space_id'; +import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; type GetHostRiskScoreProps = KpiRiskScoreRequestOptions & { data: DataPublicPluginStart; @@ -93,14 +93,14 @@ export const useUserRiskScoreKpi = ({ }: UseUserRiskScoreKpiProps): RiskScoreKpi => { const spaceId = useSpaceId(); const defaultIndex = spaceId ? getUserRiskIndex(spaceId) : undefined; - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; return useRiskScoreKpi({ filterQuery, skip, defaultIndex, entity: RiskScoreEntity.user, - featureEnabled: riskyUsersFeatureEnabled, + featureEnabled: isPlatinumOrTrialLicense, }); }; @@ -110,14 +110,14 @@ export const useHostRiskScoreKpi = ({ }: UseHostRiskScoreKpiProps): RiskScoreKpi => { const spaceId = useSpaceId(); const defaultIndex = spaceId ? getHostRiskIndex(spaceId) : undefined; - const riskyHostsFeatureEnabled = useIsExperimentalFeatureEnabled('riskyHostsEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; return useRiskScoreKpi({ filterQuery, skip, defaultIndex, entity: RiskScoreEntity.host, - featureEnabled: riskyHostsFeatureEnabled, + featureEnabled: isPlatinumOrTrialLicense, }); }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx index 7ec4e5c2c942e..305eef7ef219d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx @@ -24,7 +24,6 @@ import { EventDetails } from '../../../../common/components/event_details/event_ import type { TimelineEventsDetailsItem } from '../../../../../common/search_strategy/timeline'; import * as i18n from './translations'; import { PreferenceFormattedDate } from '../../../../common/components/formatted_date'; -import type { HostRisk } from '../../../../risk_score/containers'; export type HandleOnEventClosed = () => void; interface Props { @@ -38,7 +37,6 @@ interface Props { rawEventData: object | undefined; timelineTabType: TimelineTabs | 'flyout'; timelineId: string; - hostRisk: HostRisk | null; handleOnEventClosed: HandleOnEventClosed; isReadOnly?: boolean; } @@ -107,7 +105,6 @@ export const ExpandableEvent = React.memo( isDraggable, loading, detailsData, - hostRisk, rawEventData, handleOnEventClosed, isReadOnly, @@ -133,7 +130,6 @@ export const ExpandableEvent = React.memo( rawEventData={rawEventData} timelineId={timelineId} timelineTabType={timelineTabType} - hostRisk={hostRisk} handleOnEventClosed={handleOnEventClosed} isReadOnly={isReadOnly} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/body.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/body.tsx index 58d09a6450017..25d7371c29303 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/body.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/body.tsx @@ -16,7 +16,6 @@ import type { } from '../../../../../../common/search_strategy'; import type { HandleOnEventClosed } from '../expandable_event'; import { ExpandableEvent } from '../expandable_event'; -import type { HostRisk } from '../../../../../risk_score/containers'; const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` .euiFlyoutBody__overflow { @@ -40,7 +39,6 @@ interface FlyoutBodyComponentProps { handleIsolationActionSuccess: () => void; handleOnEventClosed: HandleOnEventClosed; hostName: string; - hostRisk: HostRisk | null; isAlert: boolean; isDraggable?: boolean; isReadOnly?: boolean; @@ -61,7 +59,6 @@ const FlyoutBodyComponent = ({ handleIsolationActionSuccess, handleOnEventClosed, hostName, - hostRisk, isAlert, isDraggable, isReadOnly, @@ -100,7 +97,6 @@ const FlyoutBodyComponent = ({ rawEventData={rawEventData} timelineId={timelineId} timelineTabType="flyout" - hostRisk={hostRisk} handleOnEventClosed={handleOnEventClosed} isReadOnly={isReadOnly} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/index.tsx index 22e4a8c568d19..0704bee217b15 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/index.tsx @@ -9,9 +9,6 @@ import { EntityType, TimelineId } from '@kbn/timelines-plugin/common'; import { noop } from 'lodash/fp'; import React, { useCallback, useMemo, useState } from 'react'; -import { buildHostNamesFilter } from '../../../../../../common/search_strategy'; -import type { HostRisk } from '../../../../../risk_score/containers'; -import { useHostRiskScore } from '../../../../../risk_score/containers'; import { useHostIsolationTools } from '../use_host_isolation_tools'; import { FlyoutHeaderContent } from './header'; import { FlyoutBody } from './body'; @@ -45,35 +42,6 @@ export const useToGetInternalFlyout = () => { const { alertId, isAlert, hostName, ruleName, timestamp } = useBasicDataFromDetailsData(detailsData); - const filterQuery = useMemo( - () => (hostName ? buildHostNamesFilter([hostName]) : undefined), - [hostName] - ); - - const pagination = useMemo( - () => ({ - cursorStart: 0, - querySize: 1, - }), - [] - ); - const [hostRiskLoading, { data, isModuleEnabled }] = useHostRiskScore({ - filterQuery, - pagination, - }); - - const hostRisk: HostRisk | null = useMemo( - () => - data - ? { - loading: hostRiskLoading, - isModuleEnabled, - result: data, - } - : null, - [data, hostRiskLoading, isModuleEnabled] - ); - const { isolateAction, isHostIsolationPanelOpen, @@ -99,7 +67,6 @@ export const useToGetInternalFlyout = () => { detailsData={detailsData} event={{ eventId: localAlert._id, indexName: localAlert._index }} hostName={hostName ?? ''} - hostRisk={hostRisk} handleIsolationActionSuccess={handleIsolationActionSuccess} handleOnEventClosed={noop} isAlert={isAlert} @@ -121,7 +88,6 @@ export const useToGetInternalFlyout = () => { detailsData, handleIsolationActionSuccess, hostName, - hostRisk, isAlert, isHostIsolationPanelOpen, isIsolateActionSuccessBannerVisible, diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/helpers.tsx index 065ac297ee468..6bee089027477 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/helpers.tsx @@ -16,6 +16,7 @@ export interface GetBasicDataFromDetailsData { agentId?: string; isAlert: boolean; hostName: string; + userName: string; ruleName: string; timestamp: string; } @@ -42,6 +43,11 @@ export const useBasicDataFromDetailsData = ( [data] ); + const userName = useMemo( + () => getFieldValue({ category: 'user', field: 'user.name' }, data), + [data] + ); + const timestamp = useMemo( () => getFieldValue({ category: 'base', field: '@timestamp' }, data), [data] @@ -53,10 +59,11 @@ export const useBasicDataFromDetailsData = ( agentId, isAlert, hostName, + userName, ruleName, timestamp, }), - [agentId, alertId, hostName, isAlert, ruleName, timestamp] + [agentId, alertId, hostName, isAlert, ruleName, timestamp, userName] ); }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.test.tsx index 7044ee548c3af..30713af95df54 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.test.tsx @@ -103,6 +103,13 @@ jest.mock('../../../../risk_score/containers', () => { isModuleEnabled: false, }, ]), + useUserRiskScore: jest.fn().mockReturnValue([ + true, + { + data: undefined, + isModuleEnabled: false, + }, + ]), }; }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx index 00397ea43e59a..11a20a0c64f0d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx @@ -15,9 +15,6 @@ import type { BrowserFields } from '../../../../common/containers/source'; import { ExpandableEvent, ExpandableEventTitle } from './expandable_event'; import { useTimelineEventsDetails } from '../../../containers/details'; import type { TimelineTabs } from '../../../../../common/types/timeline'; -import { buildHostNamesFilter } from '../../../../../common/search_strategy'; -import type { HostRisk } from '../../../../risk_score/containers'; -import { useHostRiskScore } from '../../../../risk_score/containers'; import { useHostIsolationTools } from './use_host_isolation_tools'; import { FlyoutBody, FlyoutHeader, FlyoutFooter } from './flyout'; import { useBasicDataFromDetailsData, getAlertIndexAlias } from './helpers'; @@ -79,34 +76,6 @@ const EventDetailsPanelComponent: React.FC = ({ const { alertId, isAlert, hostName, ruleName, timestamp } = useBasicDataFromDetailsData(detailsData); - const filterQuery = useMemo( - () => (hostName ? buildHostNamesFilter([hostName]) : undefined), - [hostName] - ); - - const pagination = useMemo( - () => ({ - cursorStart: 0, - querySize: 1, - }), - [] - ); - - const [hostRiskLoading, { data, isModuleEnabled }] = useHostRiskScore({ - filterQuery, - pagination, - }); - - const hostRisk: HostRisk | null = useMemo(() => { - return data - ? { - loading: hostRiskLoading, - isModuleEnabled, - result: data, - } - : null; - }, [data, hostRiskLoading, isModuleEnabled]); - const header = useMemo( () => isFlyoutView || isHostIsolationPanelOpen ? ( @@ -149,7 +118,6 @@ const EventDetailsPanelComponent: React.FC = ({ detailsData={detailsData} event={expandedEvent} hostName={hostName} - hostRisk={hostRisk} handleIsolationActionSuccess={handleIsolationActionSuccess} handleOnEventClosed={handleOnEventClosed} isAlert={isAlert} @@ -198,7 +166,6 @@ const EventDetailsPanelComponent: React.FC = ({ rawEventData={rawEventData} timelineId={timelineId} timelineTabType={tabType} - hostRisk={hostRisk} handleOnEventClosed={handleOnEventClosed} /> @@ -212,7 +179,6 @@ const EventDetailsPanelComponent: React.FC = ({ handleIsolationActionSuccess, handleOnEventClosed, hostName, - hostRisk, isAlert, isDraggable, isFlyoutView, diff --git a/x-pack/plugins/security_solution/public/users/components/kpi_users/index.tsx b/x-pack/plugins/security_solution/public/users/components/kpi_users/index.tsx index 3c97f0ad49b4e..277403c5292f5 100644 --- a/x-pack/plugins/security_solution/public/users/components/kpi_users/index.tsx +++ b/x-pack/plugins/security_solution/public/users/components/kpi_users/index.tsx @@ -19,11 +19,11 @@ import { RISKY_USERS_DOC_LINK } from '../constants'; export const UsersKpiComponent = React.memo( ({ filterQuery, from, indexNames, to, setQuery, skip, updateDateRange }) => { - const [_, { isModuleEnabled }] = useUserRiskScore(); + const [loading, { isLicenseValid, isModuleEnabled }] = useUserRiskScore(); return ( <> - {isModuleEnabled === false && ( + {isLicenseValid && !isModuleEnabled && !loading && ( <> = ({ @@ -61,7 +60,7 @@ const UsersDetailsComponent: React.FC = ({ usersDetailsPagePath, }) => { const dispatch = useDispatch(); - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; const getTimeline = useMemo(() => timelineSelectors.getTimelineByIdSelector(), []); const graphEventId = useShallowEqualSelector( (state) => (getTimeline(state, TimelineId.hostsPageEvents) ?? timelineDefaults).graphEventId @@ -183,7 +182,7 @@ const UsersDetailsComponent: React.FC = ({ navTabs={navTabsUsersDetails( detailName, hasMlUserPermissions(capabilities), - riskyUsersFeatureEnabled + isPlatinumOrTrialLicense )} /> diff --git a/x-pack/plugins/security_solution/public/users/pages/details/nav_tabs.tsx b/x-pack/plugins/security_solution/public/users/pages/details/nav_tabs.tsx index 90bc856e0d058..588372272e540 100644 --- a/x-pack/plugins/security_solution/public/users/pages/details/nav_tabs.tsx +++ b/x-pack/plugins/security_solution/public/users/pages/details/nav_tabs.tsx @@ -10,6 +10,7 @@ import * as i18n from '../translations'; import type { UsersDetailsNavTab } from './types'; import { UsersTableType } from '../../store/model'; import { USERS_PATH } from '../../../../common/constants'; +import { TECHNICAL_PREVIEW } from '../../../overview/pages/translations'; const getTabsOnUsersDetailsUrl = (userName: string, tabName: UsersTableType) => `${USERS_PATH}/name/${userName}/${tabName}`; @@ -45,6 +46,10 @@ export const navTabsUsersDetails = ( name: i18n.NAVIGATION_RISK_TITLE, href: getTabsOnUsersDetailsUrl(userName, UsersTableType.risk), disabled: false, + isBeta: true, + betaOptions: { + text: TECHNICAL_PREVIEW, + }, }, }; diff --git a/x-pack/plugins/security_solution/public/users/pages/nav_tabs.tsx b/x-pack/plugins/security_solution/public/users/pages/nav_tabs.tsx index 0e5218090f162..801074b797bfb 100644 --- a/x-pack/plugins/security_solution/public/users/pages/nav_tabs.tsx +++ b/x-pack/plugins/security_solution/public/users/pages/nav_tabs.tsx @@ -10,6 +10,7 @@ import * as i18n from './translations'; import { UsersTableType } from '../store/model'; import type { UsersNavTab } from './navigation/types'; import { USERS_PATH } from '../../../common/constants'; +import { TECHNICAL_PREVIEW } from '../../overview/pages/translations'; const getTabsOnUsersUrl = (tabName: UsersTableType) => `${USERS_PATH}/${tabName}`; @@ -49,6 +50,10 @@ export const navTabsUsers = ( name: i18n.NAVIGATION_RISK_TITLE, href: getTabsOnUsersUrl(UsersTableType.risk), disabled: false, + isBeta: true, + betaOptions: { + text: TECHNICAL_PREVIEW, + }, }, }; diff --git a/x-pack/plugins/security_solution/public/users/pages/users.tsx b/x-pack/plugins/security_solution/public/users/pages/users.tsx index 94345fa24f377..d3140a330da63 100644 --- a/x-pack/plugins/security_solution/public/users/pages/users.tsx +++ b/x-pack/plugins/security_solution/public/users/pages/users.tsx @@ -50,7 +50,6 @@ import { generateSeverityFilter } from '../../hosts/store/helpers'; import { UsersTableType } from '../store/model'; import { hasMlUserPermissions } from '../../../common/machine_learning/has_ml_user_permissions'; import { useMlCapabilities } from '../../common/components/ml/hooks/use_ml_capabilities'; -import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; import { LandingPageComponent } from '../../common/components/landing_page'; import { userNameExistsFilter } from './details/helpers'; @@ -169,10 +168,10 @@ const UsersComponent = () => { ); const capabilities = useMlCapabilities(); - const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled'); + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; const navTabs = useMemo( - () => navTabsUsers(hasMlUserPermissions(capabilities), riskyUsersFeatureEnabled), - [capabilities, riskyUsersFeatureEnabled] + () => navTabsUsers(hasMlUserPermissions(capabilities), isPlatinumOrTrialLicense), + [capabilities, isPlatinumOrTrialLicense] ); return ( diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts index d21bc53de178f..4208ea44937bc 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts @@ -28,15 +28,11 @@ class IndexNotFoundException extends Error { } } -const mockDeps = (riskyHostsEnabled = true) => ({ +const mockDeps = () => ({ ...defaultMockDeps, spaceId: 'test-space', endpointContext: { ...defaultMockDeps.endpointContext, - experimentalFeatures: { - ...defaultMockDeps.endpointContext.experimentalFeatures, - riskyHostsEnabled, - }, }, }); @@ -70,7 +66,11 @@ describe('allHosts search strategy', () => { describe('parse', () => { test('should parse data correctly', async () => { - const result = await allHosts.parse(mockOptions, mockSearchStrategyResponse, mockDeps(false)); + const mockedDeps = mockDeps(); + // @ts-expect-error incomplete type + mockedDeps.esClient.asCurrentUser.search.mockResponse({ hits: { hits: [] } }); + + const result = await allHosts.parse(mockOptions, mockSearchStrategyResponse, mockDeps()); expect(result).toMatchObject(formattedSearchStrategyResponse); }); @@ -131,35 +131,6 @@ describe('allHosts search strategy', () => { }); }); - test('should not enhance data when feature flag is disabled', async () => { - const risk = 'TEST_RISK_SCORE'; - const hostName: string = get( - 'aggregations.host_data.buckets[0].key', - mockSearchStrategyResponse.rawResponse - ); - const mockedDeps = mockDeps(false); - - mockedDeps.esClient.asCurrentUser.search.mockResponse({ - hits: { - hits: [ - // @ts-expect-error incomplete type - { - _source: { - risk, - host: { - name: hostName, - }, - }, - }, - ], - }, - }); - - const result = await allHosts.parse(mockOptions, mockSearchStrategyResponse, mockedDeps); - - expect(result.edges[0].node.risk).toBeUndefined(); - }); - test("should not enhance data when index doesn't exist", async () => { const mockedDeps = mockDeps(); mockedDeps.esClient.asCurrentUser.search.mockImplementation(() => { diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts index cecfc60fbbaed..c84717b6e1a8e 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts @@ -62,10 +62,9 @@ export const allHosts: SecuritySolutionFactory = { const hostNames = edges.map((edge) => getOr('', 'node.host.name[0]', edge)); - const enhancedEdges = - deps?.spaceId && deps?.endpointContext.experimentalFeatures.riskyHostsEnabled - ? await enhanceEdges(edges, hostNames, deps.spaceId, deps.esClient) - : edges; + const enhancedEdges = deps?.spaceId + ? await enhanceEdges(edges, hostNames, deps.spaceId, deps.esClient) + : edges; return { ...response, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 516824f72afef..210b5da642173 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -25576,11 +25576,9 @@ "xpack.securitySolution.administration.os.windows": "Windows", "xpack.securitySolution.alertDetails.enrichmentQueryEndDate": "Date de fin", "xpack.securitySolution.alertDetails.enrichmentQueryStartDate": "Date de début", - "xpack.securitySolution.alertDetails.hostRiskClassification": "Classification de risque de l'hôte", "xpack.securitySolution.alertDetails.investigationTimeQueryTitle": "Enrichissement avec la Threat Intelligence", "xpack.securitySolution.alertDetails.noEnrichmentsFoundDescription": "Nous n'avons pas trouvé de Threat Intelligence correspondant à l'une de vos règles de correspondance d'indicateur ou à un enrichissement pour cette alerte.", "xpack.securitySolution.alertDetails.noInvestigationEnrichmentsDescription": "Nous n'avons pas trouvé de valeur de champ comportant des informations supplémentaires disponibles depuis les sources de Threat Intelligence dans lesquelles nous avons lancé la recherche sur les 30 derniers jours par défaut.", - "xpack.securitySolution.alertDetails.noRiskDataDescription": "Aucune donnée de risque de l’hôte n’a été détectée pour cette alerte.", "xpack.securitySolution.alertDetails.overview": "Aperçu", "xpack.securitySolution.alertDetails.overview.enrichedDataTitle": "Données enrichies", "xpack.securitySolution.alertDetails.overview.highlightedFields": "Champs en surbrillance", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 7c9157abe6c54..278b153606d81 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -25553,11 +25553,9 @@ "xpack.securitySolution.administration.os.windows": "Windows", "xpack.securitySolution.alertDetails.enrichmentQueryEndDate": "終了日", "xpack.securitySolution.alertDetails.enrichmentQueryStartDate": "開始日", - "xpack.securitySolution.alertDetails.hostRiskClassification": "ホストリスク分類", "xpack.securitySolution.alertDetails.investigationTimeQueryTitle": "Threat Intelligenceで拡張", "xpack.securitySolution.alertDetails.noEnrichmentsFoundDescription": "指標一致ルールのいずれかまたはこのアラートの拡張と一致する脅威インテリジェンスが見つかりませんでした。", "xpack.securitySolution.alertDetails.noInvestigationEnrichmentsDescription": "デフォルトで過去30日間に検索した脅威インテリジェンスソースから使用可能な追加情報がフィールド値にはないことがわかりました。", - "xpack.securitySolution.alertDetails.noRiskDataDescription": "このアラートのホストリスクデータが見つかりません", "xpack.securitySolution.alertDetails.overview": "概要", "xpack.securitySolution.alertDetails.overview.enrichedDataTitle": "強化されたデータ", "xpack.securitySolution.alertDetails.overview.highlightedFields": "ハイライトされたフィールド", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index fe7acd6cc4e32..a3791dbadf478 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -25584,11 +25584,9 @@ "xpack.securitySolution.administration.os.windows": "Windows", "xpack.securitySolution.alertDetails.enrichmentQueryEndDate": "结束日期", "xpack.securitySolution.alertDetails.enrichmentQueryStartDate": "开始日期", - "xpack.securitySolution.alertDetails.hostRiskClassification": "主机风险分类", "xpack.securitySolution.alertDetails.investigationTimeQueryTitle": "使用威胁情报扩充", "xpack.securitySolution.alertDetails.noEnrichmentsFoundDescription": "我们未找到匹配任何指标匹配规则的威胁情报或此告警的任何扩充。", "xpack.securitySolution.alertDetails.noInvestigationEnrichmentsDescription": "我们未发现字段值具有在过去 30 天中我们默认搜索的威胁情报源提供的其他信息。", - "xpack.securitySolution.alertDetails.noRiskDataDescription": "未找到此告警的主机风险数据", "xpack.securitySolution.alertDetails.overview": "概览", "xpack.securitySolution.alertDetails.overview.enrichedDataTitle": "扩充数据", "xpack.securitySolution.alertDetails.overview.highlightedFields": "突出显示的字段", diff --git a/x-pack/test/security_solution_cypress/config.ts b/x-pack/test/security_solution_cypress/config.ts index cb6ffd7d79f32..8d638789b61ff 100644 --- a/x-pack/test/security_solution_cypress/config.ts +++ b/x-pack/test/security_solution_cypress/config.ts @@ -49,9 +49,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.alerting.rules.minimumScheduleInterval.value=1s', '--xpack.ruleRegistry.unsafe.legacyMultiTenancy.enabled=true', `--xpack.securitySolution.enableExperimental=${JSON.stringify([ - 'riskyHostsEnabled', - 'riskyUsersEnabled', - 'entityAnalyticsDashboardEnabled', 'threatIntelligenceEnabled', ])}`, `--home.disableWelcomeScreen=true`, diff --git a/x-pack/test/threat_intelligence_cypress/config.ts b/x-pack/test/threat_intelligence_cypress/config.ts index 43d80103c5a64..8d638789b61ff 100644 --- a/x-pack/test/threat_intelligence_cypress/config.ts +++ b/x-pack/test/threat_intelligence_cypress/config.ts @@ -49,8 +49,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.alerting.rules.minimumScheduleInterval.value=1s', '--xpack.ruleRegistry.unsafe.legacyMultiTenancy.enabled=true', `--xpack.securitySolution.enableExperimental=${JSON.stringify([ - 'riskyHostsEnabled', - 'riskyUsersEnabled', 'threatIntelligenceEnabled', ])}`, `--home.disableWelcomeScreen=true`, From 6e6b10a9abdec4c69d2b5df45b6d7c52b584908a Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Thu, 15 Sep 2022 12:15:44 -0400 Subject: [PATCH 03/79] [Fleet] Show equivalent API requests (#139658) --- x-pack/plugins/fleet/common/errors.ts | 19 +++ .../fleet/common/experimental_features.ts | 1 + ...plified_package_policy_helper.test.ts.snap | 0 .../simplified_package_policy_helper.test.ts | 4 +- .../simplified_package_policy_helper.ts | 29 ++-- .../single_page_layout/index.tsx | 41 ++++- .../components/settings/index.tsx | 43 +++++- .../edit_package_policy_page/index.tsx | 41 ++++- .../components/create_agent_policy.tsx | 112 +++++++++----- .../services/devtools_request.tsx | 146 ++++++++++++++++++ .../sections/agent_policy/services/index.tsx | 13 ++ .../devtools_request_flyout.tsx | 105 +++++++++++++ .../devtools_request_flyout/index.tsx | 8 + .../plugins/fleet/public/components/index.ts | 1 + .../public/mock/create_test_renderer.tsx | 7 + x-pack/plugins/fleet/server/errors/index.ts | 11 +- .../server/routes/package_policy/handlers.ts | 4 +- 17 files changed, 510 insertions(+), 75 deletions(-) create mode 100644 x-pack/plugins/fleet/common/errors.ts rename x-pack/plugins/fleet/{server/services/package_policies => common/services}/__snapshots__/simplified_package_policy_helper.test.ts.snap (100%) rename x-pack/plugins/fleet/{server/services/package_policies => common/services}/simplified_package_policy_helper.test.ts (94%) rename x-pack/plugins/fleet/{server/services/package_policies => common/services}/simplified_package_policy_helper.ts (88%) create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/devtools_request.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/index.tsx create mode 100644 x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx create mode 100644 x-pack/plugins/fleet/public/components/devtools_request_flyout/index.tsx diff --git a/x-pack/plugins/fleet/common/errors.ts b/x-pack/plugins/fleet/common/errors.ts new file mode 100644 index 0000000000000..ad3a16b752efe --- /dev/null +++ b/x-pack/plugins/fleet/common/errors.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. + */ +/* eslint-disable max-classes-per-file */ + +import type { FleetErrorType } from './types'; + +export class IngestManagerError extends Error { + attributes?: { type: FleetErrorType }; + constructor(message?: string, public readonly meta?: unknown) { + super(message); + this.name = this.constructor.name; // for stack traces + } +} + +export class PackagePolicyValidationError extends IngestManagerError {} diff --git a/x-pack/plugins/fleet/common/experimental_features.ts b/x-pack/plugins/fleet/common/experimental_features.ts index 8367b09513716..8926a1092fca2 100644 --- a/x-pack/plugins/fleet/common/experimental_features.ts +++ b/x-pack/plugins/fleet/common/experimental_features.ts @@ -14,6 +14,7 @@ export type ExperimentalFeatures = typeof allowedExperimentalValues; export const allowedExperimentalValues = Object.freeze({ createPackagePolicyMultiPageLayout: true, packageVerification: true, + showDevtoolsRequest: true, }); type ExperimentalConfigKeys = Array; diff --git a/x-pack/plugins/fleet/server/services/package_policies/__snapshots__/simplified_package_policy_helper.test.ts.snap b/x-pack/plugins/fleet/common/services/__snapshots__/simplified_package_policy_helper.test.ts.snap similarity index 100% rename from x-pack/plugins/fleet/server/services/package_policies/__snapshots__/simplified_package_policy_helper.test.ts.snap rename to x-pack/plugins/fleet/common/services/__snapshots__/simplified_package_policy_helper.test.ts.snap diff --git a/x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.test.ts b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts similarity index 94% rename from x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.test.ts rename to x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts index 15fd7c902b02e..c35f33462b05a 100644 --- a/x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.test.ts +++ b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts @@ -5,13 +5,13 @@ * 2.0. */ -import type { NewPackagePolicy, PackageInfo } from '../../types'; +import type { NewPackagePolicy, PackageInfo } from '../../server/types'; import { simplifiedPackagePolicytoNewPackagePolicy, generateInputId, } from './simplified_package_policy_helper'; -import nginxPackageInfo from './fixtures/package_info/nginx_1.5.0.json'; +import nginxPackageInfo from '../../server/services/package_policies/fixtures/package_info/nginx_1.5.0.json'; function getEnabledInputsAndStreams(newPackagePolicy: NewPackagePolicy) { return newPackagePolicy.inputs diff --git a/x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.ts b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts similarity index 88% rename from x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.ts rename to x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts index 12db049aef71e..31a8b87059720 100644 --- a/x-pack/plugins/fleet/server/services/package_policies/simplified_package_policy_helper.ts +++ b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts @@ -5,16 +5,25 @@ * 2.0. */ -import { packageToPackagePolicy } from '../../../common/services'; +import { packageToPackagePolicy } from '.'; import type { NewPackagePolicyInput, NewPackagePolicyInputStream, PackagePolicyConfigRecord, -} from '../../../common/types'; -import { PackagePolicyValidationError } from '../../errors'; -import type { NewPackagePolicy, PackageInfo } from '../../types'; - -type SimplifiedVars = Record; + NewPackagePolicy, + PackageInfo, +} from '../types'; +import { PackagePolicyValidationError } from '../errors'; + +export type SimplifiedVars = Record; + +export type SimplifiedPackagePolicyStreams = Record< + string, + { + enabled?: undefined | boolean; + vars?: SimplifiedVars; + } +>; export interface SimplifiedPackagePolicy { id?: string; @@ -28,13 +37,7 @@ export interface SimplifiedPackagePolicy { { enabled?: boolean | undefined; vars?: SimplifiedVars; - streams?: Record< - string, - { - enabled?: undefined | boolean; - vars?: SimplifiedVars; - } - >; + streams?: SimplifiedPackagePolicyStreams; } >; } 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 51a8826456fc6..cc49d03f1f1c6 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 @@ -43,12 +43,21 @@ import { useGetPackageInfoByKey, sendCreateAgentPolicy, } from '../../../../hooks'; -import { Loading, Error, ExtensionWrapper } from '../../../../components'; +import { + Loading, + Error, + ExtensionWrapper, + DevtoolsRequestFlyoutButton, +} from '../../../../components'; import { agentPolicyFormValidation, ConfirmDeployAgentPolicyModal } from '../../components'; import { useUIExtension } from '../../../../hooks'; import type { PackagePolicyEditExtensionComponentProps } from '../../../../types'; -import { pkgKeyFromPackageInfo, isVerificationError } from '../../../../services'; +import { + pkgKeyFromPackageInfo, + isVerificationError, + ExperimentalFeaturesService, +} from '../../../../services'; import type { PackagePolicyFormState, @@ -60,13 +69,13 @@ import { IntegrationBreadcrumb } from '../components'; import type { PackagePolicyValidationResults } from '../services'; import { validatePackagePolicy, validationHasErrors } from '../services'; - import { StepConfigurePackagePolicy, StepDefinePackagePolicy, SelectedPolicyTab, StepSelectHosts, } from '../components'; +import { generateCreatePackagePolicyDevToolsRequest } from '../../services'; import { CreatePackagePolicySinglePageLayout, PostInstallAddAgentModal } from './components'; @@ -548,6 +557,15 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ }, ]; + const { showDevtoolsRequest } = ExperimentalFeaturesService.get(); + const devtoolRequest = useMemo( + () => + generateCreatePackagePolicyDevToolsRequest({ + ...packagePolicy, + }), + [packagePolicy] + ); + // Display package error if there is one if (packageInfoError) { return ( @@ -562,6 +580,7 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ /> ); } + return ( @@ -617,6 +636,22 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ /> + {showDevtoolsRequest ? ( + + + + ) : null} onSubmit()} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx index 87614fc6413c8..c23f29a81c395 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx @@ -5,9 +5,10 @@ * 2.0. */ -import React, { memo, useState } from 'react'; +import React, { memo, useMemo, useState } from 'react'; import { useHistory } from 'react-router-dom'; import styled from 'styled-components'; +import { pick } from 'lodash'; import { EuiBottomBar, EuiFlexGroup, @@ -35,6 +36,9 @@ import { agentPolicyFormValidation, ConfirmDeployAgentPolicyModal, } from '../../../components'; +import { DevtoolsRequestFlyoutButton } from '../../../../../components'; +import { ExperimentalFeaturesService } from '../../../../../services'; +import { generateUpdateAgentPolicyDevToolsRequest } from '../../../services'; const FormWrapper = styled.div` max-width: 800px; @@ -126,6 +130,26 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( setIsLoading(false); }; + const { showDevtoolsRequest } = ExperimentalFeaturesService.get(); + const devtoolRequest = useMemo( + () => + generateUpdateAgentPolicyDevToolsRequest( + agentPolicy.id, + pick( + agentPolicy, + 'name', + 'description', + 'namespace', + 'monitoring_enabled', + 'unenroll_timeout', + 'data_output_id', + 'monitoring_output_id', + 'download_source_id' + ) + ), + [agentPolicy] + ); + const onSubmit = async () => { // Retrieve agent count if fleet is enabled if (isFleetEnabled) { @@ -197,6 +221,23 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( /> + {showDevtoolsRequest ? ( + + 0} + btnProps={{ + color: 'ghost', + }} + description={i18n.translate( + 'xpack.fleet.editAgentPolicy.devtoolsRequestDescription', + { + defaultMessage: 'This Kibana request updates an agent policy.', + } + )} + request={devtoolRequest} + /> + + ) : null} + generateUpdatePackagePolicyDevToolsRequest( + packagePolicyId, + omit(packagePolicy, 'elasticsearch') + ), + [packagePolicyId, packagePolicy] + ); + return ( @@ -638,6 +656,23 @@ export const EditPackagePolicyForm = memo<{ /> + {showDevtoolsRequest ? ( + + + + ) : null} props.theme.eui.euiZLevel5}; @@ -98,6 +101,11 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ /> ); + const { showDevtoolsRequest } = ExperimentalFeaturesService.get(); + const agentPolicyContent = useMemo( + () => generateCreateAgentPolicyDevToolsRequest(agentPolicy, withSysMonitoring), + [agentPolicy, withSysMonitoring] + ); const footer = ( @@ -111,48 +119,68 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ - 0} - onClick={async () => { - setIsLoading(true); - try { - const { data, error } = await createAgentPolicy(); - setIsLoading(false); - if (data) { - notifications.toasts.addSuccess( - i18n.translate('xpack.fleet.createAgentPolicy.successNotificationTitle', { - defaultMessage: "Agent policy '{name}' created", - values: { name: agentPolicy.name }, - }) - ); - onClose(data.item); - } else { - notifications.toasts.addDanger( - error - ? error.message - : i18n.translate('xpack.fleet.createAgentPolicy.errorNotificationTitle', { - defaultMessage: 'Unable to create agent policy', - }) - ); + + {showDevtoolsRequest ? ( + + 0} + description={i18n.translate( + 'xpack.fleet.createAgentPolicy.devtoolsRequestDescription', + { + defaultMessage: 'This Kibana request creates a new agent policy.', + } + )} + request={agentPolicyContent} + /> + + ) : null} + + 0 } - } catch (e) { - setIsLoading(false); - notifications.toasts.addDanger( - i18n.translate('xpack.fleet.createAgentPolicy.errorNotificationTitle', { - defaultMessage: 'Unable to create agent policy', - }) - ); - } - }} - data-test-subj="createAgentPolicyFlyoutBtn" - > - - + onClick={async () => { + setIsLoading(true); + try { + const { data, error } = await createAgentPolicy(); + setIsLoading(false); + if (data) { + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.createAgentPolicy.successNotificationTitle', { + defaultMessage: "Agent policy '{name}' created", + values: { name: agentPolicy.name }, + }) + ); + onClose(data.item); + } else { + notifications.toasts.addDanger( + error + ? error.message + : i18n.translate('xpack.fleet.createAgentPolicy.errorNotificationTitle', { + defaultMessage: 'Unable to create agent policy', + }) + ); + } + } catch (e) { + setIsLoading(false); + notifications.toasts.addDanger( + i18n.translate('xpack.fleet.createAgentPolicy.errorNotificationTitle', { + defaultMessage: 'Unable to create agent policy', + }) + ); + } + }} + data-test-subj="createAgentPolicyFlyoutBtn" + > + + + + diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/devtools_request.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/devtools_request.tsx new file mode 100644 index 0000000000000..875d43d1f0ea4 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/devtools_request.tsx @@ -0,0 +1,146 @@ +/* + * 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 { omit } from 'lodash'; + +import { agentPolicyRouteService, packagePolicyRouteService } from '../../../services'; +import { generateInputId } from '../../../../../../common/services/simplified_package_policy_helper'; +import type { + SimplifiedPackagePolicy, + SimplifiedVars, + SimplifiedPackagePolicyStreams, +} from '../../../../../../common/services/simplified_package_policy_helper'; +import type { + NewAgentPolicy, + NewPackagePolicy, + UpdatePackagePolicy, + UpdateAgentPolicyRequest, +} from '../../../types'; + +function generateKibanaDevToolsRequest(method: string, path: string, body: any) { + return `${method} kbn:${path}\n${JSON.stringify(body, null, 2)}\n`; +} + +/** + * Generate a request to create an agent policy that can be used in Kibana Dev tools + * @param agentPolicy + * @param withSysMonitoring + * @returns + */ +export function generateCreateAgentPolicyDevToolsRequest( + agentPolicy: NewAgentPolicy, + withSysMonitoring?: boolean +) { + return generateKibanaDevToolsRequest( + 'POST', + `${agentPolicyRouteService.getCreatePath()}${withSysMonitoring ? '?sys_monitoring=true' : ''}`, + agentPolicy + ); +} + +/** + * Generate a request to create a package policy that can be used in Kibana Dev tools + * @param packagePolicy + * @param withSysMonitoring + * @returns + */ +export function generateCreatePackagePolicyDevToolsRequest( + packagePolicy: NewPackagePolicy & { force?: boolean } +) { + return generateKibanaDevToolsRequest('POST', packagePolicyRouteService.getCreatePath(), { + policy_id: packagePolicy.policy_id ? packagePolicy.policy_id : '', + package: formatPackage(packagePolicy.package), + ...omit(packagePolicy, 'policy_id', 'package', 'enabled'), + inputs: formatInputs(packagePolicy.inputs), + vars: formatVars(packagePolicy.vars), + }); +} + +/** + * Generate a request to update a package policy that can be used in Kibana Dev tools + * @param packagePolicyId + * @param packagePolicy + * @returns + */ +export function generateUpdatePackagePolicyDevToolsRequest( + packagePolicyId: string, + packagePolicy: UpdatePackagePolicy +) { + return generateKibanaDevToolsRequest( + 'PUT', + packagePolicyRouteService.getUpdatePath(packagePolicyId), + { + package: formatPackage(packagePolicy.package), + ...omit(packagePolicy, 'version', 'package', 'enabled'), + inputs: formatInputs(packagePolicy.inputs), + vars: formatVars(packagePolicy.vars), + } + ); +} + +/** + * Generate a request to update an agent policy that can be used in Kibana Dev tools + * @param agentPolicyId + * @param agentPolicy + * @returns + */ +export function generateUpdateAgentPolicyDevToolsRequest( + agentPolicyId: string, + agentPolicy: UpdateAgentPolicyRequest['body'] +) { + return generateKibanaDevToolsRequest( + 'PUT', + agentPolicyRouteService.getUpdatePath(agentPolicyId), + omit(agentPolicy, 'version') + ); +} + +function formatVars(vars: NewPackagePolicy['inputs'][number]['vars']) { + if (!vars) { + return; + } + + return Object.entries(vars).reduce((acc, [varKey, varRecord]) => { + acc[varKey] = varRecord.value; + + return acc; + }, {} as SimplifiedVars); +} + +function formatInputs(inputs: NewPackagePolicy['inputs']) { + return inputs.reduce((acc, input) => { + const inputId = generateInputId(input); + if (!acc) { + acc = {}; + } + acc[inputId] = { + enabled: input.enabled, + vars: formatVars(input.vars), + streams: formatStreams(input.streams), + }; + + return acc; + }, {} as SimplifiedPackagePolicy['inputs']); +} + +function formatStreams(streams: NewPackagePolicy['inputs'][number]['streams']) { + return streams.reduce((acc, stream) => { + if (!acc) { + acc = {}; + } + acc[stream.data_stream.dataset] = { + enabled: stream.enabled, + vars: formatVars(stream.vars), + }; + + return acc; + }, {} as SimplifiedPackagePolicyStreams); +} + +function formatPackage(pkg: NewPackagePolicy['package']) { + return omit(pkg, 'title'); +} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/index.tsx new file mode 100644 index 0000000000000..25266fb5326c7 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/services/index.tsx @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { + generateCreateAgentPolicyDevToolsRequest, + generateCreatePackagePolicyDevToolsRequest, + generateUpdatePackagePolicyDevToolsRequest, + generateUpdateAgentPolicyDevToolsRequest, +} from './devtools_request'; diff --git a/x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx b/x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx new file mode 100644 index 0000000000000..5de1a42fc26ee --- /dev/null +++ b/x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx @@ -0,0 +1,105 @@ +/* + * 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, { useCallback, useRef } from 'react'; + +import { EuiBetaBadge, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import type { EuiButtonEmptyProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { ViewApiRequestFlyout } from '@kbn/es-ui-shared-plugin/public'; +import { KibanaContextProvider, toMountPoint } from '@kbn/kibana-react-plugin/public'; + +import { useStartServices } from '../../hooks'; + +interface DevtoolsRequestFlyoutButtonProps { + title?: string; + description?: string; + isDisabled?: boolean; + request: string; + btnProps?: EuiButtonEmptyProps; +} + +export const DevtoolsRequestFlyoutButton: React.FunctionComponent< + DevtoolsRequestFlyoutButtonProps +> = ({ isDisabled, request, title, description, btnProps = {} }) => { + const flyoutRef = useRef>(); + + const services = useStartServices(); + const onClick = useCallback(() => { + const flyout = services.overlays.openFlyout( + toMountPoint( + + flyout.close()} + request={request} + title={title} + description={description} + /> + , + { theme$: services.theme.theme$ } + ) + ); + + flyoutRef.current = flyout; + }, [services, request, title, description]); + + React.useEffect(() => { + return () => { + flyoutRef.current?.close(); + }; + }, []); + + return ( + + + + ); +}; + +export interface ApiRequestFlyoutProps { + title?: string; + description?: string; + isDisabled?: string; + request: string; + closeFlyout: () => void; +} + +export const ApiRequestFlyout: React.FunctionComponent = ({ + closeFlyout, + title = i18n.translate('xpack.fleet.apiRequestFlyout.title', { + defaultMessage: 'Kibana API Request', + }), + request, + description = i18n.translate('xpack.fleet.apiRequestFlyout.description', { + defaultMessage: 'Perform these request against Kibana', + }), +}) => { + const { application, share } = useStartServices(); + + return ( + + {title} + + + + + } + description={description} + request={request} + closeFlyout={closeFlyout} + application={application} + urlService={share.url} + /> + ); +}; diff --git a/x-pack/plugins/fleet/public/components/devtools_request_flyout/index.tsx b/x-pack/plugins/fleet/public/components/devtools_request_flyout/index.tsx new file mode 100644 index 0000000000000..33d7aa37b60a5 --- /dev/null +++ b/x-pack/plugins/fleet/public/components/devtools_request_flyout/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 { ApiRequestFlyout, DevtoolsRequestFlyoutButton } from './devtools_request_flyout'; diff --git a/x-pack/plugins/fleet/public/components/index.ts b/x-pack/plugins/fleet/public/components/index.ts index 4e9d9f0f021b0..7eb22e4c459bb 100644 --- a/x-pack/plugins/fleet/public/components/index.ts +++ b/x-pack/plugins/fleet/public/components/index.ts @@ -25,4 +25,5 @@ export * from './link_and_revision'; export * from './agent_enrollment_flyout'; export * from './platform_selector'; export { ConfirmForceInstallModal } from './confirm_force_install_modal'; +export { DevtoolsRequestFlyoutButton } from './devtools_request_flyout'; export { HeaderReleaseBadge, InlineReleaseBadge } from './release_badge'; diff --git a/x-pack/plugins/fleet/public/mock/create_test_renderer.tsx b/x-pack/plugins/fleet/public/mock/create_test_renderer.tsx index 4c8d7dba71761..51ff2cb0f8245 100644 --- a/x-pack/plugins/fleet/public/mock/create_test_renderer.tsx +++ b/x-pack/plugins/fleet/public/mock/create_test_renderer.tsx @@ -24,6 +24,7 @@ import { FleetAppContext } from '../applications/fleet/app'; import { IntegrationsAppContext } from '../applications/integrations/app'; import type { FleetConfigType } from '../plugin'; import type { UIExtensionsStorage } from '../types'; +import { ExperimentalFeaturesService } from '../services'; import { createConfigurationMock } from './plugin_configuration'; import { createStartMock } from './plugin_interfaces'; @@ -63,6 +64,12 @@ export const createFleetTestRendererMock = (): TestRenderer => { const history = createMemoryHistory({ initialEntries: [basePath] }); const mountHistory = new CoreScopedHistory(history, basePath); + ExperimentalFeaturesService.init({ + createPackagePolicyMultiPageLayout: true, + packageVerification: true, + showDevtoolsRequest: false, + }); + const HookWrapper = memo(({ children }) => { return ( diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index 713804d8a36f7..2dae7fc82cadd 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -8,20 +8,13 @@ /* eslint-disable max-classes-per-file */ import type { ElasticsearchErrorDetails } from '@kbn/es-errors'; -import type { FleetErrorType } from '../../common/types'; - +import { IngestManagerError } from '../../common/errors'; import { isESClientError } from './utils'; export { defaultIngestErrorHandler, ingestErrorToResponseOptions } from './handlers'; export { isESClientError } from './utils'; -export class IngestManagerError extends Error { - attributes?: { type: FleetErrorType }; - constructor(message?: string, public readonly meta?: unknown) { - super(message); - this.name = this.constructor.name; // for stack traces - } -} +export { IngestManagerError } from '../../common/errors'; export class RegistryError extends IngestManagerError {} export class RegistryConnectionError extends RegistryError {} 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 2dd49d505a276..94721a48df3f2 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts @@ -39,9 +39,9 @@ import { installationStatuses } from '../../../common/constants'; import { defaultIngestErrorHandler, PackagePolicyNotFoundError } from '../../errors'; import { getInstallations, getPackageInfo } from '../../services/epm/packages'; import { PACKAGES_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT } from '../../constants'; -import { simplifiedPackagePolicytoNewPackagePolicy } from '../../services/package_policies/simplified_package_policy_helper'; +import { simplifiedPackagePolicytoNewPackagePolicy } from '../../../common/services/simplified_package_policy_helper'; -import type { SimplifiedPackagePolicy } from '../../services/package_policies/simplified_package_policy_helper'; +import type { SimplifiedPackagePolicy } from '../../../common/services/simplified_package_policy_helper'; export const getPackagePoliciesHandler: RequestHandler< undefined, From 3224b5dd01b1336a894571e3845be080134fe085 Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Thu, 15 Sep 2022 18:31:05 +0200 Subject: [PATCH 04/79] Return 0 if there is no overdue task for capacity estimation (#140720) --- .../monitoring/capacity_estimation.test.ts | 57 +++++++++++++++++++ .../server/monitoring/capacity_estimation.ts | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts index d6ae8024b92f7..3be60d3f3a31b 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts @@ -847,6 +847,63 @@ describe('estimateCapacity', () => { }, }); }); + + test("estimates minutes_to_drain_overdue even if there isn't any overdue task", async () => { + expect( + estimateCapacity( + logger, + mockStats( + { max_workers: 10, poll_interval: 3000 }, + { + overdue: undefined, + owner_ids: 1, + overdue_non_recurring: 0, + capacity_requirements: { + per_minute: 60, + per_hour: 0, + per_day: 0, + }, + }, + { + execution: { + duration: {}, + duration_by_persistence: { + ephemeral: { + p50: 400, + p90: 500, + p95: 1200, + p99: 1500, + }, + non_recurring: { + p50: 400, + p90: 500, + p95: 1200, + p99: 1500, + }, + recurring: { + p50: 400, + p90: 500, + p95: 1200, + p99: 1500, + }, + }, + // no non-recurring executions in the system in recent history + persistence: { + ephemeral: 0, + non_recurring: 0, + recurring: 100, + }, + result_frequency_percent_as_number: {}, + }, + } + ) + ).value.observed + ).toMatchObject({ + observed_kibana_instances: 1, + minutes_to_drain_overdue: 0, + max_throughput_per_minute: 200, + }); + }); }); function mockStats( diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts index 9b48c84da5319..88feea306050c 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts @@ -199,7 +199,7 @@ export function estimateCapacity( max_throughput_per_minute_per_kibana: capacityPerMinutePerKibana, max_throughput_per_minute: assumedCapacityAvailablePerMinute, minutes_to_drain_overdue: - overdue / (assumedKibanaInstances * averageCapacityUsedByPersistedTasksPerKibana), + overdue ?? 0 / (assumedKibanaInstances * averageCapacityUsedByPersistedTasksPerKibana), avg_recurring_required_throughput_per_minute: averageRecurringRequiredPerMinute, avg_recurring_required_throughput_per_minute_per_kibana: assumedAverageRecurringRequiredThroughputPerMinutePerKibana, From 2c2c0c0d617a109d78ff9b92937c89f56579c0f4 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 15 Sep 2022 18:43:28 +0200 Subject: [PATCH 05/79] [ML] Explain Log Rate Spikes: Fix frequent_items agg config. (#140814) - Tweaks the `frequent_items` agg config. `should_minimum_match:2` for the terms should clause improves getting back groups of results. `minimum_set_size:2` will avoid single item frequent sets. - Passes on a possible filter bar query to the `frequent_items` agg. --- x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts | 3 +++ .../aiops/server/routes/queries/fetch_frequent_items.ts | 4 ++++ .../aiops/server/routes/queries/get_query_with_params.ts | 3 +-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts b/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts index 83bcac0bfa70e..f0fadf9476e74 100644 --- a/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts +++ b/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts @@ -7,6 +7,8 @@ import { chunk } from 'lodash'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + import { i18n } from '@kbn/i18n'; import { asyncForEach } from '@kbn/std'; import type { IRouter } from '@kbn/core/server'; @@ -212,6 +214,7 @@ export const defineExplainLogRateSpikesRoute = ( const { fields, df } = await fetchFrequentItems( client, request.body.index, + JSON.parse(request.body.searchQuery) as estypes.QueryDslQueryContainer, changePoints, request.body.timeFieldName, request.body.deviationMin, diff --git a/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_items.ts b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_items.ts index fc834e2951db7..02d20ba18795c 100644 --- a/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_items.ts +++ b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_items.ts @@ -25,6 +25,7 @@ function dropDuplicates(cp: ChangePoint[], uniqueFields: string[]) { export async function fetchFrequentItems( client: ElasticsearchClient, index: string, + searchQuery: estypes.QueryDslQueryContainer, changePoints: ChangePoint[], timeFieldName: string, deviationMin: number, @@ -45,7 +46,9 @@ export async function fetchFrequentItems( // TODO add query params const query = { bool: { + minimum_should_match: 2, filter: [ + searchQuery, { range: { [timeFieldName]: { @@ -83,6 +86,7 @@ export async function fetchFrequentItems( fi: { // @ts-expect-error `frequent_items` is not yet part of `AggregationsAggregationContainer` frequent_items: { + minimum_set_size: 2, size: 200, minimum_support: 0.1, fields: aggFields, diff --git a/x-pack/plugins/aiops/server/routes/queries/get_query_with_params.ts b/x-pack/plugins/aiops/server/routes/queries/get_query_with_params.ts index 9e0b82b341d1d..706d2b6aa5c75 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_query_with_params.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_query_with_params.ts @@ -7,7 +7,6 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { Query } from '@kbn/es-query'; import type { FieldValuePair } from '@kbn/ml-agg-utils'; import type { AiopsExplainLogRateSpikesSchema } from '../../../common/api/explain_log_rate_spikes'; @@ -23,7 +22,7 @@ interface QueryParams { termFilters?: FieldValuePair[]; } export const getQueryWithParams = ({ params, termFilters }: QueryParams) => { - const searchQuery = JSON.parse(params.searchQuery) as Query['query']; + const searchQuery = JSON.parse(params.searchQuery) as estypes.QueryDslQueryContainer; return { bool: { filter: [ From c4ed8ae9199a0c86104a13c3e3ceb8545eadfe40 Mon Sep 17 00:00:00 2001 From: Klim Markelov Date: Thu, 15 Sep 2022 18:45:49 +0200 Subject: [PATCH 06/79] [Enterprise Search][Behavioural Analytics] Introduce events tab for Analytics View Page (#140710) * Introduce events tab * Add events section to the analytics colleciton view --- .../enterprise_search/common/constants.ts | 1 + .../analytics_collection_events.test.tsx | 36 ++++++++++++ .../analytics_collection_events.tsx | 58 +++++++++++++++++++ .../analytics_collection_view.tsx | 2 + .../enterprise_search/server/plugin.ts | 9 +++ 5 files changed, 106 insertions(+) create mode 100644 x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.tsx diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts index 3310ed5d69e4f..6c254b8ea6ffe 100644 --- a/x-pack/plugins/enterprise_search/common/constants.ts +++ b/x-pack/plugins/enterprise_search/common/constants.ts @@ -109,6 +109,7 @@ export const ENTERPRISE_SEARCH_KIBANA_COOKIE = '_enterprise_search'; export const ENTERPRISE_SEARCH_RELEVANCE_LOGS_SOURCE_ID = 'ent-search-logs'; export const ENTERPRISE_SEARCH_AUDIT_LOGS_SOURCE_ID = 'ent-search-audit-logs'; +export const ENTERPRISE_SEARCH_ANALYTICS_LOGS_SOURCE_ID = 'ent-search-analytics-logs'; export const APP_SEARCH_URL = '/app/enterprise_search/app_search'; export const ENTERPRISE_SEARCH_ELASTICSEARCH_URL = '/app/enterprise_search/elasticsearch'; diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.test.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.test.tsx new file mode 100644 index 0000000000000..9a2366384cfc3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.test.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import '../../../__mocks__/shallow_useeffect.mock'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { AnalyticsCollection } from '../../../../../common/types/analytics'; +import { EntSearchLogStream } from '../../../shared/log_stream'; + +import { AnalyticsCollectionEvents } from './analytics_collection_events'; + +describe('AnalyticsCollectionEvents', () => { + const analyticsCollections: AnalyticsCollection = { + event_retention_day_length: 180, + id: '1', + name: 'example', + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders', () => { + const expectedQuery = '_index: logs-elastic_analytics.events-example*'; + + const wrapper = shallow(); + expect(wrapper.find(EntSearchLogStream).prop('query')).toEqual(expectedQuery); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.tsx new file mode 100644 index 0000000000000..25feb0ffcd98e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_events.tsx @@ -0,0 +1,58 @@ +/* + * 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 { ENTERPRISE_SEARCH_ANALYTICS_LOGS_SOURCE_ID } from '../../../../../common/constants'; +import { AnalyticsCollection } from '../../../../../common/types/analytics'; + +import { EntSearchLogStream } from '../../../shared/log_stream'; + +interface AnalyticsCollectionEventsProps { + collection: AnalyticsCollection; +} + +export const AnalyticsCollectionEvents: React.FC = ({ + collection, +}) => { + return ( + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_view.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_view.tsx index 4c8e5a36e4e0f..231dd04893bd5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_view.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_view.tsx @@ -27,6 +27,7 @@ import { COLLECTION_CREATION_PATH, COLLECTION_VIEW_PATH } from '../../routes'; import { EnterpriseSearchAnalyticsPageTemplate } from '../layout/page_template'; +import { AnalyticsCollectionEvents } from './analytics_collection_events'; import { AnalyticsCollectionIntegrate } from './analytics_collection_integrate'; import { AnalyticsCollectionSettings } from './analytics_collection_settings'; @@ -147,6 +148,7 @@ export const AnalyticsCollectionView: React.FC = () => { {section === 'integrate' && ( )} + {section === 'events' && } ) : ( Date: Thu, 15 Sep 2022 12:54:18 -0400 Subject: [PATCH 07/79] [Maps] Add UI counters for triggers that open a new map (#136991) * Add UI counters for triggers that open a new map --- .../main/components/sidebar/lib/visualize_trigger_utils.ts | 2 ++ x-pack/plugins/lens/public/app_plugin/mounter.tsx | 7 +++++++ .../maps/public/routes/list_page/maps_list_view.tsx | 3 +++ .../public/trigger_actions/visualize_geo_field_action.ts | 5 +++-- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/discover/public/application/main/components/sidebar/lib/visualize_trigger_utils.ts b/src/plugins/discover/public/application/main/components/sidebar/lib/visualize_trigger_utils.ts index 81f097aacf707..005accf3021f3 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/lib/visualize_trigger_utils.ts +++ b/src/plugins/discover/public/application/main/components/sidebar/lib/visualize_trigger_utils.ts @@ -15,6 +15,7 @@ import { import type { DataViewField, DataView } from '@kbn/data-views-plugin/public'; import { KBN_FIELD_TYPES } from '@kbn/data-plugin/public'; import { getUiActions } from '../../../../../kibana_services'; +import { PLUGIN_ID } from '../../../../../../common'; export function getTriggerConstant(type: string) { return type === KBN_FIELD_TYPES.GEO_POINT || type === KBN_FIELD_TYPES.GEO_SHAPE @@ -53,6 +54,7 @@ export function triggerVisualizeActions( dataViewSpec: dataView.toSpec(false), fieldName: field.name, contextualFields, + originatingApp: PLUGIN_ID, }; getUiActions().getTrigger(trigger).exec(triggerOptions); } diff --git a/x-pack/plugins/lens/public/app_plugin/mounter.tsx b/x-pack/plugins/lens/public/app_plugin/mounter.tsx index 560fd8a3f79d9..62568a3cbca5e 100644 --- a/x-pack/plugins/lens/public/app_plugin/mounter.tsx +++ b/x-pack/plugins/lens/public/app_plugin/mounter.tsx @@ -211,6 +211,13 @@ export async function mountApp( ? historyLocationState.payload : undefined; + if (historyLocationState && historyLocationState.type === ACTION_VISUALIZE_LENS_FIELD) { + // remove originatingApp from context when visualizing a field in Lens + // so Lens does not try to return to the original app on Save + // see https://github.com/elastic/kibana/issues/128695 + delete initialContext?.originatingApp; + } + if (embeddableEditorIncomingState?.searchSessionId) { data.search.session.continue(embeddableEditorIncomingState.searchSessionId); } diff --git a/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx b/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx index 9278f08bd4d2d..37a2f75df1544 100644 --- a/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx +++ b/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx @@ -7,6 +7,7 @@ import React, { MouseEvent } from 'react'; import { SavedObjectReference } from '@kbn/core/types'; +import { METRIC_TYPE } from '@kbn/analytics'; import { i18n } from '@kbn/i18n'; import { EuiLink } from '@elastic/eui'; import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/basic_table'; @@ -24,6 +25,7 @@ import { getUiSettings, getTheme, getApplication, + getUsageCollection, } from '../../kibana_services'; import { getAppTitle } from '../../../common/i18n_getters'; import { MapSavedObjectAttributes } from '../../../common/map_saved_object_type'; @@ -77,6 +79,7 @@ if (savedObjectsTagging) { function navigateToNewMap() { const navigateToApp = getNavigateToApp(); + getUsageCollection()?.reportUiCounter(APP_ID, METRIC_TYPE.CLICK, 'create_maps_vis_editor'); navigateToApp(APP_ID, { path: MAP_PATH, }); diff --git a/x-pack/plugins/maps/public/trigger_actions/visualize_geo_field_action.ts b/x-pack/plugins/maps/public/trigger_actions/visualize_geo_field_action.ts index ae104c08034ff..f073c7335eb09 100644 --- a/x-pack/plugins/maps/public/trigger_actions/visualize_geo_field_action.ts +++ b/x-pack/plugins/maps/public/trigger_actions/visualize_geo_field_action.ts @@ -9,6 +9,7 @@ import uuid from 'uuid/v4'; import { i18n } from '@kbn/i18n'; import type { Query } from '@kbn/es-query'; import type { SerializableRecord } from '@kbn/utility-types'; +import { METRIC_TYPE } from '@kbn/analytics'; import { createAction, ACTION_VISUALIZE_GEO_FIELD, @@ -50,8 +51,8 @@ export const visualizeGeoFieldAction = createAction({ const usageCollection = getUsageCollection(); usageCollection?.reportUiCounter( APP_ID, - 'visualize_geo_field', - context.originatingApp ? context.originatingApp : 'unknownOriginatingApp' + METRIC_TYPE.CLICK, + `create_maps_vis_${context.originatingApp ? context.originatingApp : 'unknownOriginatingApp'}` ); getCore().application.navigateToApp(app, { From b66cf585cafbe442e4562145be599cc749259525 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Thu, 15 Sep 2022 19:24:41 +0200 Subject: [PATCH 08/79] [Profiling] Add Profiling application (#140722) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joseph Crail Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Dario Gieselaar Co-authored-by: Joseph Crail Co-authored-by: Stephanie Boomsma Co-authored-by: inge4pres Co-authored-by: inge4pres Co-authored-by: Francesco Gualazzi Co-authored-by: Tim Rühsen Co-authored-by: Tim Rühsen --- .eslintrc.js | 9 +- .github/CODEOWNERS | 3 + docs/developer/plugin-list.asciidoc | 4 + package.json | 4 + packages/kbn-optimizer/limits.yml | 1 + .../src/create_router.test.tsx | 9 + .../src/create_router.ts | 2 +- .../src/types/index.ts | 4 +- renovate.json | 9 + src/core/types/elasticsearch/search.ts | 11 +- src/dev/precommit_hook/casing_check_config.js | 2 + .../collectors/application_usage/schema.ts | 1 + src/plugins/telemetry/schema/oss_plugins.json | 131 ++++++ tsconfig.base.json | 2 + x-pack/.i18nrc.json | 1 + x-pack/plugins/observability/public/index.ts | 2 + x-pack/plugins/profiling/.gitignore | 1 + x-pack/plugins/profiling/.i18nrc.json | 7 + x-pack/plugins/profiling/DOCKER.md | 68 +++ x-pack/plugins/profiling/Dockerfile | 48 ++ x-pack/plugins/profiling/INTERNALS.md | 97 ++++ x-pack/plugins/profiling/Makefile | 24 + x-pack/plugins/profiling/README.md | 1 + .../common/__fixtures__/stacktraces.ts | 196 ++++++++ .../profiling/common/callercallee.test.ts | 65 +++ .../plugins/profiling/common/callercallee.ts | 322 ++++++++++++++ .../profiling/common/commonly_used_ranges.ts | 40 ++ .../plugins/profiling/common/elasticsearch.ts | 92 ++++ x-pack/plugins/profiling/common/flamegraph.ts | 303 +++++++++++++ .../profiling/common/frame_group.test.ts | 177 ++++++++ .../plugins/profiling/common/frame_group.ts | 163 +++++++ .../profiling/common/functions.test.ts | 32 ++ x-pack/plugins/profiling/common/functions.ts | 149 +++++++ x-pack/plugins/profiling/common/histogram.ts | 42 ++ x-pack/plugins/profiling/common/index.test.ts | 20 + x-pack/plugins/profiling/common/index.ts | 54 +++ .../profiling/common/profiling.test.ts | 79 ++++ x-pack/plugins/profiling/common/profiling.ts | 193 ++++++++ .../common/runtime_types/range_rt.ts | 12 + .../plugins/profiling/common/stack_traces.ts | 31 ++ x-pack/plugins/profiling/common/topn.ts | 248 +++++++++++ x-pack/plugins/profiling/common/types.ts | 11 + x-pack/plugins/profiling/jest.config.js | 15 + x-pack/plugins/profiling/kibana.json | 29 ++ x-pack/plugins/profiling/public/app.tsx | 89 ++++ .../public/components/async_component.tsx | 59 +++ .../public/components/chart_grid.tsx | 79 ++++ .../profiling_dependencies_context.tsx | 26 ++ .../use_profiling_dependencies.tsx | 17 + .../route_breadcrumbs_context/index.tsx | 80 ++++ .../use_route_breadcrumb.ts | 42 ++ .../contexts/time_range_context/index.tsx | 30 ++ .../flamegraph_information_window.tsx | 184 ++++++++ .../flame_graphs_view/get_impact_rows.ts | 189 ++++++++ .../components/flame_graphs_view/index.tsx | 187 ++++++++ .../public/components/flamegraph.tsx | 330 ++++++++++++++ .../components/functions_view/index.tsx | 167 +++++++ .../primary_and_comparison_search_bar.tsx | 86 ++++ .../profiling_app_page_template/index.tsx | 55 +++ .../primary_profiling_search_bar.tsx | 75 ++++ .../profiling_search_bar.tsx | 80 ++++ .../public/components/redirect_to.tsx | 14 + .../redirect_with_default_date_range.tsx | 20 + .../public/components/route_breadcrumb.tsx | 26 ++ .../public/components/stack_frame_summary.tsx | 26 ++ .../get_stack_traces_tabs.ts | 61 +++ .../components/stack_traces_view/index.tsx | 184 ++++++++ .../public/components/stacked_bar_chart.tsx | 140 ++++++ .../profiling/public/components/subchart.tsx | 245 ++++++++++ .../public/components/topn_functions.tsx | 251 +++++++++++ .../profiling/public/hooks/use_async.ts | 75 ++++ .../hooks/use_default_date_range_redirect.ts | 46 ++ .../hooks/use_kibana_timezone_setting.ts | 19 + .../hooks/use_profiling_charts_theme.ts | 40 ++ .../public/hooks/use_profiling_params.ts | 22 + .../public/hooks/use_profiling_route_path.ts | 13 + .../public/hooks/use_profiling_router.ts | 51 +++ .../profiling/public/hooks/use_time_range.ts | 59 +++ .../public/hooks/use_time_range_async.ts | 15 + .../public/hooks/use_time_range_context.ts | 19 + x-pack/plugins/profiling/public/index.tsx | 12 + x-pack/plugins/profiling/public/plugin.tsx | 131 ++++++ .../profiling/public/routing/index.tsx | 205 +++++++++ x-pack/plugins/profiling/public/services.ts | 122 +++++ x-pack/plugins/profiling/public/types.ts | 30 ++ .../public/utils/formatters/as_cost.ts | 10 + .../public/utils/formatters/as_duration.ts | 12 + .../public/utils/formatters/as_percentage.ts | 10 + .../public/utils/formatters/as_weight.ts | 23 + .../get_interpolation_value.test.ts | 42 ++ .../get_interpolation_value.ts | 21 + .../utils/get_flamegraph_model/index.ts | 110 +++++ .../utils/get_next_time_range/index.test.ts | 101 +++++ .../public/utils/get_next_time_range/index.ts | 51 +++ .../profiling/scripts/export_from_testing.sh | 123 ++++++ .../profiling/scripts/import_from_testing.sh | 46 ++ x-pack/plugins/profiling/server/feature.ts | 43 ++ x-pack/plugins/profiling/server/index.ts | 30 ++ x-pack/plugins/profiling/server/plugin.ts | 61 +++ .../plugins/profiling/server/routes/compat.ts | 20 + .../profiling/server/routes/downsampling.ts | 125 ++++++ .../server/routes/flamechart.test.ts | 61 +++ .../profiling/server/routes/flamechart.ts | 79 ++++ .../plugins/profiling/server/routes/frames.ts | 102 +++++ .../profiling/server/routes/functions.ts | 84 ++++ .../routes/get_executables_and_stacktraces.ts | 94 ++++ .../plugins/profiling/server/routes/index.ts | 45 ++ .../plugins/profiling/server/routes/logger.ts | 20 + .../plugins/profiling/server/routes/query.ts | 42 ++ .../server/routes/stacktrace.test.ts | 140 ++++++ .../profiling/server/routes/stacktrace.ts | 417 ++++++++++++++++++ .../profiling/server/routes/topn.test.ts | 69 +++ .../plugins/profiling/server/routes/topn.ts | 260 +++++++++++ x-pack/plugins/profiling/server/types.ts | 25 ++ .../utils/create_profiling_es_client.ts | 88 ++++ .../server/utils/with_profiling_span.ts | 25 ++ x-pack/plugins/profiling/tsconfig.json | 45 ++ .../test_suites/application_usage/index.ts | 6 +- yarn.lock | 15 + 119 files changed, 8754 insertions(+), 6 deletions(-) create mode 100644 x-pack/plugins/profiling/.gitignore create mode 100644 x-pack/plugins/profiling/.i18nrc.json create mode 100644 x-pack/plugins/profiling/DOCKER.md create mode 100644 x-pack/plugins/profiling/Dockerfile create mode 100644 x-pack/plugins/profiling/INTERNALS.md create mode 100644 x-pack/plugins/profiling/Makefile create mode 100644 x-pack/plugins/profiling/README.md create mode 100644 x-pack/plugins/profiling/common/__fixtures__/stacktraces.ts create mode 100644 x-pack/plugins/profiling/common/callercallee.test.ts create mode 100644 x-pack/plugins/profiling/common/callercallee.ts create mode 100644 x-pack/plugins/profiling/common/commonly_used_ranges.ts create mode 100644 x-pack/plugins/profiling/common/elasticsearch.ts create mode 100644 x-pack/plugins/profiling/common/flamegraph.ts create mode 100644 x-pack/plugins/profiling/common/frame_group.test.ts create mode 100644 x-pack/plugins/profiling/common/frame_group.ts create mode 100644 x-pack/plugins/profiling/common/functions.test.ts create mode 100644 x-pack/plugins/profiling/common/functions.ts create mode 100644 x-pack/plugins/profiling/common/histogram.ts create mode 100644 x-pack/plugins/profiling/common/index.test.ts create mode 100644 x-pack/plugins/profiling/common/index.ts create mode 100644 x-pack/plugins/profiling/common/profiling.test.ts create mode 100644 x-pack/plugins/profiling/common/profiling.ts create mode 100644 x-pack/plugins/profiling/common/runtime_types/range_rt.ts create mode 100644 x-pack/plugins/profiling/common/stack_traces.ts create mode 100644 x-pack/plugins/profiling/common/topn.ts create mode 100644 x-pack/plugins/profiling/common/types.ts create mode 100644 x-pack/plugins/profiling/jest.config.js create mode 100644 x-pack/plugins/profiling/kibana.json create mode 100644 x-pack/plugins/profiling/public/app.tsx create mode 100644 x-pack/plugins/profiling/public/components/async_component.tsx create mode 100644 x-pack/plugins/profiling/public/components/chart_grid.tsx create mode 100644 x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/profiling_dependencies_context.tsx create mode 100644 x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/use_profiling_dependencies.tsx create mode 100644 x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/use_route_breadcrumb.ts create mode 100644 x-pack/plugins/profiling/public/components/contexts/time_range_context/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/flame_graphs_view/flamegraph_information_window.tsx create mode 100644 x-pack/plugins/profiling/public/components/flame_graphs_view/get_impact_rows.ts create mode 100644 x-pack/plugins/profiling/public/components/flame_graphs_view/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/flamegraph.tsx create mode 100644 x-pack/plugins/profiling/public/components/functions_view/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx create mode 100644 x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/profiling_app_page_template/primary_profiling_search_bar.tsx create mode 100644 x-pack/plugins/profiling/public/components/profiling_app_page_template/profiling_search_bar.tsx create mode 100644 x-pack/plugins/profiling/public/components/redirect_to.tsx create mode 100644 x-pack/plugins/profiling/public/components/redirect_with_default_date_range.tsx create mode 100644 x-pack/plugins/profiling/public/components/route_breadcrumb.tsx create mode 100644 x-pack/plugins/profiling/public/components/stack_frame_summary.tsx create mode 100644 x-pack/plugins/profiling/public/components/stack_traces_view/get_stack_traces_tabs.ts create mode 100644 x-pack/plugins/profiling/public/components/stack_traces_view/index.tsx create mode 100644 x-pack/plugins/profiling/public/components/stacked_bar_chart.tsx create mode 100644 x-pack/plugins/profiling/public/components/subchart.tsx create mode 100644 x-pack/plugins/profiling/public/components/topn_functions.tsx create mode 100644 x-pack/plugins/profiling/public/hooks/use_async.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_default_date_range_redirect.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_kibana_timezone_setting.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_profiling_charts_theme.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_profiling_params.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_profiling_route_path.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_profiling_router.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_time_range.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_time_range_async.ts create mode 100644 x-pack/plugins/profiling/public/hooks/use_time_range_context.ts create mode 100644 x-pack/plugins/profiling/public/index.tsx create mode 100644 x-pack/plugins/profiling/public/plugin.tsx create mode 100644 x-pack/plugins/profiling/public/routing/index.tsx create mode 100644 x-pack/plugins/profiling/public/services.ts create mode 100644 x-pack/plugins/profiling/public/types.ts create mode 100644 x-pack/plugins/profiling/public/utils/formatters/as_cost.ts create mode 100644 x-pack/plugins/profiling/public/utils/formatters/as_duration.ts create mode 100644 x-pack/plugins/profiling/public/utils/formatters/as_percentage.ts create mode 100644 x-pack/plugins/profiling/public/utils/formatters/as_weight.ts create mode 100644 x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts create mode 100644 x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts create mode 100644 x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts create mode 100644 x-pack/plugins/profiling/public/utils/get_next_time_range/index.test.ts create mode 100644 x-pack/plugins/profiling/public/utils/get_next_time_range/index.ts create mode 100755 x-pack/plugins/profiling/scripts/export_from_testing.sh create mode 100755 x-pack/plugins/profiling/scripts/import_from_testing.sh create mode 100644 x-pack/plugins/profiling/server/feature.ts create mode 100644 x-pack/plugins/profiling/server/index.ts create mode 100644 x-pack/plugins/profiling/server/plugin.ts create mode 100644 x-pack/plugins/profiling/server/routes/compat.ts create mode 100644 x-pack/plugins/profiling/server/routes/downsampling.ts create mode 100644 x-pack/plugins/profiling/server/routes/flamechart.test.ts create mode 100644 x-pack/plugins/profiling/server/routes/flamechart.ts create mode 100644 x-pack/plugins/profiling/server/routes/frames.ts create mode 100644 x-pack/plugins/profiling/server/routes/functions.ts create mode 100644 x-pack/plugins/profiling/server/routes/get_executables_and_stacktraces.ts create mode 100644 x-pack/plugins/profiling/server/routes/index.ts create mode 100644 x-pack/plugins/profiling/server/routes/logger.ts create mode 100644 x-pack/plugins/profiling/server/routes/query.ts create mode 100644 x-pack/plugins/profiling/server/routes/stacktrace.test.ts create mode 100644 x-pack/plugins/profiling/server/routes/stacktrace.ts create mode 100644 x-pack/plugins/profiling/server/routes/topn.test.ts create mode 100644 x-pack/plugins/profiling/server/routes/topn.ts create mode 100644 x-pack/plugins/profiling/server/types.ts create mode 100644 x-pack/plugins/profiling/server/utils/create_profiling_es_client.ts create mode 100644 x-pack/plugins/profiling/server/utils/with_profiling_span.ts create mode 100644 x-pack/plugins/profiling/tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index da5dfb4eccb5d..e907d104a3c10 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -897,7 +897,14 @@ module.exports = { ], }, }, - + // Profiling + { + files: ['x-pack/plugins/profiling/**/*.{js,mjs,ts,tsx}'], + rules: { + 'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks + 'react-hooks/exhaustive-deps': ['error', { additionalHooks: '^(useAsync)$' }], + }, + }, { // disable imports from legacy uptime plugin files: ['x-pack/plugins/synthetics/public/apps/synthetics/**/*.{js,mjs,ts,tsx}'], diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0a6577ce46c68..58a4e01ac3620 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -158,6 +158,9 @@ x-pack/examples/files_example @elastic/kibana-app-services /x-pack/plugins/apm/public/components/app/rum_dashboard @elastic/uptime /x-pack/test/apm_api_integration/tests/csm/ @elastic/uptime +# Profiling +/x-pack/plugins/profiling @elastic/profiling-ui + # Observability onboarding tour /x-pack/plugins/observability/public/components/shared/tour @elastic/platform-onboarding /x-pack/test/functional/apps/infra/tour.ts @elastic/platform-onboarding diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 08b4096098829..3716d64909f7b 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -577,6 +577,10 @@ Elastic. |This plugin helps users learn how to use the Painless scripting language. +|{kib-repo}blob/{branch}/x-pack/plugins/profiling/README.md[profiling] +|undefined + + |{kib-repo}blob/{branch}/x-pack/plugins/remote_clusters/README.md[remoteClusters] |This plugin helps users manage their remote clusters, which enable cross-cluster search and cross-cluster replication. diff --git a/package.json b/package.json index e7e9092fa0f11..a12c4494d7eb4 100644 --- a/package.json +++ b/package.json @@ -461,6 +461,7 @@ "fast-deep-equal": "^3.1.1", "fflate": "^0.6.9", "file-saver": "^1.3.8", + "fnv-plus": "^1.3.1", "font-awesome": "4.7.0", "formik": "^2.2.9", "fp-ts": "^2.3.1", @@ -534,6 +535,7 @@ "pbf": "3.2.1", "pdfjs-dist": "^2.13.216", "pdfmake": "^0.2.5", + "peggy": "^1.2.0", "pluralize": "3.1.0", "polished": "^3.7.2", "pretty-ms": "6.0.0", @@ -774,6 +776,7 @@ "@types/d3-time": "^1.0.10", "@types/d3-time-format": "^2.1.1", "@types/d3-transition": "^3.0.1", + "@types/dagre": "^0.7.47", "@types/dedent": "^0.7.0", "@types/deep-freeze-strict": "^1.1.0", "@types/delete-empty": "^2.0.0", @@ -786,6 +789,7 @@ "@types/fetch-mock": "^7.3.1", "@types/file-saver": "^2.0.0", "@types/flot": "^0.0.31", + "@types/fnv-plus": "^1.3.0", "@types/geojson": "7946.0.7", "@types/getos": "^3.0.0", "@types/gulp": "^4.0.6", diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index b05f1adf1727a..130353ae0b3a1 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -86,6 +86,7 @@ pageLoadAssetSize: osquery: 107090 painlessLab: 179748 presentationUtil: 58834 + profiling: 18628 remoteClusters: 51327 reporting: 57003 rollup: 97204 diff --git a/packages/kbn-typed-react-router-config/src/create_router.test.tsx b/packages/kbn-typed-react-router-config/src/create_router.test.tsx index e0582de320a96..fe4ada218b0b4 100644 --- a/packages/kbn-typed-react-router-config/src/create_router.test.tsx +++ b/packages/kbn-typed-react-router-config/src/create_router.test.tsx @@ -10,6 +10,7 @@ import * as t from 'io-ts'; import { toNumberRt } from '@kbn/io-ts-utils'; import { createRouter } from './create_router'; import { createMemoryHistory } from 'history'; +import { last } from 'lodash'; describe('createRouter', () => { const routes = { @@ -382,4 +383,12 @@ describe('createRouter', () => { ); }); }); + + describe('getRoutePath', () => { + it('returns the correct route path', () => { + expect( + router.getRoutePath(last(router.getRoutesToMatch('/services/opbeans-java/errors'))!) + ).toBe('/services/{serviceName}/errors'); + }); + }); }); diff --git a/packages/kbn-typed-react-router-config/src/create_router.ts b/packages/kbn-typed-react-router-config/src/create_router.ts index f545fa8ed63e3..4430c852b19ed 100644 --- a/packages/kbn-typed-react-router-config/src/create_router.ts +++ b/packages/kbn-typed-react-router-config/src/create_router.ts @@ -208,7 +208,7 @@ export function createRouter(routes: TRoutes): Router< return matchRoutes(...args) as any; }, getRoutePath: (route) => { - return reactRouterConfigsByRoute.get(route)!.path as string; + return route.path; }, getRoutesToMatch: (path: string) => { return getRoutesToMatch(path) as unknown as FlattenRoutesOf; diff --git a/packages/kbn-typed-react-router-config/src/types/index.ts b/packages/kbn-typed-react-router-config/src/types/index.ts index a5121ba0d72c9..f4655c7022db9 100644 --- a/packages/kbn-typed-react-router-config/src/types/index.ts +++ b/packages/kbn-typed-react-router-config/src/types/index.ts @@ -36,7 +36,7 @@ export interface RouteWithPath extends Route { } export interface RouteMatch { - route: TRoute; + route: TRoute & { path: string }; match: { isExact: boolean; path: string; @@ -146,7 +146,7 @@ export interface Router { path: TPath, ...args: TypeAsArgs> ): string; - getRoutePath(route: Route): string; + getRoutePath(route: RouteWithPath): string; getRoutesToMatch(path: string): FlattenRoutesOf; } diff --git a/renovate.json b/renovate.json index 8ec367e91ee71..508cdcc684fc2 100644 --- a/renovate.json +++ b/renovate.json @@ -207,6 +207,15 @@ "matchBaseBranches": ["main"], "labels": ["release_note:skip", "backport:skip", "ci:all-cypress-suites"], "enabled": true + }, + { + "groupName": "Profiling", + "matchPackageNames": ["fnv-plus", "peggy", "@types/dagre", "@types/fnv-plus"], + "reviewers": ["team:profiling-ui"], + "matchBaseBranches": ["main"], + "labels": ["release_note:skip", "backport:skip"], + "enabled": true, + "prCreation": "immediate" } ] } diff --git a/src/core/types/elasticsearch/search.ts b/src/core/types/elasticsearch/search.ts index 036f85177d305..1543add4c215c 100644 --- a/src/core/types/elasticsearch/search.ts +++ b/src/core/types/elasticsearch/search.ts @@ -607,6 +607,8 @@ export type InferSearchResponseOf< > = Omit, 'aggregations' | 'hits'> & (TSearchRequest['body'] extends TopLevelAggregationRequest ? WrapAggregationResponse> + : TSearchRequest extends TopLevelAggregationRequest + ? WrapAggregationResponse> : { aggregations?: InvalidAggregationRequest }) & { hits: Omit['hits'], 'total' | 'hits'> & (TOptions['restTotalHitsAsInt'] extends true @@ -618,5 +620,12 @@ export type InferSearchResponseOf< value: number; relation: 'eq' | 'gte'; }; - }) & { hits: HitsOf }; + }) & { + hits: HitsOf< + TSearchRequest['body'] extends estypes.SearchRequest['body'] + ? TSearchRequest['body'] + : TSearchRequest, + TDocument + >; + }; }; diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 418a8f448b2c8..f79c53e115149 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -62,6 +62,8 @@ export const IGNORE_FILE_GLOBS = [ 'x-pack/plugins/maps/server/fonts/**/*', + 'x-pack/plugins/profiling/Makefile', + // Bazel default files '**/WORKSPACE.bazel', '**/BUILD.bazel', diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts index 6a5b99973dad3..4b393a7a1c249 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts @@ -152,6 +152,7 @@ export const applicationUsageSchema = { monitoring: commonSchema, 'observability-overview': commonSchema, osquery: commonSchema, + profiling: commonSchema, security_account: commonSchema, reportingRedirect: commonSchema, security_access_agreement: commonSchema, diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index 10dbdf69fb298..c5d90ba52c1cb 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -4527,6 +4527,137 @@ } } }, + "profiling": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "Always `main`" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 90 days" + } + }, + "views": { + "type": "array", + "items": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "The application view being tracked" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application sub view since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application sub view is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 90 days" + } + } + } + } + } + } + }, "security_account": { "properties": { "appId": { diff --git a/tsconfig.base.json b/tsconfig.base.json index 431d898f3773d..29a4a52c73515 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -389,6 +389,8 @@ "@kbn/osquery-plugin/*": ["x-pack/plugins/osquery/*"], "@kbn/painless-lab-plugin": ["x-pack/plugins/painless_lab"], "@kbn/painless-lab-plugin/*": ["x-pack/plugins/painless_lab/*"], + "@kbn/profiling-plugin": ["x-pack/plugins/profiling"], + "@kbn/profiling-plugin/*": ["x-pack/plugins/profiling/*"], "@kbn/remote-clusters-plugin": ["x-pack/plugins/remote_clusters"], "@kbn/remote-clusters-plugin/*": ["x-pack/plugins/remote_clusters/*"], "@kbn/reporting-plugin": ["x-pack/plugins/reporting"], diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index c527e0a3d9556..569c5f6fddbe0 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -45,6 +45,7 @@ "xpack.monitoring": ["plugins/monitoring"], "xpack.osquery": ["plugins/osquery"], "xpack.painlessLab": "plugins/painless_lab", + "xpack.profiling": [ "plugins/profiling" ], "xpack.remoteClusters": "plugins/remote_clusters", "xpack.reporting": ["plugins/reporting"], "xpack.rollupJobs": ["plugins/rollup"], diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index b4e23ce0e83ad..3b5d34e87df75 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -114,3 +114,5 @@ export { } from './components/shared/exploratory_view/configurations/constants'; export { ExploratoryViewContextProvider } from './components/shared/exploratory_view/contexts/exploratory_view_config'; export { fromQuery, toQuery } from './utils/url'; + +export type { NavigationSection } from './services/navigation_registry'; diff --git a/x-pack/plugins/profiling/.gitignore b/x-pack/plugins/profiling/.gitignore new file mode 100644 index 0000000000000..eb5a316cbd195 --- /dev/null +++ b/x-pack/plugins/profiling/.gitignore @@ -0,0 +1 @@ +target diff --git a/x-pack/plugins/profiling/.i18nrc.json b/x-pack/plugins/profiling/.i18nrc.json new file mode 100644 index 0000000000000..de8ac3249413e --- /dev/null +++ b/x-pack/plugins/profiling/.i18nrc.json @@ -0,0 +1,7 @@ +{ + "prefix": "profiling", + "paths": { + "profiling": "." + }, + "translations": [] +} diff --git a/x-pack/plugins/profiling/DOCKER.md b/x-pack/plugins/profiling/DOCKER.md new file mode 100644 index 0000000000000..632c6b7a38c07 --- /dev/null +++ b/x-pack/plugins/profiling/DOCKER.md @@ -0,0 +1,68 @@ +# Containerized development environment for Kibana + +Kibana development moves quickly and has specific NodeJS requirements, which can +change depending on the current branch or commit. This makes developing a plugin +challenging for local development. + +We created a containerized environment to encapsulate the necessary dependencies +and reduce issues, especially when switching between Kibana versions. + +## Assumptions + +By default, this setup assumes that you are running Elasticsearch via the +`apm-integration-testing` repo. However, you can override this as described +below. + +## Usage + +You will first need to build the Docker image for the Kibana environment: + +``` +make build +``` + +This will create a Docker image with the tag `kibana-dev:latest`. + +If you wish to change the image version, you can run this instead: + +``` +make build KIBANA_VERSION=8.4 +``` + +If you need to do a full refresh of the Docker image, you can rebuild from +scratch using this: + +``` +make build-nocache +``` + +Next, you can start the container using this (assumes Docker image is +`kibana-dev:latest` and Elasticsearch is running on the `apm-integration-testing` +Docker network): + +``` +make run +``` + +If your Elasticsearch instance is not running via Docker, you can run this: + +``` +make run-networkless +``` + +## Configuration + +* `KIBANA_VERSION` + +This is the version of the Docker image. This can be used to build separate +images for different Kibana versions. + +* `NETWORK` + +This is the Docker network to use so that Kibana can connect to a local running +instance of Elasticsearch. + +* `PORT` + +This is the exposed port for the Kibana instance. This is useful if you have +conflicts with another running instance. diff --git a/x-pack/plugins/profiling/Dockerfile b/x-pack/plugins/profiling/Dockerfile new file mode 100644 index 0000000000000..777a7ba9cce28 --- /dev/null +++ b/x-pack/plugins/profiling/Dockerfile @@ -0,0 +1,48 @@ +FROM ubuntu:22.04 + +RUN rm /bin/sh && ln -s /bin/bash /bin/sh + +# Install base dependencies +RUN apt-get update + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata + +RUN apt-get install -y -q --no-install-recommends \ + apt-transport-https \ + build-essential \ + ca-certificates \ + curl \ + git \ + libssl-dev \ + python3 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd -ms /bin/bash -d /kibana kibana + +# Install and setup nvm and node +USER kibana + +ARG NODE_VERSION + +ENV NVM_VERSION v0.39.1 +ENV NVM_DIR /kibana/nvm + +RUN mkdir $NVM_DIR \ + && cd $NVM_DIR \ + && curl https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh | bash \ + && . ./nvm.sh \ + && nvm install $NODE_VERSION \ + && nvm alias default $NODE_VERSION \ + && nvm use default + +ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules +ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH + +# Install yarn +USER kibana +WORKDIR /kibana +RUN npm install -g yarn + +WORKDIR /kibana/src +CMD ["bash"] diff --git a/x-pack/plugins/profiling/INTERNALS.md b/x-pack/plugins/profiling/INTERNALS.md new file mode 100644 index 0000000000000..9612a64380efd --- /dev/null +++ b/x-pack/plugins/profiling/INTERNALS.md @@ -0,0 +1,97 @@ +This plugin is divided into two components: the UI and the server. + +The UI is responsible for rendering the charts and flamegraphs. It will make +API calls to the server component depending on the user interactions with the +UI. You will find most of the source code in the `public` directory. + +The server is responsible for retrieving data from the necessary sources and +sending it in the expected format to the UI in response to the UI's API calls. +You will find most of the source code in the `server` directory. + +## Server API + +Depending on how the plugin is configured, there are two different sets of API +calls. + +If the server uses local fixtures as a data source, then the following API is +served by the server and called by the UI: + +* /api/prodfiler/v1/topn/containers +* /api/prodfiler/v1/topn/deployments +* /api/prodfiler/v1/topn/hosts +* /api/prodfiler/v1/topn/threads +* /api/prodfiler/v1/topn/traces +* /api/prodfiler/v1/flamechart/elastic + +If the server uses an Elasticsearch cluster as a data source, then the following +API is served by the server and called by the UI: + +* /api/prodfiler/v2/topn/containers +* /api/prodfiler/v2/topn/deployments +* /api/prodfiler/v2/topn/hosts +* /api/prodfiler/v2/topn/threads +* /api/prodfiler/v2/topn/traces +* /api/prodfiler/v2/flamechart/elastic + +By default, the plugin is configured to use the second API set. See README.md to +configure the plugin to use the first API set (aka local fixtures as a data +source). + +Both API sets are expected to return the same response format. + +The design to have separate API sets for local vs Elasticsearch was partly +because the UI and server components were originally developed separately and +later merged. However, it also allows the server methods to have a single +responsibility, making it easier to test and verify that the server returns +the expected responses for the given data sources. + +## Server API Responses + +### /api/prodfiler/*/flamechart/elastic + +The response returned from this API is used by the Elastic flamegraph. + +The following example is the expected response: + +```json +{ + leaves: [ + { + id: 'pf-collection-agent: runtime.releaseSudog() in runtime2.go#282', + value: 1, + depth: 19, + pathFromRoot: { + '0': 'root', + '1': 'pf-collection-agent: runtime.goexit() in asm_amd64.s#1581', + '2': 'pf-collection-agent: github.com/optimyze/prodfiler/pf-storage-backend/storagebackend/storagebackendv1.(*ScyllaExecutor).Start.func1 in scyllaexecutor.go#102', + '3': 'pf-collection-agent: github.com/optimyze/prodfiler/pf-storage-backend/storagebackend/storagebackendv1.(*ScyllaExecutor).executeQueryAndReadResults in scyllaexecutor.go#158', + '4': 'pf-collection-agent: github.com/gocql/gocql.(*Query).Iter in session.go#1246', + '5': 'pf-collection-agent: github.com/gocql/gocql.(*Session).executeQuery in session.go#463', + '6': 'pf-collection-agent: github.com/gocql/gocql.(*queryExecutor).executeQuery in query_executor.go#66', + '7': 'pf-collection-agent: github.com/gocql/gocql.(*queryExecutor).do in query_executor.go#127', + '8': 'pf-collection-agent: github.com/gocql/gocql.(*queryExecutor).attemptQuery in query_executor.go#32', + '9': 'pf-collection-agent: github.com/gocql/gocql.(*Query).execute in session.go#1044', + '10': 'pf-collection-agent: github.com/gocql/gocql.(*Conn).executeQuery in conn.go#1129', + '11': 'pf-collection-agent: github.com/gocql/gocql.(*Conn).exec in conn.go#916', + '12': 'pf-collection-agent: github.com/gocql/gocql.(*writeExecuteFrame).writeFrame in frame.go#1618', + '13': 'pf-collection-agent: github.com/gocql/gocql.(*framer).writeExecuteFrame in frame.go#1643', + '14': 'pf-collection-agent: github.com/gocql/gocql.(*framer).finishWrite in frame.go#788', + '15': 'pf-collection-agent: github.com/gocql/gocql.(*Conn).Write in conn.go#319', + '16': 'pf-collection-agent: github.com/gocql/gocql.(*writeCoalescer).Write in conn.go#829', + '17': 'pf-collection-agent: sync.(*Cond).Wait in cond.go#83', + '18': 'pf-collection-agent: sync.runtime_notifyListWait() in sema.go#498', + '19': 'pf-collection-agent: runtime.releaseSudog() in runtime2.go#282', + }, + }, + ... + ] +} +``` + +Here is a basic description of the response format: + +* Each object in the `leaves` list represents a leaf node in the flamegraph +* `id` represents the name of the flamegraph node +* `value` represents the number of samples for that node +* `depth` represents the depth of the node in the flamegraph, starting from zero +* `pathFromRoot` represents the full path from the flamegraph root to the given node diff --git a/x-pack/plugins/profiling/Makefile b/x-pack/plugins/profiling/Makefile new file mode 100644 index 0000000000000..3f624ceea3408 --- /dev/null +++ b/x-pack/plugins/profiling/Makefile @@ -0,0 +1,24 @@ +KIBANA_REPO = $(shell git rev-parse --show-toplevel) +NODE_VERSION = $(shell cat ${KIBANA_REPO}/.node-version) + +KIBANA_VERSION ?= latest +NETWORK ?= apm-integration-testing +PORT ?= 5601 + +DOCKER_IMAGE = kibana-dev:${KIBANA_VERSION} +DOCKER_BUILD_ARGS = --build-arg NODE_VERSION="${NODE_VERSION}" -t ${DOCKER_IMAGE} . +DOCKER_RUN_ARGS = --rm -p ${PORT}:5601 -p 9229-9231:9229-9231/tcp -v ${KIBANA_REPO}:/kibana/src -it ${DOCKER_IMAGE} + +.PHONY: build build-nocache run run-networkless + +build: + docker build ${DOCKER_BUILD_ARGS} + +build-nocache: + docker build --no-cache ${DOCKER_BUILD_ARGS} + +run: + docker run --network ${NETWORK} ${DOCKER_RUN_ARGS} + +run-networkless: + docker run ${DOCKER_RUN_ARGS} diff --git a/x-pack/plugins/profiling/README.md b/x-pack/plugins/profiling/README.md new file mode 100644 index 0000000000000..4b2108cc6779e --- /dev/null +++ b/x-pack/plugins/profiling/README.md @@ -0,0 +1 @@ +### TODO diff --git a/x-pack/plugins/profiling/common/__fixtures__/stacktraces.ts b/x-pack/plugins/profiling/common/__fixtures__/stacktraces.ts new file mode 100644 index 0000000000000..73b3830595830 --- /dev/null +++ b/x-pack/plugins/profiling/common/__fixtures__/stacktraces.ts @@ -0,0 +1,196 @@ +/* + * 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 { createStackFrameID } from '../profiling'; + +enum stackTraceID { + A = 'yU2Oct2ct0HkxJ7-pRcPkg==', + B = 'Xt8aKN70PDXpMDLCOmojzQ==', + C = '8OauxYq2WK4_tBqM4xkIwA==', + D = 'nQWGdRxvqVjwlLmQWH1Phw==', + E = '2KciEEWALlol3b6x95PHcw==', + F = 'BxRgiXa4h9Id6BjdPPHK8Q==', +} + +enum fileID { + A = 'Ncujji3wC1nL73TTEyFBhA==', + B = 'T2vdys5d7j85az1aP86zCg==', + C = 'jMaTVVjYv7cecd0C4HguGw==', + D = 'RLkjnlfcvSJN2Wph9WUuOQ==', + E = 'gnEsgxvvEODj6iFYMQWYlA==', + F = 'Gf4xoLc8QuAHU49Ch_CFOA==', + G = 'ZCOCZlls7r2cbG1HchkbVg==', + H = 'Og7kGWGe9qiCunkaXDffHQ==', + I = 'WAE6T1TeDsjDMOuwX4Ynxg==', + J = 'ZNiZco1zgh0nJI6hPllMaQ==', + K = 'abl5r8Vvvb2Y7NaDZW1QLQ==', +} + +enum addressOrLine { + A = 26278522, + B = 6712518, + C = 105806025, + D = 105806854, + E = 107025202, + F = 107044169, + G = 18353156, + H = 3027, + I = 5201, + J = 67384048, + K = 8888, +} + +const frameID: Record = { + A: createStackFrameID(fileID.A, addressOrLine.A), + B: createStackFrameID(fileID.B, addressOrLine.B), + C: createStackFrameID(fileID.C, addressOrLine.C), + D: createStackFrameID(fileID.D, addressOrLine.D), + E: createStackFrameID(fileID.E, addressOrLine.C), + F: createStackFrameID(fileID.E, addressOrLine.D), + G: createStackFrameID(fileID.E, addressOrLine.E), + H: createStackFrameID(fileID.E, addressOrLine.F), + I: createStackFrameID(fileID.E, addressOrLine.G), + J: createStackFrameID(fileID.F, addressOrLine.H), + K: createStackFrameID(fileID.F, addressOrLine.I), + L: createStackFrameID(fileID.F, addressOrLine.J), + M: createStackFrameID(fileID.F, addressOrLine.K), + N: createStackFrameID(fileID.G, addressOrLine.G), + O: createStackFrameID(fileID.H, addressOrLine.H), + P: createStackFrameID(fileID.I, addressOrLine.I), + Q: createStackFrameID(fileID.F, addressOrLine.A), + R: createStackFrameID(fileID.E, addressOrLine.B), + S: createStackFrameID(fileID.E, addressOrLine.C), +}; + +export const events = new Map([ + [stackTraceID.A, 16], + [stackTraceID.B, 9], + [stackTraceID.C, 7], + [stackTraceID.D, 5], + [stackTraceID.E, 2], + [stackTraceID.F, 1], +]); + +export const stackTraces = new Map([ + [ + stackTraceID.A, + { + FileIDs: [fileID.D, fileID.C, fileID.B, fileID.A], + AddressOrLines: [addressOrLine.D, addressOrLine.C, addressOrLine.B, addressOrLine.A], + FrameIDs: [frameID.D, frameID.C, frameID.B, frameID.A], + Types: [3, 3, 3, 3], + }, + ], + [ + stackTraceID.B, + { + FileIDs: [fileID.E, fileID.E, fileID.E, fileID.E, fileID.E], + AddressOrLines: [ + addressOrLine.G, + addressOrLine.F, + addressOrLine.E, + addressOrLine.D, + addressOrLine.C, + ], + FrameIDs: [frameID.I, frameID.H, frameID.G, frameID.F, frameID.E], + Types: [3, 3, 3, 3, 3], + }, + ], + [ + stackTraceID.C, + { + FileIDs: [fileID.F, fileID.F, fileID.F, fileID.F], + AddressOrLines: [addressOrLine.K, addressOrLine.J, addressOrLine.I, addressOrLine.H], + FrameIDs: [frameID.M, frameID.L, frameID.K, frameID.J], + Types: [3, 3, 3, 3], + }, + ], + [ + stackTraceID.D, + { + FileIDs: [fileID.I, fileID.H, fileID.G], + AddressOrLines: [addressOrLine.I, addressOrLine.H, addressOrLine.G], + FrameIDs: [frameID.P, frameID.O, frameID.N], + Types: [3, 8, 8], + }, + ], + [ + stackTraceID.E, + { + FileIDs: [fileID.F, fileID.F, fileID.F], + AddressOrLines: [addressOrLine.K, addressOrLine.J, addressOrLine.I], + FrameIDs: [frameID.M, frameID.L, frameID.K], + Types: [3, 3, 3], + }, + ], + [ + stackTraceID.F, + { + FileIDs: [fileID.E, fileID.E], + AddressOrLines: [addressOrLine.F, addressOrLine.E], + FrameIDs: [frameID.H, frameID.G], + Types: [3, 3], + }, + ], +]); + +const defaultStackFrame = { + FileName: '', + FunctionName: '', + FunctionOffset: 0, + LineNumber: 0, + SourceType: 0, +}; + +export const stackFrames = new Map([ + [ + frameID.A, + { + FileName: 'ThreadPoolExecutor.java', + FunctionName: 'java.lang.Runnable java.util.concurrent.ThreadPoolExecutor.getTask()', + FunctionOffset: 26, + LineNumber: 1061, + SourceType: 5, + }, + ], + [ + frameID.B, + { FileName: '', FunctionName: 'sock_sendmsg', FunctionOffset: 0, LineNumber: 0, SourceType: 0 }, + ], + [frameID.C, defaultStackFrame], + [frameID.D, defaultStackFrame], + [frameID.E, defaultStackFrame], + [frameID.F, defaultStackFrame], + [frameID.G, defaultStackFrame], + [frameID.H, defaultStackFrame], + [frameID.I, defaultStackFrame], + [frameID.J, defaultStackFrame], + [frameID.K, defaultStackFrame], + [ + frameID.L, + { FileName: '', FunctionName: 'udp_sendmsg', FunctionOffset: 0, LineNumber: 0, SourceType: 0 }, + ], + [frameID.M, defaultStackFrame], + [frameID.N, defaultStackFrame], + [frameID.O, defaultStackFrame], + [frameID.P, defaultStackFrame], + [frameID.Q, defaultStackFrame], + [frameID.R, defaultStackFrame], + [frameID.S, defaultStackFrame], +]); + +export const executables = new Map([ + [fileID.A, { FileName: '' }], + [fileID.B, { FileName: '' }], + [fileID.C, { FileName: '' }], + [fileID.D, { FileName: 'libglapi.so.0.0.0' }], + [fileID.E, { FileName: '' }], + [fileID.F, { FileName: '' }], + [fileID.G, { FileName: '' }], + [fileID.H, { FileName: '' }], + [fileID.I, { FileName: '' }], +]); diff --git a/x-pack/plugins/profiling/common/callercallee.test.ts b/x-pack/plugins/profiling/common/callercallee.test.ts new file mode 100644 index 0000000000000..af07da439a3e7 --- /dev/null +++ b/x-pack/plugins/profiling/common/callercallee.test.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 { sum } from 'lodash'; +import { + createCallerCalleeDiagram, + createCallerCalleeIntermediateNode, + fromCallerCalleeIntermediateNode, +} from './callercallee'; +import { createFrameGroupID } from './frame_group'; +import { createStackFrameMetadata } from './profiling'; + +import { events, stackTraces, stackFrames, executables } from './__fixtures__/stacktraces'; + +describe('Caller-callee operations', () => { + test('1', () => { + const parentFrame = createStackFrameMetadata({ + FileID: '6bc50d345244d5956f93a1b88f41874d', + FrameType: 3, + AddressOrLine: 971740, + FunctionName: 'epoll_wait', + SourceID: 'd670b496cafcaea431a23710fb5e4f58', + SourceLine: 30, + ExeFileName: 'libc-2.26.so', + }); + const parent = createCallerCalleeIntermediateNode(parentFrame, 10, 'parent'); + + const childFrame = createStackFrameMetadata({ + FileID: '8d8696a4fd51fa88da70d3fde138247d', + FrameType: 3, + AddressOrLine: 67000, + FunctionName: 'epoll_poll', + SourceID: 'f0a7901dcefed6cc8992a324b9df733c', + SourceLine: 150, + ExeFileName: 'auditd', + }); + const child = createCallerCalleeIntermediateNode(childFrame, 10, 'child'); + + const root = createCallerCalleeIntermediateNode(createStackFrameMetadata(), 10, 'root'); + root.callees.set(createFrameGroupID(child.frameGroup), child); + root.callees.set(createFrameGroupID(parent.frameGroup), parent); + + const graph = fromCallerCalleeIntermediateNode(root); + + // Modify original frames to verify graph does not contain references + parent.samples = 30; + child.samples = 20; + + expect(graph.Callees[0].Samples).toEqual(10); + expect(graph.Callees[1].Samples).toEqual(10); + }); + + test('2', () => { + const totalSamples = sum([...events.values()]); + + const root = createCallerCalleeDiagram(events, stackTraces, stackFrames, executables); + expect(root.Samples).toEqual(totalSamples); + expect(root.CountInclusive).toEqual(totalSamples); + expect(root.CountExclusive).toEqual(0); + }); +}); diff --git a/x-pack/plugins/profiling/common/callercallee.ts b/x-pack/plugins/profiling/common/callercallee.ts new file mode 100644 index 0000000000000..e4472968c4d39 --- /dev/null +++ b/x-pack/plugins/profiling/common/callercallee.ts @@ -0,0 +1,322 @@ +/* + * 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 { clone } from 'lodash'; +import { + compareFrameGroup, + createFrameGroup, + createFrameGroupID, + FrameGroup, + FrameGroupID, +} from './frame_group'; +import { + createStackFrameMetadata, + Executable, + FileID, + groupStackFrameMetadataByStackTrace, + StackFrame, + StackFrameID, + StackFrameMetadata, + StackTrace, + StackTraceID, +} from './profiling'; + +export interface CallerCalleeIntermediateNode { + frameGroup: FrameGroup; + frameGroupID: string; + callers: Map; + callees: Map; + frameMetadata: Set; + samples: number; + countInclusive: number; + countExclusive: number; +} + +export function createCallerCalleeIntermediateNode( + frameMetadata: StackFrameMetadata, + samples: number, + frameGroupID: string +): CallerCalleeIntermediateNode { + return { + frameGroup: createFrameGroup(frameMetadata), + callers: new Map(), + callees: new Map(), + frameMetadata: new Set([frameMetadata]), + samples, + countInclusive: 0, + countExclusive: 0, + frameGroupID, + }; +} + +interface RelevantTrace { + frames: StackFrameMetadata[]; + index: number; +} + +// selectRelevantTraces searches through a map that maps trace hashes to their +// frames and only returns those traces that have a frame that are equivalent +// to the rootFrame provided. It also sets the "index" in the sequence of +// traces at which the rootFrame is found. +// +// If the rootFrame is "empty" (e.g. fileID is empty and line number is 0), all +// traces in the given time frame are deemed relevant, and the "index" is set +// to the length of the trace -- since there is no root frame, the frame should +// be considered "calls-to" only going. +function selectRelevantTraces( + rootFrame: StackFrameMetadata, + frames: Map +): Map { + const result = new Map(); + const rootString = createFrameGroupID(createFrameGroup(rootFrame)); + for (const [stackTraceID, frameMetadata] of frames) { + if (rootFrame.FileID === '' && rootFrame.AddressOrLine === 0) { + // If the root frame is empty, every trace is relevant, and all elements + // of the trace are relevant. This means that the index is set to the + // length of the frameMetadata, implying that in the absence of a root + // frame the "topmost" frame is the root frame. + result.set(stackTraceID, { + frames: frameMetadata, + index: frameMetadata.length, + } as RelevantTrace); + } else { + // Search for the right index of the root frame in the frameMetadata, and + // set it in the result. + for (let i = 0; i < frameMetadata.length; i++) { + if (rootString === createFrameGroupID(createFrameGroup(frameMetadata[i]))) { + result.set(stackTraceID, { + frames: frameMetadata, + index: i, + } as RelevantTrace); + } + } + } + } + return result; +} + +function sortRelevantTraces(relevantTraces: Map): StackTraceID[] { + const sortedRelevantTraces = new Array(); + for (const trace of relevantTraces.keys()) { + sortedRelevantTraces.push(trace); + } + return sortedRelevantTraces.sort((t1, t2) => { + if (t1 < t2) return -1; + if (t1 > t2) return 1; + return 0; + }); +} + +// createCallerCalleeIntermediateRoot creates a graph in the internal +// representation from a StackFrameMetadata that identifies the "centered" +// function and the trace results that provide traces and the number of times +// that the trace has been seen. +// +// The resulting data structure contains all of the data, but is not yet in the +// form most easily digestible by others. +export function createCallerCalleeIntermediateRoot( + rootFrame: StackFrameMetadata, + traces: Map, + frames: Map +): CallerCalleeIntermediateNode { + // Create a node for the centered frame + const root = createCallerCalleeIntermediateNode(rootFrame, 0, 'root'); + + // Obtain only the relevant frames (e.g. frames that contain the root frame + // somewhere). If the root frame is "empty" (e.g. fileID is zero and line + // number is zero), all frames are deemed relevant. + const relevantTraces = selectRelevantTraces(rootFrame, frames); + + // For a deterministic result we have to walk the traces in a deterministic + // order. A deterministic result allows for deterministic UI views, something + // that users expect. + const relevantTracesSorted = sortRelevantTraces(relevantTraces); + + // Walk through all traces that contain the root. Increment the count of the + // root by the count of that trace. Walk "up" the trace (through the callers) + // and add the count of the trace to each caller. Then walk "down" the trace + // (through the callees) and add the count of the trace to each callee. + + for (const traceHash of relevantTracesSorted) { + const trace = relevantTraces.get(traceHash)!; + + // The slice of frames is ordered so that the leaf function is at index 0. + // This means that the "second part" of the slice are the callers, and the + // "first part" are the callees. + // + // We currently assume there are no callers. + const callees = trace.frames; + const samples = traces.get(traceHash)!; + + // Go through the callees, reverse iteration + let currentNode = clone(root); + root.samples += samples; + + for (let i = 0; i < callees.length; i++) { + const callee = callees[i]; + const calleeName = createFrameGroupID(createFrameGroup(callee)); + let node = currentNode.callees.get(calleeName); + if (node === undefined) { + node = createCallerCalleeIntermediateNode(callee, samples, calleeName); + currentNode.callees.set(calleeName, node); + } else { + node.samples += samples; + } + + node.countInclusive += samples; + + if (i === callees.length - 1) { + // Leaf frame: sum up counts for exclusive CPU. + node.countExclusive += samples; + } + currentNode = node; + } + } + + root.countExclusive = 0; + root.countInclusive = root.samples; + + return root; +} + +export interface CallerCalleeNode { + FrameID: string; + FrameGroupID: string; + Callers: CallerCalleeNode[]; + Callees: CallerCalleeNode[]; + FileID: string; + FrameType: number; + ExeFileName: string; + FunctionID: string; + FunctionName: string; + AddressOrLine: number; + FunctionSourceLine: number; + FunctionSourceID: string; + FunctionSourceURL: string; + SourceFilename: string; + SourceLine: number; + Samples: number; + CountInclusive: number; + CountExclusive: number; +} + +export function createCallerCalleeNode(options: Partial = {}): CallerCalleeNode { + const node = {} as CallerCalleeNode; + + node.FrameID = options.FrameID ?? ''; + node.FrameGroupID = options.FrameGroupID ?? ''; + node.Callers = clone(options.Callers ?? []); + node.Callees = clone(options.Callees ?? []); + node.FileID = options.FileID ?? ''; + node.FrameType = options.FrameType ?? 0; + node.ExeFileName = options.ExeFileName ?? ''; + node.FunctionID = options.FunctionID ?? ''; + node.FunctionName = options.FunctionName ?? ''; + node.AddressOrLine = options.AddressOrLine ?? 0; + node.FunctionSourceLine = options.FunctionSourceLine ?? 0; + node.FunctionSourceID = options.FunctionSourceID ?? ''; + node.FunctionSourceURL = options.FunctionSourceURL ?? ''; + node.SourceFilename = options.SourceFilename ?? ''; + node.SourceLine = options.SourceLine ?? 0; + node.Samples = options.Samples ?? 0; + node.CountInclusive = options.CountInclusive ?? 0; + node.CountExclusive = options.CountExclusive ?? 0; + + return node; +} + +// selectCallerCalleeData is the "standard" way of merging multiple frames into +// one node. It simply takes the data from the first frame. +function selectCallerCalleeData(frameMetadata: Set, node: CallerCalleeNode) { + for (const metadata of frameMetadata) { + node.FileID = metadata.FileID; + node.FrameType = metadata.FrameType; + node.ExeFileName = metadata.ExeFileName; + node.FunctionID = metadata.FunctionName; + node.FunctionName = metadata.FunctionName; + node.AddressOrLine = metadata.AddressOrLine; + node.FrameID = metadata.FrameID; + + // Unknown/invalid offsets are currently set to 0. + // + // In this case we leave FunctionSourceLine=0 as a flag for the UI that the + // FunctionSourceLine should not be displayed. + // + // As FunctionOffset=0 could also be a legit value, this work-around needs + // a real fix. The idea for after GA is to change FunctionOffset=-1 to + // indicate unknown/invalid. + if (metadata.FunctionOffset > 0) { + node.FunctionSourceLine = metadata.SourceLine - metadata.FunctionOffset; + } else { + node.FunctionSourceLine = 0; + } + + node.FunctionSourceID = metadata.SourceID; + node.FunctionSourceURL = metadata.SourceCodeURL; + node.SourceFilename = metadata.SourceFilename; + node.SourceLine = metadata.SourceLine; + break; + } +} + +function sortNodes( + nodes: Map +): CallerCalleeIntermediateNode[] { + const sortedNodes = new Array(); + for (const node of nodes.values()) { + sortedNodes.push(node); + } + return sortedNodes.sort((n1, n2) => { + return compareFrameGroup(n1.frameGroup, n2.frameGroup); + }); +} + +// fromCallerCalleeIntermediateNode is used to convert the intermediate representation +// of the diagram into the format that is easily JSONified and more easily consumed by +// others. +export function fromCallerCalleeIntermediateNode( + root: CallerCalleeIntermediateNode +): CallerCalleeNode { + const node = createCallerCalleeNode({ + FrameGroupID: root.frameGroupID, + Samples: root.samples, + CountInclusive: root.countInclusive, + CountExclusive: root.countExclusive, + }); + + // Populate the other fields with data from the root node. Selectors are not supposed + // to be able to fail. + selectCallerCalleeData(root.frameMetadata, node); + + // Now fill the caller and callee arrays. + // For a deterministic result we have to walk the callers / callees in a deterministic + // order. A deterministic result allows deterministic UI views, something that users expect. + for (const caller of sortNodes(root.callers)) { + node.Callers.push(fromCallerCalleeIntermediateNode(caller)); + } + for (const callee of sortNodes(root.callees)) { + node.Callees.push(fromCallerCalleeIntermediateNode(callee)); + } + + return node; +} + +export function createCallerCalleeDiagram( + events: Map, + stackTraces: Map, + stackFrames: Map, + executables: Map +): CallerCalleeNode { + const rootFrame = createStackFrameMetadata(); + const frameMetadataForTraces = groupStackFrameMetadataByStackTrace( + stackTraces, + stackFrames, + executables + ); + const root = createCallerCalleeIntermediateRoot(rootFrame, events, frameMetadataForTraces); + return fromCallerCalleeIntermediateNode(root); +} diff --git a/x-pack/plugins/profiling/common/commonly_used_ranges.ts b/x-pack/plugins/profiling/common/commonly_used_ranges.ts new file mode 100644 index 0000000000000..2323915d17b45 --- /dev/null +++ b/x-pack/plugins/profiling/common/commonly_used_ranges.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface CommonlyUsedRange { + start: string; + end: string; + label: string; +} + +export const commonlyUsedRanges: CommonlyUsedRange[] = [ + { + start: 'now-30m', + end: 'now', + label: 'Last 30 minutes', + }, + { + start: 'now-1h', + end: 'now', + label: 'Last hour', + }, + { + start: 'now-24h', + end: 'now', + label: 'Last 24 hours', + }, + { + start: 'now-1w', + end: 'now', + label: 'Last 7 days', + }, + { + start: 'now-30d', + end: 'now', + label: 'Last 30 days', + }, +]; diff --git a/x-pack/plugins/profiling/common/elasticsearch.ts b/x-pack/plugins/profiling/common/elasticsearch.ts new file mode 100644 index 0000000000000..637f722fa7efe --- /dev/null +++ b/x-pack/plugins/profiling/common/elasticsearch.ts @@ -0,0 +1,92 @@ +/* + * 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 { UnionToIntersection, ValuesType } from 'utility-types'; + +export enum ProfilingESField { + Timestamp = '@timestamp', + ContainerName = 'container.name', + ProcessThreadName = 'process.thread.name', + StacktraceCount = 'Stacktrace.count', + HostID = 'host.id', + OrchestratorResourceName = 'orchestrator.resource.name', + ServiceName = 'service.name', + StacktraceID = 'Stacktrace.id', + StacktraceFrameIDs = 'Stacktrace.frame.ids', + StacktraceFrameTypes = 'Stacktrace.frame.types', + StackframeFileName = 'Stackframe.file.name', + StackframeFunctionName = 'Stackframe.function.name', + StackframeLineNumber = 'Stackframe.line.number', + StackframeFunctionOffset = 'Stackframe.function.offset', + StackframeSourceType = 'Stackframe.source.type', + ExecutableBuildID = 'Executable.build.id', + ExecutableFileName = 'Executable.file.name', +} + +type DedotKey< + TKey extends string | number | symbol, + TValue +> = TKey extends `${infer THead}.${infer TTail}` + ? { + [key in THead]: DedotKey; + } + : { [key in TKey]: TValue }; + +export type DedotObject> = UnionToIntersection< + ValuesType<{ + [TKey in keyof TObject]: DedotKey; + }> +>; + +export type FlattenObject< + TObject extends Record, + TPrefix extends string = '' +> = UnionToIntersection< + ValuesType<{ + [TKey in keyof TObject & string]: TObject[TKey] extends Record + ? FlattenObject + : { [key in `${TPrefix}${TKey}`]: TObject[TKey] }; + }> +>; + +type FlattenedKeysOf> = keyof FlattenObject; + +export type PickFlattened< + TObject extends Record, + TPickKey extends FlattenedKeysOf +> = DedotObject, TPickKey>>; + +export type ProfilingESEvent = DedotObject<{ + [ProfilingESField.Timestamp]: string; + [ProfilingESField.ContainerName]: string; + [ProfilingESField.ProcessThreadName]: string; + [ProfilingESField.StacktraceCount]: number; + [ProfilingESField.HostID]: string; + [ProfilingESField.OrchestratorResourceName]: string; + [ProfilingESField.ServiceName]: string; + [ProfilingESField.StacktraceID]: string; +}>; + +export type ProfilingStackTrace = DedotObject<{ + [ProfilingESField.Timestamp]: number; + [ProfilingESField.StacktraceFrameIDs]: string; + [ProfilingESField.StacktraceFrameTypes]: string; +}>; + +export type ProfilingStackFrame = DedotObject<{ + [ProfilingESField.StackframeFileName]: string; + [ProfilingESField.StackframeFunctionName]: string; + [ProfilingESField.StackframeLineNumber]: number; + [ProfilingESField.StackframeFunctionOffset]: number; + [ProfilingESField.StackframeSourceType]: number; +}>; + +export type ProfilingExecutable = DedotObject<{ + [ProfilingESField.ExecutableBuildID]: string; + [ProfilingESField.ExecutableFileName]: string; + [ProfilingESField.Timestamp]: string; +}>; diff --git a/x-pack/plugins/profiling/common/flamegraph.ts b/x-pack/plugins/profiling/common/flamegraph.ts new file mode 100644 index 0000000000000..b06154dde9c54 --- /dev/null +++ b/x-pack/plugins/profiling/common/flamegraph.ts @@ -0,0 +1,303 @@ +/* + * 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 fnv from 'fnv-plus'; +import { CallerCalleeNode, createCallerCalleeDiagram } from './callercallee'; +import { + describeFrameType, + Executable, + FileID, + StackFrame, + StackFrameID, + StackTrace, + StackTraceID, +} from './profiling'; + +interface ColumnarCallerCallee { + Label: string[]; + Value: number[]; + X: number[]; + Y: number[]; + Color: number[]; + CountInclusive: number[]; + CountExclusive: number[]; + ID: string[]; + FrameID: string[]; + ExecutableID: string[]; +} + +export interface ElasticFlameGraph { + Label: string[]; + Value: number[]; + Position: number[]; + Size: number[]; + Color: number[]; + CountInclusive: number[]; + CountExclusive: number[]; + ID: string[]; + FrameID: string[]; + ExecutableID: string[]; + TotalSeconds: number; + TotalTraces: number; + SampledTraces: number; +} + +export enum FlameGraphComparisonMode { + Absolute = 'absolute', + Relative = 'relative', +} + +/* + * Helper to calculate the color of a given block to be drawn. The desirable outcomes of this are: + * Each of the following frame types should get a different set of color hues: + * + * 0 = Unsymbolized frame + * 1 = Python + * 2 = PHP + * 3 = Native + * 4 = Kernel + * 5 = JVM/Hotspot + * 6 = Ruby + * 7 = Perl + * 8 = JavaScript + * + * This is most easily achieved by mapping frame types to different color variations, using + * the x-position we can use different colors for adjacent blocks while keeping a similar hue + * + * Taken originally from prodfiler_ui/src/helpers/Pixi/frameTypeToColors.tsx + */ +const frameTypeToColors = [ + [0xfd8484, 0xfd9d9d, 0xfeb5b5, 0xfecece], + [0xfcae6b, 0xfdbe89, 0xfdcea6, 0xfedfc4], + [0xfcdb82, 0xfde29b, 0xfde9b4, 0xfef1cd], + [0x6dd0dc, 0x8ad9e3, 0xa7e3ea, 0xc5ecf1], + [0x7c9eff, 0x96b1ff, 0xb0c5ff, 0xcbd8ff], + [0x65d3ac, 0x84dcbd, 0xa3e5cd, 0xc1edde], + [0xd79ffc, 0xdfb2fd, 0xe7c5fd, 0xefd9fe], + [0xf98bb9, 0xfaa2c7, 0xfbb9d5, 0xfdd1e3], + [0xcbc3e3, 0xd5cfe8, 0xdfdbee, 0xeae7f3], +]; + +function frameTypeToRGB(frameType: number, x: number): number { + return frameTypeToColors[frameType][x % 4]; +} + +export function rgbToRGBA(rgb: number): number[] { + return [ + Math.floor(rgb / 65536) / 255, + (Math.floor(rgb / 256) % 256) / 255, + (rgb % 256) / 255, + 1.0, + ]; +} + +function normalize(n: number, lower: number, upper: number): number { + return (n - lower) / (upper - lower); +} + +function checkIfStringHasParentheses(s: string) { + return /\(|\)/.test(s); +} + +function getFunctionName(node: CallerCalleeNode) { + return node.FunctionName !== '' && !checkIfStringHasParentheses(node.FunctionName) + ? `${node.FunctionName}()` + : node.FunctionName; +} + +function getExeFileName(node: CallerCalleeNode) { + if (node?.ExeFileName === undefined) { + return ''; + } + if (node.ExeFileName !== '') { + return node.ExeFileName; + } + return describeFrameType(node.FrameType); +} + +function getLabel(node: CallerCalleeNode) { + if (node.FunctionName !== '') { + const sourceFilename = node.SourceFilename; + const sourceURL = sourceFilename ? sourceFilename.split('/').pop() : ''; + return `${getExeFileName(node)}: ${getFunctionName(node)} in ${sourceURL} #${node.SourceLine}`; + } + return getExeFileName(node); +} + +export class FlameGraph { + // sampleRate is 1/5^N, with N being the downsampled index the events were fetched from. + // N=0: full events table (sampleRate is 1) + // N=1: downsampled by 5 (sampleRate is 0.2) + // ... + sampleRate: number; + + // totalCount is the sum(Count) of all events in the filter range in the + // downsampled index we were looking at. + // To estimate how many events we have in the full events index: totalCount / sampleRate. + // Do the same for single entries in the events array. + totalCount: number; + + totalSeconds: number; + + events: Map; + stacktraces: Map; + stackframes: Map; + executables: Map; + + constructor({ + sampleRate, + totalCount, + events, + stackTraces, + stackFrames, + executables, + totalSeconds, + }: { + sampleRate: number; + totalCount: number; + events: Map; + stackTraces: Map; + stackFrames: Map; + executables: Map; + totalSeconds: number; + }) { + this.sampleRate = sampleRate; + this.totalCount = totalCount; + this.events = events; + this.stacktraces = stackTraces; + this.stackframes = stackFrames; + this.executables = executables; + this.totalSeconds = totalSeconds; + } + + private countCallees(root: CallerCalleeNode): number { + let numCallees = 1; + for (const callee of root.Callees) { + numCallees += this.countCallees(callee); + } + return numCallees; + } + + // createColumnarCallerCallee flattens the intermediate representation of the diagram + // into a columnar format that is more compact than JSON. This representation will later + // need to be normalized into the response ultimately consumed by the flamegraph. + private createColumnarCallerCallee(root: CallerCalleeNode): ColumnarCallerCallee { + const numCallees = this.countCallees(root); + const columnar: ColumnarCallerCallee = { + Label: new Array(numCallees), + Value: new Array(numCallees), + X: new Array(numCallees), + Y: new Array(numCallees), + Color: new Array(numCallees * 4), + CountInclusive: new Array(numCallees), + CountExclusive: new Array(numCallees), + ID: new Array(numCallees), + FrameID: new Array(numCallees), + ExecutableID: new Array(numCallees), + }; + + const queue = [{ x: 0, depth: 1, node: root, parentID: 'root' }]; + + let idx = 0; + while (queue.length > 0) { + const { x, depth, node, parentID } = queue.pop()!; + + if (x === 0 && depth === 1) { + columnar.Label[idx] = 'root: Represents 100% of CPU time.'; + } else { + columnar.Label[idx] = getLabel(node); + } + columnar.Value[idx] = node.Samples; + columnar.X[idx] = x; + columnar.Y[idx] = depth; + + const [red, green, blue, alpha] = rgbToRGBA(frameTypeToRGB(node.FrameType, x)); + const j = 4 * idx; + columnar.Color[j] = red; + columnar.Color[j + 1] = green; + columnar.Color[j + 2] = blue; + columnar.Color[j + 3] = alpha; + + columnar.CountInclusive[idx] = node.CountInclusive; + columnar.CountExclusive[idx] = node.CountExclusive; + + const id = fnv.fast1a64utf(`${parentID}${node.FrameGroupID}`).toString(); + + columnar.ID[idx] = id; + columnar.FrameID[idx] = node.FrameID; + columnar.ExecutableID[idx] = node.FileID; + + node.Callees.sort((a: CallerCalleeNode, b: CallerCalleeNode) => b.Samples - a.Samples); + + let delta = 0; + for (const callee of node.Callees) { + delta += callee.Samples; + } + + for (let i = node.Callees.length - 1; i >= 0; i--) { + delta -= node.Callees[i].Samples; + queue.push({ x: x + delta, depth: depth + 1, node: node.Callees[i], parentID: id }); + } + + idx++; + } + + return columnar; + } + + // createElasticFlameGraph normalizes the intermediate columnar representation into the + // response ultimately consumed by the flamegraph. + private createElasticFlameGraph(columnar: ColumnarCallerCallee): ElasticFlameGraph { + const graph: ElasticFlameGraph = { + Label: [], + Value: [], + Position: [], + Size: [], + Color: [], + CountInclusive: [], + CountExclusive: [], + ID: [], + FrameID: [], + ExecutableID: [], + TotalSeconds: this.totalSeconds, + TotalTraces: Math.floor(this.totalCount / this.sampleRate), + SampledTraces: this.totalCount, + }; + + graph.Label = columnar.Label; + graph.Value = columnar.Value; + graph.Color = columnar.Color; + graph.CountInclusive = columnar.CountInclusive; + graph.CountExclusive = columnar.CountExclusive; + graph.ID = columnar.ID; + graph.FrameID = columnar.FrameID; + graph.ExecutableID = columnar.ExecutableID; + + const maxX = columnar.Value[0]; + const maxY = columnar.Y.reduce((max, n) => (n > max ? n : max), 0); + + for (let i = 0; i < columnar.X.length; i++) { + const x = normalize(columnar.X[i], 0, maxX); + const y = normalize(maxY - columnar.Y[i], 0, maxY); + graph.Position.push(x, y); + } + + graph.Size = graph.Value.map((n) => normalize(n, 0, maxX)); + + return graph; + } + + toElastic(): ElasticFlameGraph { + const root = createCallerCalleeDiagram( + this.events, + this.stacktraces, + this.stackframes, + this.executables + ); + return this.createElasticFlameGraph(this.createColumnarCallerCallee(root)); + } +} diff --git a/x-pack/plugins/profiling/common/frame_group.test.ts b/x-pack/plugins/profiling/common/frame_group.test.ts new file mode 100644 index 0000000000000..57ed29001ccdf --- /dev/null +++ b/x-pack/plugins/profiling/common/frame_group.test.ts @@ -0,0 +1,177 @@ +/* + * 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 { compareFrameGroup, createFrameGroup, createFrameGroupID } from './frame_group'; +import { createStackFrameMetadata } from './profiling'; + +const nonSymbolizedFrameGroups = [ + createFrameGroup( + createStackFrameMetadata({ + FileID: '0x0123456789ABCDEF', + AddressOrLine: 102938, + }) + ), + createFrameGroup( + createStackFrameMetadata({ + FileID: '0x0123456789ABCDEF', + AddressOrLine: 1234, + }) + ), + createFrameGroup( + createStackFrameMetadata({ + FileID: '0x0102030405060708', + AddressOrLine: 1234, + }) + ), +]; + +const elfSymbolizedFrameGroups = [ + createFrameGroup( + createStackFrameMetadata({ + FileID: '0x0123456789ABCDEF', + FunctionName: 'strlen()', + }) + ), + createFrameGroup( + createStackFrameMetadata({ + FileID: '0xFEDCBA9876543210', + FunctionName: 'strtok()', + }) + ), + createFrameGroup( + createStackFrameMetadata({ + FileID: '0xFEDCBA9876543210', + FunctionName: 'main()', + }) + ), +]; + +const symbolizedFrameGroups = [ + createFrameGroup( + createStackFrameMetadata({ + ExeFileName: 'chrome', + SourceFilename: 'strlen()', + FunctionName: 'strlen()', + }) + ), + createFrameGroup( + createStackFrameMetadata({ + ExeFileName: 'dockerd', + SourceFilename: 'main()', + FunctionName: 'createTask()', + }) + ), + createFrameGroup( + createStackFrameMetadata({ + ExeFileName: 'oom_reaper', + SourceFilename: 'main()', + FunctionName: 'crash()', + }) + ), +]; + +describe('Frame group operations', () => { + describe('check if a non-symbolized frame group is', () => { + test('less than another non-symbolized frame group', () => { + expect(compareFrameGroup(nonSymbolizedFrameGroups[1], nonSymbolizedFrameGroups[0])).toEqual( + -1 + ); + }); + + test('equal to another non-symbolized frame group', () => { + expect(compareFrameGroup(nonSymbolizedFrameGroups[0], nonSymbolizedFrameGroups[0])).toEqual( + 0 + ); + }); + + test('greater than another non-symbolized frame group', () => { + expect(compareFrameGroup(nonSymbolizedFrameGroups[1], nonSymbolizedFrameGroups[2])).toEqual( + 1 + ); + }); + + test('less than an ELF-symbolized frame group', () => { + expect(compareFrameGroup(nonSymbolizedFrameGroups[1], elfSymbolizedFrameGroups[0])).toEqual( + -1 + ); + }); + + test('less than a symbolized frame group', () => { + expect(compareFrameGroup(nonSymbolizedFrameGroups[1], symbolizedFrameGroups[0])).toEqual(-1); + }); + }); + + describe('check if an ELF-symbolized frame group is', () => { + test('less than another ELF-symbolized frame group', () => { + expect(compareFrameGroup(elfSymbolizedFrameGroups[0], elfSymbolizedFrameGroups[1])).toEqual( + -1 + ); + }); + + test('equal to another ELF-symbolized frame group', () => { + expect(compareFrameGroup(elfSymbolizedFrameGroups[0], elfSymbolizedFrameGroups[0])).toEqual( + 0 + ); + }); + + test('greater than another ELF-symbolized frame group', () => { + expect(compareFrameGroup(elfSymbolizedFrameGroups[1], elfSymbolizedFrameGroups[0])).toEqual( + 1 + ); + }); + + test('greater than a non-symbolized frame group', () => { + expect(compareFrameGroup(elfSymbolizedFrameGroups[0], nonSymbolizedFrameGroups[0])).toEqual( + 1 + ); + }); + + test('less than a symbolized frame group', () => { + expect(compareFrameGroup(elfSymbolizedFrameGroups[2], symbolizedFrameGroups[0])).toEqual(-1); + }); + }); + + describe('check if a symbolized frame group is', () => { + test('less than another symbolized frame group', () => { + expect(compareFrameGroup(symbolizedFrameGroups[0], symbolizedFrameGroups[1])).toEqual(-1); + }); + + test('equal to another symbolized frame group', () => { + expect(compareFrameGroup(symbolizedFrameGroups[0], symbolizedFrameGroups[0])).toEqual(0); + }); + + test('greater than another symbolized frame group', () => { + expect(compareFrameGroup(symbolizedFrameGroups[1], symbolizedFrameGroups[0])).toEqual(1); + }); + + test('greater than a non-symbolized frame group', () => { + expect(compareFrameGroup(symbolizedFrameGroups[0], nonSymbolizedFrameGroups[0])).toEqual(1); + }); + + test('greater than an ELF-symbolized frame group', () => { + expect(compareFrameGroup(symbolizedFrameGroups[0], elfSymbolizedFrameGroups[2])).toEqual(1); + }); + }); + + describe('check serialization for', () => { + test('non-symbolized frame', () => { + expect(createFrameGroupID(nonSymbolizedFrameGroups[0])).toEqual( + 'empty;0x0123456789ABCDEF;102938' + ); + }); + + test('non-symbolized ELF frame', () => { + expect(createFrameGroupID(elfSymbolizedFrameGroups[0])).toEqual( + 'elf;0x0123456789ABCDEF;strlen()' + ); + }); + + test('symbolized frame', () => { + expect(createFrameGroupID(symbolizedFrameGroups[0])).toEqual('full;chrome;strlen();strlen()'); + }); + }); +}); diff --git a/x-pack/plugins/profiling/common/frame_group.ts b/x-pack/plugins/profiling/common/frame_group.ts new file mode 100644 index 0000000000000..776eccaa2e79c --- /dev/null +++ b/x-pack/plugins/profiling/common/frame_group.ts @@ -0,0 +1,163 @@ +/* + * 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 { StackFrameMetadata } from './profiling'; + +export type FrameGroupID = string; + +enum FrameGroupName { + EMPTY = 'empty', + ELF = 'elf', + FULL = 'full', +} + +interface BaseFrameGroup { + readonly name: FrameGroupName; +} + +interface EmptyFrameGroup extends BaseFrameGroup { + readonly name: FrameGroupName.EMPTY; + readonly fileID: StackFrameMetadata['FileID']; + readonly addressOrLine: StackFrameMetadata['AddressOrLine']; +} + +interface ElfFrameGroup extends BaseFrameGroup { + readonly name: FrameGroupName.ELF; + readonly fileID: StackFrameMetadata['FileID']; + readonly functionName: StackFrameMetadata['FunctionName']; +} + +interface FullFrameGroup extends BaseFrameGroup { + readonly name: FrameGroupName.FULL; + readonly exeFilename: StackFrameMetadata['ExeFileName']; + readonly functionName: StackFrameMetadata['FunctionName']; + readonly sourceFilename: StackFrameMetadata['SourceFilename']; +} + +export type FrameGroup = EmptyFrameGroup | ElfFrameGroup | FullFrameGroup; + +// createFrameGroup is the "standard" way of grouping frames, by commonly +// shared group identifiers. +// +// For ELF-symbolized frames, group by FunctionName and FileID. +// For non-symbolized frames, group by FileID and AddressOrLine. +// otherwise group by ExeFileName, SourceFilename and FunctionName. +export function createFrameGroup(frame: StackFrameMetadata): FrameGroup { + if (frame.FunctionName === '') { + return { + name: FrameGroupName.EMPTY, + fileID: frame.FileID, + addressOrLine: frame.AddressOrLine, + } as EmptyFrameGroup; + } + + if (frame.SourceFilename === '') { + return { + name: FrameGroupName.ELF, + fileID: frame.FileID, + functionName: frame.FunctionName, + } as ElfFrameGroup; + } + + return { + name: FrameGroupName.FULL, + exeFilename: frame.ExeFileName, + functionName: frame.FunctionName, + sourceFilename: frame.SourceFilename, + } as FullFrameGroup; +} + +// compareFrameGroup compares any two frame groups +// +// In general, frame groups are ordered using the following steps: +// +// * If frame groups are the same type, then we compare using their same +// properties +// * If frame groups have different types, then we compare using overlapping +// properties +// * If frame groups do not share properties, then we compare using the frame +// group type +// +// The union of the properties across all frame group types are ordered below +// from highest to lowest. For instance, given any two frame groups, shared +// properties are compared in the given order: +// +// * exeFilename +// * sourceFilename +// * functionName +// * fileID +// * addressOrLine +// +// Frame group types are ordered according to how much symbolization metadata +// is available, starting from most to least: +// +// * Symbolized frame group +// * ELF-symbolized frame group +// * Unsymbolized frame group +export function compareFrameGroup(a: FrameGroup, b: FrameGroup): number { + if (a.name === FrameGroupName.EMPTY) { + if (b.name === FrameGroupName.EMPTY) { + if (a.fileID < b.fileID) return -1; + if (a.fileID > b.fileID) return 1; + if (a.addressOrLine < b.addressOrLine) return -1; + if (a.addressOrLine > b.addressOrLine) return 1; + return 0; + } + if (b.name === FrameGroupName.ELF) { + if (a.fileID < b.fileID) return -1; + if (a.fileID > b.fileID) return 1; + } + return -1; + } + + if (a.name === FrameGroupName.ELF) { + if (b.name === FrameGroupName.EMPTY) { + if (a.fileID < b.fileID) return -1; + if (a.fileID > b.fileID) return 1; + return 1; + } + if (b.name === FrameGroupName.ELF) { + if (a.functionName < b.functionName) return -1; + if (a.functionName > b.functionName) return 1; + if (a.fileID < b.fileID) return -1; + if (a.fileID > b.fileID) return 1; + return 0; + } + if (a.functionName < b.functionName) return -1; + if (a.functionName > b.functionName) return 1; + return -1; + } + + if (b.name === FrameGroupName.FULL) { + if (a.exeFilename < b.exeFilename) return -1; + if (a.exeFilename > b.exeFilename) return 1; + if (a.sourceFilename < b.sourceFilename) return -1; + if (a.sourceFilename > b.sourceFilename) return 1; + if (a.functionName < b.functionName) return -1; + if (a.functionName > b.functionName) return 1; + return 0; + } + if (b.name === FrameGroupName.ELF) { + if (a.functionName < b.functionName) return -1; + if (a.functionName > b.functionName) return 1; + } + return 1; +} + +export function createFrameGroupID(frameGroup: FrameGroup): FrameGroupID { + switch (frameGroup.name) { + case FrameGroupName.EMPTY: + return `${frameGroup.name};${frameGroup.fileID};${frameGroup.addressOrLine}`; + break; + case FrameGroupName.ELF: + return `${frameGroup.name};${frameGroup.fileID};${frameGroup.functionName}`; + break; + case FrameGroupName.FULL: + return `${frameGroup.name};${frameGroup.exeFilename};${frameGroup.functionName};${frameGroup.sourceFilename}`; + break; + } +} diff --git a/x-pack/plugins/profiling/common/functions.test.ts b/x-pack/plugins/profiling/common/functions.test.ts new file mode 100644 index 0000000000000..c17687453c2fd --- /dev/null +++ b/x-pack/plugins/profiling/common/functions.test.ts @@ -0,0 +1,32 @@ +/* + * 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 { createTopNFunctions } from './functions'; + +import { events, stackTraces, stackFrames, executables } from './__fixtures__/stacktraces'; +import { sum } from 'lodash'; + +describe('TopN function operations', () => { + test('1', () => { + const maxTopN = 5; + const totalSamples = sum([...events.values()]); + const topNFunctions = createTopNFunctions( + events, + stackTraces, + stackFrames, + executables, + 0, + maxTopN + ); + + expect(topNFunctions.TotalCount).toEqual(totalSamples); + expect(topNFunctions.TopN.length).toEqual(maxTopN); + + const exclusiveCounts = topNFunctions.TopN.map((value) => value.CountExclusive); + expect(exclusiveCounts).toEqual([16, 9, 7, 5, 2]); + }); +}); diff --git a/x-pack/plugins/profiling/common/functions.ts b/x-pack/plugins/profiling/common/functions.ts new file mode 100644 index 0000000000000..5b45e3fcfaa7f --- /dev/null +++ b/x-pack/plugins/profiling/common/functions.ts @@ -0,0 +1,149 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import * as t from 'io-ts'; +import { + compareFrameGroup, + createFrameGroup, + createFrameGroupID, + FrameGroup, + FrameGroupID, +} from './frame_group'; +import { + Executable, + FileID, + groupStackFrameMetadataByStackTrace, + StackFrame, + StackFrameID, + StackFrameMetadata, + StackTrace, + StackTraceID, +} from './profiling'; + +interface TopNFunctionAndFrameGroup { + Frame: StackFrameMetadata; + FrameGroup: FrameGroup; + CountExclusive: number; + CountInclusive: number; +} + +type TopNFunction = Pick< + TopNFunctionAndFrameGroup, + 'Frame' | 'CountExclusive' | 'CountInclusive' +> & { Id: string; Rank: number }; + +export interface TopNFunctions { + TotalCount: number; + TopN: TopNFunction[]; +} + +export function createTopNFunctions( + events: Map, + stackTraces: Map, + stackFrames: Map, + executables: Map, + startIndex: number, + endIndex: number +): TopNFunctions { + const metadata = groupStackFrameMetadataByStackTrace(stackTraces, stackFrames, executables); + + // The `count` associated with a frame provides the total number of + // traces in which that node has appeared at least once. However, a + // frame may appear multiple times in a trace, and thus to avoid + // counting it multiple times we need to record the frames seen so + // far in each trace. + let totalCount = 0; + const topNFunctions = new Map(); + + // Collect metadata and inclusive + exclusive counts for each distinct frame. + for (const [traceHash, count] of events) { + const uniqueFrameGroupsPerEvent = new Set(); + + totalCount += count; + + // It is possible that we do not have a stacktrace for an event, + // e.g. when stopping the host agent or on network errors. + const frames = metadata.get(traceHash) ?? []; + for (let i = 0; i < frames.length; i++) { + const frameGroup = createFrameGroup(frames[i]); + const frameGroupID = createFrameGroupID(frameGroup); + + if (!topNFunctions.has(frameGroupID)) { + topNFunctions.set(frameGroupID, { + Frame: frames[i], + FrameGroup: frameGroup, + CountExclusive: 0, + CountInclusive: 0, + }); + } + + const topNFunction = topNFunctions.get(frameGroupID)!; + + if (!uniqueFrameGroupsPerEvent.has(frameGroupID)) { + uniqueFrameGroupsPerEvent.add(frameGroupID); + topNFunction.CountInclusive += count; + } + + if (i === frames.length - 1) { + // Leaf frame: sum up counts for exclusive CPU. + topNFunction.CountExclusive += count; + } + } + } + + // Sort in descending order by exclusive CPU. Same values should appear in a + // stable order, so compare the FrameGroup in this case. + const topN = [...topNFunctions.values()]; + topN + .sort((a: TopNFunctionAndFrameGroup, b: TopNFunctionAndFrameGroup) => { + if (a.CountExclusive > b.CountExclusive) { + return 1; + } + if (a.CountExclusive < b.CountExclusive) { + return -1; + } + return compareFrameGroup(a.FrameGroup, b.FrameGroup); + }) + .reverse(); + + if (startIndex > topN.length) { + startIndex = topN.length; + } + if (endIndex > topN.length) { + endIndex = topN.length; + } + + const framesAndCountsAndIds = topN.slice(startIndex, endIndex).map((frameAndCount, i) => ({ + Rank: i + 1, + Frame: frameAndCount.Frame, + CountExclusive: frameAndCount.CountExclusive, + CountInclusive: frameAndCount.CountInclusive, + Id: createFrameGroupID(frameAndCount.FrameGroup), + })); + + return { + TotalCount: totalCount, + TopN: framesAndCountsAndIds, + }; +} + +export enum TopNFunctionSortField { + Rank = 'rank', + Frame = 'frame', + Samples = 'samples', + ExclusiveCPU = 'exclusiveCPU', + InclusiveCPU = 'inclusiveCPU', + Diff = 'diff', +} + +export const topNFunctionSortFieldRt = t.union([ + t.literal(TopNFunctionSortField.Rank), + t.literal(TopNFunctionSortField.Frame), + t.literal(TopNFunctionSortField.Samples), + t.literal(TopNFunctionSortField.ExclusiveCPU), + t.literal(TopNFunctionSortField.InclusiveCPU), + t.literal(TopNFunctionSortField.Diff), +]); diff --git a/x-pack/plugins/profiling/common/histogram.ts b/x-pack/plugins/profiling/common/histogram.ts new file mode 100644 index 0000000000000..1d18e0342891d --- /dev/null +++ b/x-pack/plugins/profiling/common/histogram.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { range } from 'lodash'; + +export function computeBucketWidthFromTimeRangeAndBucketCount( + timeFrom: number, + timeTo: number, + numBuckets: number +): number { + return Math.max(Math.floor((timeTo - timeFrom) / numBuckets), 1); +} + +// Given a possibly empty set of timestamps, a time range, and a bucket width, +// we create an increasing list of timestamps that are uniformally spaced and +// cover the given time range. +// +// The smallest timestamp, t0, should match this invariant: +// timeFrom - bucketWidth < t0 <= timeFrom +// +// The largest timestamp, t1, should match this invariant: +// timeTo - bucketWidth < t1 <= timeTo +export function createUniformBucketsForTimeRange( + timestamps: number[], + timeFrom: number, + timeTo: number, + bucketWidth: number +): number[] { + if (timestamps.length > 0) { + // We only need one arbitrary timestamp to generate the buckets covering + // the given time range + const t = timestamps[0]; + const left = t - bucketWidth * Math.ceil((t - timeFrom) / bucketWidth); + const right = t + bucketWidth * Math.floor((timeTo - t) / bucketWidth); + return range(left, right + 1, bucketWidth); + } + return range(timeFrom, timeTo + 1, bucketWidth); +} diff --git a/x-pack/plugins/profiling/common/index.test.ts b/x-pack/plugins/profiling/common/index.test.ts new file mode 100644 index 0000000000000..8fd482ce97598 --- /dev/null +++ b/x-pack/plugins/profiling/common/index.test.ts @@ -0,0 +1,20 @@ +/* + * 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 { timeRangeFromRequest } from '.'; + +describe('Common profiling helpers', () => { + test('convert query parameters time ranges into tuple', () => { + const request = { + query: { + timeFrom: 123, + timeTo: 456, + }, + }; + expect(timeRangeFromRequest(request)).toEqual([123, 456]); + }); +}); diff --git a/x-pack/plugins/profiling/common/index.ts b/x-pack/plugins/profiling/common/index.ts new file mode 100644 index 0000000000000..871bc9ee1cd91 --- /dev/null +++ b/x-pack/plugins/profiling/common/index.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const PLUGIN_ID = 'profiling'; +export const PLUGIN_NAME = 'profiling'; + +export const INDEX_EVENTS = 'profiling-events-all'; +export const INDEX_TRACES = 'profiling-stacktraces'; +export const INDEX_FRAMES = 'profiling-stackframes'; +export const INDEX_EXECUTABLES = 'profiling-executables'; + +const BASE_ROUTE_PATH = '/api/profiling/v1'; + +export function getRoutePaths() { + return { + TopN: `${BASE_ROUTE_PATH}/topn`, + TopNContainers: `${BASE_ROUTE_PATH}/topn/containers`, + TopNDeployments: `${BASE_ROUTE_PATH}/topn/deployments`, + TopNFunctions: `${BASE_ROUTE_PATH}/topn/functions`, + TopNHosts: `${BASE_ROUTE_PATH}/topn/hosts`, + TopNThreads: `${BASE_ROUTE_PATH}/topn/threads`, + TopNTraces: `${BASE_ROUTE_PATH}/topn/traces`, + Flamechart: `${BASE_ROUTE_PATH}/flamechart`, + FrameInformation: `${BASE_ROUTE_PATH}/frame_information`, + }; +} + +export function timeRangeFromRequest(request: any): [number, number] { + const timeFrom = parseInt(request.query.timeFrom!, 10); + const timeTo = parseInt(request.query.timeTo!, 10); + return [timeFrom, timeTo]; +} + +// Converts from a Map object to a Record object since Map objects are not +// serializable to JSON by default +export function fromMapToRecord(m: Map): Record { + const output: Record = {}; + + for (const [key, value] of m) { + output[key] = value; + } + + return output; +} + +export const NOT_AVAILABLE_LABEL = i18n.translate('xpack.profiling.notAvailableLabel', { + defaultMessage: 'N/A', +}); diff --git a/x-pack/plugins/profiling/common/profiling.test.ts b/x-pack/plugins/profiling/common/profiling.test.ts new file mode 100644 index 0000000000000..4f7b1fb3b8fb3 --- /dev/null +++ b/x-pack/plugins/profiling/common/profiling.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 { + createStackFrameMetadata, + FrameType, + getCalleeFunction, + getCalleeSource, +} from './profiling'; + +describe('Stack frame metadata operations', () => { + test('metadata has executable and function names', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'chrome', + FrameType: FrameType.Native, + FunctionName: 'strlen()', + }); + expect(getCalleeFunction(metadata)).toEqual('chrome: strlen()'); + }); + + test('metadata only has executable name', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'promtail', + FrameType: FrameType.Native, + }); + expect(getCalleeFunction(metadata)).toEqual('promtail'); + }); + + test('metadata has executable name but no function name or source line', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'promtail', + FrameType: FrameType.Native, + }); + expect(getCalleeSource(metadata)).toEqual('promtail+0x0'); + }); + + test('metadata has no executable name, function name, or source line', () => { + const metadata = createStackFrameMetadata({}); + expect(getCalleeSource(metadata)).toEqual(''); + }); + + test('metadata has source name but no source line', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'dockerd', + FrameType: FrameType.Native, + SourceFilename: 'dockerd', + FunctionOffset: 0x183a5b0, + }); + expect(getCalleeSource(metadata)).toEqual('dockerd+0x0'); + }); + + test('metadata has source name and function offset', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'python3.9', + FrameType: FrameType.Python, + FunctionName: 'PyDict_GetItemWithError', + FunctionOffset: 2567, + SourceFilename: '/build/python3.9-RNBry6/python3.9-3.9.2/Objects/dictobject.c', + SourceLine: 1456, + }); + expect(getCalleeSource(metadata)).toEqual( + '/build/python3.9-RNBry6/python3.9-3.9.2/Objects/dictobject.c#1456' + ); + }); + + test('metadata has source name but no function offset', () => { + const metadata = createStackFrameMetadata({ + ExeFileName: 'agent', + FrameType: FrameType.Native, + FunctionName: 'runtime.mallocgc', + SourceFilename: 'runtime/malloc.go', + }); + expect(getCalleeSource(metadata)).toEqual('runtime/malloc.go'); + }); +}); diff --git a/x-pack/plugins/profiling/common/profiling.ts b/x-pack/plugins/profiling/common/profiling.ts new file mode 100644 index 0000000000000..003f6565677c1 --- /dev/null +++ b/x-pack/plugins/profiling/common/profiling.ts @@ -0,0 +1,193 @@ +/* + * 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 type StackTraceID = string; +export type StackFrameID = string; +export type FileID = string; + +export function createStackFrameID(fileID: FileID, addressOrLine: number): StackFrameID { + const buf = Buffer.alloc(24); + Buffer.from(fileID, 'base64url').copy(buf); + buf.writeBigUInt64BE(BigInt(addressOrLine), 16); + return buf.toString('base64url'); +} + +export enum FrameType { + Unsymbolized = 0, + Python, + PHP, + Native, + Kernel, + JVM, + Ruby, + Perl, + JavaScript, +} + +export function describeFrameType(ft: FrameType): string { + return { + [FrameType.Unsymbolized]: '', + [FrameType.Python]: 'Python', + [FrameType.PHP]: 'PHP', + [FrameType.Native]: 'Native', + [FrameType.Kernel]: 'Kernel', + [FrameType.JVM]: 'JVM/Hotspot', + [FrameType.Ruby]: 'Ruby', + [FrameType.Perl]: 'Perl', + [FrameType.JavaScript]: 'JavaScript', + }[ft]; +} + +export interface StackTraceEvent { + StackTraceID: StackTraceID; + Count: number; +} + +export interface StackTrace { + FrameIDs: string[]; + FileIDs: string[]; + AddressOrLines: number[]; + Types: number[]; +} + +export interface StackFrame { + FileName: string; + FunctionName: string; + FunctionOffset: number; + LineNumber: number; + SourceType: number; +} + +export interface Executable { + FileName: string; +} + +export interface StackFrameMetadata { + // StackTrace.FrameID + FrameID: string; + // StackTrace.FileID + FileID: FileID; + // StackTrace.Type + FrameType: FrameType; + + // StackFrame.LineNumber? + AddressOrLine: number; + // StackFrame.FunctionName + FunctionName: string; + // StackFrame.FunctionOffset + FunctionOffset: number; + // should this be StackFrame.SourceID? + SourceID: FileID; + // StackFrame.Filename + SourceFilename: string; + // StackFrame.LineNumber + SourceLine: number; + + // Executable.FileName + ExeFileName: string; + + // unused atm due to lack of symbolization metadata + CommitHash: string; + // unused atm due to lack of symbolization metadata + SourceCodeURL: string; + // unused atm due to lack of symbolization metadata + SourcePackageHash: string; + // unused atm due to lack of symbolization metadata + SourcePackageURL: string; + // unused atm due to lack of symbolization metadata + SourceType: number; +} + +export function createStackFrameMetadata( + options: Partial = {} +): StackFrameMetadata { + const metadata = {} as StackFrameMetadata; + + metadata.FrameID = options.FrameID ?? ''; + metadata.FileID = options.FileID ?? ''; + metadata.FrameType = options.FrameType ?? 0; + metadata.AddressOrLine = options.AddressOrLine ?? 0; + metadata.FunctionName = options.FunctionName ?? ''; + metadata.FunctionOffset = options.FunctionOffset ?? 0; + metadata.SourceID = options.SourceID ?? ''; + metadata.SourceLine = options.SourceLine ?? 0; + metadata.ExeFileName = options.ExeFileName ?? ''; + metadata.CommitHash = options.CommitHash ?? ''; + metadata.SourceCodeURL = options.SourceCodeURL ?? ''; + metadata.SourceFilename = options.SourceFilename ?? ''; + metadata.SourcePackageHash = options.SourcePackageHash ?? ''; + metadata.SourcePackageURL = options.SourcePackageURL ?? ''; + metadata.SourceType = options.SourceType ?? 0; + + return metadata; +} + +export function getCalleeFunction(frame: StackFrameMetadata): string { + // In the best case scenario, we have the file names, source lines, + // and function names. However we need to deal with missing function or + // executable info. + const exeDisplayName = frame.ExeFileName ? frame.ExeFileName : describeFrameType(frame.FrameType); + + // When there is no function name, only use the executable name + return frame.FunctionName ? exeDisplayName + ': ' + frame.FunctionName : exeDisplayName; +} + +export function getCalleeSource(frame: StackFrameMetadata): string { + if (frame.FunctionName === '' && frame.SourceLine === 0) { + if (frame.ExeFileName) { + // If no source line or filename available, display the executable offset + return frame.ExeFileName + '+0x' + frame.AddressOrLine.toString(16); + } + + // If we don't have the executable filename, display + return ''; + } + + if (frame.SourceFilename !== '' && frame.SourceLine === 0) { + return frame.SourceFilename; + } + + return frame.SourceFilename + (frame.SourceLine !== 0 ? `#${frame.SourceLine}` : ''); +} + +// groupStackFrameMetadataByStackTrace collects all of the per-stack-frame +// metadata for a given set of trace IDs and their respective stack frames. +// +// This is similar to GetTraceMetaData in pf-storage-backend/storagebackend/storagebackendv1/reads_webservice.go +export function groupStackFrameMetadataByStackTrace( + stackTraces: Map, + stackFrames: Map, + executables: Map +): Map { + const frameMetadataForTraces = new Map(); + for (const [stackTraceID, trace] of stackTraces) { + const frameMetadata = new Array(); + for (let i = 0; i < trace.FrameIDs.length; i++) { + const frameID = trace.FrameIDs[i]; + const fileID = trace.FileIDs[i]; + const addressOrLine = trace.AddressOrLines[i]; + const frame = stackFrames.get(frameID)!; + const executable = executables.get(fileID)!; + + const metadata = createStackFrameMetadata({ + FrameID: frameID, + FileID: fileID, + AddressOrLine: addressOrLine, + FrameType: trace.Types[i], + FunctionName: frame.FunctionName, + FunctionOffset: frame.FunctionOffset, + SourceLine: frame.LineNumber, + SourceFilename: frame.FileName, + ExeFileName: executable.FileName, + }); + + frameMetadata.push(metadata); + } + frameMetadataForTraces.set(stackTraceID, frameMetadata); + } + return frameMetadataForTraces; +} diff --git a/x-pack/plugins/profiling/common/runtime_types/range_rt.ts b/x-pack/plugins/profiling/common/runtime_types/range_rt.ts new file mode 100644 index 0000000000000..9231f1c49219a --- /dev/null +++ b/x-pack/plugins/profiling/common/runtime_types/range_rt.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. + */ +import * as t from 'io-ts'; + +export const rangeRt = t.type({ + rangeFrom: t.string, + rangeTo: t.string, +}); diff --git a/x-pack/plugins/profiling/common/stack_traces.ts b/x-pack/plugins/profiling/common/stack_traces.ts new file mode 100644 index 0000000000000..8879728c21530 --- /dev/null +++ b/x-pack/plugins/profiling/common/stack_traces.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ProfilingESField } from './elasticsearch'; + +export enum StackTracesDisplayOption { + StackTraces = 'stackTraces', + Percentage = 'percentage', +} + +export enum TopNType { + Containers = 'containers', + Deployments = 'deployments', + Threads = 'threads', + Hosts = 'hosts', + Traces = 'traces', +} + +export function getFieldNameForTopNType(type: TopNType): string { + return { + [TopNType.Containers]: ProfilingESField.ContainerName, + [TopNType.Deployments]: ProfilingESField.OrchestratorResourceName, + [TopNType.Threads]: ProfilingESField.ProcessThreadName, + [TopNType.Hosts]: ProfilingESField.HostID, + [TopNType.Traces]: ProfilingESField.StacktraceID, + }[type]; +} diff --git a/x-pack/plugins/profiling/common/topn.ts b/x-pack/plugins/profiling/common/topn.ts new file mode 100644 index 0000000000000..b012bb3c1412b --- /dev/null +++ b/x-pack/plugins/profiling/common/topn.ts @@ -0,0 +1,248 @@ +/* + * 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 { euiPaletteColorBlind } from '@elastic/eui'; +import { InferSearchResponseOf } from '@kbn/core/types/elasticsearch'; +import { i18n } from '@kbn/i18n'; +import { orderBy } from 'lodash'; +import { ProfilingESField } from './elasticsearch'; +import { createUniformBucketsForTimeRange } from './histogram'; +import { StackFrameMetadata } from './profiling'; + +export const OTHER_BUCKET_LABEL = i18n.translate('xpack.profiling.topn.otherBucketLabel', { + defaultMessage: 'Other', +}); + +export interface CountPerTime { + Timestamp: number; + Count: number | null; +} + +export interface TopNSample extends CountPerTime { + Category: string; +} + +export interface TopNSamples { + TopN: TopNSample[]; +} + +export interface TopNResponse extends TopNSamples { + TotalCount: number; + Metadata: Record; +} + +export interface TopNSamplesHistogramResponse { + sum_other_doc_count: number; + buckets: Array<{ + key: string | number; + doc_count: number; + count: { value: number | null }; + over_time: { + buckets: Array<{ doc_count: number; key: string | number; count: { value: number | null } }>; + }; + }>; +} + +export function getTopNAggregationRequest({ + searchField, + highCardinality, + fixedInterval, +}: { + searchField: string; + highCardinality: boolean; + fixedInterval: string; +}) { + return { + group_by: { + terms: { + field: searchField, + order: { count: 'desc' as const }, + size: 99, + execution_hint: highCardinality ? ('map' as const) : ('global_ordinals' as const), + }, + aggs: { + over_time: { + date_histogram: { + field: ProfilingESField.Timestamp, + fixed_interval: fixedInterval, + }, + aggs: { + count: { + sum: { + field: ProfilingESField.StacktraceCount, + }, + }, + }, + }, + count: { + sum: { + field: ProfilingESField.StacktraceCount, + }, + }, + }, + }, + over_time: { + date_histogram: { + field: ProfilingESField.Timestamp, + fixed_interval: fixedInterval, + }, + aggs: { + count: { + sum: { + field: ProfilingESField.StacktraceCount, + }, + }, + }, + }, + total_count: { + sum_bucket: { + buckets_path: 'over_time>count', + }, + }, + }; +} + +export function createTopNSamples( + response: Required< + InferSearchResponseOf } }> + >['aggregations'], + startMilliseconds: number, + endMilliseconds: number, + bucketWidth: number +): TopNSample[] { + const bucketsByCategories = new Map(); + const uniqueTimestamps = new Set(); + const groupByBuckets = response.group_by.buckets ?? []; + + // Keep track of the sum per timestamp to subtract it from the 'other' bucket + const sumsOfKnownFieldsByTimestamp = new Map(); + + // Convert the buckets into nested maps and record the unique timestamps + for (let i = 0; i < groupByBuckets.length; i++) { + const frameCountsByTimestamp = new Map(); + const items = groupByBuckets[i].over_time.buckets; + + for (let j = 0; j < items.length; j++) { + const timestamp = Number(items[j].key); + const count = items[j].count.value ?? 0; + uniqueTimestamps.add(timestamp); + const sumAtTimestamp = (sumsOfKnownFieldsByTimestamp.get(timestamp) ?? 0) + count; + sumsOfKnownFieldsByTimestamp.set(timestamp, sumAtTimestamp); + frameCountsByTimestamp.set(timestamp, count); + } + bucketsByCategories.set(groupByBuckets[i].key, frameCountsByTimestamp); + } + + // Create the 'other' bucket by subtracting the sum of all known buckets + // from the total + const otherFrameCountsByTimestamp = new Map(); + + let addOtherBucket = false; + + for (let i = 0; i < response.over_time.buckets.length; i++) { + const bucket = response.over_time.buckets[i]; + const timestamp = Number(bucket.key); + const valueForOtherBucket = + (bucket.count.value ?? 0) - (sumsOfKnownFieldsByTimestamp.get(timestamp) ?? 0); + + if (valueForOtherBucket > 0) { + addOtherBucket = true; + } + + otherFrameCountsByTimestamp.set(timestamp, valueForOtherBucket); + } + + // Only add the 'other' bucket if at least one value per timestamp is > 0 + if (addOtherBucket) { + bucketsByCategories.set(OTHER_BUCKET_LABEL, otherFrameCountsByTimestamp); + } + + // Fill in missing timestamps so that the entire time range is covered + const timestamps = createUniformBucketsForTimeRange( + [...uniqueTimestamps], + startMilliseconds, + endMilliseconds, + bucketWidth + ); + + // Normalize samples so there are an equal number of data points per timestamp + const samples: TopNSample[] = []; + for (const category of bucketsByCategories.keys()) { + const frameCountsByTimestamp = bucketsByCategories.get(category); + for (const timestamp of timestamps) { + const sample: TopNSample = { + Timestamp: timestamp, + Count: frameCountsByTimestamp.get(timestamp) ?? 0, + Category: category, + }; + samples.push(sample); + } + } + + return orderBy(samples, ['Timestamp', 'Count', 'Category'], ['asc', 'desc', 'asc']); +} + +export interface TopNSubchart { + Category: string; + Percentage: number; + Series: CountPerTime[]; + Color: string; + Index: number; + Metadata: StackFrameMetadata[]; +} + +export function groupSamplesByCategory({ + samples, + totalCount, + metadata, +}: { + samples: TopNSample[]; + totalCount: number; + metadata: Record; +}): TopNSubchart[] { + const seriesByCategory = new Map(); + + for (let i = 0; i < samples.length; i++) { + const sample = samples[i]; + + if (!seriesByCategory.has(sample.Category)) { + seriesByCategory.set(sample.Category, []); + } + const series = seriesByCategory.get(sample.Category)!; + series.push({ Timestamp: sample.Timestamp, Count: sample.Count }); + } + + const subcharts: Array> = []; + + for (const [category, series] of seriesByCategory) { + const totalPerCategory = series.reduce((sumOf, { Count }) => sumOf + (Count ?? 0), 0); + subcharts.push({ + Category: category, + Percentage: (totalPerCategory / totalCount) * 100, + Series: series, + Metadata: metadata[category] ?? [], + }); + } + + const colors = euiPaletteColorBlind({ + rotations: Math.ceil(subcharts.length / 10), + }); + + return orderBy(subcharts, ['Percentage', 'Category'], ['desc', 'asc']).map((chart, index) => { + return { + ...chart, + Color: colors[index], + Index: index + 1, + Series: chart.Series.map((value) => { + return { + ...value, + Category: chart.Category, + }; + }), + }; + }); +} diff --git a/x-pack/plugins/profiling/common/types.ts b/x-pack/plugins/profiling/common/types.ts new file mode 100644 index 0000000000000..83efba8cb813a --- /dev/null +++ b/x-pack/plugins/profiling/common/types.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface TimeRange { + start: string; + end: string; +} diff --git a/x-pack/plugins/profiling/jest.config.js b/x-pack/plugins/profiling/jest.config.js new file mode 100644 index 0000000000000..783ace59b9b3d --- /dev/null +++ b/x-pack/plugins/profiling/jest.config.js @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/profiling'], + coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/profiling', + coverageReporters: ['text', 'html'], + collectCoverageFrom: ['/x-pack/plugins/profiling/{common,public,server}/**/*.{ts,tsx}'], +}; diff --git a/x-pack/plugins/profiling/kibana.json b/x-pack/plugins/profiling/kibana.json new file mode 100644 index 0000000000000..0ead3e39f83f6 --- /dev/null +++ b/x-pack/plugins/profiling/kibana.json @@ -0,0 +1,29 @@ +{ + "id": "profiling", + "version": "1.0.0", + "kibanaVersion": "kibana", + "owner": { + "name": "profiling", + "githubTeam": "profiling-ui" + }, + "description": "", + "server": true, + "ui": true, + "requiredPlugins": [ + "navigation", + "data", + "kibanaUtils", + "share", + "observability", + "features", + "kibanaReact", + "unifiedSearch", + "dataViews", + "charts" + ], + "optionalPlugins": [], + "configPath": [ + "xpack", + "profiling" + ] +} diff --git a/x-pack/plugins/profiling/public/app.tsx b/x-pack/plugins/profiling/public/app.tsx new file mode 100644 index 0000000000000..da92e839d05d4 --- /dev/null +++ b/x-pack/plugins/profiling/public/app.tsx @@ -0,0 +1,89 @@ +/* + * 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 { AppMountParameters, CoreSetup, CoreStart } from '@kbn/core/public'; +import React, { useMemo } from 'react'; +import ReactDOM from 'react-dom'; + +import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { RouteRenderer, RouterProvider } from '@kbn/typed-react-router-config'; + +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; +import { ProfilingDependenciesContextProvider } from './components/contexts/profiling_dependencies/profiling_dependencies_context'; +import { RedirectWithDefaultDateRange } from './components/redirect_with_default_date_range'; +import { profilingRouter } from './routing'; +import { Services } from './services'; +import { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; +import { RouteBreadcrumbsContextProvider } from './components/contexts/route_breadcrumbs_context'; +import { TimeRangeContextProvider } from './components/contexts/time_range_context'; + +interface Props { + profilingFetchServices: Services; + coreStart: CoreStart; + coreSetup: CoreSetup; + pluginsStart: ProfilingPluginPublicStartDeps; + pluginsSetup: ProfilingPluginPublicSetupDeps; + theme$: AppMountParameters['theme$']; + history: AppMountParameters['history']; +} + +const storage = new Storage(localStorage); + +function App({ + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + profilingFetchServices, + theme$, + history, +}: Props) { + const i18nCore = coreStart.i18n; + + const profilingDependencies = useMemo(() => { + return { + start: { + core: coreStart, + ...pluginsStart, + }, + setup: { + core: coreSetup, + ...pluginsSetup, + }, + services: profilingFetchServices, + }; + }, [coreStart, coreSetup, pluginsStart, pluginsSetup, profilingFetchServices]); + + return ( + + + + + + + + + + + + + + + + + + + + ); +} + +export const renderApp = (props: Props, element: AppMountParameters['element']) => { + ReactDOM.render(, element); + + return () => ReactDOM.unmountComponentAtNode(element); +}; diff --git a/x-pack/plugins/profiling/public/components/async_component.tsx b/x-pack/plugins/profiling/public/components/async_component.tsx new file mode 100644 index 0000000000000..2dba7ed2ab3cf --- /dev/null +++ b/x-pack/plugins/profiling/public/components/async_component.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 { EuiFlexGroup, EuiFlexItem, EuiLoadingChart, EuiText, EuiIcon } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { AsyncState, AsyncStatus } from '../hooks/use_async'; + +export function AsyncComponent({ + children, + status, + error, + mono, + size, + style, + alignTop, +}: AsyncState & { + style?: React.ComponentProps['style']; + children: React.ReactElement; + mono?: boolean; + size: 'm' | 'l' | 'xl'; + alignTop?: boolean; +}) { + if (status === AsyncStatus.Settled && !error) { + return children; + } + + return ( + + + {error && status === AsyncStatus.Settled ? ( + + + + + + + {i18n.translate('xpack.profiling.asyncComponent.errorLoadingData', { + defaultMessage: 'Could not load data', + })} + + + + ) : ( + + )} + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/chart_grid.tsx b/x-pack/plugins/profiling/public/components/chart_grid.tsx new file mode 100644 index 0000000000000..643928ac51c4f --- /dev/null +++ b/x-pack/plugins/profiling/public/components/chart_grid.tsx @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGrid, EuiFlexItem, EuiFlyout, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { take } from 'lodash'; +import React, { useState } from 'react'; +import { TopNSubchart } from '../../common/topn'; +import { SubChart } from './subchart'; + +export interface ChartGridProps { + limit: number; + charts: TopNSubchart[]; + showFrames: boolean; +} + +export const ChartGrid: React.FC = ({ limit, charts, showFrames }) => { + const maximum = Math.min(limit, charts.length ?? 0); + + const ncharts = Math.min(maximum, charts.length); + + const [selectedSubchart, setSelectedSubchart] = useState(undefined); + + return ( + <> + + +

Top {charts.length}

+
+ + + {take(charts, ncharts).map((subchart, i) => ( + + + { + setSelectedSubchart(subchart); + }} + showFrames={showFrames} + /> + + + ))} + + {selectedSubchart && ( + { + setSelectedSubchart(undefined); + }} + > + + + )} + + ); +}; diff --git a/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/profiling_dependencies_context.tsx b/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/profiling_dependencies_context.tsx new file mode 100644 index 0000000000000..240d34b8e18c7 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/profiling_dependencies_context.tsx @@ -0,0 +1,26 @@ +/* + * 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 { CoreStart, CoreSetup } from '@kbn/core/public'; +import { createContext } from 'react'; +import { Services } from '../../../services'; +import { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from '../../../types'; + +export interface ProfilingDependencies { + start: { + core: CoreStart; + } & ProfilingPluginPublicStartDeps; + setup: { + core: CoreSetup; + } & ProfilingPluginPublicSetupDeps; + services: Services; +} + +export const ProfilingDependenciesContext = createContext( + undefined +); + +export const ProfilingDependenciesContextProvider = ProfilingDependenciesContext.Provider; diff --git a/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/use_profiling_dependencies.tsx b/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/use_profiling_dependencies.tsx new file mode 100644 index 0000000000000..7e6ca9324c9f6 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/contexts/profiling_dependencies/use_profiling_dependencies.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useContext } from 'react'; +import { ProfilingDependenciesContext } from './profiling_dependencies_context'; + +export function useProfilingDependencies() { + const context = useContext(ProfilingDependenciesContext); + if (!context) { + throw new Error('ProfilingDependenciesContext not found'); + } + return context; +} diff --git a/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/index.tsx b/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/index.tsx new file mode 100644 index 0000000000000..fff05f05a3713 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/index.tsx @@ -0,0 +1,80 @@ +/* + * 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 { Route, RouteMatch, useMatchRoutes } from '@kbn/typed-react-router-config'; +import { ChromeBreadcrumb } from '@kbn/core/public'; +import { compact, isEqual } from 'lodash'; +import React, { createContext, useMemo, useState } from 'react'; +import { useBreadcrumbs } from '@kbn/observability-plugin/public'; + +export interface Breadcrumb { + title: string; + href: string; +} + +interface BreadcrumbApi { + set(route: Route, breadcrumb: Breadcrumb[]): void; + unset(route: Route): void; + getBreadcrumbs(matches: RouteMatch[]): Breadcrumb[]; +} + +export const RouteBreadcrumbsContext = createContext(undefined); + +export function RouteBreadcrumbsContextProvider({ children }: { children: React.ReactElement }) { + const [, forceUpdate] = useState({}); + + const breadcrumbs = useMemo(() => { + return new Map(); + }, []); + + const matches: RouteMatch[] = useMatchRoutes(); + + const api = useMemo( + () => ({ + set(route, breadcrumb) { + if (!isEqual(breadcrumbs.get(route), breadcrumb)) { + breadcrumbs.set(route, breadcrumb); + forceUpdate({}); + } + }, + unset(route) { + if (breadcrumbs.has(route)) { + breadcrumbs.delete(route); + forceUpdate({}); + } + }, + getBreadcrumbs(currentMatches: RouteMatch[]) { + return compact( + currentMatches.flatMap((match) => { + const breadcrumb = breadcrumbs.get(match.route); + + return breadcrumb; + }) + ); + }, + }), + [breadcrumbs] + ); + + const formattedBreadcrumbs: ChromeBreadcrumb[] = api + .getBreadcrumbs(matches) + .map((breadcrumb, index, array) => { + return { + text: breadcrumb.title, + ...(index === array.length - 1 + ? {} + : { + href: breadcrumb.href, + }), + }; + }); + + useBreadcrumbs(formattedBreadcrumbs); + + return ( + {children} + ); +} diff --git a/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/use_route_breadcrumb.ts b/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/use_route_breadcrumb.ts new file mode 100644 index 0000000000000..79a34e3ff79a9 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/contexts/route_breadcrumbs_context/use_route_breadcrumb.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCurrentRoute } from '@kbn/typed-react-router-config'; +import { useContext, useEffect, useRef } from 'react'; +import { castArray } from 'lodash'; +import { RouteBreadcrumbsContext, Breadcrumb } from '.'; + +export function useRouteBreadcrumb(breadcrumb: Breadcrumb | Breadcrumb[]) { + const api = useContext(RouteBreadcrumbsContext); + + if (!api) { + throw new Error('Missing Breadcrumb API in context'); + } + + const { match } = useCurrentRoute(); + + const matchedRoute = useRef(match?.route); + + useEffect(() => { + if (matchedRoute.current && matchedRoute.current !== match?.route) { + api.unset(matchedRoute.current); + } + + matchedRoute.current = match?.route; + + if (matchedRoute.current) { + api.set(matchedRoute.current, castArray(breadcrumb)); + } + + return () => { + if (matchedRoute.current) { + api.unset(matchedRoute.current); + } + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [matchedRoute.current, match?.route]); +} diff --git a/x-pack/plugins/profiling/public/components/contexts/time_range_context/index.tsx b/x-pack/plugins/profiling/public/components/contexts/time_range_context/index.tsx new file mode 100644 index 0000000000000..4bd38ea31a95a --- /dev/null +++ b/x-pack/plugins/profiling/public/components/contexts/time_range_context/index.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { uniqueId } from 'lodash'; +import React, { useMemo, useState } from 'react'; + +export const TimeRangeContext = React.createContext< + { timeRangeId: string; refresh: () => void } | undefined +>(undefined); + +export function TimeRangeContextProvider({ children }: { children: React.ReactElement }) { + const [timeRangeId, setTimeRangeId] = useState(uniqueId()); + + const timeRangeContextValue = useMemo(() => { + return { + timeRangeId, + refresh: () => { + setTimeRangeId(uniqueId()); + }, + }; + }, [timeRangeId]); + + return ( + {children} + ); +} diff --git a/x-pack/plugins/profiling/public/components/flame_graphs_view/flamegraph_information_window.tsx b/x-pack/plugins/profiling/public/components/flame_graphs_view/flamegraph_information_window.tsx new file mode 100644 index 0000000000000..824e6d1476a14 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/flame_graphs_view/flamegraph_information_window.tsx @@ -0,0 +1,184 @@ +/* + * 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 { + EuiButtonIcon, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiLoadingSpinner, + EuiPanel, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { NOT_AVAILABLE_LABEL } from '../../../common'; +import { AsyncStatus } from '../../hooks/use_async'; +import { getImpactRows } from './get_impact_rows'; + +interface Props { + frame?: { + exeFileName: string; + functionName: string; + sourceFileName: string; + samples: number; + childSamples: number; + }; + sampledTraces: number; + totalTraces: number; + totalSeconds: number; + onClose: () => void; + status: AsyncStatus; +} + +function KeyValueList({ rows }: { rows: Array<{ label: string; value: React.ReactNode }> }) { + return ( + + {rows.map((row, index) => ( + <> + + + {row.label}: + + {row.value} + + + + {index < rows.length - 1 ? ( + + + + ) : undefined} + + ))} + + ); +} + +function FlamegraphFrameInformationPanel({ + children, + onClose, + status, +}: { + children: React.ReactNode; + onClose: () => void; + status: AsyncStatus; +}) { + return ( + + + + + + + + +

+ {i18n.translate('xpack.profiling.flameGraphInformationWindowTitle', { + defaultMessage: 'Frame information', + })} +

+
+
+ {status === AsyncStatus.Loading ? ( + + + + ) : undefined} +
+
+ + onClose()} /> + +
+
+ {children} +
+
+ ); +} + +export function FlamegraphInformationWindow({ + onClose, + frame, + sampledTraces, + totalTraces, + totalSeconds, + status, +}: Props) { + if (!frame) { + return ( + + + {i18n.translate('xpack.profiling.flamegraphInformationWindow.selectFrame', { + defaultMessage: 'Click on a frame to display more information', + })} + + + ); + } + + const { childSamples, exeFileName, samples, functionName, sourceFileName } = frame; + + const impactRows = getImpactRows({ + samples, + childSamples, + sampledTraces, + totalSeconds, + totalTraces, + }); + + return ( + + + + + + + + + +

+ {i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.impactEstimatesTitle', + { defaultMessage: 'Impact estimates' } + )} +

+
+
+ + + +
+
+
+
+ ); +} diff --git a/x-pack/plugins/profiling/public/components/flame_graphs_view/get_impact_rows.ts b/x-pack/plugins/profiling/public/components/flame_graphs_view/get_impact_rows.ts new file mode 100644 index 0000000000000..8ca1347e4497f --- /dev/null +++ b/x-pack/plugins/profiling/public/components/flame_graphs_view/get_impact_rows.ts @@ -0,0 +1,189 @@ +/* + * 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 { asCost } from '../../utils/formatters/as_cost'; +import { asDuration } from '../../utils/formatters/as_duration'; +import { asPercentage } from '../../utils/formatters/as_percentage'; +import { asWeight } from '../../utils/formatters/as_weight'; + +const ANNUAL_SECONDS = 60 * 60 * 24 * 365; + +// The assumed amortized per-core average power consumption. +const PER_CORE_WATT = 40; + +// The assumed CO2 emissions per KWH (sourced from www.eia.gov) +const CO2_PER_KWH = 0.92; + +// The cost of a CPU core per hour, in dollars +const CORE_COST_PER_HOUR = 0.0425; + +export function getImpactRows({ + samples, + childSamples, + sampledTraces, + totalTraces, + totalSeconds, +}: { + samples: number; + childSamples: number; + sampledTraces: number; + totalTraces: number; + totalSeconds: number; +}) { + const percentage = samples / sampledTraces; + const percentageNoChildren = (samples - childSamples) / sampledTraces; + const totalCoreSeconds = totalTraces / 20; + const coreSeconds = totalCoreSeconds * percentage; + const coreSecondsNoChildren = totalCoreSeconds * percentageNoChildren; + const coreHours = coreSeconds / (60 * 60); + const coreHoursNoChildren = coreSecondsNoChildren / (60 * 60); + const annualizedScaleUp = ANNUAL_SECONDS / totalSeconds; + const co2 = ((PER_CORE_WATT * coreHours) / 1000.0) * CO2_PER_KWH; + const co2NoChildren = ((PER_CORE_WATT * coreHoursNoChildren) / 1000.0) * CO2_PER_KWH; + const annualizedCo2 = co2 * annualizedScaleUp; + const annualizedCo2NoChildren = co2NoChildren * annualizedScaleUp; + const dollarCost = coreHours * CORE_COST_PER_HOUR; + const dollarCostNoChildren = coreHoursNoChildren * CORE_COST_PER_HOUR; + + const impactRows = [ + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.percentageCpuTimeInclusiveLabel', + { + defaultMessage: '% of CPU time', + } + ), + value: asPercentage(percentage), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.percentageCpuTimeExclusiveLabel', + { + defaultMessage: '% of CPU time (excl. children)', + } + ), + value: asPercentage(percentageNoChildren), + }, + { + label: i18n.translate('xpack.profiling.flameGraphInformationWindow.samplesLabel', { + defaultMessage: 'Samples', + }), + value: samples, + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.coreSecondsInclusiveLabel', + { + defaultMessage: 'Core-seconds', + } + ), + value: asDuration(coreSeconds), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.coreSecondsExclusiveLabel', + { + defaultMessage: 'Core-seconds (excl. children)', + } + ), + value: asDuration(coreSecondsNoChildren), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedCoreSecondsInclusiveLabel', + { + defaultMessage: 'Annualized core-seconds', + } + ), + value: asDuration(coreSeconds * annualizedScaleUp), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedCoreSecondsExclusiveLabel', + { + defaultMessage: 'Annualized core-seconds (excl. children)', + } + ), + value: asDuration(coreSecondsNoChildren * annualizedScaleUp), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.co2EmissionInclusiveLabel', + { + defaultMessage: 'CO2 emission', + } + ), + value: asWeight(co2), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.co2EmissionExclusiveLabel', + { + defaultMessage: 'CO2 emission (excl. children)', + } + ), + value: asWeight(co2NoChildren), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedCo2InclusiveLabel', + { + defaultMessage: 'Annualized CO2', + } + ), + value: asWeight(annualizedCo2), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedCo2ExclusiveLabel', + { + defaultMessage: 'Annualized CO2 (excl. children)', + } + ), + value: asWeight(annualizedCo2NoChildren), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.dollarCostInclusiveLabel', + { + defaultMessage: 'Dollar cost', + } + ), + value: asCost(dollarCost), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.dollarCostExclusiveLabel', + { + defaultMessage: 'Dollar cost (excl. children)', + } + ), + value: asCost(dollarCostNoChildren), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedDollarCostInclusiveLabel', + { + defaultMessage: 'Annualized dollar cost', + } + ), + value: asCost(dollarCost * annualizedScaleUp), + }, + { + label: i18n.translate( + 'xpack.profiling.flameGraphInformationWindow.annualizedDollarCostExclusiveLabel', + { + defaultMessage: 'Annualized dollar cost (excl. children)', + } + ), + value: asCost(dollarCostNoChildren * annualizedScaleUp), + }, + ]; + + return impactRows; +} diff --git a/x-pack/plugins/profiling/public/components/flame_graphs_view/index.tsx b/x-pack/plugins/profiling/public/components/flame_graphs_view/index.tsx new file mode 100644 index 0000000000000..a5b0f64867264 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/flame_graphs_view/index.tsx @@ -0,0 +1,187 @@ +/* + * 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 { EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiPageHeaderContentProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { FlameGraphComparisonMode } from '../../../common/flamegraph'; +import { useProfilingParams } from '../../hooks/use_profiling_params'; +import { useProfilingRouter } from '../../hooks/use_profiling_router'; +import { useProfilingRoutePath } from '../../hooks/use_profiling_route_path'; +import { useTimeRange } from '../../hooks/use_time_range'; +import { useTimeRangeAsync } from '../../hooks/use_time_range_async'; +import { AsyncComponent } from '../async_component'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { FlameGraph } from '../flamegraph'; +import { PrimaryAndComparisonSearchBar } from '../primary_and_comparison_search_bar'; +import { ProfilingAppPageTemplate } from '../profiling_app_page_template'; +import { RedirectTo } from '../redirect_to'; + +export function FlameGraphsView({ children }: { children: React.ReactElement }) { + const { + path, + query, + query: { rangeFrom, rangeTo, kuery }, + } = useProfilingParams('/flamegraphs/*'); + + const timeRange = useTimeRange({ rangeFrom, rangeTo }); + + const comparisonTimeRange = useTimeRange( + 'comparisonRangeFrom' in query + ? { rangeFrom: query.comparisonRangeFrom, rangeTo: query.comparisonRangeTo, optional: true } + : { rangeFrom: undefined, rangeTo: undefined, optional: true } + ); + + const comparisonKuery = 'comparisonKuery' in query ? query.comparisonKuery : ''; + const comparisonMode = + 'comparisonMode' in query ? query.comparisonMode : FlameGraphComparisonMode.Absolute; + + const { + services: { fetchElasticFlamechart }, + } = useProfilingDependencies(); + + const state = useTimeRangeAsync(() => { + return Promise.all([ + fetchElasticFlamechart({ + timeFrom: new Date(timeRange.start).getTime() / 1000, + timeTo: new Date(timeRange.end).getTime() / 1000, + kuery, + }), + comparisonTimeRange.start && comparisonTimeRange.end + ? fetchElasticFlamechart({ + timeFrom: new Date(comparisonTimeRange.start).getTime() / 1000, + timeTo: new Date(comparisonTimeRange.end).getTime() / 1000, + kuery: comparisonKuery, + }) + : Promise.resolve(undefined), + ]).then(([primaryFlamegraph, comparisonFlamegraph]) => { + return { + primaryFlamegraph, + comparisonFlamegraph, + }; + }); + }, [ + timeRange.start, + timeRange.end, + kuery, + comparisonTimeRange.start, + comparisonTimeRange.end, + comparisonKuery, + fetchElasticFlamechart, + ]); + + const { data } = state; + + const routePath = useProfilingRoutePath(); + + const profilingRouter = useProfilingRouter(); + + const isDifferentialView = routePath === '/flamegraphs/differential'; + + const tabs: Required['tabs'] = [ + { + label: i18n.translate('xpack.profiling.flameGraphsView.flameGraphTabLabel', { + defaultMessage: 'Flamegraph', + }), + isSelected: !isDifferentialView, + href: profilingRouter.link('/flamegraphs/flamegraph', { query }), + }, + { + label: i18n.translate('xpack.profiling.flameGraphsView.differentialFlameGraphTabLabel', { + defaultMessage: 'Differential flamegraph', + }), + isSelected: isDifferentialView, + href: profilingRouter.link('/flamegraphs/differential', { + query: { + ...query, + comparisonRangeFrom: query.rangeFrom, + comparisonRangeTo: query.rangeTo, + comparisonKuery: query.kuery, + comparisonMode, + }, + }), + }, + ]; + + if (routePath === '/flamegraphs') { + return ; + } + + return ( + + + {isDifferentialView ? ( + + + + + + + { + if (!('comparisonRangeFrom' in query)) { + return; + } + + profilingRouter.push(routePath, { + path, + query: { + ...query, + comparisonMode: nextComparisonMode as FlameGraphComparisonMode, + }, + }); + }} + options={[ + { + id: FlameGraphComparisonMode.Absolute, + label: i18n.translate( + 'xpack.profiling.flameGraphsView.differentialFlameGraphComparisonModeAbsoluteButtonLabel', + { + defaultMessage: 'Abs', + } + ), + }, + { + id: FlameGraphComparisonMode.Relative, + label: i18n.translate( + 'xpack.profiling.flameGraphsView.differentialFlameGraphComparisonModeRelativeButtonLabel', + { + defaultMessage: 'Rel', + } + ), + }, + ]} + /> + + + + ) : null} + + + + + {children} + + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/flamegraph.tsx b/x-pack/plugins/profiling/public/components/flamegraph.tsx new file mode 100644 index 0000000000000..7077b98364d19 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/flamegraph.tsx @@ -0,0 +1,330 @@ +/* + * 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 { Chart, Datum, Flame, FlameLayerValue, PartialTheme, Settings } from '@elastic/charts'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSwitch, useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { Maybe } from '@kbn/observability-plugin/common/typings'; +import { isNumber } from 'lodash'; +import React, { useEffect, useMemo, useState } from 'react'; +import { ElasticFlameGraph, FlameGraphComparisonMode } from '../../common/flamegraph'; +import { useAsync } from '../hooks/use_async'; +import { asPercentage } from '../utils/formatters/as_percentage'; +import { getFlamegraphModel } from '../utils/get_flamegraph_model'; +import { useProfilingDependencies } from './contexts/profiling_dependencies/use_profiling_dependencies'; +import { FlamegraphInformationWindow } from './flame_graphs_view/flamegraph_information_window'; + +function TooltipRow({ + value, + label, + comparison, + formatAsPercentage, + showChange, +}: { + value: number; + label: string; + comparison?: number; + formatAsPercentage: boolean; + showChange: boolean; +}) { + const valueLabel = formatAsPercentage ? asPercentage(value, 2) : value.toString(); + const comparisonLabel = + formatAsPercentage && isNumber(comparison) + ? asPercentage(comparison, 2) + : comparison?.toString(); + + const diff = showChange && isNumber(comparison) ? comparison - value : undefined; + + let diffLabel: string | undefined = diff?.toString(); + + if (diff === 0) { + diffLabel = i18n.translate('xpack.profiling.flameGraphToolTip.diffNoChange', { + defaultMessage: 'no change', + }); + } else if (formatAsPercentage && diff !== undefined) { + diffLabel = asPercentage(diff, 2); + } + + return ( + + + + {label} + + + {comparison + ? i18n.translate('xpack.profiling.flameGraphTooltip.valueLabel', { + defaultMessage: `{value} vs {comparison}`, + values: { + value: valueLabel, + comparison: comparisonLabel, + }, + }) + : valueLabel} + {diffLabel ? ` (${diffLabel})` : ''} + + + + ); +} + +function FlameGraphTooltip({ + label, + countInclusive, + countExclusive, + samples, + totalSamples, + comparisonCountInclusive, + comparisonCountExclusive, + comparisonSamples, + comparisonTotalSamples, +}: { + samples: number; + label: string; + countInclusive: number; + countExclusive: number; + totalSamples: number; + comparisonCountInclusive?: number; + comparisonCountExclusive?: number; + comparisonSamples?: number; + comparisonTotalSamples?: number; +}) { + return ( + + + {label} + + + + + + + + + + ); +} + +export interface FlameGraphProps { + id: string; + height: number; + comparisonMode: FlameGraphComparisonMode; + primaryFlamegraph?: ElasticFlameGraph; + comparisonFlamegraph?: ElasticFlameGraph; +} + +export const FlameGraph: React.FC = ({ + id, + height, + comparisonMode, + primaryFlamegraph, + comparisonFlamegraph, +}) => { + const theme = useEuiTheme(); + + const { + services: { fetchFrameInformation }, + } = useProfilingDependencies(); + + const columnarData = useMemo(() => { + return getFlamegraphModel({ + primaryFlamegraph, + comparisonFlamegraph, + colorSuccess: theme.euiTheme.colors.success, + colorDanger: theme.euiTheme.colors.danger, + colorNeutral: theme.euiTheme.colors.lightShade, + comparisonMode, + }); + }, [ + primaryFlamegraph, + comparisonFlamegraph, + theme.euiTheme.colors.success, + theme.euiTheme.colors.danger, + theme.euiTheme.colors.lightShade, + comparisonMode, + ]); + + const chartTheme: PartialTheme = { + chartMargins: { top: 0, left: 0, bottom: 0, right: 0 }, + chartPaddings: { left: 0, right: 0, top: 0, bottom: 0 }, + }; + + const totalSamples = columnarData.viewModel.value[0]; + + const [highlightedVmIndex, setHighlightedVmIndex] = useState(undefined); + + const highlightedFrameQueryParams = useMemo(() => { + if (!primaryFlamegraph || highlightedVmIndex === undefined || highlightedVmIndex === 0) { + return undefined; + } + + const frameID = primaryFlamegraph.FrameID[highlightedVmIndex]; + const executableID = primaryFlamegraph.ExecutableID[highlightedVmIndex]; + + return { + frameID, + executableID, + }; + }, [primaryFlamegraph, highlightedVmIndex]); + + const { data: highlightedFrame, status: highlightedFrameStatus } = useAsync(() => { + if (!highlightedFrameQueryParams) { + return Promise.resolve(undefined); + } + + return fetchFrameInformation({ + frameID: highlightedFrameQueryParams.frameID, + executableID: highlightedFrameQueryParams.executableID, + }); + }, [highlightedFrameQueryParams, fetchFrameInformation]); + + const selected: undefined | React.ComponentProps['frame'] = + primaryFlamegraph && highlightedFrame && highlightedVmIndex !== undefined + ? { + exeFileName: highlightedFrame.ExeFileName, + sourceFileName: highlightedFrame.SourceFilename, + functionName: highlightedFrame.FunctionName, + samples: primaryFlamegraph.Value[highlightedVmIndex], + childSamples: + primaryFlamegraph.Value[highlightedVmIndex] - + primaryFlamegraph.CountExclusive[highlightedVmIndex], + } + : undefined; + + useEffect(() => { + setHighlightedVmIndex(undefined); + }, [columnarData.key]); + + const [showInformationWindow, setShowInformationWindow] = useState(false); + + return ( + + + { + setShowInformationWindow((prev) => !prev); + }} + label={i18n.translate('xpack.profiling.flameGraph.showInformationWindow', { + defaultMessage: 'Show information window', + })} + /> + + + + {columnarData.viewModel.label.length > 0 && ( + + + { + const selectedElement = elements[0] as Maybe; + if (Number.isNaN(selectedElement?.vmIndex)) { + setHighlightedVmIndex(undefined); + } else { + setHighlightedVmIndex(selectedElement!.vmIndex); + } + }} + tooltip={{ + customTooltip: (props) => { + if (!primaryFlamegraph) { + return <>; + } + + const valueIndex = props.values[0].valueAccessor as number; + const label = primaryFlamegraph.Label[valueIndex]; + const samples = primaryFlamegraph.Value[valueIndex]; + const countInclusive = primaryFlamegraph.CountInclusive[valueIndex]; + const countExclusive = primaryFlamegraph.CountExclusive[valueIndex]; + const nodeID = primaryFlamegraph.ID[valueIndex]; + + const comparisonNode = columnarData.comparisonNodesById[nodeID]; + + return ( + + ); + }, + }} + /> + d.value as number} + valueFormatter={(value) => `${value}`} + animation={{ duration: 100 }} + controlProviderCallback={{}} + /> + + + )} + {showInformationWindow ? ( + + { + setShowInformationWindow(false); + }} + /> + + ) : undefined} + + + + ); +}; diff --git a/x-pack/plugins/profiling/public/components/functions_view/index.tsx b/x-pack/plugins/profiling/public/components/functions_view/index.tsx new file mode 100644 index 0000000000000..94410f961c469 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/functions_view/index.tsx @@ -0,0 +1,167 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiPageHeaderContentProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { TypeOf } from '@kbn/typed-react-router-config'; +import React from 'react'; +import { useProfilingParams } from '../../hooks/use_profiling_params'; +import { useProfilingRouter } from '../../hooks/use_profiling_router'; +import { useProfilingRoutePath } from '../../hooks/use_profiling_route_path'; +import { useTimeRange } from '../../hooks/use_time_range'; +import { useTimeRangeAsync } from '../../hooks/use_time_range_async'; +import { ProfilingRoutes } from '../../routing'; +import { AsyncComponent } from '../async_component'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { PrimaryAndComparisonSearchBar } from '../primary_and_comparison_search_bar'; +import { ProfilingAppPageTemplate } from '../profiling_app_page_template'; +import { RedirectTo } from '../redirect_to'; +import { TopNFunctionsTable } from '../topn_functions'; + +export function FunctionsView({ children }: { children: React.ReactElement }) { + const { + path, + query, + query: { rangeFrom, rangeTo, kuery, sortDirection, sortField }, + } = useProfilingParams('/functions/*'); + + const timeRange = useTimeRange({ rangeFrom, rangeTo }); + + const comparisonTimeRange = useTimeRange( + 'comparisonRangeFrom' in query + ? { rangeFrom: query.comparisonRangeFrom, rangeTo: query.comparisonRangeTo, optional: true } + : { rangeFrom: undefined, rangeTo: undefined, optional: true } + ); + + const comparisonKuery = 'comparisonKuery' in query ? query.comparisonKuery : ''; + + const { + services: { fetchTopNFunctions }, + } = useProfilingDependencies(); + + const state = useTimeRangeAsync(() => { + return fetchTopNFunctions({ + timeFrom: new Date(timeRange.start).getTime() / 1000, + timeTo: new Date(timeRange.end).getTime() / 1000, + startIndex: 0, + endIndex: 1000, + kuery, + }); + }, [timeRange.start, timeRange.end, kuery, fetchTopNFunctions]); + + const comparisonState = useTimeRangeAsync(() => { + if (!comparisonTimeRange.start || !comparisonTimeRange.end) { + return undefined; + } + return fetchTopNFunctions({ + timeFrom: new Date(comparisonTimeRange.start).getTime() / 1000, + timeTo: new Date(comparisonTimeRange.end).getTime() / 1000, + startIndex: 0, + endIndex: 1000, + kuery: comparisonKuery, + }); + }, [comparisonTimeRange.start, comparisonTimeRange.end, comparisonKuery, fetchTopNFunctions]); + + const routePath = useProfilingRoutePath() as + | '/functions' + | '/functions/topn' + | '/functions/differential'; + + const profilingRouter = useProfilingRouter(); + + const isDifferentialView = routePath === '/functions/differential'; + + const tabs: Required['tabs'] = [ + { + label: i18n.translate('xpack.profiling.functionsView.functionsTabLabel', { + defaultMessage: 'TopN functions', + }), + isSelected: !isDifferentialView, + href: profilingRouter.link('/functions/topn', { query }), + }, + { + label: i18n.translate('xpack.profiling.functionsView.differentialFunctionsTabLabel', { + defaultMessage: 'Differential TopN functions', + }), + isSelected: isDifferentialView, + href: profilingRouter.link('/functions/differential', { + query: { + ...query, + comparisonRangeFrom: query.rangeFrom, + comparisonRangeTo: query.rangeTo, + comparisonKuery: query.kuery, + }, + }), + }, + ]; + + if (routePath === '/functions') { + return ; + } + + return ( + + <> + + {isDifferentialView ? ( + + + + ) : null} + + + + + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + sortField: nextSort.sortField, + sortDirection: nextSort.sortDirection, + }, + }); + }} + /> + + + {isDifferentialView && comparisonTimeRange.start && comparisonTimeRange.end ? ( + + + { + profilingRouter.push(routePath, { + path, + query: { + ...(query as TypeOf< + ProfilingRoutes, + '/functions/differential' + >['query']), + sortField: nextSort.sortField, + sortDirection: nextSort.sortDirection, + }, + }); + }} + topNFunctions={comparisonState.data} + comparisonTopNFunctions={state.data} + /> + + + ) : null} + + + + {children} + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx b/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx new file mode 100644 index 0000000000000..7a8a09e845589 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { TypeOf } from '@kbn/typed-react-router-config'; +import React from 'react'; +import { useAnyOfProfilingParams } from '../hooks/use_profiling_params'; +import { useProfilingRouter } from '../hooks/use_profiling_router'; +import { useProfilingRoutePath } from '../hooks/use_profiling_route_path'; +import { useTimeRangeContext } from '../hooks/use_time_range_context'; +import { ProfilingRoutes } from '../routing'; +import { PrimaryProfilingSearchBar } from './profiling_app_page_template/primary_profiling_search_bar'; +import { ProfilingSearchBar } from './profiling_app_page_template/profiling_search_bar'; + +export function PrimaryAndComparisonSearchBar() { + const { + path, + query, + query: { comparisonKuery, comparisonRangeFrom, comparisonRangeTo }, + } = useAnyOfProfilingParams('/flamegraphs/differential', '/functions/differential'); + + const { refresh } = useTimeRangeContext(); + + const profilingRouter = useProfilingRouter(); + const routePath = useProfilingRoutePath() as + | '/flamegraphs/differential' + | '/functions/differential'; + + function navigate(nextOptions: { rangeFrom: string; rangeTo: string; kuery?: string }) { + if (routePath === '/flamegraphs/differential') { + profilingRouter.push(routePath, { + path, + query: { + ...(query as TypeOf['query']), + comparisonRangeFrom: nextOptions.rangeFrom, + comparisonRangeTo: nextOptions.rangeTo, + comparisonKuery: nextOptions.kuery ?? query.comparisonKuery, + }, + }); + } else { + profilingRouter.push(routePath, { + path, + query: { + ...(query as TypeOf['query']), + comparisonRangeFrom: nextOptions.rangeFrom, + comparisonRangeTo: nextOptions.rangeTo, + comparisonKuery: nextOptions.kuery ?? query.comparisonKuery, + }, + }); + } + } + + return ( + + + + + + { + navigate({ + kuery: String(next.query?.query || ''), + rangeFrom: next.dateRange.from, + rangeTo: next.dateRange.to, + }); + }} + onRefresh={(nextDateRange) => { + navigate({ + rangeFrom: nextDateRange.dateRange.from, + rangeTo: nextDateRange.dateRange.to, + }); + }} + onRefreshClick={() => { + refresh(); + }} + /> + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx new file mode 100644 index 0000000000000..d2eef22ba9226 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx @@ -0,0 +1,55 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiPageHeaderContentProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useEffect } from 'react'; +import { useHistory } from 'react-router-dom'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { PrimaryProfilingSearchBar } from './primary_profiling_search_bar'; + +export function ProfilingAppPageTemplate({ + children, + tabs, + hideSearchBar = false, +}: { + children: React.ReactElement; + tabs: EuiPageHeaderContentProps['tabs']; + hideSearchBar?: boolean; +}) { + const { + start: { observability }, + } = useProfilingDependencies(); + + const { PageTemplate: ObservabilityPageTemplate } = observability.navigation; + + const history = useHistory(); + + useEffect(() => { + window.scrollTo(0, 0); + }, [history.location.pathname]); + + return ( + + + {!hideSearchBar && ( + + + + )} + {children} + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/profiling_app_page_template/primary_profiling_search_bar.tsx b/x-pack/plugins/profiling/public/components/profiling_app_page_template/primary_profiling_search_bar.tsx new file mode 100644 index 0000000000000..fb4ee5d780f65 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/profiling_app_page_template/primary_profiling_search_bar.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect } from 'react'; +import { useProfilingParams } from '../../hooks/use_profiling_params'; +import { useProfilingRouter } from '../../hooks/use_profiling_router'; +import { useProfilingRoutePath } from '../../hooks/use_profiling_route_path'; +import { useTimeRangeContext } from '../../hooks/use_time_range_context'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { ProfilingSearchBar } from './profiling_search_bar'; + +export function PrimaryProfilingSearchBar({ showSubmitButton }: { showSubmitButton?: boolean }) { + const { + start: { data }, + } = useProfilingDependencies(); + + const profilingRouter = useProfilingRouter(); + const routePath = useProfilingRoutePath(); + + const { + path, + query, + query: { rangeFrom, rangeTo, kuery }, + } = useProfilingParams('/*'); + + const { refresh } = useTimeRangeContext(); + + useEffect(() => { + // set time if both to and from are given in the url + if (rangeFrom && rangeTo) { + data.query.timefilter.timefilter.setTime({ + from: rangeFrom, + to: rangeTo, + }); + return; + } + }, [rangeFrom, rangeTo, data]); + + return ( + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + kuery: String(next.query?.query || ''), + rangeFrom: next.dateRange.from, + rangeTo: next.dateRange.to, + }, + }); + }} + onRefresh={(nextDateRange) => { + profilingRouter.push(routePath, { + path, + query: { + ...query, + rangeFrom: nextDateRange.dateRange.from, + rangeTo: nextDateRange.dateRange.to, + }, + }); + }} + onRefreshClick={() => { + refresh(); + }} + showSubmitButton={showSubmitButton} + /> + ); +} diff --git a/x-pack/plugins/profiling/public/components/profiling_app_page_template/profiling_search_bar.tsx b/x-pack/plugins/profiling/public/components/profiling_app_page_template/profiling_search_bar.tsx new file mode 100644 index 0000000000000..5d199c8a26cb2 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/profiling_app_page_template/profiling_search_bar.tsx @@ -0,0 +1,80 @@ +/* + * 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, { useEffect, useState } from 'react'; +import { SearchBar } from '@kbn/unified-search-plugin/public'; +import { DataView } from '@kbn/data-views-plugin/common'; +import { compact } from 'lodash'; +import { Query, TimeRange } from '@kbn/es-query'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { INDEX_EVENTS } from '../../../common'; + +export function ProfilingSearchBar({ + kuery, + rangeFrom, + rangeTo, + onQuerySubmit, + onRefresh, + onRefreshClick, + showSubmitButton = true, +}: { + kuery: string; + rangeFrom: string; + rangeTo: string; + onQuerySubmit: ( + payload: { + dateRange: TimeRange; + query?: Query; + }, + isUpdate?: boolean + ) => void; + onRefresh: Required>['onRefresh']; + onRefreshClick: () => void; + showSubmitButton?: boolean; +}) { + const { + start: { dataViews }, + } = useProfilingDependencies(); + + const [dataView, setDataView] = useState(); + + useEffect(() => { + dataViews + .create({ + title: INDEX_EVENTS, + }) + .then((nextDataView) => setDataView(nextDataView)); + }, [dataViews]); + + const searchBarQuery: Required>['query'] = { + language: 'kuery', + query: kuery, + }; + + return ( + + onQuerySubmit={({ dateRange, query }) => { + if (dateRange.from === rangeFrom && dateRange.to === rangeTo && query?.query === kuery) { + onRefreshClick(); + return; + } + + onQuerySubmit({ dateRange, query }); + }} + showQueryBar + showQueryInput + showDatePicker + showFilterBar={false} + showSaveQuery={false} + showSubmitButton={showSubmitButton} + query={searchBarQuery} + dateRangeFrom={rangeFrom} + dateRangeTo={rangeTo} + indexPatterns={compact([dataView])} + onRefresh={onRefresh} + /> + ); +} diff --git a/x-pack/plugins/profiling/public/components/redirect_to.tsx b/x-pack/plugins/profiling/public/components/redirect_to.tsx new file mode 100644 index 0000000000000..fc5020909289c --- /dev/null +++ b/x-pack/plugins/profiling/public/components/redirect_to.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { useHistory, Redirect } from 'react-router-dom'; + +export function RedirectTo({ pathname }: { pathname: string }) { + const { location } = useHistory(); + + return ; +} diff --git a/x-pack/plugins/profiling/public/components/redirect_with_default_date_range.tsx b/x-pack/plugins/profiling/public/components/redirect_with_default_date_range.tsx new file mode 100644 index 0000000000000..6a39aad78c6e4 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/redirect_with_default_date_range.tsx @@ -0,0 +1,20 @@ +/* + * 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 { useDateRangeRedirect } from '../hooks/use_default_date_range_redirect'; + +export function RedirectWithDefaultDateRange({ children }: { children: React.ReactElement }) { + const { redirect, isDateRangeSet } = useDateRangeRedirect(); + + if (isDateRangeSet) { + return children; + } + + redirect(); + + return null; +} diff --git a/x-pack/plugins/profiling/public/components/route_breadcrumb.tsx b/x-pack/plugins/profiling/public/components/route_breadcrumb.tsx new file mode 100644 index 0000000000000..78d358d8a7b65 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/route_breadcrumb.tsx @@ -0,0 +1,26 @@ +/* + * 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 { useProfilingDependencies } from './contexts/profiling_dependencies/use_profiling_dependencies'; +import { useRouteBreadcrumb } from './contexts/route_breadcrumbs_context/use_route_breadcrumb'; + +export const RouteBreadcrumb = ({ + title, + href, + children, +}: { + title: string; + href: string; + children: React.ReactElement; +}) => { + const { + start: { core }, + } = useProfilingDependencies(); + useRouteBreadcrumb({ title, href: core.http.basePath.prepend('/app/profiling/' + href) }); + + return children; +}; diff --git a/x-pack/plugins/profiling/public/components/stack_frame_summary.tsx b/x-pack/plugins/profiling/public/components/stack_frame_summary.tsx new file mode 100644 index 0000000000000..9f25b4d9d8900 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/stack_frame_summary.tsx @@ -0,0 +1,26 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import React from 'react'; +import { getCalleeFunction, getCalleeSource, StackFrameMetadata } from '../../common/profiling'; + +export function StackFrameSummary({ frame }: { frame: StackFrameMetadata }) { + return ( + + +
+ + {getCalleeFunction(frame)} + +
+
+ + {getCalleeSource(frame) || '‎'} + +
+ ); +} diff --git a/x-pack/plugins/profiling/public/components/stack_traces_view/get_stack_traces_tabs.ts b/x-pack/plugins/profiling/public/components/stack_traces_view/get_stack_traces_tabs.ts new file mode 100644 index 0000000000000..435333ce68987 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/stack_traces_view/get_stack_traces_tabs.ts @@ -0,0 +1,61 @@ +/* + * 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 { EuiPageHeaderContentProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { TypeOf } from '@kbn/typed-react-router-config'; +import { TopNType } from '../../../common/stack_traces'; +import { StatefulProfilingRouter } from '../../hooks/use_profiling_router'; +import { ProfilingRoutes } from '../../routing'; + +export function getStackTracesTabs({ + path, + query, + profilingRouter, +}: TypeOf & { + profilingRouter: StatefulProfilingRouter; +}): Required['tabs'] { + return [ + { + label: i18n.translate('xpack.profiling.stackTracesView.containersTabLabel', { + defaultMessage: 'Containers', + }), + topNType: TopNType.Containers, + }, + { + label: i18n.translate('xpack.profiling.stackTracesView.deploymentsTabLabel', { + defaultMessage: 'Deployments', + }), + topNType: TopNType.Deployments, + }, + { + label: i18n.translate('xpack.profiling.stackTracesView.threadsTabLabel', { + defaultMessage: 'Threads', + }), + topNType: TopNType.Threads, + }, + { + label: i18n.translate('xpack.profiling.stackTracesView.hostsTabLabel', { + defaultMessage: 'Hosts', + }), + topNType: TopNType.Hosts, + }, + { + label: i18n.translate('xpack.profiling.stackTracesView.tracesTabLabel', { + defaultMessage: 'Traces', + }), + topNType: TopNType.Traces, + }, + ].map((tab) => ({ + label: tab.label, + isSelected: tab.topNType === path.topNType, + href: profilingRouter.link(`/stacktraces/{topNType}`, { + path: { topNType: tab.topNType }, + query, + }), + })); +} diff --git a/x-pack/plugins/profiling/public/components/stack_traces_view/index.tsx b/x-pack/plugins/profiling/public/components/stack_traces_view/index.tsx new file mode 100644 index 0000000000000..f263f235a75ca --- /dev/null +++ b/x-pack/plugins/profiling/public/components/stack_traces_view/index.tsx @@ -0,0 +1,184 @@ +/* + * 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 { EuiButton, EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; +import { StackTracesDisplayOption, TopNType } from '../../../common/stack_traces'; +import { groupSamplesByCategory, TopNResponse, TopNSubchart } from '../../../common/topn'; +import { useProfilingParams } from '../../hooks/use_profiling_params'; +import { useProfilingRouter } from '../../hooks/use_profiling_router'; +import { useProfilingRoutePath } from '../../hooks/use_profiling_route_path'; +import { useTimeRange } from '../../hooks/use_time_range'; +import { useTimeRangeAsync } from '../../hooks/use_time_range_async'; +import { AsyncComponent } from '../async_component'; +import { ChartGrid } from '../chart_grid'; +import { useProfilingDependencies } from '../contexts/profiling_dependencies/use_profiling_dependencies'; +import { ProfilingAppPageTemplate } from '../profiling_app_page_template'; +import { StackedBarChart } from '../stacked_bar_chart'; +import { getStackTracesTabs } from './get_stack_traces_tabs'; + +export function StackTracesView() { + const routePath = useProfilingRoutePath(); + + const profilingRouter = useProfilingRouter(); + + const { + path, + query, + path: { topNType }, + query: { rangeFrom, rangeTo, kuery, displayAs, limit: limitFromQueryParams }, + } = useProfilingParams('/stacktraces/{topNType}'); + + const limit = limitFromQueryParams || 10; + + const tabs = getStackTracesTabs({ + path, + query, + profilingRouter, + }); + + const { + services: { fetchTopN }, + } = useProfilingDependencies(); + + const timeRange = useTimeRange({ + rangeFrom, + rangeTo, + }); + + const state = useTimeRangeAsync(() => { + if (!topNType) { + return Promise.resolve({ charts: [], metadata: {} }); + } + return fetchTopN({ + type: topNType, + timeFrom: new Date(timeRange.start).getTime() / 1000, + timeTo: new Date(timeRange.end).getTime() / 1000, + kuery, + }).then((response: TopNResponse) => { + const totalCount = response.TotalCount; + const samples = response.TopN; + const charts = groupSamplesByCategory({ samples, totalCount, metadata: response.Metadata }); + return { + charts, + }; + }); + }, [topNType, timeRange.start, timeRange.end, fetchTopN, kuery]); + + const [highlightedSubchart, setHighlightedSubchart] = useState( + undefined + ); + + const { data } = state; + + return ( + + + + + + + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + displayAs: nextValue, + }, + }); + }} + options={[ + { + id: StackTracesDisplayOption.StackTraces, + iconType: 'visLine', + label: i18n.translate( + 'xpack.profiling.stackTracesView.stackTracesCountButton', + { + defaultMessage: 'Stack traces', + } + ), + }, + { + id: StackTracesDisplayOption.Percentage, + iconType: 'percent', + label: i18n.translate('xpack.profiling.stackTracesView.percentagesButton', { + defaultMessage: 'Percentages', + }), + }, + ]} + legend={i18n.translate('xpack.profiling.stackTracesView.displayOptionLegend', { + defaultMessage: 'Display option', + })} + /> + + + + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + rangeFrom: nextRange.rangeFrom, + rangeTo: nextRange.rangeTo, + }, + }); + }} + onSampleClick={(sample) => { + setHighlightedSubchart( + data?.charts.find((subchart) => subchart.Category === sample.Category) + ); + }} + onSampleOut={() => { + setHighlightedSubchart(undefined); + }} + highlightedSubchart={highlightedSubchart} + showFrames={topNType === TopNType.Traces} + /> + + + + + + + + + + + {(data?.charts.length ?? 0) > limit ? ( + + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + limit: limit + 10, + }, + }); + }} + > + {i18n.translate('xpack.profiling.stackTracesView.showMoreButton', { + defaultMessage: 'Show more', + })} + + + ) : null} + + + ); +} diff --git a/x-pack/plugins/profiling/public/components/stacked_bar_chart.tsx b/x-pack/plugins/profiling/public/components/stacked_bar_chart.tsx new file mode 100644 index 0000000000000..d11fb799ff35a --- /dev/null +++ b/x-pack/plugins/profiling/public/components/stacked_bar_chart.tsx @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + Axis, + BrushAxis, + Chart, + HistogramBarSeries, + ScaleType, + Settings, + StackMode, + timeFormatter, + Tooltip, + TooltipInfo, + XYChartElementEvent, +} from '@elastic/charts'; +import { EuiPanel } from '@elastic/eui'; +import React from 'react'; +import { TopNSample, TopNSubchart } from '../../common/topn'; +import { useKibanaTimeZoneSetting } from '../hooks/use_kibana_timezone_setting'; +import { useProfilingChartsTheme } from '../hooks/use_profiling_charts_theme'; +import { asPercentage } from '../utils/formatters/as_percentage'; +import { SubChart } from './subchart'; + +function SubchartTooltip({ + highlightedSubchart, + showFrames, +}: TooltipInfo & { highlightedSubchart: TopNSubchart; showFrames: boolean }) { + // max tooltip width - 2 * padding (16px) + const width = 224; + return ( + + + + ); +} + +export interface StackedBarChartProps { + height: number; + asPercentages: boolean; + onBrushEnd: (range: { rangeFrom: string; rangeTo: string }) => void; + onSampleClick: (sample: TopNSample) => void; + onSampleOut: () => void; + highlightedSubchart?: TopNSubchart; + charts: TopNSubchart[]; + showFrames: boolean; +} + +export const StackedBarChart: React.FC = ({ + height, + asPercentages, + onBrushEnd, + onSampleClick, + onSampleOut, + highlightedSubchart, + charts, + showFrames, +}) => { + const timeZone = useKibanaTimeZoneSetting(); + + const { chartsBaseTheme, chartsTheme } = useProfilingChartsTheme(); + + return ( + + { + const rangeFrom = new Date(brushEvent.x![0]).toISOString(); + const rangeTo = new Date(brushEvent.x![1]).toISOString(); + + onBrushEnd({ rangeFrom, rangeTo }); + }} + baseTheme={chartsBaseTheme} + theme={chartsTheme} + onElementClick={(events) => { + const [value] = events[0] as XYChartElementEvent; + onSampleClick(value.datum as TopNSample); + }} + onElementOver={() => { + onSampleOut(); + }} + onElementOut={() => { + onSampleOut(); + }} + /> + ( + + ) + : () => <> + } + /> + {charts.map((chart) => ( + + ))} + + (asPercentages ? asPercentage(d) : d.toFixed(0))} + /> + + ); +}; diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx new file mode 100644 index 0000000000000..1d20213f24982 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -0,0 +1,245 @@ +/* + * 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 { + AreaSeries, + Axis, + Chart, + CurveType, + ScaleType, + Settings, + timeFormatter, +} from '@elastic/charts'; +import { + EuiBadge, + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiLink, + EuiSpacer, + EuiText, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { StackFrameMetadata } from '../../common/profiling'; +import { getFieldNameForTopNType, TopNType } from '../../common/stack_traces'; +import { CountPerTime, OTHER_BUCKET_LABEL } from '../../common/topn'; +import { useKibanaTimeZoneSetting } from '../hooks/use_kibana_timezone_setting'; +import { useProfilingChartsTheme } from '../hooks/use_profiling_charts_theme'; +import { useProfilingParams } from '../hooks/use_profiling_params'; +import { useProfilingRouter } from '../hooks/use_profiling_router'; +import { asPercentage } from '../utils/formatters/as_percentage'; +import { StackFrameSummary } from './stack_frame_summary'; + +export interface SubChartProps { + index: number; + color: string; + height: number; + width?: number; + category: string; + percentage: number; + data: CountPerTime[]; + showAxes: boolean; + metadata: StackFrameMetadata[]; + onShowMoreClick: (() => void) | null; + style?: React.ComponentProps['style']; + showFrames: boolean; +} + +const NUM_DISPLAYED_FRAMES = 5; + +export const SubChart: React.FC = ({ + index, + color, + category, + percentage, + height, + data, + width, + showAxes, + metadata, + onShowMoreClick, + style, + showFrames, +}) => { + const theme = useEuiTheme(); + + const profilingRouter = useProfilingRouter(); + + const { path, query } = useProfilingParams('/stacktraces/{topNType}'); + + const href = profilingRouter.link('/stacktraces/{topNType}', { + path: { + topNType: TopNType.Traces, + }, + query: { + ...query, + kuery: `${getFieldNameForTopNType(path.topNType)}:"${category}"`, + }, + }); + + const timeZone = useKibanaTimeZoneSetting(); + + const { chartsTheme, chartsBaseTheme } = useProfilingChartsTheme(); + + const compact = !!onShowMoreClick; + + const displayedFrames = compact ? metadata.slice(0, NUM_DISPLAYED_FRAMES) : metadata; + + const hasMoreFrames = displayedFrames.length < metadata.length; + + let bottomElement: React.ReactElement; + + if (metadata.length > 0) { + bottomElement = ( + <> + + + {displayedFrames.map((frame, frameIndex) => ( + <> + + + {frameIndex + 1} + + + + + + {frameIndex < displayedFrames.length - 1 || hasMoreFrames ? ( + + + + ) : null} + + ))} + + + {hasMoreFrames && !!onShowMoreClick && ( + + {i18n.translate('xpack.profiling.stackTracesView.showMoreTracesButton', { + defaultMessage: 'Show more', + })} + + )} + + + ); + } else if (category === OTHER_BUCKET_LABEL && showFrames) { + bottomElement = ( + + + + {i18n.translate('xpack.profiling.stackTracesView.otherTraces', { + defaultMessage: '[This summarizes all traces that are too small to display]', + })} + + + + ); + } else { + bottomElement = ; + } + + return ( + + + + + + + {index} + + + + + + {category} + + + + {asPercentage(percentage / 100, 2)} + + + + + + + + {showAxes ? ( + + ) : null} + (showAxes ? Number(d).toFixed(0) : '')} + style={ + showAxes + ? {} + : { + tickLine: { visible: false }, + tickLabel: { visible: false }, + axisTitle: { visible: false }, + } + } + /> + + {!showAxes ? ( +
+ {i18n.translate('xpack.profiling.maxValue', { + defaultMessage: 'Max: {max}', + values: { max: Math.max(...data.map((value) => value.Count ?? 0)) }, + })} +
+ ) : null} +
+ {bottomElement} +
+ ); +}; diff --git a/x-pack/plugins/profiling/public/components/topn_functions.tsx b/x-pack/plugins/profiling/public/components/topn_functions.tsx new file mode 100644 index 0000000000000..3ad540983d903 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/topn_functions.tsx @@ -0,0 +1,251 @@ +/* + * 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 { + EuiBadge, + EuiBasicTable, + EuiBasicTableColumn, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiSpacer, + EuiText, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { keyBy, orderBy } from 'lodash'; +import React, { useMemo } from 'react'; +import { TopNFunctions, TopNFunctionSortField } from '../../common/functions'; +import { getCalleeFunction, StackFrameMetadata } from '../../common/profiling'; +import { StackFrameSummary } from './stack_frame_summary'; + +interface Row { + rank: number; + frame: StackFrameMetadata; + samples: number; + exclusiveCPU: number; + inclusiveCPU: number; + diff?: { + rank: number; + exclusiveCPU: number; + inclusiveCPU: number; + }; +} + +function CPUStat({ cpu, diffCPU }: { cpu: number; diffCPU: number | undefined }) { + const cpuLabel = `${cpu.toFixed(2)}%`; + + if (diffCPU === undefined || diffCPU === 0) { + return <>{cpuLabel}; + } + const color = diffCPU < 0 ? 'success' : 'danger'; + const label = Math.abs(diffCPU) <= 0.01 ? '<0.01' : Math.abs(diffCPU).toFixed(2); + + return ( + + {cpuLabel} + + + ({label}) + + + + ); +} + +export const TopNFunctionsTable = ({ + sortDirection, + sortField, + onSortChange, + topNFunctions, + comparisonTopNFunctions, +}: { + sortDirection: 'asc' | 'desc'; + sortField: TopNFunctionSortField; + onSortChange: (options: { + sortDirection: 'asc' | 'desc'; + sortField: TopNFunctionSortField; + }) => void; + topNFunctions?: TopNFunctions; + comparisonTopNFunctions?: TopNFunctions; +}) => { + const totalCount: number = useMemo(() => { + if (!topNFunctions || !topNFunctions.TotalCount || topNFunctions.TotalCount === 0) { + return 0; + } + + return topNFunctions.TotalCount; + }, [topNFunctions]); + + const rows: Row[] = useMemo(() => { + if (!topNFunctions || !topNFunctions.TotalCount || topNFunctions.TotalCount === 0) { + return []; + } + + const comparisonDataById = comparisonTopNFunctions + ? keyBy(comparisonTopNFunctions.TopN, 'Id') + : {}; + + return topNFunctions.TopN.filter((topN) => topN.CountExclusive > 0).map((topN, i) => { + const comparisonRow = comparisonDataById?.[topN.Id]; + + const inclusiveCPU = (topN.CountInclusive / topNFunctions.TotalCount) * 100; + const exclusiveCPU = (topN.CountExclusive / topNFunctions.TotalCount) * 100; + + const diff = + comparisonTopNFunctions && comparisonRow + ? { + rank: topN.Rank - comparisonRow.Rank, + exclusiveCPU: + exclusiveCPU - + (comparisonRow.CountExclusive / comparisonTopNFunctions.TotalCount) * 100, + inclusiveCPU: + inclusiveCPU - + (comparisonRow.CountInclusive / comparisonTopNFunctions.TotalCount) * 100, + } + : undefined; + + return { + rank: topN.Rank, + frame: topN.Frame, + samples: topN.CountExclusive, + exclusiveCPU, + inclusiveCPU, + diff, + }; + }); + }, [topNFunctions, comparisonTopNFunctions]); + + const theme = useEuiTheme(); + + const columns: Array> = [ + { + field: TopNFunctionSortField.Rank, + name: i18n.translate('xpack.profiling.functionsView.rankColumnLabel', { + defaultMessage: 'Rank', + }), + align: 'right', + }, + { + field: TopNFunctionSortField.Frame, + name: i18n.translate('xpack.profiling.functionsView.functionColumnLabel', { + defaultMessage: 'Function', + }), + width: '100%', + render: (_, { frame }) => , + }, + { + field: TopNFunctionSortField.Samples, + name: i18n.translate('xpack.profiling.functionsView.samplesColumnLabel', { + defaultMessage: 'Samples', + }), + align: 'right', + }, + { + field: TopNFunctionSortField.ExclusiveCPU, + name: i18n.translate('xpack.profiling.functionsView.exclusiveCpuColumnLabel', { + defaultMessage: 'Exclusive CPU', + }), + render: (_, { exclusiveCPU, diff }) => { + return ; + }, + align: 'right', + }, + { + field: TopNFunctionSortField.InclusiveCPU, + name: i18n.translate('xpack.profiling.functionsView.inclusiveCpuColumnLabel', { + defaultMessage: 'Inclusive CPU', + }), + render: (_, { inclusiveCPU, diff }) => { + return ; + }, + align: 'right', + }, + ]; + + if (comparisonTopNFunctions) { + columns.push({ + field: TopNFunctionSortField.Diff, + name: i18n.translate('xpack.profiling.functionsView.diffColumnLabel', { + defaultMessage: 'Diff', + }), + align: 'right', + render: (_, { diff }) => { + if (!diff) { + return ( + + {i18n.translate('xpack.profiling.functionsView.newLabel', { defaultMessage: 'New' })} + + ); + } + + if (diff.rank === 0) { + return null; + } + + const color = diff.rank > 0 ? 'success' : 'danger'; + const icon = diff.rank > 0 ? 'sortDown' : 'sortUp'; + + return ( + + {diff.rank} + + ); + }, + }); + } + + const totalSampleCountLabel = i18n.translate( + 'xpack.profiling.functionsView.totalSampleCountLabel', + { + defaultMessage: 'Total sample count', + } + ); + + const sortedRows = orderBy( + rows, + (row) => { + return sortField === TopNFunctionSortField.Frame + ? getCalleeFunction(row.frame).toLowerCase() + : row[sortField]; + }, + [sortDirection] + ).slice(0, 100); + + return ( + <> + + {totalSampleCountLabel}: {totalCount} + + + + { + onSortChange({ + sortDirection: criteria.sort!.direction, + sortField: criteria.sort!.field as TopNFunctionSortField, + }); + }} + sorting={{ + enableAllColumns: true, + sort: { + direction: sortDirection, + field: sortField, + }, + }} + /> + + ); +}; diff --git a/x-pack/plugins/profiling/public/hooks/use_async.ts b/x-pack/plugins/profiling/public/hooks/use_async.ts new file mode 100644 index 0000000000000..ea6da578c3879 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_async.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { HttpStart } from '@kbn/core-http-browser'; +import { useEffect, useState } from 'react'; +import { useProfilingDependencies } from '../components/contexts/profiling_dependencies/use_profiling_dependencies'; + +export enum AsyncStatus { + Loading = 'loading', + Init = 'init', + Settled = 'settled', +} + +export interface AsyncState { + data?: T; + error?: Error; + status: AsyncStatus; +} + +export type UseAsync = ( + fn: ({ http }: { http: HttpStart }) => Promise | undefined, + dependencies: any[] +) => AsyncState; + +export const useAsync: UseAsync = (fn, dependencies) => { + const { + start: { + core: { http }, + }, + } = useProfilingDependencies(); + const [asyncState, setAsyncState] = useState>({ + status: AsyncStatus.Init, + }); + + const { data, error } = asyncState; + + useEffect(() => { + const returnValue = fn({ http }); + + if (returnValue === undefined) { + setAsyncState({ + status: AsyncStatus.Init, + data: undefined, + error: undefined, + }); + return; + } + + setAsyncState({ + status: AsyncStatus.Loading, + data, + error, + }); + + returnValue.then((nextData) => { + setAsyncState({ + status: AsyncStatus.Settled, + data: nextData, + }); + }); + + returnValue.catch((nextError) => { + setAsyncState({ + status: AsyncStatus.Settled, + error: nextError, + }); + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [http, ...dependencies]); + + return asyncState; +}; diff --git a/x-pack/plugins/profiling/public/hooks/use_default_date_range_redirect.ts b/x-pack/plugins/profiling/public/hooks/use_default_date_range_redirect.ts new file mode 100644 index 0000000000000..bb59b7d6b49f3 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_default_date_range_redirect.ts @@ -0,0 +1,46 @@ +/* + * 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 qs from 'query-string'; +import { useHistory, useLocation } from 'react-router-dom'; +import { UI_SETTINGS } from '@kbn/data-plugin/public'; +import { useProfilingDependencies } from '../components/contexts/profiling_dependencies/use_profiling_dependencies'; + +export function useDateRangeRedirect() { + const history = useHistory(); + const location = useLocation(); + const query = qs.parse(location.search); + + const { + start: { core, data }, + } = useProfilingDependencies(); + + const timePickerTimeDefaults = core.uiSettings.get<{ from: string; to: string }>( + UI_SETTINGS.TIMEPICKER_TIME_DEFAULTS + ); + + const timePickerSharedState = data.query.timefilter.timefilter.getTime(); + + const isDateRangeSet = 'rangeFrom' in query && 'rangeTo' in query; + + const redirect = () => { + const nextQuery = { + rangeFrom: timePickerSharedState.from ?? timePickerTimeDefaults.from, + rangeTo: timePickerSharedState.to ?? timePickerTimeDefaults.to, + ...query, + }; + + history.replace({ + ...location, + search: qs.stringify(nextQuery), + }); + }; + + return { + isDateRangeSet, + redirect, + }; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_kibana_timezone_setting.ts b/x-pack/plugins/profiling/public/hooks/use_kibana_timezone_setting.ts new file mode 100644 index 0000000000000..411b6013154cd --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_kibana_timezone_setting.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 { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { UI_SETTINGS } from '@kbn/data-plugin/public'; + +export function useKibanaTimeZoneSetting() { + const [kibanaTimeZone] = useUiSetting$(UI_SETTINGS.DATEFORMAT_TZ); + + if (!kibanaTimeZone || kibanaTimeZone === 'Browser') { + return 'local'; + } + + return kibanaTimeZone; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_profiling_charts_theme.ts b/x-pack/plugins/profiling/public/hooks/use_profiling_charts_theme.ts new file mode 100644 index 0000000000000..cd72d1ae3b4b6 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_profiling_charts_theme.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { RecursivePartial, Theme } from '@elastic/charts'; +import { merge } from 'lodash'; +import { useProfilingDependencies } from '../components/contexts/profiling_dependencies/use_profiling_dependencies'; + +const profilingTheme: RecursivePartial = { + barSeriesStyle: { + rectBorder: { + strokeOpacity: 1, + strokeWidth: 1, + visible: true, + }, + rect: { + opacity: 0.6, + }, + }, + scales: { + barsPadding: 0, + histogramPadding: 0, + }, +}; + +export function useProfilingChartsTheme() { + const { + start: { charts }, + } = useProfilingDependencies(); + + const chartsBaseTheme = charts.theme.useChartsBaseTheme(); + const chartsTheme = charts.theme.useChartsTheme(); + + return { + chartsBaseTheme, + chartsTheme: merge({}, chartsTheme, profilingTheme), + }; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_profiling_params.ts b/x-pack/plugins/profiling/public/hooks/use_profiling_params.ts new file mode 100644 index 0000000000000..7c4c1f8beaecd --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_profiling_params.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { PathsOf, TypeOf, useParams } from '@kbn/typed-react-router-config'; +import { ValuesType } from 'utility-types'; +import { ProfilingRoutes } from '../routing'; + +export function useProfilingParams>( + path: T, + ...args: any[] +): TypeOf { + return useParams(path, ...args) as TypeOf; +} + +export function useAnyOfProfilingParams>>( + ...paths: TPaths +): TypeOf> { + return useParams(...paths)! as TypeOf>; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_profiling_route_path.ts b/x-pack/plugins/profiling/public/hooks/use_profiling_route_path.ts new file mode 100644 index 0000000000000..91859984be453 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_profiling_route_path.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PathsOf, useRoutePath } from '@kbn/typed-react-router-config'; +import { ProfilingRoutes } from '../routing'; + +export function useProfilingRoutePath(): PathsOf { + return useRoutePath() as PathsOf; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_profiling_router.ts b/x-pack/plugins/profiling/public/hooks/use_profiling_router.ts new file mode 100644 index 0000000000000..0aa31af63dfa5 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_profiling_router.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PathsOf, TypeOf, TypeAsArgs } from '@kbn/typed-react-router-config'; +import { useHistory } from 'react-router-dom'; +import { useProfilingDependencies } from '../components/contexts/profiling_dependencies/use_profiling_dependencies'; +import { ProfilingRouter, profilingRouter, ProfilingRoutes } from '../routing'; + +export interface StatefulProfilingRouter extends ProfilingRouter { + push>( + path: T, + ...params: TypeAsArgs> + ): void; + replace>( + path: T, + ...params: TypeAsArgs> + ): void; +} + +export function useProfilingRouter(): StatefulProfilingRouter { + const history = useHistory(); + + const { + start: { core }, + } = useProfilingDependencies(); + + const link = (...args: any[]) => { + // @ts-expect-error + return profilingRouter.link(...args); + }; + + return { + ...profilingRouter, + push: (...args) => { + const next = link(...args); + + history.push(next); + }, + replace: (path, ...args) => { + const next = link(path, ...args); + history.replace(next); + }, + link: (path, ...args) => { + return core.http.basePath.prepend('/app/profiling' + link(path, ...args)); + }, + }; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_time_range.ts b/x-pack/plugins/profiling/public/hooks/use_time_range.ts new file mode 100644 index 0000000000000..32e1b2c2cfb74 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_time_range.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { TimeRange } from '../../common/types'; +import { getNextTimeRange } from '../utils/get_next_time_range'; +import { useTimeRangeContext } from './use_time_range_context'; + +interface TimeRangeAPI { + timeRangeId: string; +} + +type PartialTimeRange = Pick, 'start' | 'end'>; + +export function useTimeRange(range: { + rangeFrom?: string; + rangeTo?: string; + optional: true; +}): TimeRangeAPI & PartialTimeRange; + +export function useTimeRange(range: { + rangeFrom: string; + rangeTo: string; +}): TimeRangeAPI & TimeRange; + +export function useTimeRange({ + rangeFrom, + rangeTo, + optional, +}: { + rangeFrom?: string; + rangeTo?: string; + optional?: boolean; +}): TimeRangeAPI & (TimeRange | PartialTimeRange) { + const timeRangeApi = useTimeRangeContext(); + + const { start, end } = useMemo(() => { + return getNextTimeRange({ + state: {}, + rangeFrom, + rangeTo, + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [rangeFrom, rangeTo, timeRangeApi.timeRangeId]); + + if ((!start || !end) && !optional) { + throw new Error('start and/or end were unexpectedly not set'); + } + + return { + start, + end, + timeRangeId: timeRangeApi.timeRangeId, + }; +} diff --git a/x-pack/plugins/profiling/public/hooks/use_time_range_async.ts b/x-pack/plugins/profiling/public/hooks/use_time_range_async.ts new file mode 100644 index 0000000000000..2a4bffc639e57 --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_time_range_async.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { UseAsync, useAsync } from './use_async'; +import { useTimeRangeContext } from './use_time_range_context'; + +export const useTimeRangeAsync: UseAsync = (fn, dependencies) => { + const { timeRangeId } = useTimeRangeContext(); + // eslint-disable-next-line react-hooks/exhaustive-deps + return useAsync(fn, dependencies.concat(timeRangeId)); +}; diff --git a/x-pack/plugins/profiling/public/hooks/use_time_range_context.ts b/x-pack/plugins/profiling/public/hooks/use_time_range_context.ts new file mode 100644 index 0000000000000..982f547eef21b --- /dev/null +++ b/x-pack/plugins/profiling/public/hooks/use_time_range_context.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 { useContext } from 'react'; +import { TimeRangeContext } from '../components/contexts/time_range_context'; + +export function useTimeRangeContext() { + const context = useContext(TimeRangeContext); + + if (!context) { + throw new Error('TimeRangeContext was not provided'); + } + + return context; +} diff --git a/x-pack/plugins/profiling/public/index.tsx b/x-pack/plugins/profiling/public/index.tsx new file mode 100644 index 0000000000000..974fcc27397b9 --- /dev/null +++ b/x-pack/plugins/profiling/public/index.tsx @@ -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. + */ + +import { ProfilingPlugin } from './plugin'; + +export function plugin() { + return new ProfilingPlugin(); +} diff --git a/x-pack/plugins/profiling/public/plugin.tsx b/x-pack/plugins/profiling/public/plugin.tsx new file mode 100644 index 0000000000000..054a32da8efa6 --- /dev/null +++ b/x-pack/plugins/profiling/public/plugin.tsx @@ -0,0 +1,131 @@ +/* + * 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 { + AppMountParameters, + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + Plugin, +} from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; +import type { NavigationSection } from '@kbn/observability-plugin/public'; +import { Location } from 'history'; +import { BehaviorSubject, combineLatest, from, map } from 'rxjs'; +import { getServices } from './services'; +import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; + +export class ProfilingPlugin implements Plugin { + public setup(coreSetup: CoreSetup, pluginsSetup: ProfilingPluginPublicSetupDeps) { + // Register an application into the side navigation menu + + const links = [ + { + id: 'stacktraces', + title: i18n.translate('xpack.profiling.navigation.stacktracesLinkLabel', { + defaultMessage: 'Stacktraces', + }), + path: '/stacktraces', + }, + { + id: 'flamegraphs', + title: i18n.translate('xpack.profiling.navigation.flameGraphsLinkLabel', { + defaultMessage: 'Flamegraphs', + }), + path: '/flamegraphs', + }, + { + id: 'functions', + title: i18n.translate('xpack.profiling.navigation.functionsLinkLabel', { + defaultMessage: 'Functions', + }), + path: '/functions', + }, + ]; + + const kuerySubject = new BehaviorSubject(''); + + const section$ = combineLatest([from(coreSetup.getStartServices()), kuerySubject]).pipe( + map(([_, kuery]) => { + const sections: NavigationSection[] = [ + { + // TODO: add beta badge to section label, needs support in Observability plugin + label: i18n.translate('xpack.profiling.navigation.sectionLabel', { + defaultMessage: 'Profiling', + }), + entries: links.map((link) => { + return { + app: 'profiling', + label: link.title, + path: `${link.path}?kuery=${kuery ?? ''}`, + matchPath: (path) => { + return path.startsWith(link.path); + }, + }; + }), + sortKey: 700, + }, + ]; + return sections; + }) + ); + + pluginsSetup.observability.navigation.registerSections(section$); + + coreSetup.application.register({ + id: 'profiling', + title: 'Profiling', + euiIconType: 'logoObservability', + appRoute: '/app/profiling', + category: DEFAULT_APP_CATEGORIES.observability, + deepLinks: links, + async mount({ element, history, theme$ }: AppMountParameters) { + const [coreStart, pluginsStart] = (await coreSetup.getStartServices()) as [ + CoreStart, + ProfilingPluginPublicStartDeps, + unknown + ]; + + const profilingFetchServices = getServices(coreStart); + const { renderApp } = await import('./app'); + + function pushKueryToSubject(location: Location) { + const query = new URLSearchParams(location.search); + kuerySubject.next(query.get('kuery') ?? ''); + } + + pushKueryToSubject(history.location); + + history.listen(pushKueryToSubject); + + const unmount = renderApp( + { + profilingFetchServices, + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + history, + theme$, + }, + element + ); + + return () => { + unmount(); + kuerySubject.next(''); + }; + }, + }); + } + + public start(core: CoreStart) { + return {}; + } + + public stop() {} +} diff --git a/x-pack/plugins/profiling/public/routing/index.tsx b/x-pack/plugins/profiling/public/routing/index.tsx new file mode 100644 index 0000000000000..221ff10a5dad0 --- /dev/null +++ b/x-pack/plugins/profiling/public/routing/index.tsx @@ -0,0 +1,205 @@ +/* + * 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 { toNumberRt } from '@kbn/io-ts-utils'; +import { createRouter, Outlet } from '@kbn/typed-react-router-config'; +import * as t from 'io-ts'; +import React from 'react'; +import { TopNFunctionSortField, topNFunctionSortFieldRt } from '../../common/functions'; +import { StackTracesDisplayOption, TopNType } from '../../common/stack_traces'; +import { FlameGraphComparisonMode } from '../../common/flamegraph'; +import { FlameGraphsView } from '../components/flame_graphs_view'; +import { FunctionsView } from '../components/functions_view'; +import { RedirectTo } from '../components/redirect_to'; +import { RouteBreadcrumb } from '../components/route_breadcrumb'; +import { StackTracesView } from '../components/stack_traces_view'; + +const routes = { + '/': { + element: ( + + + + ), + children: { + '/': { + children: { + '/stacktraces/{topNType}': { + element: , + params: t.type({ + path: t.type({ + topNType: t.union([ + t.literal(TopNType.Containers), + t.literal(TopNType.Deployments), + t.literal(TopNType.Hosts), + t.literal(TopNType.Threads), + t.literal(TopNType.Traces), + ]), + }), + query: t.type({ + displayAs: t.union([ + t.literal(StackTracesDisplayOption.StackTraces), + t.literal(StackTracesDisplayOption.Percentage), + ]), + limit: toNumberRt, + }), + }), + defaults: { + query: { + displayAs: StackTracesDisplayOption.StackTraces, + limit: '10', + }, + }, + }, + '/stacktraces': { + element: , + }, + '/flamegraphs': { + element: ( + + + + + + ), + children: { + '/flamegraphs/flamegraph': { + element: ( + + + + ), + }, + '/flamegraphs/differential': { + element: ( + + + + ), + params: t.type({ + query: t.type({ + comparisonRangeFrom: t.string, + comparisonRangeTo: t.string, + comparisonKuery: t.string, + comparisonMode: t.union([ + t.literal(FlameGraphComparisonMode.Absolute), + t.literal(FlameGraphComparisonMode.Relative), + ]), + }), + }), + defaults: { + query: { + comparisonMode: FlameGraphComparisonMode.Absolute, + }, + }, + }, + }, + }, + '/functions': { + element: ( + + + + + + ), + params: t.type({ + query: t.type({ + sortField: topNFunctionSortFieldRt, + sortDirection: t.union([t.literal('asc'), t.literal('desc')]), + }), + }), + defaults: { + query: { + sortField: TopNFunctionSortField.Rank, + sortDirection: 'asc', + }, + }, + children: { + '/functions/topn': { + element: ( + + + + ), + }, + '/functions/differential': { + element: ( + + + + ), + params: t.type({ + query: t.type({ + comparisonRangeFrom: t.string, + comparisonRangeTo: t.string, + comparisonKuery: t.string, + }), + }), + }, + }, + }, + '/': { + element: , + }, + }, + element: , + params: t.type({ + query: t.type({ + rangeFrom: t.string, + rangeTo: t.string, + kuery: t.string, + }), + }), + defaults: { + query: { + kuery: '', + }, + }, + }, + }, + }, +}; + +export const profilingRouter = createRouter(routes); +export type ProfilingRoutes = typeof routes; +export type ProfilingRouter = typeof profilingRouter; diff --git a/x-pack/plugins/profiling/public/services.ts b/x-pack/plugins/profiling/public/services.ts new file mode 100644 index 0000000000000..07234ca124b36 --- /dev/null +++ b/x-pack/plugins/profiling/public/services.ts @@ -0,0 +1,122 @@ +/* + * 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 { CoreStart, HttpFetchQuery } from '@kbn/core/public'; +import { getRoutePaths } from '../common'; +import { ElasticFlameGraph } from '../common/flamegraph'; +import { TopNFunctions } from '../common/functions'; +import { StackFrameMetadata } from '../common/profiling'; +import { TopNResponse } from '../common/topn'; + +export interface Services { + fetchTopN: (params: { + type: string; + timeFrom: number; + timeTo: number; + kuery: string; + }) => Promise; + fetchTopNFunctions: (params: { + timeFrom: number; + timeTo: number; + startIndex: number; + endIndex: number; + kuery: string; + }) => Promise; + fetchElasticFlamechart: (params: { + timeFrom: number; + timeTo: number; + kuery: string; + }) => Promise; + fetchFrameInformation: (params: { + frameID: string; + executableID: string; + }) => Promise; +} + +export function getServices(core: CoreStart): Services { + const paths = getRoutePaths(); + + return { + fetchTopN: async ({ type, timeFrom, timeTo, kuery }) => { + try { + const query: HttpFetchQuery = { + timeFrom, + timeTo, + kuery, + }; + return await core.http.get(`${paths.TopN}/${type}`, { query }); + } catch (e) { + return e; + } + }, + + fetchTopNFunctions: async ({ + timeFrom, + timeTo, + startIndex, + endIndex, + kuery, + }: { + timeFrom: number; + timeTo: number; + startIndex: number; + endIndex: number; + kuery: string; + }) => { + try { + const query: HttpFetchQuery = { + timeFrom, + timeTo, + startIndex, + endIndex, + kuery, + }; + return await core.http.get(paths.TopNFunctions, { query }); + } catch (e) { + return e; + } + }, + + fetchElasticFlamechart: async ({ + timeFrom, + timeTo, + kuery, + }: { + timeFrom: number; + timeTo: number; + kuery: string; + }) => { + try { + const query: HttpFetchQuery = { + timeFrom, + timeTo, + kuery, + }; + return await core.http.get(paths.Flamechart, { query }); + } catch (e) { + return e; + } + }, + fetchFrameInformation: async ({ + frameID, + executableID, + }: { + frameID: string; + executableID: string; + }) => { + try { + const query: HttpFetchQuery = { + frameID, + executableID, + }; + return await core.http.get(paths.FrameInformation, { query }); + } catch (e) { + return e; + } + }, + }; +} diff --git a/x-pack/plugins/profiling/public/types.ts b/x-pack/plugins/profiling/public/types.ts new file mode 100644 index 0000000000000..6c831e0b13509 --- /dev/null +++ b/x-pack/plugins/profiling/public/types.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { + DataViewsPublicPluginSetup, + DataViewsPublicPluginStart, +} from '@kbn/data-views-plugin/public'; +import type { + ObservabilityPublicSetup, + ObservabilityPublicStart, +} from '@kbn/observability-plugin/public'; +import { ChartsPluginSetup, ChartsPluginStart } from '@kbn/charts-plugin/public'; + +export interface ProfilingPluginPublicSetupDeps { + observability: ObservabilityPublicSetup; + dataViews: DataViewsPublicPluginSetup; + data: DataPublicPluginSetup; + charts: ChartsPluginSetup; +} + +export interface ProfilingPluginPublicStartDeps { + observability: ObservabilityPublicStart; + dataViews: DataViewsPublicPluginStart; + data: DataPublicPluginStart; + charts: ChartsPluginStart; +} diff --git a/x-pack/plugins/profiling/public/utils/formatters/as_cost.ts b/x-pack/plugins/profiling/public/utils/formatters/as_cost.ts new file mode 100644 index 0000000000000..148eba4785263 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/formatters/as_cost.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function asCost(value: number, precision: number = 2, unit: string = '$') { + return `${value.toPrecision(precision)}${unit}`; +} diff --git a/x-pack/plugins/profiling/public/utils/formatters/as_duration.ts b/x-pack/plugins/profiling/public/utils/formatters/as_duration.ts new file mode 100644 index 0000000000000..ba0839f06e779 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/formatters/as_duration.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. + */ + +import moment from 'moment'; + +export function asDuration(valueInSeconds: number) { + return moment.duration(valueInSeconds * 1000).humanize(); +} diff --git a/x-pack/plugins/profiling/public/utils/formatters/as_percentage.ts b/x-pack/plugins/profiling/public/utils/formatters/as_percentage.ts new file mode 100644 index 0000000000000..f4c3a84b6275f --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/formatters/as_percentage.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function asPercentage(value: number, precision: number = 0) { + return `${Number(value * 100).toFixed(precision)}%`; +} diff --git a/x-pack/plugins/profiling/public/utils/formatters/as_weight.ts b/x-pack/plugins/profiling/public/utils/formatters/as_weight.ts new file mode 100644 index 0000000000000..82a6cbd4f64b0 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/formatters/as_weight.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 { i18n } from '@kbn/i18n'; + +const ONE_POUND_TO_A_KILO = 0.45359237; + +export function asWeight(valueInPounds: number, precision: number = 2) { + const lbs = valueInPounds.toPrecision(precision); + const kgs = Number(valueInPounds * ONE_POUND_TO_A_KILO).toPrecision(precision); + + return i18n.translate('xpack.profiling.formatters.weight', { + defaultMessage: `{lbs} lbs / {kgs} kg`, + values: { + lbs, + kgs, + }, + }); +} diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts new file mode 100644 index 0000000000000..07b3e9ded9230 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { getInterpolationValue } from './get_interpolation_value'; + +describe('getInterpolationValue', () => { + it('returns 0 for no change', () => { + expect(getInterpolationValue(100, 100)).toBe(0); + }); + + it('returns -1 when the background is undefined', () => { + expect(getInterpolationValue(100, undefined)).toBe(-1); + }); + + it('returns -1 when the background is 0', () => { + expect(getInterpolationValue(100, 0)).toBe(-1); + }); + + it('returns 0 when both values are 0', () => { + expect(getInterpolationValue(0, 0)).toBe(0); + }); + + it('returns the correct value on positive changes', () => { + expect(getInterpolationValue(100, 120)).toBeCloseTo(0.1); + expect(getInterpolationValue(80, 100)).toBeCloseTo(0.125); + + expect(getInterpolationValue(90, 270)).toBeCloseTo(1); + }); + + it('returns the correct value on negative changes', () => { + expect(getInterpolationValue(160, 120)).toBeCloseTo(-0.5); + expect(getInterpolationValue(150, 100)).toBeCloseTo(-2 / 3); + }); + + it('clamps the value', () => { + expect(getInterpolationValue(90, 360)).toBeCloseTo(1); + expect(getInterpolationValue(360, 90)).toBeCloseTo(-1); + }); +}); diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts new file mode 100644 index 0000000000000..66c325869cfd3 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { clamp } from 'lodash'; + +const MAX_POSITIVE_CHANGE = 2; +const MAX_NEGATIVE_CHANGE = 0.5; + +export function getInterpolationValue(foreground: number, background: number | null | undefined) { + if (background === null || background === undefined) { + return -1; + } + + const change = clamp(background / foreground - 1, -MAX_NEGATIVE_CHANGE, MAX_POSITIVE_CHANGE) || 0; + + return change >= 0 ? change / MAX_POSITIVE_CHANGE : change / MAX_NEGATIVE_CHANGE; +} diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts new file mode 100644 index 0000000000000..0b779c8ccac87 --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts @@ -0,0 +1,110 @@ +/* + * 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 { ColumnarViewModel } from '@elastic/charts'; +import d3 from 'd3'; +import { uniqueId } from 'lodash'; +import { ElasticFlameGraph, FlameGraphComparisonMode, rgbToRGBA } from '../../../common/flamegraph'; +import { getInterpolationValue } from './get_interpolation_value'; + +const nullColumnarViewModel = { + label: [], + value: new Float64Array(), + color: new Float32Array(), + position0: new Float32Array(), + position1: new Float32Array(), + size0: new Float32Array(), + size1: new Float32Array(), +}; + +export function getFlamegraphModel({ + primaryFlamegraph, + comparisonFlamegraph, + colorSuccess, + colorDanger, + colorNeutral, + comparisonMode, +}: { + primaryFlamegraph?: ElasticFlameGraph; + comparisonFlamegraph?: ElasticFlameGraph; + colorSuccess: string; + colorDanger: string; + colorNeutral: string; + comparisonMode: FlameGraphComparisonMode; +}) { + const comparisonNodesById: Record< + string, + { Value: number; CountInclusive: number; CountExclusive: number } + > = {}; + + if (!primaryFlamegraph || !primaryFlamegraph.Label || primaryFlamegraph.Label.length === 0) { + return { key: uniqueId(), viewModel: nullColumnarViewModel, comparisonNodesById }; + } + + let colors: number[] | undefined = primaryFlamegraph.Color; + + if (comparisonFlamegraph) { + colors = []; + + comparisonFlamegraph.ID.forEach((nodeID, index) => { + comparisonNodesById[nodeID] = { + Value: comparisonFlamegraph.Value[index], + CountInclusive: comparisonFlamegraph.CountInclusive[index], + CountExclusive: comparisonFlamegraph.CountExclusive[index], + }; + }); + + const positiveChangeInterpolator = d3.interpolateRgb(colorNeutral, colorDanger); + + const negativeChangeInterpolator = d3.interpolateRgb(colorNeutral, colorSuccess); + + const comparisonExclusive: number[] = []; + const comparisonInclusive: number[] = []; + + primaryFlamegraph.ID.forEach((nodeID, index) => { + const countInclusive = primaryFlamegraph.CountInclusive[index]; + const countExclusive = primaryFlamegraph.CountExclusive[index]; + + const comparisonNode = comparisonNodesById[nodeID]; + + comparisonExclusive![index] = comparisonNode?.CountExclusive; + comparisonInclusive![index] = comparisonNode?.CountInclusive; + + const [foreground, background] = + comparisonMode === FlameGraphComparisonMode.Absolute + ? [countInclusive, comparisonNode?.CountInclusive] + : [countExclusive, comparisonNode?.CountExclusive]; + + const interpolationValue = getInterpolationValue(foreground, background); + + const nodeColor = + interpolationValue >= 0 + ? positiveChangeInterpolator(interpolationValue) + : negativeChangeInterpolator(Math.abs(interpolationValue)); + + colors!.push(...rgbToRGBA(Number(nodeColor.replace('#', '0x')))); + }); + } + + const value = new Float64Array(primaryFlamegraph.Value); + const position = new Float32Array(primaryFlamegraph.Position); + const size = new Float32Array(primaryFlamegraph.Size); + const color = new Float32Array(colors); + + return { + key: uniqueId(), + viewModel: { + label: primaryFlamegraph.Label, + value, + color, + position0: position, + position1: position, + size0: size, + size1: size, + } as ColumnarViewModel, + comparisonNodesById, + }; +} diff --git a/x-pack/plugins/profiling/public/utils/get_next_time_range/index.test.ts b/x-pack/plugins/profiling/public/utils/get_next_time_range/index.test.ts new file mode 100644 index 0000000000000..92d2c5457874d --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/get_next_time_range/index.test.ts @@ -0,0 +1,101 @@ +/* + * 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 datemath from '@elastic/datemath'; +import moment from 'moment'; +import { getNextTimeRange } from '.'; + +describe('getNextTimeRange', () => { + beforeEach(() => { + jest.restoreAllMocks(); + }); + describe('getDateRange', () => { + describe('when rangeFrom and rangeTo are not changed', () => { + it('returns the previous state', () => { + expect( + getNextTimeRange({ + state: { + rangeFrom: 'now-1m', + rangeTo: 'now', + start: '1970-01-01T00:00:00.000Z', + end: '1971-01-01T00:00:00.000Z', + }, + rangeFrom: 'now-1m', + rangeTo: 'now', + }) + ).toEqual({ + start: '1970-01-01T00:00:00.000Z', + end: '1971-01-01T00:00:00.000Z', + }); + }); + }); + + describe('when rangeFrom or rangeTo are falsy', () => { + it('returns the previous state', () => { + // Disable console warning about not receiving a valid date for rangeFrom + jest.spyOn(console, 'warn').mockImplementationOnce(() => {}); + + expect( + getNextTimeRange({ + state: { + start: '1972-01-01T00:00:00.000Z', + end: '1973-01-01T00:00:00.000Z', + }, + rangeFrom: '', + rangeTo: 'now', + }) + ).toEqual({ + start: '1972-01-01T00:00:00.000Z', + end: '1973-01-01T00:00:00.000Z', + }); + }); + }); + + describe('when the start or end are invalid', () => { + it('returns the previous state', () => { + const endDate = moment('2021-06-04T18:03:24.211Z'); + jest.spyOn(datemath, 'parse').mockReturnValueOnce(undefined).mockReturnValueOnce(endDate); + + expect( + getNextTimeRange({ + state: { + start: '1972-01-01T00:00:00.000Z', + end: '1973-01-01T00:00:00.000Z', + }, + rangeFrom: 'nope', + rangeTo: 'now', + }) + ).toEqual({ + start: '1972-01-01T00:00:00.000Z', + end: '1973-01-01T00:00:00.000Z', + }); + }); + }); + + describe('when rangeFrom or rangeTo have changed', () => { + it('returns new state', () => { + jest.spyOn(Date, 'now').mockReturnValue(moment(0).unix()); + + expect( + getNextTimeRange({ + state: { + rangeFrom: 'now-1m', + rangeTo: 'now', + start: '1972-01-01T00:00:00.000Z', + end: '1973-01-01T00:00:00.000Z', + }, + rangeFrom: 'now-2m', + rangeTo: 'now', + }) + ).toEqual({ + start: '1969-12-31T23:58:00.000Z', + end: '1970-01-01T00:00:00.000Z', + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/profiling/public/utils/get_next_time_range/index.ts b/x-pack/plugins/profiling/public/utils/get_next_time_range/index.ts new file mode 100644 index 0000000000000..27414d2d9427a --- /dev/null +++ b/x-pack/plugins/profiling/public/utils/get_next_time_range/index.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import datemath from '@elastic/datemath'; + +function getParsedDate(rawDate?: string, options = {}) { + if (rawDate) { + const parsed = datemath.parse(rawDate, options); + if (parsed && parsed.isValid()) { + return parsed.toDate(); + } + } +} + +export function getNextTimeRange({ + state = {}, + rangeFrom, + rangeTo, +}: { + state?: { rangeFrom?: string; rangeTo?: string; start?: string; end?: string }; + rangeFrom?: string; + rangeTo?: string; +}) { + // If the previous state had the same range, just return that instead of calculating a new range. + if (state.rangeFrom === rangeFrom && state.rangeTo === rangeTo) { + return { + start: state.start, + end: state.end, + }; + } + const start = getParsedDate(rangeFrom); + const end = getParsedDate(rangeTo, { roundUp: true }); + + // `getParsedDate` will return undefined for invalid or empty dates. We return + // the previous state if either date is undefined. + if (!start || !end) { + return { + start: state.start, + end: state.end, + }; + } + + return { + start: start.toISOString(), + end: end.toISOString(), + }; +} diff --git a/x-pack/plugins/profiling/scripts/export_from_testing.sh b/x-pack/plugins/profiling/scripts/export_from_testing.sh new file mode 100755 index 0000000000000..84c76415e3351 --- /dev/null +++ b/x-pack/plugins/profiling/scripts/export_from_testing.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash + +# Exit on use of undefined variables and on command failures. +set -eu + +die() { + if [[ "$@" ]]; then + echo -e "$@\n" >&2 + fi + exit 1 +} + +usage() { + die "Usage: $0 [options]\n" \ + " --dateFrom Start of data, date format (e.g. \"2022-02-28T00:00:00Z\") or a unix timestamp\n" \ + " --dateTo End of data\n" \ + "\n" \ + "The data will be exported into the current working directory.\n" \ + "\n" \ + "You need to put the credentials into the ELASTIC_TESTING_CREDENTIALS env var (...=\"user:pw\")" +} + +get_timestamp() { + local date_input=$1 + + if [[ "${date_input}" =~ ^[0-9]+$ ]]; then + echo "${date_input}" + else + echo $(date +%s --date="${date_input}") + fi +} + +export_events() { + local index=$1 + local from=$2 + local to=$3 + + docker run --rm -ti --net=host -v "$PWD:/data" -w /data -e "NODE_OPTIONS=--max_old_space_size=8192" \ + elasticdump/elasticsearch-dump:latest \ + --input="https://""${ELASTIC_TESTING_CREDENTIALS}""@profiling-8-5-rc.es.us-west2.gcp.elastic-cloud.com/${index}" \ + --output="${index}-data_${from}_${to}.json.gz" \ + --type=data --fsCompress --noRefresh --limit=100000 --support-big-int \ + --searchBody=' +{ + "query": { + "bool": { + "filter": [ + { + "term": { + "service.name": "922" + } + }, + { + "range": { + "@timestamp": { + "gte": "'"$from"'", + "lt": "'"$to"'", + "format": "epoch_second" + } + } + } + ] + } + } +}' +} + +export_index() { + local index=$1 + + docker run --rm -ti --net=host -v "$PWD:/data" -w /data -e "NODE_OPTIONS=--max_old_space_size=8192" \ + elasticdump/elasticsearch-dump:latest \ + --input="https://""${ELASTIC_TESTING_CREDENTIALS}""@profiling-8-5-rc.es.us-west2.gcp.elastic-cloud.com/${index}" \ + --output="${index}-data.json.gz" \ + --type=data --fsCompress --noRefresh --limit=100000 --support-big-int +} + +if [[ "$ELASTIC_TESTING_CREDENTIALS" == "" ]]; then + usage +fi + +date_from=0 +date_to=$(date +%s --date="now") + +while [[ $# -gt 0 ]]; do + case $1 in + --dateFrom) + date_from=$(get_timestamp "$2") + shift 2 + ;; + --dateTo) + date_to=$(get_timestamp "$2") + shift 2 + ;; + *) + usage + ;; + esac +done + +[[ "$date_to" -le "$date_from" ]] && die "Invalid time range" + +# Pull latest docker image +docker pull elasticdump/elasticsearch-dump:latest + +# Export full events table +export_events "profiling-events-all" "$date_from" "$date_to" + +# Export down-sampled tables +for ((i = 1; i <= 11; i++)); do + export_events "profiling-events-5pow$(printf '%02d' $i)" "$date_from" "$date_to" +done + +# We need all stacktraces, stackframes and executables as 'LastSeen' may be outside [date_from, date_to]. +export_index "profiling-stacktraces" +export_index "profiling-stackframes" +export_index "profiling-executables" + +echo -e ' + Import the data with ... + or upload to S3 with + for i in profiling-*; do aws s3 cp $i s3://oblt-profiling-es-snapshot/; done +' diff --git a/x-pack/plugins/profiling/scripts/import_from_testing.sh b/x-pack/plugins/profiling/scripts/import_from_testing.sh new file mode 100755 index 0000000000000..f5848632f1996 --- /dev/null +++ b/x-pack/plugins/profiling/scripts/import_from_testing.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Exit on use of undefined variables and on command failures. +set -eu + +die() { + if [[ "$@" ]]; then + echo -e "$@\n" >&2 + fi + exit 1 +} + +usage() { + die "Usage: $0 \n" \ + "\n" \ + "The data files are imported into the local ES instance (localhost:9200).\n" \ + "The naming convention is that the first part (before -data...) is the index name.\n" + "\n" \ + "You need to put the credentials into the ELASTIC_LOCAL_CREDENTIALS env var (...=\"user:pw\")" +} + +import() { + local index=$1 + local path=$2 + local dir=${path%$file} + + if [[ "$dir" == "" ]]; then + dir="." + fi + + pushd "$dir" + docker run --rm -ti --net=host -v "$PWD:/data" elasticdump/elasticsearch-dump:latest \ + --input="/data/$file" \ + --output="http://admin:changeme@localhost:9200/$index" \ + --type=data --fsCompress --noRefresh --support-big-int --limit=10000 + popd +} + +while [[ $# -gt 0 ]]; do + path=$1 + file=${1##*/} + index=${file%-data*} + + import "$index" "$path" + shift +done diff --git a/x-pack/plugins/profiling/server/feature.ts b/x-pack/plugins/profiling/server/feature.ts new file mode 100644 index 0000000000000..86e9e70b55a95 --- /dev/null +++ b/x-pack/plugins/profiling/server/feature.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { DEFAULT_APP_CATEGORIES } from '@kbn/core/server'; + +export const PROFILING_SERVER_FEATURE_ID = 'profiling'; + +export const PROFILING_FEATURE = { + id: PROFILING_SERVER_FEATURE_ID, + name: i18n.translate('xpack.profiling.featureRegistry.profilingFeatureName', { + defaultMessage: 'Profiling', + }), + order: 1200, + category: DEFAULT_APP_CATEGORIES.observability, + app: ['kibana'], + catalogue: [], + // see x-pack/plugins/features/common/feature_kibana_privileges.ts + privileges: { + all: { + app: ['kibana'], + catalogue: [], + savedObject: { + all: [], + read: [], + }, + ui: ['show'], + }, + read: { + app: ['kibana'], + catalogue: [], + savedObject: { + all: [], + read: [], + }, + ui: [], + }, + }, +}; diff --git a/x-pack/plugins/profiling/server/index.ts b/x-pack/plugins/profiling/server/index.ts new file mode 100644 index 0000000000000..26858b770b736 --- /dev/null +++ b/x-pack/plugins/profiling/server/index.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema, TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { ProfilingPlugin } from './plugin'; + +const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: false }), +}); + +type ProfilingConfig = TypeOf; + +// plugin config +export const config: PluginConfigDescriptor = { + schema: configSchema, +}; + +// This exports static code and TypeScript types, +// as well as, Kibana Platform `plugin()` initializer. + +export function plugin(initializerContext: PluginInitializerContext) { + return new ProfilingPlugin(initializerContext); +} + +export type { ProfilingPluginSetup, ProfilingPluginStart } from './types'; diff --git a/x-pack/plugins/profiling/server/plugin.ts b/x-pack/plugins/profiling/server/plugin.ts new file mode 100644 index 0000000000000..40071b54c0c4e --- /dev/null +++ b/x-pack/plugins/profiling/server/plugin.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CoreSetup, CoreStart, Logger, Plugin, PluginInitializerContext } from '@kbn/core/server'; + +import { PROFILING_FEATURE } from './feature'; +import { registerRoutes } from './routes'; +import { + ProfilingPluginSetup, + ProfilingPluginSetupDeps, + ProfilingPluginStart, + ProfilingPluginStartDeps, + ProfilingRequestHandlerContext, +} from './types'; + +export class ProfilingPlugin + implements + Plugin< + ProfilingPluginSetup, + ProfilingPluginStart, + ProfilingPluginSetupDeps, + ProfilingPluginStartDeps + > +{ + private readonly logger: Logger; + + constructor(initializerContext: PluginInitializerContext) { + this.logger = initializerContext.logger.get(); + } + + public setup(core: CoreSetup, deps: ProfilingPluginSetupDeps) { + this.logger.debug('profiling: Setup'); + const router = core.http.createRouter(); + + deps.features.registerKibanaFeature(PROFILING_FEATURE); + + core.getStartServices().then(([_, depsStart]) => { + registerRoutes({ + router, + logger: this.logger!, + dependencies: { + start: depsStart, + setup: deps, + }, + }); + }); + + return {}; + } + + public start(core: CoreStart) { + this.logger.debug('profiling: Started'); + return {}; + } + + public stop() {} +} diff --git a/x-pack/plugins/profiling/server/routes/compat.ts b/x-pack/plugins/profiling/server/routes/compat.ts new file mode 100644 index 0000000000000..6969e84bff6e7 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/compat.ts @@ -0,0 +1,20 @@ +/* + * 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. + */ + +// Code that works around incompatibilities between different +// versions of Kibana / ES. +// Currently, we work with 8.1 and 8.3 and thus this code only needs +// to address the incompatibilities between those two versions. + +import type { ElasticsearchClient } from '@kbn/core/server'; +import { ProfilingRequestHandlerContext } from '../types'; + +export async function getClient( + context: ProfilingRequestHandlerContext +): Promise { + return (await context.core).elasticsearch.client.asCurrentUser; +} diff --git a/x-pack/plugins/profiling/server/routes/downsampling.ts b/x-pack/plugins/profiling/server/routes/downsampling.ts new file mode 100644 index 0000000000000..e1280dd0903ca --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/downsampling.ts @@ -0,0 +1,125 @@ +/* + * 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 { Logger } from '@kbn/core/server'; +import seedrandom from 'seedrandom'; +import { StackTraceID } from '../../common/profiling'; +import { ProfilingESClient } from '../utils/create_profiling_es_client'; +import { ProjectTimeQuery } from './query'; + +export interface DownsampledEventsIndex { + name: string; + sampleRate: number; +} + +function getFullDownsampledIndex(index: string, pow: number, factor: number): string { + const downsampledIndexPrefix = index.replaceAll('-all', '') + '-' + factor + 'pow'; + return downsampledIndexPrefix + pow.toString().padStart(2, '0'); +} + +// Return the index that has between targetSampleSize..targetSampleSize*samplingFactor entries. +// The starting point is the number of entries from the profiling-events-5pow index. +// +// More details on how the down-sampling works can be found at the write path +// https://github.com/elastic/prodfiler/blob/bdcc2711c6cd7e89d63b58a17329fb9fdbabe008/pf-elastic-collector/elastic.go +export function getSampledTraceEventsIndex( + index: string, + targetSampleSize: number, + sampleCountFromInitialExp: number, + initialExp: number +): DownsampledEventsIndex { + const maxExp = 11; + const samplingFactor = 5; + const fullEventsIndex: DownsampledEventsIndex = { name: index, sampleRate: 1 }; + + if (sampleCountFromInitialExp === 0) { + // Take the shortcut to the full events index. + return fullEventsIndex; + } + + let pow = Math.floor( + initialExp - + Math.log((targetSampleSize * samplingFactor) / sampleCountFromInitialExp) / Math.log(5) + + 1 + ); + + if (pow < 1) { + return fullEventsIndex; + } + + if (pow > maxExp) { + pow = maxExp; + } + + return { + name: getFullDownsampledIndex(index, pow, samplingFactor), + sampleRate: 1 / samplingFactor ** pow, + }; +} + +export async function findDownsampledIndex({ + logger, + client, + index, + filter, + sampleSize, +}: { + logger: Logger; + client: ProfilingESClient; + index: string; + filter: ProjectTimeQuery; + sampleSize: number; +}): Promise { + // Start with counting the results in the index down-sampled by 5^6. + // That is in the middle of our down-sampled indexes. + const initialExp = 6; + let sampleCountFromInitialExp = 0; + try { + const resp = await client.search('find_downsampled_index', { + index: getFullDownsampledIndex(index, initialExp, 5), + body: { + query: filter, + size: 0, + track_total_hits: true, + }, + }); + sampleCountFromInitialExp = resp.hits.total.value; + } catch (e) { + logger.info(e.message); + } + + logger.info('sampleCountFromPow6 ' + sampleCountFromInitialExp); + return getSampledTraceEventsIndex(index, sampleSize, sampleCountFromInitialExp, initialExp); +} + +export function downsampleEventsRandomly( + stackTraceEvents: Map, + p: number, + seed: string +): number { + let totalCount = 0; + + // Make the RNG predictable to get reproducible results. + const random = seedrandom(seed); + + for (const [id, count] of stackTraceEvents) { + let newCount = 0; + for (let i = 0; i < count; i++) { + if (random() < p) { + newCount++; + } + } + if (newCount) { + stackTraceEvents.set(id, newCount); + totalCount += newCount; + } else { + stackTraceEvents.delete(id); + } + } + + return totalCount; +} diff --git a/x-pack/plugins/profiling/server/routes/flamechart.test.ts b/x-pack/plugins/profiling/server/routes/flamechart.test.ts new file mode 100644 index 0000000000000..e4e527082aade --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/flamechart.test.ts @@ -0,0 +1,61 @@ +/* + * 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 { DownsampledEventsIndex, getSampledTraceEventsIndex } from './downsampling'; + +describe('Using down-sampled indexes', () => { + test('getSampledTraceEventsIndex', () => { + const targetSampleSize = 20000; + const initialExp = 6; + const tests: Array<{ + sampleCountFromPow6: number; + expected: DownsampledEventsIndex; + }> = [ + { + // stay with the input downsampled index + sampleCountFromPow6: targetSampleSize, + expected: { name: 'profiling-events-5pow06', sampleRate: 1 / 5 ** 6 }, + }, + { + // stay with the input downsampled index + sampleCountFromPow6: targetSampleSize * 5 - 1, + expected: { name: 'profiling-events-5pow06', sampleRate: 1 / 5 ** 6 }, + }, + { + // go down one downsampling step + sampleCountFromPow6: targetSampleSize * 5, + expected: { name: 'profiling-events-5pow07', sampleRate: 1 / 5 ** 7 }, + }, + { + // go up one downsampling step + sampleCountFromPow6: targetSampleSize - 1, + expected: { name: 'profiling-events-5pow05', sampleRate: 1 / 5 ** 5 }, + }, + { + // go to the full events index + sampleCountFromPow6: 0, + expected: { name: 'profiling-events-all', sampleRate: 1 }, + }, + { + // go to the most downsampled index + sampleCountFromPow6: targetSampleSize * 5 ** 8, + expected: { name: 'profiling-events-5pow11', sampleRate: 1 / 5 ** 11 }, + }, + ]; + + for (const t of tests) { + expect( + getSampledTraceEventsIndex( + 'profiling-events-all', + targetSampleSize, + t.sampleCountFromPow6, + initialExp + ) + ).toEqual(t.expected); + } + }); +}); diff --git a/x-pack/plugins/profiling/server/routes/flamechart.ts b/x-pack/plugins/profiling/server/routes/flamechart.ts new file mode 100644 index 0000000000000..4c27d87ea39eb --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/flamechart.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 { schema } from '@kbn/config-schema'; +import { RouteRegisterParameters } from '.'; +import { getRoutePaths } from '../../common'; +import { FlameGraph } from '../../common/flamegraph'; +import { createProfilingEsClient } from '../utils/create_profiling_es_client'; +import { withProfilingSpan } from '../utils/with_profiling_span'; +import { getClient } from './compat'; +import { getExecutablesAndStackTraces } from './get_executables_and_stacktraces'; +import { createCommonFilter } from './query'; + +export function registerFlameChartSearchRoute({ router, logger }: RouteRegisterParameters) { + const paths = getRoutePaths(); + router.get( + { + path: paths.Flamechart, + validate: { + query: schema.object({ + timeFrom: schema.number(), + timeTo: schema.number(), + kuery: schema.string(), + }), + }, + }, + async (context, request, response) => { + const { timeFrom, timeTo, kuery } = request.query; + const targetSampleSize = 20000; // minimum number of samples to get statistically sound results + + try { + const esClient = await getClient(context); + const filter = createCommonFilter({ + timeFrom, + timeTo, + kuery, + }); + + const { stackTraces, executables, stackFrames, eventsIndex, totalCount, stackTraceEvents } = + await getExecutablesAndStackTraces({ + logger, + client: createProfilingEsClient({ request, esClient }), + filter, + sampleSize: targetSampleSize, + }); + + const flamegraph = await withProfilingSpan('collect_flamegraph', async () => { + return new FlameGraph({ + sampleRate: eventsIndex.sampleRate, + totalCount, + events: stackTraceEvents, + stackTraces, + stackFrames, + executables, + totalSeconds: timeTo - timeFrom, + }).toElastic(); + }); + + logger.info('returning payload response to client'); + + return response.ok({ + body: flamegraph, + }); + } catch (e) { + logger.error(e); + return response.customError({ + statusCode: e.statusCode ?? 500, + body: { + message: e.message, + }, + }); + } + } + ); +} diff --git a/x-pack/plugins/profiling/server/routes/frames.ts b/x-pack/plugins/profiling/server/routes/frames.ts new file mode 100644 index 0000000000000..4a0ce745c7246 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/frames.ts @@ -0,0 +1,102 @@ +/* + * 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 { schema } from '@kbn/config-schema'; +import { Logger } from '@kbn/logging'; +import { RouteRegisterParameters } from '.'; +import { getRoutePaths } from '../../common'; +import { + createStackFrameMetadata, + Executable, + StackFrame, + StackFrameMetadata, +} from '../../common/profiling'; +import { createProfilingEsClient, ProfilingESClient } from '../utils/create_profiling_es_client'; +import { mgetStackFrames, mgetExecutables } from './stacktrace'; + +async function getFrameInformation({ + frameID, + executableID, + logger, + client, +}: { + frameID: string; + executableID: string; + logger: Logger; + client: ProfilingESClient; +}): Promise { + const [stackFrames, executables] = await Promise.all([ + mgetStackFrames({ + logger, + client, + stackFrameIDs: new Set([frameID]), + }), + mgetExecutables({ + logger, + client, + executableIDs: new Set([executableID]), + }), + ]); + + const frame = Array.from(stackFrames.values())[0] as StackFrame | undefined; + const executable = Array.from(executables.values())[0] as Executable | undefined; + + if (frame) { + return createStackFrameMetadata({ + FrameID: frameID, + FileID: executableID, + SourceFilename: frame.FileName, + FunctionName: frame.FunctionName, + ExeFileName: executable?.FileName, + }); + } +} + +export function registerFrameInformationRoute(params: RouteRegisterParameters) { + const { logger, router } = params; + + const routePaths = getRoutePaths(); + + router.get( + { + path: routePaths.FrameInformation, + validate: { + query: schema.object({ + frameID: schema.string(), + executableID: schema.string(), + }), + }, + }, + async (context, request, response) => { + const { frameID, executableID } = request.query; + + const client = createProfilingEsClient({ + request, + esClient: (await context.core).elasticsearch.client.asCurrentUser, + }); + + try { + const frame = await getFrameInformation({ + frameID, + executableID, + logger, + client, + }); + + return response.ok({ body: frame }); + } catch (error: any) { + logger.error(error); + return response.custom({ + statusCode: error.statusCode ?? 500, + body: { + message: error.message ?? 'An internal server error occured', + }, + }); + } + } + ); +} diff --git a/x-pack/plugins/profiling/server/routes/functions.ts b/x-pack/plugins/profiling/server/routes/functions.ts new file mode 100644 index 0000000000000..dffc56e8aee74 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/functions.ts @@ -0,0 +1,84 @@ +/* + * 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 { schema, TypeOf } from '@kbn/config-schema'; +import { RouteRegisterParameters } from '.'; +import { getRoutePaths } from '../../common'; +import { createTopNFunctions } from '../../common/functions'; +import { createProfilingEsClient } from '../utils/create_profiling_es_client'; +import { withProfilingSpan } from '../utils/with_profiling_span'; +import { getClient } from './compat'; +import { getExecutablesAndStackTraces } from './get_executables_and_stacktraces'; +import { createCommonFilter } from './query'; + +const querySchema = schema.object({ + timeFrom: schema.number(), + timeTo: schema.number(), + startIndex: schema.number(), + endIndex: schema.number(), + kuery: schema.string(), +}); + +type QuerySchemaType = TypeOf; + +export function registerTopNFunctionsSearchRoute({ router, logger }: RouteRegisterParameters) { + const paths = getRoutePaths(); + router.get( + { + path: paths.TopNFunctions, + validate: { + query: querySchema, + }, + }, + async (context, request, response) => { + try { + const { timeFrom, timeTo, startIndex, endIndex, kuery }: QuerySchemaType = request.query; + + const targetSampleSize = 20000; // minimum number of samples to get statistically sound results + const esClient = await getClient(context); + const filter = createCommonFilter({ + timeFrom, + timeTo, + kuery, + }); + + const { stackFrames, stackTraceEvents, stackTraces, executables } = + await getExecutablesAndStackTraces({ + client: createProfilingEsClient({ request, esClient }), + filter, + logger, + sampleSize: targetSampleSize, + }); + + const topNFunctions = await withProfilingSpan('collect_topn_functions', async () => { + return createTopNFunctions( + stackTraceEvents, + stackTraces, + stackFrames, + executables, + startIndex, + endIndex + ); + }); + + logger.info('returning payload response to client'); + + return response.ok({ + body: topNFunctions, + }); + } catch (e) { + logger.error(e); + return response.customError({ + statusCode: e.statusCode ?? 500, + body: { + message: e.message, + }, + }); + } + } + ); +} diff --git a/x-pack/plugins/profiling/server/routes/get_executables_and_stacktraces.ts b/x-pack/plugins/profiling/server/routes/get_executables_and_stacktraces.ts new file mode 100644 index 0000000000000..9e5773ad9aa91 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/get_executables_and_stacktraces.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Logger } from '@kbn/logging'; +import { INDEX_EVENTS } from '../../common'; +import { ProfilingESClient } from '../utils/create_profiling_es_client'; +import { withProfilingSpan } from '../utils/with_profiling_span'; +import { downsampleEventsRandomly, findDownsampledIndex } from './downsampling'; +import { logExecutionLatency } from './logger'; +import { ProjectTimeQuery } from './query'; +import { + mgetExecutables, + mgetStackFrames, + mgetStackTraces, + searchEventsGroupByStackTrace, +} from './stacktrace'; + +export async function getExecutablesAndStackTraces({ + logger, + client, + filter, + sampleSize, +}: { + logger: Logger; + client: ProfilingESClient; + filter: ProjectTimeQuery; + sampleSize: number; +}) { + return withProfilingSpan('get_executables_and_stack_traces', async () => { + const eventsIndex = await findDownsampledIndex({ + logger, + client, + index: INDEX_EVENTS, + filter, + sampleSize, + }); + + const { totalCount, stackTraceEvents } = await searchEventsGroupByStackTrace({ + logger, + client, + index: eventsIndex, + filter, + }); + + // Manual downsampling if totalCount exceeds sampleSize by 10%. + let p = 1.0; + if (totalCount > sampleSize * 1.1) { + p = sampleSize / totalCount; + logger.info('downsampling events with p=' + p); + await logExecutionLatency(logger, 'downsampling events', async () => { + const downsampledTotalCount = downsampleEventsRandomly( + stackTraceEvents, + p, + filter.toString() + ); + logger.info('downsampled total count: ' + downsampledTotalCount); + }); + logger.info('unique downsampled stacktraces: ' + stackTraceEvents.size); + } + + // Adjust the sample counts from down-sampled to fully sampled. + // Be aware that downsampling drops entries from stackTraceEvents, so that + // the sum of the upscaled count values is less that totalCount. + for (const [id, count] of stackTraceEvents) { + stackTraceEvents.set(id, Math.floor(count / (eventsIndex.sampleRate * p))); + } + + const { stackTraces, stackFrameDocIDs, executableDocIDs } = await mgetStackTraces({ + logger, + client, + events: stackTraceEvents, + }); + + return withProfilingSpan('get_stackframes_and_executables', () => + Promise.all([ + mgetStackFrames({ logger, client, stackFrameIDs: stackFrameDocIDs }), + mgetExecutables({ logger, client, executableIDs: executableDocIDs }), + ]) + ).then(([stackFrames, executables]) => { + return { + stackTraces, + executables, + stackFrames, + stackTraceEvents, + totalCount, + eventsIndex, + }; + }); + }); +} diff --git a/x-pack/plugins/profiling/server/routes/index.ts b/x-pack/plugins/profiling/server/routes/index.ts new file mode 100644 index 0000000000000..6e44bf6909585 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/index.ts @@ -0,0 +1,45 @@ +/* + * 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 { IRouter, Logger } from '@kbn/core/server'; +import { + ProfilingPluginSetupDeps, + ProfilingPluginStartDeps, + ProfilingRequestHandlerContext, +} from '../types'; + +import { registerFlameChartSearchRoute } from './flamechart'; +import { registerFrameInformationRoute } from './frames'; +import { registerTopNFunctionsSearchRoute } from './functions'; + +import { + registerTraceEventsTopNContainersSearchRoute, + registerTraceEventsTopNDeploymentsSearchRoute, + registerTraceEventsTopNHostsSearchRoute, + registerTraceEventsTopNStackTracesSearchRoute, + registerTraceEventsTopNThreadsSearchRoute, +} from './topn'; + +export interface RouteRegisterParameters { + router: IRouter; + logger: Logger; + dependencies: { + start: ProfilingPluginStartDeps; + setup: ProfilingPluginSetupDeps; + }; +} + +export function registerRoutes(params: RouteRegisterParameters) { + registerFlameChartSearchRoute(params); + registerTopNFunctionsSearchRoute(params); + registerTraceEventsTopNContainersSearchRoute(params); + registerTraceEventsTopNDeploymentsSearchRoute(params); + registerTraceEventsTopNHostsSearchRoute(params); + registerTraceEventsTopNStackTracesSearchRoute(params); + registerTraceEventsTopNThreadsSearchRoute(params); + registerFrameInformationRoute(params); +} diff --git a/x-pack/plugins/profiling/server/routes/logger.ts b/x-pack/plugins/profiling/server/routes/logger.ts new file mode 100644 index 0000000000000..8d4c82962faec --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/logger.ts @@ -0,0 +1,20 @@ +/* + * 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 { Logger } from '@kbn/core/server'; + +export async function logExecutionLatency( + logger: Logger, + activity: string, + func: () => Promise +): Promise { + const start = new Date().getTime(); + return await func().then((res) => { + logger.info(activity + ' took ' + (new Date().getTime() - start) + 'ms'); + return res; + }); +} diff --git a/x-pack/plugins/profiling/server/routes/query.ts b/x-pack/plugins/profiling/server/routes/query.ts new file mode 100644 index 0000000000000..f8a776ee68ce7 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/query.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { QueryDslBoolQuery } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { kqlQuery } from '@kbn/observability-plugin/server'; +import { ProfilingESField } from '../../common/elasticsearch'; + +export interface ProjectTimeQuery { + bool: QueryDslBoolQuery; +} + +export function createCommonFilter({ + kuery, + timeFrom, + timeTo, +}: { + kuery: string; + timeFrom: number; + timeTo: number; +}): ProjectTimeQuery { + return { + bool: { + filter: [ + ...kqlQuery(kuery), + { + range: { + [ProfilingESField.Timestamp]: { + gte: String(timeFrom), + lt: String(timeTo), + format: 'epoch_second', + boost: 1.0, + }, + }, + }, + ], + }, + }; +} diff --git a/x-pack/plugins/profiling/server/routes/stacktrace.test.ts b/x-pack/plugins/profiling/server/routes/stacktrace.test.ts new file mode 100644 index 0000000000000..54a9f7e15fc67 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/stacktrace.test.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createStackFrameID, StackTrace } from '../../common/profiling'; +import { + decodeStackTrace, + EncodedStackTrace, + runLengthDecode, + runLengthEncode, +} from './stacktrace'; + +enum fileID { + A = 'aQpJmTLWydNvOapSFZOwKg', + B = 'hz_u-HGyrN6qeIk6UIJeCA', + C = 'AJ8qrcXSoJbl_haPhlc4og', + D = 'lHZiv7a58px6Gumcpo-6yA', + E = 'fkbxUTZgljnk71ZMnqJnyA', + F = 'gnEsgxvvEODj6iFYMQWYlA', +} + +enum addressOrLine { + A = 515512, + B = 26278522, + C = 6712518, + D = 105806025, + E = 111, + F = 106182663, + G = 100965370, +} + +const frameID: Record = { + A: createStackFrameID(fileID.A, addressOrLine.A), + B: createStackFrameID(fileID.B, addressOrLine.B), + C: createStackFrameID(fileID.C, addressOrLine.C), + D: createStackFrameID(fileID.D, addressOrLine.D), + E: createStackFrameID(fileID.E, addressOrLine.E), + F: createStackFrameID(fileID.F, addressOrLine.F), + G: createStackFrameID(fileID.F, addressOrLine.G), +}; + +const frameTypeA = [0, 0, 0]; +const frameTypeB = [8, 8, 8, 8]; + +describe('Stack trace operations', () => { + test('decodeStackTrace', () => { + const tests: Array<{ + original: EncodedStackTrace; + expected: StackTrace; + }> = [ + { + original: { + Stacktrace: { + frame: { + ids: frameID.A + frameID.B + frameID.C, + types: runLengthEncode(frameTypeA).toString('base64url'), + }, + }, + } as EncodedStackTrace, + expected: { + FrameIDs: [frameID.A, frameID.B, frameID.C], + FileIDs: [fileID.A, fileID.B, fileID.C], + AddressOrLines: [addressOrLine.A, addressOrLine.B, addressOrLine.C], + Types: frameTypeA, + } as StackTrace, + }, + { + original: { + Stacktrace: { + frame: { + ids: frameID.D + frameID.E + frameID.F + frameID.G, + types: runLengthEncode(frameTypeB).toString('base64url'), + }, + }, + } as EncodedStackTrace, + expected: { + FrameIDs: [frameID.D, frameID.E, frameID.F, frameID.G], + FileIDs: [fileID.D, fileID.E, fileID.F, fileID.F], + AddressOrLines: [addressOrLine.D, addressOrLine.E, addressOrLine.F, addressOrLine.G], + Types: frameTypeB, + } as StackTrace, + }, + ]; + + for (const t of tests) { + expect(decodeStackTrace(t.original)).toEqual(t.expected); + } + }); + + test('run length is fully reversible', () => { + const tests: number[][] = [[], [0], [0, 1, 2, 3], [0, 1, 1, 2, 2, 2, 3, 3, 3, 3]]; + + for (const t of tests) { + expect(runLengthDecode(runLengthEncode(t))).toEqual(t); + } + }); + + test('runLengthDecodeReverse with optional parameter', () => { + const tests: Array<{ + bytes: Buffer; + expected: number[]; + }> = [ + { + bytes: Buffer.from([0x5, 0x0, 0x2, 0x2]), + expected: [0, 0, 0, 0, 0, 2, 2], + }, + { + bytes: Buffer.from([0x1, 0x8]), + expected: [8], + }, + ]; + + for (const t of tests) { + expect(runLengthDecode(t.bytes, t.expected.length)).toEqual(t.expected); + } + }); + + test('runLengthDecodeReverse without optional parameter', () => { + const tests: Array<{ + bytes: Buffer; + expected: number[]; + }> = [ + { + bytes: Buffer.from([0x5, 0x0, 0x2, 0x2]), + expected: [0, 0, 0, 0, 0, 2, 2], + }, + { + bytes: Buffer.from([0x1, 0x8]), + expected: [8], + }, + ]; + + for (const t of tests) { + expect(runLengthDecode(t.bytes)).toEqual(t.expected); + } + }); +}); diff --git a/x-pack/plugins/profiling/server/routes/stacktrace.ts b/x-pack/plugins/profiling/server/routes/stacktrace.ts new file mode 100644 index 0000000000000..ecf51313695fa --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/stacktrace.ts @@ -0,0 +1,417 @@ +/* + * 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 { Logger } from '@kbn/core/server'; +import { chunk } from 'lodash'; +import LRUCache from 'lru-cache'; +import { INDEX_EXECUTABLES, INDEX_FRAMES, INDEX_TRACES } from '../../common'; +import { + DedotObject, + PickFlattened, + ProfilingESField, + ProfilingExecutable, + ProfilingStackFrame, + ProfilingStackTrace, +} from '../../common/elasticsearch'; +import { + Executable, + FileID, + StackFrame, + StackFrameID, + StackTrace, + StackTraceID, +} from '../../common/profiling'; +import { ProfilingESClient } from '../utils/create_profiling_es_client'; +import { withProfilingSpan } from '../utils/with_profiling_span'; +import { DownsampledEventsIndex } from './downsampling'; +import { logExecutionLatency } from './logger'; +import { ProjectTimeQuery } from './query'; + +const traceLRU = new LRUCache({ max: 20000 }); + +const BASE64_FRAME_ID_LENGTH = 32; + +export type EncodedStackTrace = DedotObject<{ + // This field is a base64-encoded byte string. The string represents a + // serialized list of frame IDs in which the order of frames are + // reversed to allow for prefix compression (leaf frame last). Each + // frame ID is composed of two concatenated values: a 16-byte file ID + // and an 8-byte address or line number (depending on the context of + // the downstream reader). + // + // Frame ID #1 Frame ID #2 + // +----------------+--------+----------------+--------+---- + // | File ID | Addr | File ID | Addr | + // +----------------+--------+----------------+--------+---- + [ProfilingESField.StacktraceFrameIDs]: string; + + // This field is a run-length encoding of a list of uint8s. The order is + // reversed from the original input. + [ProfilingESField.StacktraceFrameTypes]: string; +}>; + +// runLengthEncode run-length encodes the input array. +// +// The input is a list of uint8s. The output is a binary stream of +// 2-byte pairs (first byte is the length and the second byte is the +// binary representation of the object) in reverse order. +// +// E.g. uint8 array [0, 0, 0, 0, 0, 2, 2, 2] is converted into the byte +// array [5, 0, 3, 2]. +export function runLengthEncode(input: number[]): Buffer { + const output: number[] = []; + + if (input.length === 0) { + return Buffer.from(output); + } + + let count = 0; + let current = input[0]; + + for (let i = 1; i < input.length; i++) { + const next = input[i]; + + if (next === current && count < 255) { + count++; + continue; + } + + output.push(count + 1, current); + + count = 0; + current = next; + } + + output.push(count + 1, current); + + return Buffer.from(output); +} + +// runLengthDecode decodes a run-length encoding for the input array. +// +// The input is a binary stream of 2-byte pairs (first byte is the length and the +// second byte is the binary representation of the object). The output is a list of +// uint8s. +// +// E.g. byte array [5, 0, 3, 2] is converted into an uint8 array like +// [0, 0, 0, 0, 0, 2, 2, 2]. +export function runLengthDecode(input: Buffer, outputSize?: number): number[] { + let size; + + if (typeof outputSize === 'undefined') { + size = 0; + for (let i = 0; i < input.length; i += 2) { + size += input[i]; + } + } else { + size = outputSize; + } + + const output: number[] = new Array(size); + + let idx = 0; + for (let i = 0; i < input.length; i += 2) { + for (let j = 0; j < input[i]; j++) { + output[idx] = input[i + 1]; + idx++; + } + } + + return output; +} + +// decodeStackTrace unpacks an encoded stack trace from Elasticsearch +export function decodeStackTrace(input: EncodedStackTrace): StackTrace { + const inputFrameIDs = input.Stacktrace.frame.ids; + const inputFrameTypes = input.Stacktrace.frame.types; + const countsFrameIDs = inputFrameIDs.length / BASE64_FRAME_ID_LENGTH; + + const fileIDs: string[] = new Array(countsFrameIDs); + const frameIDs: string[] = new Array(countsFrameIDs); + const addressOrLines: number[] = new Array(countsFrameIDs); + + // Step 1: Convert the base64-encoded frameID list into two separate + // lists (frame IDs and file IDs), both of which are also base64-encoded. + // + // To get the frame ID, we grab the next 32 bytes. + // + // To get the file ID, we grab the first 22 bytes of the frame ID. + // However, since the file ID is base64-encoded using 21.33 bytes + // (16 * 4 / 3), then the 22 bytes have an extra 4 bits from the + // address (see diagram in definition of EncodedStackTrace). + for (let i = 0; i < countsFrameIDs; i++) { + const pos = i * BASE64_FRAME_ID_LENGTH; + const frameID = inputFrameIDs.slice(pos, pos + BASE64_FRAME_ID_LENGTH); + const buf = Buffer.from(frameID, 'base64url'); + + fileIDs[i] = buf.toString('base64url', 0, 16); + addressOrLines[i] = Number(buf.readBigUInt64BE(16)); + frameIDs[i] = frameID; + } + + // Step 2: Convert the run-length byte encoding into a list of uint8s. + const types = Buffer.from(inputFrameTypes, 'base64url'); + const typeIDs = runLengthDecode(types, countsFrameIDs); + + return { + AddressOrLines: addressOrLines, + FileIDs: fileIDs, + FrameIDs: frameIDs, + Types: typeIDs, + } as StackTrace; +} + +export async function searchEventsGroupByStackTrace({ + logger, + client, + index, + filter, +}: { + logger: Logger; + client: ProfilingESClient; + index: DownsampledEventsIndex; + filter: ProjectTimeQuery; +}) { + const resEvents = await client.search('get_events_group_by_stack_trace', { + index: index.name, + track_total_hits: false, + query: filter, + aggs: { + group_by: { + terms: { + // 'size' should be max 100k, but might be slightly more. Better be on the safe side. + size: 150000, + field: ProfilingESField.StacktraceID, + // 'execution_hint: map' skips the slow building of ordinals that we don't need. + // Especially with high cardinality fields, this makes aggregations really slow. + // E.g. it reduces the latency from 70s to 0.7s on our 8.1. MVP cluster (as of 28.04.2022). + execution_hint: 'map', + }, + aggs: { + count: { + sum: { + field: ProfilingESField.StacktraceCount, + }, + }, + }, + }, + total_count: { + sum: { + field: ProfilingESField.StacktraceCount, + }, + }, + }, + pre_filter_shard_size: 1, + filter_path: + 'aggregations.group_by.buckets.key,aggregations.group_by.buckets.count,aggregations.total_count,_shards.failures', + }); + + const totalCount = resEvents.aggregations?.total_count.value ?? 0; + const stackTraceEvents = new Map(); + + resEvents.aggregations?.group_by?.buckets.forEach((item) => { + const traceid: StackTraceID = String(item.key); + stackTraceEvents.set(traceid, item.count.value ?? 0); + }); + + logger.info('events total count: ' + totalCount); + logger.info('unique stacktraces: ' + stackTraceEvents.size); + + return { totalCount, stackTraceEvents }; +} + +export async function mgetStackTraces({ + logger, + client, + events, + concurrency = 1, +}: { + logger: Logger; + client: ProfilingESClient; + events: Map; + concurrency?: number; +}) { + const stackTraceIDs = [...events.keys()]; + const chunkSize = Math.floor(events.size / concurrency); + let chunks = chunk(stackTraceIDs, chunkSize); + + if (chunks.length !== concurrency) { + // The last array element contains the remainder, just drop it as irrelevant. + chunks = chunks.slice(0, concurrency); + } + + const stackResponses = await withProfilingSpan('mget_stacktraces', () => + Promise.all( + chunks.map((ids) => { + return client.mget< + PickFlattened< + ProfilingStackTrace, + ProfilingESField.StacktraceFrameIDs | ProfilingESField.StacktraceFrameTypes + > + >('mget_stacktraces_chunk', { + index: INDEX_TRACES, + ids, + realtime: true, + _source_includes: [ + ProfilingESField.StacktraceFrameIDs, + ProfilingESField.StacktraceFrameTypes, + ], + }); + }) + ) + ); + + let totalFrames = 0; + const stackTraces = new Map(); + const stackFrameDocIDs = new Set(); + const executableDocIDs = new Set(); + + await logExecutionLatency(logger, 'processing data', async () => { + // flatMap() is significantly slower than an explicit for loop + for (const res of stackResponses) { + for (const trace of res.docs) { + if ('error' in trace) { + continue; + } + // Sometimes we don't find the trace. + // This is due to ES delays writing (data is not immediately seen after write). + // Also, ES doesn't know about transactions. + if (trace.found) { + const traceid = trace._id as StackTraceID; + let stackTrace = traceLRU.get(traceid) as StackTrace; + if (!stackTrace) { + stackTrace = decodeStackTrace(trace._source as EncodedStackTrace); + traceLRU.set(traceid, stackTrace); + } + + totalFrames += stackTrace.FrameIDs.length; + stackTraces.set(traceid, stackTrace); + for (const frameID of stackTrace.FrameIDs) { + stackFrameDocIDs.add(frameID); + } + for (const fileID of stackTrace.FileIDs) { + executableDocIDs.add(fileID); + } + } + } + } + }); + + if (stackTraces.size !== 0) { + logger.info('Average size of stacktrace: ' + totalFrames / stackTraces.size); + } + + if (stackTraces.size < events.size) { + logger.info( + 'failed to find ' + (events.size - stackTraces.size) + ' stacktraces (todo: find out why)' + ); + } + + return { stackTraces, stackFrameDocIDs, executableDocIDs }; +} + +export async function mgetStackFrames({ + logger, + client, + stackFrameIDs, +}: { + logger: Logger; + client: ProfilingESClient; + stackFrameIDs: Set; +}): Promise> { + const stackFrames = new Map(); + + if (stackFrameIDs.size === 0) { + return stackFrames; + } + + const resStackFrames = await client.mget('mget_stackframes', { + index: INDEX_FRAMES, + ids: [...stackFrameIDs], + realtime: true, + }); + + // Create a lookup map StackFrameID -> StackFrame. + let framesFound = 0; + await logExecutionLatency(logger, 'processing data', async () => { + const docs = resStackFrames.docs; + for (const frame of docs) { + if ('error' in frame) { + continue; + } + if (frame.found) { + stackFrames.set(frame._id, { + FileName: frame._source!.Stackframe.file?.name, + FunctionName: frame._source!.Stackframe.function?.name, + FunctionOffset: frame._source!.Stackframe.function?.offset, + LineNumber: frame._source!.Stackframe.line?.number, + SourceType: frame._source!.Stackframe.source?.type, + }); + framesFound++; + } else { + stackFrames.set(frame._id, { + FileName: '', + FunctionName: '', + FunctionOffset: 0, + LineNumber: 0, + SourceType: 0, + }); + } + } + }); + + logger.info('found ' + framesFound + ' / ' + stackFrameIDs.size + ' frames'); + + return stackFrames; +} + +export async function mgetExecutables({ + logger, + client, + executableIDs, +}: { + logger: Logger; + client: ProfilingESClient; + executableIDs: Set; +}): Promise> { + const executables = new Map(); + + if (executableIDs.size === 0) { + return executables; + } + + const resExecutables = await client.mget('mget_executables', { + index: INDEX_EXECUTABLES, + ids: [...executableIDs], + _source_includes: [ProfilingESField.ExecutableFileName], + }); + + // Create a lookup map StackFrameID -> StackFrame. + let exeFound = 0; + await logExecutionLatency(logger, 'processing data', async () => { + const docs = resExecutables.docs; + for (const exe of docs) { + if ('error' in exe) { + continue; + } + if (exe.found) { + executables.set(exe._id, { + FileName: exe._source!.Executable.file.name, + }); + exeFound++; + } else { + executables.set(exe._id, { + FileName: '', + }); + } + } + }); + + logger.info('found ' + exeFound + ' / ' + executableIDs.size + ' executables'); + + return executables; +} diff --git a/x-pack/plugins/profiling/server/routes/topn.test.ts b/x-pack/plugins/profiling/server/routes/topn.test.ts new file mode 100644 index 0000000000000..2185db03d4ca3 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/topn.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/types'; +import { coreMock } from '@kbn/core/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; +import { ProfilingESField } from '../../common/elasticsearch'; +import { ProfilingESClient } from '../utils/create_profiling_es_client'; +import { topNElasticSearchQuery } from './topn'; + +const anyQuery = 'any::query'; +const smallestInterval = '1s'; +const testAgg = { aggs: { test: {} } }; + +jest.mock('./query', () => ({ + createCommonFilter: ({}: {}) => { + return anyQuery; + }, + findFixedIntervalForBucketsPerTimeRange: (from: number, to: number, buckets: number): string => { + return smallestInterval; + }, + aggregateByFieldAndTimestamp: ( + searchField: string, + interval: string + ): AggregationsAggregationContainer => { + return testAgg; + }, +})); + +describe('TopN data from Elasticsearch', () => { + const context = coreMock.createRequestHandlerContext(); + const client: ProfilingESClient = { + search: jest.fn( + (operationName, request) => + context.elasticsearch.client.asCurrentUser.search(request) as Promise + ), + mget: jest.fn( + (operationName, request) => + context.elasticsearch.client.asCurrentUser.search(request) as Promise + ), + }; + const logger = loggerMock.create(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('when fetching Stack Traces', () => { + it('should search first then skip mget', async () => { + await topNElasticSearchQuery({ + client, + logger, + timeFrom: 456, + timeTo: 789, + searchField: ProfilingESField.StacktraceID, + highCardinality: false, + kuery: '', + }); + + // Calls to mget are skipped since data doesn't exist + expect(client.search).toHaveBeenCalledTimes(2); + expect(client.mget).toHaveBeenCalledTimes(0); + }); + }); +}); diff --git a/x-pack/plugins/profiling/server/routes/topn.ts b/x-pack/plugins/profiling/server/routes/topn.ts new file mode 100644 index 0000000000000..eb031ef025b05 --- /dev/null +++ b/x-pack/plugins/profiling/server/routes/topn.ts @@ -0,0 +1,260 @@ +/* + * 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 { schema } from '@kbn/config-schema'; +import type { IRouter, Logger } from '@kbn/core/server'; +import { RouteRegisterParameters } from '.'; +import { fromMapToRecord, getRoutePaths, INDEX_EVENTS } from '../../common'; +import { ProfilingESField } from '../../common/elasticsearch'; +import { computeBucketWidthFromTimeRangeAndBucketCount } from '../../common/histogram'; +import { groupStackFrameMetadataByStackTrace, StackTraceID } from '../../common/profiling'; +import { getFieldNameForTopNType, TopNType } from '../../common/stack_traces'; +import { createTopNSamples, getTopNAggregationRequest, TopNResponse } from '../../common/topn'; +import { ProfilingRequestHandlerContext } from '../types'; +import { createProfilingEsClient, ProfilingESClient } from '../utils/create_profiling_es_client'; +import { withProfilingSpan } from '../utils/with_profiling_span'; +import { getClient } from './compat'; +import { findDownsampledIndex } from './downsampling'; +import { createCommonFilter } from './query'; +import { mgetExecutables, mgetStackFrames, mgetStackTraces } from './stacktrace'; + +export async function topNElasticSearchQuery({ + client, + logger, + timeFrom, + timeTo, + searchField, + highCardinality, + kuery, +}: { + client: ProfilingESClient; + logger: Logger; + timeFrom: number; + timeTo: number; + searchField: string; + highCardinality: boolean; + kuery: string; +}): Promise { + const filter = createCommonFilter({ timeFrom, timeTo, kuery }); + const targetSampleSize = 20000; // minimum number of samples to get statistically sound results + + const bucketWidth = computeBucketWidthFromTimeRangeAndBucketCount(timeFrom, timeTo, 50); + + const eventsIndex = await findDownsampledIndex({ + logger, + client, + index: INDEX_EVENTS, + filter, + sampleSize: targetSampleSize, + }); + + const resEvents = await client.search('get_topn_histogram', { + index: eventsIndex.name, + size: 0, + query: filter, + aggs: getTopNAggregationRequest({ + searchField, + highCardinality, + fixedInterval: `${bucketWidth}s`, + }), + // Adrien and Dario found out this is a work-around for some bug in 8.1. + // It reduces the query time by avoiding unneeded searches. + pre_filter_shard_size: 1, + }); + + const { aggregations } = resEvents; + + if (!aggregations) { + return { + TotalCount: 0, + TopN: [], + Metadata: {}, + }; + } + + // Creating top N samples requires the time range and bucket width to + // be in milliseconds, not seconds + const topN = createTopNSamples(aggregations, timeFrom * 1000, timeTo * 1000, bucketWidth * 1000); + + for (let i = 0; i < topN.length; i++) { + topN[i].Count = (topN[i].Count ?? 0) / eventsIndex.sampleRate; + } + + let totalSampledStackTraces = aggregations.total_count.value ?? 0; + logger.info('total sampled stacktraces: ' + totalSampledStackTraces); + totalSampledStackTraces = Math.floor(totalSampledStackTraces / eventsIndex.sampleRate); + + if (searchField !== ProfilingESField.StacktraceID) { + return { + TotalCount: totalSampledStackTraces, + TopN: topN, + Metadata: {}, + }; + } + + const stackTraceEvents = new Map(); + const groupByBuckets = aggregations.group_by.buckets ?? []; + let totalAggregatedStackTraces = 0; + + for (let i = 0; i < groupByBuckets.length; i++) { + const stackTraceID = String(groupByBuckets[i].key); + const count = Math.floor((groupByBuckets[i].count.value ?? 0) / eventsIndex.sampleRate); + totalAggregatedStackTraces += count; + stackTraceEvents.set(stackTraceID, count); + } + + logger.info('total aggregated stacktraces: ' + totalAggregatedStackTraces); + logger.info('unique aggregated stacktraces: ' + stackTraceEvents.size); + + const { stackTraces, stackFrameDocIDs, executableDocIDs } = await mgetStackTraces({ + logger, + client, + events: stackTraceEvents, + }); + + const [stackFrames, executables] = await withProfilingSpan( + 'get_stackframes_and_executables', + () => { + return Promise.all([ + mgetStackFrames({ logger, client, stackFrameIDs: stackFrameDocIDs }), + mgetExecutables({ logger, client, executableIDs: executableDocIDs }), + ]); + } + ); + + const metadata = await withProfilingSpan('collect_stackframe_metadata', async () => { + return fromMapToRecord( + groupStackFrameMetadataByStackTrace(stackTraces, stackFrames, executables) + ); + }); + + logger.info('returning payload response to client'); + + return { + TotalCount: totalSampledStackTraces, + TopN: topN, + Metadata: metadata, + }; +} + +export function queryTopNCommon( + router: IRouter, + logger: Logger, + pathName: string, + searchField: string, + highCardinality: boolean +) { + router.get( + { + path: pathName, + validate: { + query: schema.object({ + timeFrom: schema.number(), + timeTo: schema.number(), + kuery: schema.string(), + }), + }, + }, + async (context, request, response) => { + const { timeFrom, timeTo, kuery } = request.query; + const client = await getClient(context); + + try { + return response.ok({ + body: await topNElasticSearchQuery({ + client: createProfilingEsClient({ request, esClient: client }), + logger, + timeFrom, + timeTo, + searchField, + highCardinality, + kuery, + }), + }); + } catch (e) { + logger.error(e); + + return response.customError({ + statusCode: e.statusCode ?? 500, + body: { + message: 'Profiling TopN request failed: ' + e.message + '; full error ' + e.toString(), + }, + }); + } + } + ); +} + +export function registerTraceEventsTopNContainersSearchRoute({ + router, + logger, +}: RouteRegisterParameters) { + const paths = getRoutePaths(); + return queryTopNCommon( + router, + logger, + paths.TopNContainers, + getFieldNameForTopNType(TopNType.Containers), + false + ); +} + +export function registerTraceEventsTopNDeploymentsSearchRoute({ + router, + logger, +}: RouteRegisterParameters) { + const paths = getRoutePaths(); + return queryTopNCommon( + router, + logger, + paths.TopNDeployments, + getFieldNameForTopNType(TopNType.Deployments), + false + ); +} + +export function registerTraceEventsTopNHostsSearchRoute({ + router, + logger, +}: RouteRegisterParameters) { + const paths = getRoutePaths(); + return queryTopNCommon( + router, + logger, + paths.TopNHosts, + getFieldNameForTopNType(TopNType.Hosts), + false + ); +} + +export function registerTraceEventsTopNStackTracesSearchRoute({ + router, + logger, +}: RouteRegisterParameters) { + const paths = getRoutePaths(); + return queryTopNCommon( + router, + logger, + paths.TopNTraces, + getFieldNameForTopNType(TopNType.Traces), + false + ); +} + +export function registerTraceEventsTopNThreadsSearchRoute({ + router, + logger, +}: RouteRegisterParameters) { + const paths = getRoutePaths(); + return queryTopNCommon( + router, + logger, + paths.TopNThreads, + getFieldNameForTopNType(TopNType.Threads), + true + ); +} diff --git a/x-pack/plugins/profiling/server/types.ts b/x-pack/plugins/profiling/server/types.ts new file mode 100644 index 0000000000000..8432085ef1022 --- /dev/null +++ b/x-pack/plugins/profiling/server/types.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RequestHandlerContext } from '@kbn/core/server'; +import { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; + +export interface ProfilingPluginSetupDeps { + observability: ObservabilityPluginSetup; + features: FeaturesPluginSetup; +} + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ProfilingPluginStartDeps {} + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ProfilingPluginSetup {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ProfilingPluginStart {} + +export type ProfilingRequestHandlerContext = RequestHandlerContext; diff --git a/x-pack/plugins/profiling/server/utils/create_profiling_es_client.ts b/x-pack/plugins/profiling/server/utils/create_profiling_es_client.ts new file mode 100644 index 0000000000000..a7b985a567a4e --- /dev/null +++ b/x-pack/plugins/profiling/server/utils/create_profiling_es_client.ts @@ -0,0 +1,88 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core/server'; +import { ESSearchRequest, InferSearchResponseOf } from '@kbn/core/types/elasticsearch'; +import type { KibanaRequest } from '@kbn/core/server'; +import { unwrapEsResponse } from '@kbn/observability-plugin/server'; +import { MgetRequest, MgetResponse } from '@elastic/elasticsearch/lib/api/types'; +import { ProfilingESEvent } from '../../common/elasticsearch'; +import { withProfilingSpan } from './with_profiling_span'; + +export function cancelEsRequestOnAbort>( + promise: T, + request: KibanaRequest, + controller: AbortController +): T { + const subscription = request.events.aborted$.subscribe(() => { + controller.abort(); + }); + + return promise.finally(() => subscription.unsubscribe()) as T; +} + +export interface ProfilingESClient { + search( + operationName: string, + searchRequest: TSearchRequest + ): Promise>; + mget( + operationName: string, + mgetRequest: MgetRequest + ): Promise>; +} + +export function createProfilingEsClient({ + request, + esClient, +}: { + request: KibanaRequest; + esClient: ElasticsearchClient; +}): ProfilingESClient { + return { + search( + operationName: string, + searchRequest: TSearchRequest + ): Promise> { + const controller = new AbortController(); + + const promise = withProfilingSpan(operationName, () => { + return cancelEsRequestOnAbort( + esClient.search(searchRequest, { + signal: controller.signal, + meta: true, + }) as unknown as Promise<{ + body: InferSearchResponseOf; + }>, + request, + controller + ); + }); + + return unwrapEsResponse(promise); + }, + mget( + operationName: string, + mgetRequest: MgetRequest + ): Promise> { + const controller = new AbortController(); + + const promise = withProfilingSpan(operationName, () => { + return cancelEsRequestOnAbort( + esClient.mget(mgetRequest, { + signal: controller.signal, + meta: true, + }), + request, + controller + ); + }); + + return unwrapEsResponse(promise); + }, + }; +} diff --git a/x-pack/plugins/profiling/server/utils/with_profiling_span.ts b/x-pack/plugins/profiling/server/utils/with_profiling_span.ts new file mode 100644 index 0000000000000..6d366799780e7 --- /dev/null +++ b/x-pack/plugins/profiling/server/utils/with_profiling_span.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { withSpan, SpanOptions, parseSpanOptions } from '@kbn/apm-utils'; + +export function withProfilingSpan( + optionsOrName: SpanOptions | string, + cb: () => Promise +): Promise { + const options = parseSpanOptions(optionsOrName); + + const optionsWithDefaults = { + ...(options.intercept ? {} : { type: 'plugin:profiling' }), + ...options, + labels: { + plugin: 'profiling', + ...options.labels, + }, + }; + + return withSpan(optionsWithDefaults, cb); +} diff --git a/x-pack/plugins/profiling/tsconfig.json b/x-pack/plugins/profiling/tsconfig.json new file mode 100644 index 0000000000000..5b8daabf46cbe --- /dev/null +++ b/x-pack/plugins/profiling/tsconfig.json @@ -0,0 +1,45 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + }, + "include": [ + // add all the folders containing files to be compiled + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts" + ], + "references": [ + { "path": "../../../src/core/tsconfig.json" }, + { "path": "../../../src/plugins/data/tsconfig.json" }, + { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, + { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, + { "path": "../../../src/plugins/navigation/tsconfig.json" }, + { "path": "../../../src/plugins/share/tsconfig.json" }, + { "path": "../observability/tsconfig.json" }, + // add references to other TypeScript projects the plugin depends on + + // requiredPlugins from ./kibana.json + // { "path": "../licensing/tsconfig.json" }, + // { "path": "../../../src/plugins/data/tsconfig.json" }, + // { "path": "../encrypted_saved_objects/tsconfig.json" }, + + // optionalPlugins from ./kibana.json + // { "path": "../security/tsconfig.json" }, + // { "path": "../features/tsconfig.json" }, + // { "path": "../cloud/tsconfig.json" }, + // { "path": "../../../src/plugins/usage_collection/tsconfig.json" }, + // { "path": "../../../src/plugins/home/tsconfig.json" }, + + // requiredBundles from ./kibana.json + // { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, + // { "path": "../../../src/plugins/es_ui_shared/tsconfig.json" }, + // { "path": "../infra/tsconfig.json" }, + // { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, + ] +} diff --git a/x-pack/test/usage_collection/test_suites/application_usage/index.ts b/x-pack/test/usage_collection/test_suites/application_usage/index.ts index 754ae98997c16..9311e554832e0 100644 --- a/x-pack/test/usage_collection/test_suites/application_usage/index.ts +++ b/x-pack/test/usage_collection/test_suites/application_usage/index.ts @@ -24,7 +24,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); } try { - expect(Object.keys(applicationUsageSchema).sort()).to.eql(appIds.sort()); + const enabledAppIds = Object.keys(applicationUsageSchema).filter( + // Profiling is currently disabled by default as it's in closed beta + (appId) => appId !== 'profiling' + ); + expect(enabledAppIds.sort()).to.eql(appIds.sort()); } catch (err) { err.message = `Application Usage's schema is not up-to-date with the actual registered apps. Please update it at src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts.\n${err.message}`; throw err; diff --git a/yarn.lock b/yarn.lock index eb8b7fbdf36df..325401de94061 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6202,6 +6202,11 @@ resolved "https://registry.yarnpkg.com/@types/d3/-/d3-3.5.43.tgz#e9b4992817e0b6c5efaa7d6e5bb2cee4d73eab58" integrity sha512-t9ZmXOcpVxywRw86YtIC54g7M9puRh8hFedRvVfHKf5YyOP6pSxA0TvpXpfseXSCInoW4P7bggTrSDiUOs4g5w== +"@types/dagre@^0.7.47": + version "0.7.47" + resolved "https://registry.yarnpkg.com/@types/dagre/-/dagre-0.7.47.tgz#1d1b89e1fac36aaf5ef5ed6274bb123073095ac5" + integrity sha512-oX+3aRf7L6Cqq1MvbWmmD7FpAU/T8URwFFuHBagAiyHILn3i+RNZ35/tvyq28de+lZGY3W19BxJ7FeITQDO7aA== + "@types/dedent@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@types/dedent/-/dedent-0.7.0.tgz#155f339ca404e6dd90b9ce46a3f78fd69ca9b050" @@ -6294,6 +6299,11 @@ dependencies: "@types/jquery" "*" +"@types/fnv-plus@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/fnv-plus/-/fnv-plus-1.3.0.tgz#0f43f0b7e7b4b24de3a1cab69bfa009508f4c084" + integrity sha512-ijls8MsO6Q9JUSd5w1v4y2ijM6S4D/nmOyI/FwcepvrZfym0wZhLdYGFD5TJID7tga0O3I7SmtK69RzpSJ1Fcw== + "@types/fs-extra@^8.0.0": version "8.1.1" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" @@ -15002,6 +15012,11 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== +fnv-plus@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/fnv-plus/-/fnv-plus-1.3.1.tgz#c34cb4572565434acb08ba257e4044ce2b006d67" + integrity sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw== + focus-lock@^0.11.2: version "0.11.2" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.2.tgz#aeef3caf1cea757797ac8afdebaec8fd9ab243ed" From ac105ab0774007ddc07948eea65567b028423196 Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Thu, 15 Sep 2022 13:36:21 -0400 Subject: [PATCH 09/79] [Guided onboarding] Update codeowners file (#140817) --- .github/CODEOWNERS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 58a4e01ac3620..189dc56985cb9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -365,6 +365,10 @@ x-pack/examples/files_example @elastic/kibana-app-services /x-pack/plugins/ingest_pipelines/ @elastic/platform-deployment-management #CC# /x-pack/plugins/cross_cluster_replication/ @elastic/platform-deployment-management +# Management Experience - Platform Onboarding +/src/plugins/guided_onboarding/ @elastic/platform-onboarding +/examples/guided_onboarding_example/ @elastic/platform-onboarding + # Security Solution /x-pack/test/endpoint_api_integration_no_ingest/ @elastic/security-solution /x-pack/test/security_solution_endpoint/ @elastic/security-solution From f14844e3e55eed2e9fa4870765082403c057660f Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 15 Sep 2022 11:52:00 -0600 Subject: [PATCH 10/79] skip failing test suite (#140848) --- x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts index 865b095da534e..f459ca8123e42 100644 --- a/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts +++ b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts @@ -130,7 +130,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { }); } - describe('explain log rate spikes', function () { + // Failing: See https://github.com/elastic/kibana/issues/140848 + describe.skip('explain log rate spikes', function () { this.tags(['aiops']); before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); From c55c6c87deb76e6c94fc2c03bfebda97383289f7 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 15 Sep 2022 13:54:06 -0400 Subject: [PATCH 11/79] Commit node scripts/precommit_hook --fix changes (#140844) --- .../common/services/simplified_package_policy_helper.test.ts | 3 ++- .../fleet/common/services/simplified_package_policy_helper.ts | 3 ++- x-pack/plugins/fleet/server/errors/index.ts | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts index c35f33462b05a..eec59a647c39d 100644 --- a/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts +++ b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.test.ts @@ -7,11 +7,12 @@ import type { NewPackagePolicy, PackageInfo } from '../../server/types'; +import nginxPackageInfo from '../../server/services/package_policies/fixtures/package_info/nginx_1.5.0.json'; + import { simplifiedPackagePolicytoNewPackagePolicy, generateInputId, } from './simplified_package_policy_helper'; -import nginxPackageInfo from '../../server/services/package_policies/fixtures/package_info/nginx_1.5.0.json'; function getEnabledInputsAndStreams(newPackagePolicy: NewPackagePolicy) { return newPackagePolicy.inputs diff --git a/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts index 31a8b87059720..c0d05d1eeab2a 100644 --- a/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts +++ b/x-pack/plugins/fleet/common/services/simplified_package_policy_helper.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { packageToPackagePolicy } from '.'; import type { NewPackagePolicyInput, NewPackagePolicyInputStream, @@ -15,6 +14,8 @@ import type { } from '../types'; import { PackagePolicyValidationError } from '../errors'; +import { packageToPackagePolicy } from '.'; + export type SimplifiedVars = Record; export type SimplifiedPackagePolicyStreams = Record< diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index 2dae7fc82cadd..7ed8e2daa04a0 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -9,6 +9,7 @@ import type { ElasticsearchErrorDetails } from '@kbn/es-errors'; import { IngestManagerError } from '../../common/errors'; + import { isESClientError } from './utils'; export { defaultIngestErrorHandler, ingestErrorToResponseOptions } from './handlers'; From 22e78f9bb9efd3116cca8440166b17b95bcf7b64 Mon Sep 17 00:00:00 2001 From: liza-mae Date: Thu, 15 Sep 2022 12:29:28 -0600 Subject: [PATCH 12/79] [console] skip failing test on cloud (#140837) * [console] skip failing test on cloud * Fix spacing --- test/functional/apps/console/_console.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/functional/apps/console/_console.ts b/test/functional/apps/console/_console.ts index 57aab9b80bb66..2fa8977868b6b 100644 --- a/test/functional/apps/console/_console.ts +++ b/test/functional/apps/console/_console.ts @@ -144,7 +144,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - describe('multiple requests output', () => { + // Skip on cloud until issue is fixed + // Issue: https://github.com/elastic/kibana/issues/138762 + describe('multiple requests output', function () { + this.tags(['skipCloudFailedTest']); const sendMultipleRequests = async (requests: string[]) => { await asyncForEach(requests, async (request) => { await PageObjects.console.enterRequest(request); From d0a0a8f889ec26f7fa7f3978be2794beeb2d9045 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 15 Sep 2022 21:15:02 +0200 Subject: [PATCH 13/79] [Enterprise Search] Add UI to manage index and default pipelines (#140767) --- .../enterprise_search/common/constants.ts | 10 + .../get_default_pipeline_api_logic.test.ts | 31 +++ .../get_default_pipeline_api_logic.ts | 24 ++ .../update_default_pipeline_api_logic.test.ts | 40 +++ .../update_default_pipeline_api_logic.ts | 29 +++ .../update_pipeline_api_logic.test.ts | 40 +++ .../connector/update_pipeline_api_logic.ts | 37 +++ .../index/create_custom_pipeline_api_logic.ts | 30 +++ .../fetch_custom_pipeline_api_logic.test.ts | 31 +++ .../index/fetch_custom_pipeline_api_logic.ts | 30 +++ .../components/curl_request/curl_request.tsx | 55 ++++ .../search_index/generate_api_key_panel.tsx | 60 +++-- .../search_index/index_view_logic.ts | 19 +- .../pipelines/custom_pipeline_panel.tsx | 71 ++++++ .../pipelines/ingest_pipeline_modal.tsx | 235 ++++++++++++++++++ .../pipelines/ingest_pipelines_card.tsx | 131 ++++++++++ .../pipelines/pipeline_settings_form.tsx | 100 ++++++++ .../search_index/pipelines/pipelines.tsx | 3 +- .../pipelines/pipelines_logic.test.ts | 184 ++++++++++++++ .../search_index/pipelines/pipelines_logic.ts | 224 +++++++++++++++++ .../components/search_index/search_index.tsx | 25 +- .../components/settings/settings.tsx | 128 +++++++++- .../components/settings/settings_logic.ts | 130 ++++++++++ .../components/settings/settings_panel.tsx | 72 ++++++ .../settings_checkable_card.tsx | 34 +++ .../applications/shared/layout/nav.test.tsx | 6 + .../public/applications/shared/layout/nav.tsx | 13 +- .../plugins/enterprise_search/server/index.ts | 1 + .../create_pipeline_definitions.test.ts | 0 .../pipelines}/create_pipeline_definitions.ts | 0 .../lib/pipelines/get_custom_pipelines.ts | 25 ++ .../lib/pipelines/get_default_pipeline.ts | 33 +++ .../lib/pipelines/update_default_pipeline.ts | 42 ++++ .../server/lib/pipelines/update_pipeline.ts | 24 ++ .../routes/enterprise_search/connectors.ts | 56 +++++ .../routes/enterprise_search/indices.ts | 23 +- 36 files changed, 1943 insertions(+), 53 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/curl_request/curl_request.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/custom_pipeline_panel.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines_card.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_panel.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/settings_checkable_card/settings_checkable_card.tsx rename x-pack/plugins/enterprise_search/server/{utils => lib/pipelines}/create_pipeline_definitions.test.ts (100%) rename x-pack/plugins/enterprise_search/server/{utils => lib/pipelines}/create_pipeline_definitions.ts (100%) create mode 100644 x-pack/plugins/enterprise_search/server/lib/pipelines/get_custom_pipelines.ts create mode 100644 x-pack/plugins/enterprise_search/server/lib/pipelines/get_default_pipeline.ts create mode 100644 x-pack/plugins/enterprise_search/server/lib/pipelines/update_default_pipeline.ts create mode 100644 x-pack/plugins/enterprise_search/server/lib/pipelines/update_pipeline.ts diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts index 6c254b8ea6ffe..3fe7d29d3801a 100644 --- a/x-pack/plugins/enterprise_search/common/constants.ts +++ b/x-pack/plugins/enterprise_search/common/constants.ts @@ -7,6 +7,8 @@ import { i18n } from '@kbn/i18n'; +import { IngestPipelineParams } from './types/connectors'; + export const ENTERPRISE_SEARCH_OVERVIEW_PLUGIN = { ID: 'enterpriseSearch', NAME: i18n.translate('xpack.enterpriseSearch.overview.productName', { @@ -118,3 +120,11 @@ 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'; + +export const DEFAULT_PIPELINE_NAME = 'ent-search-generic-ingestion'; +export const DEFAULT_PIPELINE_VALUES: IngestPipelineParams = { + extract_binary_content: true, + name: DEFAULT_PIPELINE_NAME, + reduce_whitespace: true, + run_ml_inference: false, +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.test.ts new file mode 100644 index 0000000000000..6246fb20df3b3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.test.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { getDefaultPipeline } from './get_default_pipeline_api_logic'; + +describe('getDefaultPipelineApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('updatePipeline', () => { + it('calls correct api', async () => { + const promise = Promise.resolve('result'); + http.get.mockReturnValue(promise); + const result = getDefaultPipeline(); + await nextTick(); + expect(http.get).toHaveBeenCalledWith( + '/internal/enterprise_search/connectors/default_pipeline' + ); + await expect(result).resolves.toEqual('result'); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.ts new file mode 100644 index 0000000000000..eddc2f2ced2d5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/get_default_pipeline_api_logic.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IngestPipelineParams } from '../../../../../common/types/connectors'; + +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export type FetchDefaultPipelineResponse = IngestPipelineParams; + +export const getDefaultPipeline = async (): Promise => { + const route = '/internal/enterprise_search/connectors/default_pipeline'; + + return await HttpLogic.values.http.get(route); +}; + +export const FetchDefaultPipelineApiLogic = createApiLogic( + ['content', 'get_default_pipeline_api_logic'], + getDefaultPipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.test.ts new file mode 100644 index 0000000000000..b7c28f8f54fb9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { updateDefaultPipeline } from './update_default_pipeline_api_logic'; + +describe('updateDefaultPipelineApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('updateDefaultPipeline', () => { + it('calls correct api', async () => { + const promise = Promise.resolve('result'); + http.post.mockReturnValue(promise); + const pipeline = { + extract_binary_content: true, + name: 'pipelineName', + reduce_whitespace: false, + run_ml_inference: true, + }; + const result = updateDefaultPipeline(pipeline); + await nextTick(); + expect(http.put).toHaveBeenCalledWith( + '/internal/enterprise_search/connectors/default_pipeline', + { + body: JSON.stringify(pipeline), + } + ); + await expect(result).resolves.toEqual(pipeline); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.ts new file mode 100644 index 0000000000000..612403a1f0472 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_default_pipeline_api_logic.ts @@ -0,0 +1,29 @@ +/* + * 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 { IngestPipelineParams } from '../../../../../common/types/connectors'; + +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export type PostDefaultPipelineResponse = IngestPipelineParams; +export type PostDefaultPipelineArgs = IngestPipelineParams; + +export const updateDefaultPipeline = async ( + pipeline: IngestPipelineParams +): Promise => { + const route = '/internal/enterprise_search/connectors/default_pipeline'; + + await HttpLogic.values.http.put(route, { body: JSON.stringify(pipeline) }); + + return pipeline; +}; + +export const UpdateDefaultPipelineApiLogic = createApiLogic( + ['content', 'update_default_pipeline_api_logic'], + updateDefaultPipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.test.ts new file mode 100644 index 0000000000000..e50400a5087a8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { updatePipeline } from './update_pipeline_api_logic'; + +describe('updatePipelineApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('updatePipeline', () => { + it('calls correct api', async () => { + const promise = Promise.resolve('result'); + http.post.mockReturnValue(promise); + const pipeline = { + extract_binary_content: true, + name: 'pipelineName', + reduce_whitespace: false, + run_ml_inference: true, + }; + const result = updatePipeline({ connectorId: 'connector_id', pipeline }); + await nextTick(); + expect(http.put).toHaveBeenCalledWith( + '/internal/enterprise_search/connectors/connector_id/pipeline', + { + body: JSON.stringify(pipeline), + } + ); + await expect(result).resolves.toEqual({ connectorId: 'connector_id', pipeline }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.ts new file mode 100644 index 0000000000000..b3f3b2f673622 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/update_pipeline_api_logic.ts @@ -0,0 +1,37 @@ +/* + * 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 { IngestPipelineParams } from '../../../../../common/types/connectors'; +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface PostPipelineArgs { + connectorId: string; + pipeline: IngestPipelineParams; +} + +export interface PostPipelineResponse { + connectorId: string; + pipeline: IngestPipelineParams; +} + +export const updatePipeline = async ({ + connectorId, + pipeline, +}: PostPipelineArgs): Promise => { + const route = `/internal/enterprise_search/connectors/${connectorId}/pipeline`; + + await HttpLogic.values.http.put(route, { + body: JSON.stringify(pipeline), + }); + return { connectorId, pipeline }; +}; + +export const UpdatePipelineApiLogic = createApiLogic( + ['content', 'update_pipeline_api_logic'], + updatePipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts new file mode 100644 index 0000000000000..9b3f8e9bd5c03 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface CreateCustomPipelineApiLogicArgs { + indexName: string; +} + +export interface CreateCustomPipelineApiLogicResponse { + created: string[]; +} + +export const createCustomPipeline = async ({ + indexName, +}: CreateCustomPipelineApiLogicArgs): Promise => { + const route = `/internal/enterprise_search/indices/${indexName}/pipelines`; + const result = await HttpLogic.values.http.post(route); + return result; +}; + +export const CreateCustomPipelineApiLogic = createApiLogic( + ['content', 'create_custom_pipeline_api_logic'], + createCustomPipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.test.ts new file mode 100644 index 0000000000000..db82d76bcdce8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.test.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { fetchCustomPipeline } from './fetch_custom_pipeline_api_logic'; + +describe('updatePipelineApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('updatePipeline', () => { + it('calls correct api', async () => { + const promise = Promise.resolve('result'); + http.get.mockReturnValue(promise); + const result = fetchCustomPipeline({ indexName: 'index_20' }); + await nextTick(); + expect(http.get).toHaveBeenCalledWith( + '/internal/enterprise_search/indices/index_20/pipelines' + ); + await expect(result).resolves.toEqual('result'); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.ts new file mode 100644 index 0000000000000..bc605e6343287 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/fetch_custom_pipeline_api_logic.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; + +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface FetchCustomPipelineApiLogicArgs { + indexName: string; +} + +export type FetchCustomPipelineApiLogicResponse = Record; + +export const fetchCustomPipeline = async ({ + indexName, +}: FetchCustomPipelineApiLogicArgs): Promise => { + const route = `/internal/enterprise_search/indices/${indexName}/pipelines`; + const result = await HttpLogic.values.http.get(route); + return result; +}; + +export const FetchCustomPipelineApiLogic = createApiLogic( + ['content', 'fetch_custom_pipeline_api_logic'], + fetchCustomPipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/curl_request/curl_request.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/curl_request/curl_request.tsx new file mode 100644 index 0000000000000..4e99b6e8eb780 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/curl_request/curl_request.tsx @@ -0,0 +1,55 @@ +/* + * 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 { EuiCodeBlock } from '@elastic/eui'; + +import { IngestPipelineParams } from '../../../../../../../common/types/connectors'; +import { useCloudDetails } from '../../../../../shared/cloud_details/cloud_details'; + +import { decodeCloudId } from '../../../../utils/decode_cloud_id'; + +interface CurlRequestParams { + apiKey?: string; + document?: Record; + indexName: string; + pipeline?: IngestPipelineParams; +} + +export const CurlRequest: React.FC = ({ + indexName, + apiKey, + document, + pipeline, +}) => { + const cloudContext = useCloudDetails(); + + const DEFAULT_URL = 'https://localhost:9200'; + const baseUrl = + (cloudContext.cloudId && decodeCloudId(cloudContext.cloudId)?.elasticsearchUrl) || DEFAULT_URL; + const apiKeyExample = apiKey || ''; + const { name: pipelineName, ...pipelineParams } = pipeline ?? {}; + // We have to prefix the parameters with an underscore because that's what the actual pipeline looks for + const pipelineArgs = Object.entries(pipelineParams).reduce( + (acc: Record, curr) => ({ ...acc, [`_${curr[0]}`]: curr[1] }), + {} + ); + + const inputDocument = pipeline ? { ...document, ...pipelineArgs } : document; + + return ( + + {`\ +curl -X POST '${baseUrl}/${indexName}/_doc${pipeline ? `?pipeline=${pipelineName}` : ''}' \\ + -H 'Content-Type: application/json' \\ + -H 'Authorization: ApiKey ${apiKeyExample}' \\ + -d '${JSON.stringify(inputDocument, null, 2)}' +`} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/generate_api_key_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/generate_api_key_panel.tsx index 6a43cc82d568d..5a9c32c625fdc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/generate_api_key_panel.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/generate_api_key_panel.tsx @@ -5,48 +5,38 @@ * 2.0. */ -import React from 'react'; +import React, { useState } from 'react'; import { useActions, useValues } from 'kea'; -import { - EuiCodeBlock, - EuiFlexGroup, - EuiFlexItem, - EuiPanel, - EuiSpacer, - EuiTitle, -} from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer, EuiSwitch, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useCloudDetails } from '../../../shared/cloud_details/cloud_details'; -import { decodeCloudId } from '../../utils/decode_cloud_id'; - import { DOCUMENTS_API_JSON_EXAMPLE } from '../new_index/constants'; +import { SettingsLogic } from '../settings/settings_logic'; + import { ClientLibrariesPopover } from './components/client_libraries_popover/popover'; +import { CurlRequest } from './components/curl_request/curl_request'; import { GenerateApiKeyModal } from './components/generate_api_key_modal/modal'; import { ManageKeysPopover } from './components/manage_api_keys_popover/popover'; +import { IndexViewLogic } from './index_view_logic'; import { OverviewLogic } from './overview.logic'; export const GenerateApiKeyPanel: React.FC = () => { - const { apiKey, isGenerateModalOpen, indexData } = useValues(OverviewLogic); + const { apiKey, isGenerateModalOpen } = useValues(OverviewLogic); + const { indexName } = useValues(IndexViewLogic); const { closeGenerateModal } = useActions(OverviewLogic); + const { defaultPipeline } = useValues(SettingsLogic); - const cloudContext = useCloudDetails(); - - const DEFAULT_URL = 'https://localhost:9200'; - const searchIndexApiUrl = - (cloudContext.cloudId && decodeCloudId(cloudContext.cloudId)?.elasticsearchUrl) || DEFAULT_URL; - - const apiKeyExample = apiKey || ''; + const [optimizedRequest, setOptimizedRequest] = useState(true); return ( <> {isGenerateModalOpen && ( - + )} @@ -55,7 +45,7 @@ export const GenerateApiKeyPanel: React.FC = () => { - {indexData?.name[0] !== '.' && ( + {indexName[0] !== '.' && (

{i18n.translate( @@ -66,6 +56,16 @@ export const GenerateApiKeyPanel: React.FC = () => { )} + + setOptimizedRequest(event.target.checked)} + label={i18n.translate( + 'xpack.enterpriseSearch.content.overview.optimizedRequest.label', + { defaultMessage: 'View Enterprise Search optimized request' } + )} + checked={optimizedRequest} + /> + @@ -78,18 +78,16 @@ export const GenerateApiKeyPanel: React.FC = () => { - {indexData?.name[0] !== '.' && ( + {indexName[0] !== '.' && ( <> - - {`\ -curl -X POST '${searchIndexApiUrl}/${indexData?.name}/_doc' \\ - -H 'Content-Type: application/json' \\ - -H 'Authorization: ApiKey ${apiKeyExample}' \\ - -d '${JSON.stringify(DOCUMENTS_API_JSON_EXAMPLE, null, 2)}' -`} - + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts index e49745dacfcb7..454bc5f9a0be0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts @@ -9,7 +9,11 @@ import { kea, MakeLogicType } from 'kea'; import { i18n } from '@kbn/i18n'; -import { SyncStatus } from '../../../../../common/types/connectors'; +import { + Connector, + IngestPipelineParams, + SyncStatus, +} from '../../../../../common/types/connectors'; import { Actions } from '../../../shared/api_logic/create_api_logic'; import { flashAPIErrors, @@ -62,6 +66,7 @@ export interface IndexViewActions { } export interface IndexViewValues { + connector: Connector | undefined; connectorId: string | null; data: typeof FetchIndexApiLogic.values.data; fetchIndexTimeoutId: NodeJS.Timeout | null; @@ -73,6 +78,7 @@ export interface IndexViewValues { isWaitingForSync: boolean; lastUpdated: string | null; localSyncNowValue: boolean; // holds local value after update so UI updates correctly + pipelineData: IngestPipelineParams | undefined; recheckIndexLoading: boolean; resetFetchIndexLoading: boolean; syncStatus: SyncStatus | null; @@ -217,6 +223,13 @@ export const IndexViewLogic = kea ({ + connector: [ + () => [selectors.index], + (index: ElasticsearchViewIndex | undefined) => + index && (isConnectorViewIndex(index) || isCrawlerIndex(index)) + ? index.connector + : undefined, + ], connectorId: [ () => [selectors.index], (index) => (isConnectorViewIndex(index) ? index.connector.id : null), @@ -233,6 +246,10 @@ export const IndexViewLogic = kea data?.connector?.sync_now || localSyncNowValue, ], lastUpdated: [() => [selectors.data], (data) => getLastUpdated(data)], + pipelineData: [ + () => [selectors.connector], + (connector: Connector | undefined) => connector?.pipeline ?? undefined, + ], syncStatus: [() => [selectors.data], (data) => data?.connector?.last_sync_status ?? null], }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/custom_pipeline_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/custom_pipeline_panel.tsx new file mode 100644 index 0000000000000..702ecf89c9580 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/custom_pipeline_panel.tsx @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiText, EuiBadge } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { EuiButtonEmptyTo } from '../../../../shared/react_router_helpers'; + +export const CustomPipelinePanel: React.FC<{ + indexName: string; + pipelineSuffix: string; + processorsCount: number; +}> = ({ indexName, pipelineSuffix, processorsCount }) => { + return ( + + + + + +

{`${indexName}@${pipelineSuffix}`}

+
+
+ + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.ingestPipelinesCard.customButtonLabel', + { defaultMessage: 'Edit pipeline' } + )} + + +
+
+ + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.ingestPipelinesCard.customDescription', + { + defaultMessage: 'Custom ingest pipeline for {indexName}', + values: { indexName }, + } + )} + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.ingestPipelinesCard.processorsDescription', + { + defaultMessage: '{processorsCount} Processors', + values: { processorsCount }, + } + )} + + + + +
+ ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx new file mode 100644 index 0000000000000..f97fe9a2e16e4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx @@ -0,0 +1,235 @@ +/* + * 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 { + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiLink, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiSpacer, + EuiText, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { DEFAULT_PIPELINE_NAME } from '../../../../../../common/constants'; + +import { IngestPipelineParams } from '../../../../../../common/types/connectors'; + +import { CurlRequest } from '../components/curl_request/curl_request'; + +import { PipelineSettingsForm } from './pipeline_settings_form'; + +interface IngestPipelineModalProps { + closeModal: () => void; + createCustomPipelines: () => void; + displayOnly: boolean; + indexName: string; + isGated: boolean; + isLoading: boolean; + pipeline: IngestPipelineParams; + savePipeline: () => void; + setPipeline: (pipeline: IngestPipelineParams) => void; + showModal: boolean; +} + +export const IngestPipelineModal: React.FC = ({ + closeModal, + createCustomPipelines, + displayOnly, + indexName, + isGated, + isLoading, + pipeline, + savePipeline, + setPipeline, + showModal, +}) => { + const { name } = pipeline; + + // can't customize if you already have a custom pipeline! + const canCustomize = name === DEFAULT_PIPELINE_NAME; + + return showModal ? ( + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalHeaderTitle', + { + defaultMessage: 'Pipeline settings', + } + )} + + + + + {name} + + + + + + + + + + + {displayOnly + ? i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalBodyAPIText', + { + defaultMessage: + 'This pipeline runs automatically on all Crawler and Connector indices created through Enterprise Search. To use this configuration on API-based indices you can use the sample cURL request below.', + } + ) + : i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalBodyConnectorText', + { + defaultMessage: + 'This pipeline runs automatically on all Crawler and Connector indices created through Enterprise Search.', + } + )} + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalIngestLinkLabel', + { + defaultMessage: 'Learn more about Enterprise Search ingest pipelines', + } + )} + + + + + + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.settings.formHeader', + { + defaultMessage: 'Optimize your content for search', + } + )} + + + + + + + + + {displayOnly && ( + <> + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.curlHeader', + { + defaultMessage: 'Sample cURL request', + } + )} + + + + + + + )} + {canCustomize && ( + <> + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.platinumText', + { + defaultMessage: + 'With a platinum license, you can create an index-specific version of this configuration and modify it for your use case.', + } + )} + + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.copyButtonLabel', + { defaultMessage: 'Copy and customize' } + )} + + + + + )} + + + + {displayOnly ? ( + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.closeButtonLabel', + { + defaultMessage: 'Close', + } + )} + + ) : ( + <> + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } + )} + + + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.saveButtonLabel', + { + defaultMessage: 'Save', + } + )} + + + )} + + + ) : ( + <> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines_card.tsx new file mode 100644 index 0000000000000..ca6140b7b9625 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines_card.tsx @@ -0,0 +1,131 @@ +/* + * 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, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiPanel, + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiButtonEmpty, + EuiAccordion, + EuiBadge, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { KibanaLogic } from '../../../../shared/kibana'; + +import { LicensingLogic } from '../../../../shared/licensing'; +import { CreateCustomPipelineApiLogic } from '../../../api/index/create_custom_pipeline_api_logic'; +import { FetchCustomPipelineApiLogic } from '../../../api/index/fetch_custom_pipeline_api_logic'; +import { CurlRequest } from '../components/curl_request/curl_request'; +import { IndexViewLogic } from '../index_view_logic'; + +import { CustomPipelinePanel } from './custom_pipeline_panel'; +import { IngestPipelineModal } from './ingest_pipeline_modal'; +import { PipelinesLogic } from './pipelines_logic'; + +export const IngestPipelinesCard: React.FC = () => { + const { indexName } = useValues(IndexViewLogic); + + const { canSetPipeline, pipelineState, showModal } = useValues(PipelinesLogic); + const { closeModal, openModal, setPipelineState, savePipeline } = useActions(PipelinesLogic); + const { makeRequest: fetchCustomPipeline } = useActions(FetchCustomPipelineApiLogic); + const { makeRequest: createCustomPipeline } = useActions(CreateCustomPipelineApiLogic); + const { data: customPipelines } = useValues(FetchCustomPipelineApiLogic); + const { isCloud } = useValues(KibanaLogic); + const { hasPlatinumLicense } = useValues(LicensingLogic); + + const isGated = !isCloud && !hasPlatinumLicense; + const customPipeline = customPipelines ? customPipelines[`${indexName}@custom`] : undefined; + + useEffect(() => { + fetchCustomPipeline({ indexName }); + }, [indexName]); + + return ( + + createCustomPipeline({ indexName })} + displayOnly={!canSetPipeline} + indexName={indexName} + isGated={isGated} + isLoading={false} + pipeline={pipelineState} + savePipeline={savePipeline} + setPipeline={setPipelineState} + showModal={showModal} + /> + {customPipeline && ( + + + + + + )} + + + + + + + +

{pipelineState.name}

+
+
+ + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.ingestPipelinesCard.settings.label', + { defaultMessage: 'Settings' } + )} + + +
+
+ + + + + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.ingestPipelinesCard.managedBadge.label', + { defaultMessage: 'Managed' } + )} + + + + +
+
+
+
+ ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx new file mode 100644 index 0000000000000..99f52d1e19373 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx @@ -0,0 +1,100 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { IngestPipelineParams } from '../../../../../../common/types/connectors'; +import { SettingsCheckableCard } from '../../shared/settings_checkable_card/settings_checkable_card'; + +interface PipelineSettingsFormProps { + pipeline: IngestPipelineParams; + setPipeline: (pipeline: IngestPipelineParams) => void; +} + +export const PipelineSettingsForm: React.FC = ({ + setPipeline, + pipeline, +}) => { + const { + extract_binary_content: extractBinaryContent, + reduce_whitespace: reduceWhitespace, + run_ml_inference: runMLInference, + } = pipeline; + return ( + + + + setPipeline({ + ...pipeline, + extract_binary_content: !pipeline.extract_binary_content, + }) + } + checked={extractBinaryContent} + id="ingestPipelineExtractBinaryContent" + /> + + + + setPipeline({ ...pipeline, reduce_whitespace: !pipeline.reduce_whitespace }) + } + /> + + + + setPipeline({ ...pipeline, run_ml_inference: !pipeline.run_ml_inference }) + } + /> + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx index c2246348efe1c..78b47fc69cebe 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx @@ -15,6 +15,7 @@ import { InferencePipeline } from '../../../../../../common/types/pipelines'; import { DataPanel } from '../../../../shared/data_panel/data_panel'; import { InferencePipelineCard } from './inference_pipeline_card'; +import { IngestPipelinesCard } from './ingest_pipelines_card'; export const SearchIndexPipelines: React.FC = () => { // TODO: REPLACE THIS DATA WITH REAL DATA @@ -75,7 +76,7 @@ export const SearchIndexPipelines: React.FC = () => { )} iconType="logstashInput" > -
+ diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts new file mode 100644 index 0000000000000..5e06554bd1dae --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts @@ -0,0 +1,184 @@ +/* + * 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 { LogicMounter, mockFlashMessageHelpers } from '../../../../__mocks__/kea_logic'; +import { connectorIndex } from '../../../__mocks__/view_index.mock'; + +import { UpdatePipelineApiLogic } from '../../../api/connector/update_pipeline_api_logic'; +import { FetchIndexApiLogic } from '../../../api/index/fetch_index_api_logic'; + +import { PipelinesLogic } from './pipelines_logic'; + +const DEFAULT_PIPELINE_VALUES = { + extract_binary_content: true, + name: 'ent-search-generic-ingestion', + reduce_whitespace: true, + run_ml_inference: false, +}; + +const DEFAULT_VALUES = { + canSetPipeline: true, + defaultPipelineValues: DEFAULT_PIPELINE_VALUES, + defaultPipelineValuesData: undefined, + index: undefined, + pipelineState: DEFAULT_PIPELINE_VALUES, + showModal: false, +}; + +describe('PipelinesLogic', () => { + const { mount } = new LogicMounter(PipelinesLogic); + const { mount: mountFetchIndexApiLogic } = new LogicMounter(FetchIndexApiLogic); + const { mount: mountUpdatePipelineLogic } = new LogicMounter(UpdatePipelineApiLogic); + const { clearFlashMessages, flashAPIErrors, flashSuccessToast } = mockFlashMessageHelpers; + + const newPipeline = { + ...DEFAULT_PIPELINE_VALUES, + name: 'new_pipeline_name', + run_ml_inference: true, + }; + + beforeEach(() => { + jest.clearAllMocks(); + mountFetchIndexApiLogic(); + mountUpdatePipelineLogic(); + mount(); + }); + + it('has expected default values', () => { + expect(PipelinesLogic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + it('should set showModal to false and call fetchApiSuccess', async () => { + FetchIndexApiLogic.actions.apiSuccess(connectorIndex); + PipelinesLogic.actions.fetchIndexApiSuccess = jest.fn(); + PipelinesLogic.actions.setPipelineState(newPipeline); + PipelinesLogic.actions.openModal(); + PipelinesLogic.actions.apiSuccess({ connectorId: 'a', pipeline: newPipeline }); + expect(PipelinesLogic.values).toEqual({ + ...DEFAULT_VALUES, + index: { + ...connectorIndex, + connector: { ...connectorIndex.connector }, + }, + }); + expect(flashSuccessToast).toHaveBeenCalled(); + expect(PipelinesLogic.actions.fetchIndexApiSuccess).toHaveBeenCalledWith({ + ...connectorIndex, + connector: { + ...connectorIndex.connector, + pipeline: newPipeline, + }, + }); + }); + it('should set pipelineState on setPipeline', () => { + PipelinesLogic.actions.setPipelineState({ + ...DEFAULT_PIPELINE_VALUES, + name: 'new_pipeline_name', + }); + expect(PipelinesLogic.values).toEqual({ + ...DEFAULT_VALUES, + pipelineState: { ...DEFAULT_PIPELINE_VALUES, name: 'new_pipeline_name' }, + }); + }); + describe('makeRequest', () => { + it('should call clearFlashMessages', () => { + PipelinesLogic.actions.makeRequest({ connectorId: 'a', pipeline: DEFAULT_PIPELINE_VALUES }); + expect(clearFlashMessages).toHaveBeenCalled(); + }); + }); + describe('openModal', () => { + it('should set showModal to true', () => { + PipelinesLogic.actions.openModal(); + expect(PipelinesLogic.values).toEqual({ ...DEFAULT_VALUES, showModal: true }); + }); + }); + describe('closeModal', () => { + it('should set showModal to false', () => { + PipelinesLogic.actions.openModal(); + PipelinesLogic.actions.closeModal(); + expect(PipelinesLogic.values).toEqual({ ...DEFAULT_VALUES, showModal: false }); + }); + }); + describe('apiError', () => { + it('should call flashAPIError', () => { + PipelinesLogic.actions.apiError('error' as any); + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + describe('apiSuccess', () => { + it('should call flashSuccessToast', () => { + PipelinesLogic.actions.apiSuccess({ connectorId: 'a', pipeline: newPipeline }); + expect(flashSuccessToast).toHaveBeenCalledWith('Pipelines successfully updated'); + }); + }); + describe('createCustomPipelineError', () => { + it('should call flashAPIError', () => { + PipelinesLogic.actions.createCustomPipelineError('error' as any); + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + describe('createCustomPipelineSuccess', () => { + it('should call flashSuccessToast', () => { + PipelinesLogic.actions.setPipelineState = jest.fn(); + PipelinesLogic.actions.savePipeline = jest.fn(); + PipelinesLogic.actions.fetchCustomPipeline = jest.fn(); + PipelinesLogic.actions.fetchIndexApiSuccess(connectorIndex); + PipelinesLogic.actions.createCustomPipelineSuccess({ created: ['a', 'b'] }); + expect(flashSuccessToast).toHaveBeenCalledWith('Custom pipeline successfully created'); + expect(PipelinesLogic.actions.setPipelineState).toHaveBeenCalledWith({ + ...PipelinesLogic.values.pipelineState, + name: 'a', + }); + expect(PipelinesLogic.actions.savePipeline).toHaveBeenCalled(); + expect(PipelinesLogic.actions.fetchCustomPipeline).toHaveBeenCalled(); + }); + }); + describe('fetchIndexApiSuccess', () => { + it('should set pipelineState if not editing', () => { + PipelinesLogic.actions.fetchIndexApiSuccess({ + ...connectorIndex, + connector: { ...connectorIndex.connector, pipeline: newPipeline }, + }); + expect(PipelinesLogic.values).toEqual({ + ...DEFAULT_VALUES, + index: { + ...connectorIndex, + connector: { ...connectorIndex.connector, pipeline: newPipeline }, + }, + pipelineState: newPipeline, + }); + }); + it('should not set configState if modal is open', () => { + PipelinesLogic.actions.openModal(); + PipelinesLogic.actions.fetchIndexApiSuccess({ + ...connectorIndex, + connector: { ...connectorIndex.connector, pipeline: newPipeline }, + }); + expect(PipelinesLogic.values).toEqual({ + ...DEFAULT_VALUES, + index: { + ...connectorIndex, + connector: { ...connectorIndex.connector, pipeline: newPipeline }, + }, + showModal: true, + }); + }); + }); + describe('savePipeline', () => { + it('should call makeRequest', () => { + PipelinesLogic.actions.makeRequest = jest.fn(); + PipelinesLogic.actions.fetchIndexApiSuccess(connectorIndex); + PipelinesLogic.actions.savePipeline(); + expect(PipelinesLogic.actions.makeRequest).toHaveBeenCalledWith({ + connectorId: '2', + pipeline: DEFAULT_PIPELINE_VALUES, + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts new file mode 100644 index 0000000000000..a6e61acd071eb --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.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 { kea, MakeLogicType } from 'kea'; + +import { i18n } from '@kbn/i18n'; + +import { DEFAULT_PIPELINE_VALUES } from '../../../../../../common/constants'; + +import { IngestPipelineParams } from '../../../../../../common/types/connectors'; +import { ElasticsearchIndexWithIngestion } from '../../../../../../common/types/indices'; +import { Actions } from '../../../../shared/api_logic/create_api_logic'; +import { + clearFlashMessages, + flashAPIErrors, + flashSuccessToast, +} from '../../../../shared/flash_messages'; + +import { + FetchDefaultPipelineApiLogic, + FetchDefaultPipelineResponse, +} from '../../../api/connector/get_default_pipeline_api_logic'; +import { + PostPipelineArgs, + PostPipelineResponse, + UpdatePipelineApiLogic, +} from '../../../api/connector/update_pipeline_api_logic'; +import { + CreateCustomPipelineApiLogic, + CreateCustomPipelineApiLogicArgs, + CreateCustomPipelineApiLogicResponse, +} from '../../../api/index/create_custom_pipeline_api_logic'; +import { + FetchCustomPipelineApiLogicArgs, + FetchCustomPipelineApiLogicResponse, + FetchCustomPipelineApiLogic, +} from '../../../api/index/fetch_custom_pipeline_api_logic'; +import { + FetchIndexApiLogic, + FetchIndexApiParams, + FetchIndexApiResponse, +} from '../../../api/index/fetch_index_api_logic'; +import { isApiIndex, isConnectorIndex, isCrawlerIndex } from '../../../utils/indices'; + +type PipelinesActions = Pick< + Actions, + 'apiError' | 'apiSuccess' | 'makeRequest' +> & { + closeModal: () => void; + createCustomPipeline: Actions< + CreateCustomPipelineApiLogicArgs, + CreateCustomPipelineApiLogicResponse + >['makeRequest']; + createCustomPipelineError: Actions< + CreateCustomPipelineApiLogicArgs, + CreateCustomPipelineApiLogicResponse + >['apiError']; + createCustomPipelineSuccess: Actions< + CreateCustomPipelineApiLogicArgs, + CreateCustomPipelineApiLogicResponse + >['apiSuccess']; + fetchCustomPipeline: Actions< + FetchCustomPipelineApiLogicArgs, + FetchCustomPipelineApiLogicResponse + >['makeRequest']; + fetchDefaultPipeline: Actions['makeRequest']; + fetchDefaultPipelineSuccess: Actions['apiSuccess']; + fetchIndexApiSuccess: Actions['apiSuccess']; + openModal: () => void; + savePipeline: () => void; + setPipelineState(pipeline: IngestPipelineParams): { + pipeline: IngestPipelineParams; + }; +}; + +interface PipelinesValues { + canSetPipeline: boolean; + defaultPipelineValues: IngestPipelineParams; + defaultPipelineValuesData: IngestPipelineParams | null; + index: FetchIndexApiResponse; + pipelineState: IngestPipelineParams; + showModal: boolean; +} + +export const PipelinesLogic = kea>({ + actions: { + closeModal: true, + openModal: true, + savePipeline: true, + setPipelineState: (pipeline: IngestPipelineParams) => ({ pipeline }), + }, + connect: { + actions: [ + CreateCustomPipelineApiLogic, + [ + 'apiError as createCustomPipelineError', + 'apiSuccess as createCustomPipelineSuccess', + 'makeRequest as createCustomPipeline', + ], + UpdatePipelineApiLogic, + ['apiSuccess', 'apiError', 'makeRequest'], + FetchIndexApiLogic, + ['apiSuccess as fetchIndexApiSuccess'], + FetchDefaultPipelineApiLogic, + ['apiSuccess as fetchDefaultPipelineSuccess', 'makeRequest as fetchDefaultPipeline'], + FetchCustomPipelineApiLogic, + ['makeRequest as fetchCustomPipeline'], + ], + values: [ + FetchDefaultPipelineApiLogic, + ['data as defaultPipelineValuesData'], + FetchIndexApiLogic, + ['data as index'], + ], + }, + events: ({ actions, values }) => ({ + afterMount: () => { + actions.fetchDefaultPipeline(undefined); + actions.setPipelineState( + isConnectorIndex(values.index) || isCrawlerIndex(values.index) + ? values.index.connector?.pipeline ?? values.defaultPipelineValues + : values.defaultPipelineValues + ); + }, + }), + listeners: ({ actions, values }) => ({ + apiError: (error) => flashAPIErrors(error), + apiSuccess: ({ pipeline }) => { + if (isConnectorIndex(values.index) || isCrawlerIndex(values.index)) { + if (values.index.connector) { + // had to split up these if checks rather than nest them or typescript wouldn't recognize connector as defined + actions.fetchIndexApiSuccess({ + ...values.index, + connector: { ...values.index.connector, pipeline }, + }); + } + } + flashSuccessToast( + i18n.translate('xpack.enterpriseSearch.content.indices.pipelines.successToast.title', { + defaultMessage: 'Pipelines successfully updated', + }) + ); + }, + closeModal: () => + actions.setPipelineState( + isConnectorIndex(values.index) || isCrawlerIndex(values.index) + ? values.index.connector?.pipeline ?? values.defaultPipelineValues + : values.defaultPipelineValues + ), + createCustomPipelineError: (error) => flashAPIErrors(error), + createCustomPipelineSuccess: ({ created }) => { + flashSuccessToast( + i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.successToastCustom.title', + { + defaultMessage: 'Custom pipeline successfully created', + } + ) + ); + actions.setPipelineState({ ...values.pipelineState, name: created[0] }); + actions.savePipeline(); + actions.fetchCustomPipeline({ indexName: values.index.name }); + }, + fetchIndexApiSuccess: (index) => { + if (!values.showModal) { + // Don't do this when the modal is open to avoid overwriting the values while editing + const pipeline = + isConnectorIndex(index) || isCrawlerIndex(index) + ? index.connector?.pipeline + : values.defaultPipelineValues; + actions.setPipelineState(pipeline ?? values.defaultPipelineValues); + } + }, + makeRequest: () => clearFlashMessages(), + openModal: () => { + const pipeline = + isCrawlerIndex(values.index) || isConnectorIndex(values.index) + ? values.index.connector?.pipeline + : values.defaultPipelineValues; + actions.setPipelineState(pipeline ?? values.defaultPipelineValues); + }, + savePipeline: () => { + if (isConnectorIndex(values.index) || isCrawlerIndex(values.index)) { + if (values.index.connector) { + actions.makeRequest({ + connectorId: values.index.connector?.id, + pipeline: values.pipelineState, + }); + } + } + }, + }), + path: ['enterprise_search', 'content', 'pipelines'], + reducers: () => ({ + pipelineState: [ + DEFAULT_PIPELINE_VALUES, + { + setPipelineState: (_, { pipeline }) => pipeline, + }, + ], + showModal: [ + false, + { + apiSuccess: () => false, + closeModal: () => false, + openModal: () => true, + }, + ], + }), + selectors: ({ selectors }) => ({ + canSetPipeline: [ + () => [selectors.index], + (index: ElasticsearchIndexWithIngestion) => !isApiIndex(index), + ], + defaultPipelineValues: [ + () => [selectors.defaultPipelineValuesData], + (pipeline: IngestPipelineParams | null) => pipeline ?? DEFAULT_PIPELINE_VALUES, + ], + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/search_index.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/search_index.tsx index 58494595ad2e4..ff6ef8842ca92 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/search_index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/search_index.tsx @@ -14,10 +14,8 @@ import { useValues } from 'kea'; import { EuiTabbedContent, EuiTabbedContentTab } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; import { Status } from '../../../../../common/types/api'; -import { enableIndexPipelinesTab } from '../../../../../common/ui_settings_keys'; import { generateEncodedPath } from '../../../shared/encode_path_params'; import { KibanaLogic } from '../../../shared/kibana'; import { FetchIndexApiLogic } from '../../api/index/fetch_index_api_logic'; @@ -60,14 +58,9 @@ export const SearchIndex: React.FC = () => { const { tabId = SearchIndexTabId.OVERVIEW } = useParams<{ tabId?: string; }>(); - const { - services: { uiSettings }, - } = useKibana(); const { indexName } = useValues(IndexNameLogic); - const pipelinesEnabled = uiSettings?.get(enableIndexPipelinesTab) ?? false; - const ALL_INDICES_TABS: EuiTabbedContentTab[] = [ { content: , @@ -126,21 +119,19 @@ export const SearchIndex: React.FC = () => { }, ]; - const PIPELINES_TAB: EuiTabbedContentTab[] = [ - { - content: , - id: SearchIndexTabId.PIPELINES, - name: i18n.translate('xpack.enterpriseSearch.content.searchIndex.pipelinesTabLabel', { - defaultMessage: 'Pipelines', - }), - }, - ]; + const PIPELINES_TAB: EuiTabbedContentTab = { + content: , + id: SearchIndexTabId.PIPELINES, + name: i18n.translate('xpack.enterpriseSearch.content.searchIndex.pipelinesTabLabel', { + defaultMessage: 'Pipelines', + }), + }; const tabs: EuiTabbedContentTab[] = [ ...ALL_INDICES_TABS, ...(isConnectorIndex(indexData) ? CONNECTOR_TABS : []), ...(isCrawlerIndex(indexData) ? CRAWLER_TABS : []), - ...(pipelinesEnabled ? PIPELINES_TAB : []), + PIPELINES_TAB, ]; const selectedTab = tabs.find((tab) => tab.id === tabId); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings.tsx index 4255d467d4676..438ed424f3c07 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings.tsx @@ -7,11 +7,26 @@ import React from 'react'; +import { useActions, useValues } from 'kea'; + +import { EuiButton, EuiLink, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EnterpriseSearchContentPageTemplate } from '../layout/page_template'; +import { SettingsLogic } from './settings_logic'; +import { SettingsPanel } from './settings_panel'; + export const Settings: React.FC = () => { + const { makeRequest, setPipeline } = useActions(SettingsLogic); + const { defaultPipeline, hasNoChanges, isLoading, pipelineState } = useValues(SettingsLogic); + + const { + extract_binary_content: extractBinaryContent, + reduce_whitespace: reduceWhitespace, + run_ml_inference: runMLInference, + } = pipelineState; + return ( { defaultMessage: 'Settings', }), ]} + pageHeader={{ + pageTitle: i18n.translate('xpack.enterpriseSearch.content.settings.headerTitle', { + defaultMessage: 'Content Settings', + }), + rightSideItems: [ + makeRequest(pipelineState)} + > + {i18n.translate('xpack.enterpriseSearch.content.settings.saveButtonLabel', { + defaultMessage: 'Save', + })} + , + setPipeline(defaultPipeline)} + > + {i18n.translate('xpack.enterpriseSearch.content.settings.resetButtonLabel', { + defaultMessage: 'Reset', + })} + , + ], + }} pageViewTelemetry="Settings" isLoading={false} > - <>Settings + + {i18n.translate('xpack.enterpriseSearch.content.settings.contactExtraction.link', { + defaultMessage: 'Learn more about content extraction', + })} + + } + onChange={() => + setPipeline({ + ...pipelineState, + extract_binary_content: !pipelineState.extract_binary_content, + }) + } + title={i18n.translate('xpack.enterpriseSearch.content.settings.contentExtraction.title', { + defaultMessage: 'Deployment wide content extraction', + })} + value={extractBinaryContent} + /> + + + {i18n.translate('xpack.enterpriseSearch.content.settings.whitespaceReduction.link', { + defaultMessage: 'Learn more about whitespace reduction', + })} + + } + onChange={() => + setPipeline({ + ...pipelineState, + reduce_whitespace: !pipelineState.reduce_whitespace, + }) + } + title={i18n.translate( + 'xpack.enterpriseSearch.content.settings.whitespaceReduction.deploymentHeaderTitle', + { + defaultMessage: 'Deployment wide whitespace reduction', + } + )} + value={reduceWhitespace} + /> + + + {i18n.translate('xpack.enterpriseSearch.content.settings.mlInference.link', { + defaultMessage: 'Learn more about content extraction', + })} + + } + onChange={() => + setPipeline({ + ...pipelineState, + run_ml_inference: !pipelineState.run_ml_inference, + }) + } + title={i18n.translate( + 'xpack.enterpriseSearch.content.settings.mlInference.deploymentHeaderTitle', + { + defaultMessage: 'Deployment wide ML Inference Pipelines extraction', + } + )} + value={runMLInference} + /> ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_logic.ts new file mode 100644 index 0000000000000..11c63043e989a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_logic.ts @@ -0,0 +1,130 @@ +/* + * 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 { kea, MakeLogicType } from 'kea'; + +import { isDeepEqual } from 'react-use/lib/util'; + +import { i18n } from '@kbn/i18n'; + +import { DEFAULT_PIPELINE_VALUES } from '../../../../../common/constants'; +import { Status } from '../../../../../common/types/api'; + +import { IngestPipelineParams } from '../../../../../common/types/connectors'; +import { Actions } from '../../../shared/api_logic/create_api_logic'; +import { + clearFlashMessages, + flashAPIErrors, + flashSuccessToast, +} from '../../../shared/flash_messages'; + +import { + FetchDefaultPipelineApiLogic, + FetchDefaultPipelineResponse, +} from '../../api/connector/get_default_pipeline_api_logic'; +import { + PostDefaultPipelineArgs, + PostDefaultPipelineResponse, + UpdateDefaultPipelineApiLogic, +} from '../../api/connector/update_default_pipeline_api_logic'; + +type PipelinesActions = Pick< + Actions, + 'apiError' | 'apiSuccess' | 'makeRequest' +> & { + fetchDefaultPipeline: Actions['makeRequest']; + fetchDefaultPipelineError: Actions['apiError']; + fetchDefaultPipelineSuccess: Actions['apiSuccess']; + setPipeline(pipeline: IngestPipelineParams): { + pipeline: IngestPipelineParams; + }; +}; + +interface PipelinesValues { + defaultPipeline: IngestPipelineParams; + fetchStatus: Status; + hasNoChanges: boolean; + isLoading: boolean; + pipelineState: IngestPipelineParams; + status: Status; +} + +export const SettingsLogic = kea>({ + actions: { + setPipeline: (pipeline: IngestPipelineParams) => ({ pipeline }), + }, + connect: { + actions: [ + UpdateDefaultPipelineApiLogic, + ['apiSuccess', 'apiError', 'makeRequest'], + FetchDefaultPipelineApiLogic, + [ + 'apiError as fetchDefaultPipelineError', + 'apiSuccess as fetchDefaultPipelineSuccess', + 'makeRequest as fetchDefaultPipeline', + ], + ], + values: [ + FetchDefaultPipelineApiLogic, + ['data as defaultPipeline', 'status as fetchStatus'], + UpdateDefaultPipelineApiLogic, + ['status'], + ], + }, + events: ({ actions }) => ({ + afterMount: () => { + actions.fetchDefaultPipeline(undefined); + }, + }), + listeners: ({ actions }) => ({ + apiError: (error) => flashAPIErrors(error), + apiSuccess: (pipeline) => { + flashSuccessToast( + i18n.translate( + 'xpack.enterpriseSearch.content.indices.defaultPipelines.successToast.title', + { + defaultMessage: 'Default pipeline successfully updated', + } + ) + ); + actions.fetchDefaultPipelineSuccess(pipeline); + }, + fetchDefaultPipelineSuccess: (pipeline) => { + actions.setPipeline(pipeline); + }, + makeRequest: () => clearFlashMessages(), + }), + path: ['enterprise_search', 'content', 'settings'], + reducers: () => ({ + pipelineState: [ + DEFAULT_PIPELINE_VALUES, + { + setPipeline: (_, { pipeline }) => pipeline, + }, + ], + showModal: [ + false, + { + apiSuccess: () => false, + closeModal: () => false, + openModal: () => true, + }, + ], + }), + selectors: ({ selectors }) => ({ + hasNoChanges: [ + () => [selectors.pipelineState, selectors.defaultPipeline], + (pipelineState: IngestPipelineParams, defaultPipeline: IngestPipelineParams) => + isDeepEqual(pipelineState, defaultPipeline), + ], + isLoading: [ + () => [selectors.status, selectors.fetchStatus], + (status, fetchStatus) => + [Status.LOADING, Status.IDLE].includes(fetchStatus) || status === Status.LOADING, + ], + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_panel.tsx new file mode 100644 index 0000000000000..154da2649f9ae --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/settings/settings_panel.tsx @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiSplitPanel, + EuiSwitch, + EuiSwitchEvent, + EuiText, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +interface SettingsPanelProps { + description: string; + link: React.ReactNode; + onChange: (event: EuiSwitchEvent) => void; + title: string; + value: boolean; +} + +export const SettingsPanel: React.FC = ({ + description, + link, + onChange, + title, + value, +}) => ( + + + +

+ {title} +

+
+ + +

{description}

+

+ {i18n.translate( + 'xpack.enterpriseSearch.content.settings.contentExtraction.descriptionTwo', + { + defaultMessage: + 'You can also enable or disable this feature for a specific index on the index’s configuration page.', + } + )} +

+
+
+ + + + + + {link} + + +
+); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/settings_checkable_card/settings_checkable_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/settings_checkable_card/settings_checkable_card.tsx new file mode 100644 index 0000000000000..00f91b5aff701 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/settings_checkable_card/settings_checkable_card.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiCheckableCard, EuiText, EuiTitle } from '@elastic/eui'; + +export const SettingsCheckableCard: React.FC<{ + checked: boolean; + description: string; + id: string; + label: string; + onChange: React.ChangeEventHandler; +}> = ({ checked, description, id, label, onChange }) => ( + +

{label}

+ + } + checkableType="checkbox" + onChange={onChange} + checked={checked} + id={id} + > + +

{description}

+
+
+); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx index 523f435c8a2fd..e23f485c3676c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx @@ -41,6 +41,12 @@ describe('useEnterpriseSearchContentNav', () => { id: 'search_indices', name: 'Indices', }, + { + href: '/app/enterprise_search/content/settings', + id: 'settings', + items: undefined, + name: 'Settings', + }, ], name: 'Content', }, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx index c5e126d9c88e1..e18e647d782b0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx @@ -18,7 +18,7 @@ import { ENTERPRISE_SEARCH_OVERVIEW_PLUGIN, WORKPLACE_SEARCH_PLUGIN, } from '../../../../common/constants'; -import { SEARCH_INDICES_PATH } from '../../enterprise_search_content/routes'; +import { SEARCH_INDICES_PATH, SETTINGS_PATH } from '../../enterprise_search_content/routes'; import { KibanaLogic } from '../kibana'; import { generateNavLink } from './nav_link_helpers'; @@ -51,6 +51,17 @@ export const useEnterpriseSearchNav = () => { to: ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL + SEARCH_INDICES_PATH, }), }, + { + id: 'settings', + name: i18n.translate('xpack.enterpriseSearch.nav.contentSettingsTitle', { + defaultMessage: 'Settings', + }), + ...generateNavLink({ + shouldNotCreateHref: true, + shouldShowActiveForSubroutes: true, + to: ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL + SETTINGS_PATH, + }), + }, ], name: i18n.translate('xpack.enterpriseSearch.nav.contentTitle', { defaultMessage: 'Content', diff --git a/x-pack/plugins/enterprise_search/server/index.ts b/x-pack/plugins/enterprise_search/server/index.ts index 3c409c09ff642..dfcfa8ba4627c 100644 --- a/x-pack/plugins/enterprise_search/server/index.ts +++ b/x-pack/plugins/enterprise_search/server/index.ts @@ -39,6 +39,7 @@ export const config: PluginConfigDescriptor = { schema: configSchema, }; export const CONNECTORS_INDEX = '.elastic-connectors'; +export const CURRENT_CONNECTORS_INDEX = '.elastic-connectors-v1'; export const CONNECTORS_JOBS_INDEX = '.elastic-connectors-sync-jobs'; export const CONNECTORS_VERSION = '1'; export const CRAWLERS_INDEX = '.ent-search-actastic-crawler2_configurations'; diff --git a/x-pack/plugins/enterprise_search/server/utils/create_pipeline_definitions.test.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts similarity index 100% rename from x-pack/plugins/enterprise_search/server/utils/create_pipeline_definitions.test.ts rename to x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts diff --git a/x-pack/plugins/enterprise_search/server/utils/create_pipeline_definitions.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts similarity index 100% rename from x-pack/plugins/enterprise_search/server/utils/create_pipeline_definitions.ts rename to x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/get_custom_pipelines.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_custom_pipelines.ts new file mode 100644 index 0000000000000..11127e7e5d236 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_custom_pipelines.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IngestGetPipelineResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IScopedClusterClient } from '@kbn/core/server'; + +export const getCustomPipelines = async ( + indexName: string, + client: IScopedClusterClient +): Promise => { + try { + const pipelinesResponse = await client.asCurrentUser.ingest.getPipeline({ + id: `${indexName}*`, + }); + + return pipelinesResponse; + } catch (error) { + // If we can't find anything, we return an empty object + return {}; + } +}; diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/get_default_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_default_pipeline.ts new file mode 100644 index 0000000000000..0959b7e8cfa7f --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_default_pipeline.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core/server'; + +import { CURRENT_CONNECTORS_INDEX } from '../..'; +import { DEFAULT_PIPELINE_VALUES } from '../../../common/constants'; + +import { IngestPipelineParams } from '../../../common/types/connectors'; +import { DefaultConnectorsPipelineMeta } from '../../index_management/setup_indices'; + +export const getDefaultPipeline = async ( + client: IScopedClusterClient +): Promise => { + const mapping = await client.asCurrentUser.indices.getMapping({ + index: CURRENT_CONNECTORS_INDEX, + }); + const meta: DefaultConnectorsPipelineMeta | undefined = + mapping[CURRENT_CONNECTORS_INDEX]?.mappings._meta?.pipeline; + const mappedMapping: IngestPipelineParams = meta + ? { + extract_binary_content: meta.default_extract_binary_content, + name: meta.default_name, + reduce_whitespace: meta.default_reduce_whitespace, + run_ml_inference: meta.default_run_ml_inference, + } + : DEFAULT_PIPELINE_VALUES; + return mappedMapping; +}; diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/update_default_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/update_default_pipeline.ts new file mode 100644 index 0000000000000..8dfaf0ac8ba42 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/update_default_pipeline.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core/server'; + +import { CURRENT_CONNECTORS_INDEX } from '../..'; + +import { IngestPipelineParams } from '../../../common/types/connectors'; +import { + DefaultConnectorsPipelineMeta, + setupConnectorsIndices, +} from '../../index_management/setup_indices'; +import { isIndexNotFoundException } from '../../utils/identify_exceptions'; + +export const updateDefaultPipeline = async ( + client: IScopedClusterClient, + pipeline: IngestPipelineParams +) => { + try { + const mapping = await client.asCurrentUser.indices.getMapping({ + index: CURRENT_CONNECTORS_INDEX, + }); + const newPipeline: DefaultConnectorsPipelineMeta = { + default_extract_binary_content: pipeline.extract_binary_content, + default_name: pipeline.name, + default_reduce_whitespace: pipeline.reduce_whitespace, + default_run_ml_inference: pipeline.run_ml_inference, + }; + await client.asCurrentUser.indices.putMapping({ + _meta: { ...mapping[CURRENT_CONNECTORS_INDEX].mappings._meta, pipeline: newPipeline }, + index: CURRENT_CONNECTORS_INDEX, + }); + } catch (error) { + if (isIndexNotFoundException(error)) { + setupConnectorsIndices(client.asCurrentUser); + } + } +}; diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/update_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/update_pipeline.ts new file mode 100644 index 0000000000000..1acc91f7e2684 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/update_pipeline.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core/server'; + +import { CONNECTORS_INDEX } from '../..'; + +import { IngestPipelineParams } from '../../../common/types/connectors'; + +export const updateConnectorPipeline = async ( + client: IScopedClusterClient, + connectorId: string, + pipeline: IngestPipelineParams +) => { + await client.asCurrentUser.update({ + doc: { pipeline }, + id: connectorId, + index: CONNECTORS_INDEX, + }); +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts index b17cbffd68c40..99afad7f7abe1 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts @@ -14,6 +14,9 @@ import { fetchSyncJobsByConnectorId } from '../../lib/connectors/fetch_sync_jobs import { startConnectorSync } from '../../lib/connectors/start_sync'; import { updateConnectorConfiguration } from '../../lib/connectors/update_connector_configuration'; import { updateConnectorScheduling } from '../../lib/connectors/update_connector_scheduling'; +import { getDefaultPipeline } from '../../lib/pipelines/get_default_pipeline'; +import { updateDefaultPipeline } from '../../lib/pipelines/update_default_pipeline'; +import { updateConnectorPipeline } from '../../lib/pipelines/update_pipeline'; import { RouteDependencies } from '../../plugin'; import { createError } from '../../utils/create_error'; @@ -137,4 +140,57 @@ export function registerConnectorRoutes({ router, log }: RouteDependencies) { return response.ok({ body: result }); }) ); + + router.put( + { + path: '/internal/enterprise_search/connectors/{connectorId}/pipeline', + validate: { + body: schema.object({ + extract_binary_content: schema.boolean(), + name: schema.string(), + reduce_whitespace: schema.boolean(), + run_ml_inference: schema.boolean(), + }), + params: schema.object({ + connectorId: schema.string(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const { client } = (await context.core).elasticsearch; + await updateConnectorPipeline(client, request.params.connectorId, request.body); + return response.ok(); + }) + ); + + router.put( + { + path: '/internal/enterprise_search/connectors/default_pipeline', + validate: { + body: schema.object({ + extract_binary_content: schema.boolean(), + name: schema.string(), + reduce_whitespace: schema.boolean(), + run_ml_inference: schema.boolean(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const { client } = (await context.core).elasticsearch; + await updateDefaultPipeline(client, request.body); + return response.ok(); + }) + ); + + router.get( + { + path: '/internal/enterprise_search/connectors/default_pipeline', + validate: {}, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const { client } = (await context.core).elasticsearch; + const result = await getDefaultPipeline(client); + return response.ok({ body: result }); + }) + ); } diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index aef5f944e6b98..95f5f9f15bf62 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -20,9 +20,10 @@ import { fetchIndex } from '../../lib/indices/fetch_index'; import { fetchIndices } from '../../lib/indices/fetch_indices'; import { fetchMlInferencePipelineProcessors } from '../../lib/indices/fetch_ml_inference_pipeline_processors'; import { generateApiKey } from '../../lib/indices/generate_api_key'; +import { createIndexPipelineDefinitions } from '../../lib/pipelines/create_pipeline_definitions'; +import { getCustomPipelines } from '../../lib/pipelines/get_custom_pipelines'; import { RouteDependencies } from '../../plugin'; import { createError } from '../../utils/create_error'; -import { createIndexPipelineDefinitions } from '../../utils/create_pipeline_definitions'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; import { isIndexNotFoundException } from '../../utils/identify_exceptions'; @@ -266,6 +267,26 @@ export function registerIndexRoutes({ }) ); + router.get( + { + path: '/internal/enterprise_search/indices/{indexName}/pipelines', + validate: { + params: schema.object({ + indexName: schema.string(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const indexName = decodeURIComponent(request.params.indexName); + const { client } = (await context.core).elasticsearch; + const pipelines = await getCustomPipelines(indexName, client); + return response.ok({ + body: pipelines, + headers: { 'content-type': 'application/json' }, + }); + }) + ); + router.get( { path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', From 2464aa69b79e290f88171ae622e6b42f4ef9a39b Mon Sep 17 00:00:00 2001 From: Karl Godard Date: Thu, 15 Sep 2022 12:18:45 -0700 Subject: [PATCH 14/79] [Terminal output] fix to a regression in the last pr (#140838) * fix to a regression in the last pr * fix to a regression in the last pr Co-authored-by: Karl Godard --- .../public/components/session_view/hooks.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/session_view/public/components/session_view/hooks.ts b/x-pack/plugins/session_view/public/components/session_view/hooks.ts index 50bc64f885bde..7d33b5bfbe957 100644 --- a/x-pack/plugins/session_view/public/components/session_view/hooks.ts +++ b/x-pack/plugins/session_view/public/components/session_view/hooks.ts @@ -64,10 +64,12 @@ export const useFetchSessionViewProcessEvents = ( getNextPageParam: (lastPage, pages) => { const isRefetch = pages.length === 1 && jumpToCursor; if (isRefetch || lastPage.events.length >= PROCESS_EVENTS_PER_PAGE) { - const cursor = lastPage.events.filter((event) => { + const filtered = lastPage.events.filter((event) => { const action = event.event?.action; return action && [EventAction.fork, EventAction.exec, EventAction.end].includes(action); - })?.[lastPage.events.length - 1]?.['@timestamp']; + }); + + const cursor = filtered?.[filtered.length - 1]?.['@timestamp']; if (cursor) { return { @@ -78,12 +80,17 @@ export const useFetchSessionViewProcessEvents = ( } }, getPreviousPageParam: (firstPage, pages) => { - const atBeginning = pages.length > 1 && firstPage.events.length < PROCESS_EVENTS_PER_PAGE; + const filtered = firstPage.events.filter((event) => { + const action = event.event?.action; + return action && [EventAction.fork, EventAction.exec, EventAction.end].includes(action); + }); + + const atBeginning = pages.length > 1 && filtered.length < PROCESS_EVENTS_PER_PAGE; if (jumpToCursor && !atBeginning) { // it's possible the first page returned no events // fallback to using jumpToCursor if there are no "forward" events. - const cursor = firstPage.events?.[0]?.['@timestamp'] || jumpToCursor; + const cursor = filtered[0]?.['@timestamp'] || jumpToCursor; return { cursor, From 914d1cd41c87e34df4144032603b99a281c31ba6 Mon Sep 17 00:00:00 2001 From: Ying Mao Date: Thu, 15 Sep 2022 15:50:15 -0400 Subject: [PATCH 15/79] [Response Ops] [Connectors] Move connectors to own plugin (#139867) * Initial commit of stack connectors plugin * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * Fixing up xmatters. Moving library functions around * [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs' * Fixing up webhook * Fixing up teams and slack * Fixing up index, email, pagerduty, server log * Fixing i18n * wip * Moving well know email route to stack connectors plugin * Fixing types * Fixing unit tests * Adding index.ts * Cleanup * Updating READMEs * [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs' * Moving to domain specific folders and updating codeowners * Fixing codeowners * Fixing types * [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> --- .eslintrc.js | 2 +- .github/CODEOWNERS | 3 + docs/developer/plugin-list.asciidoc | 4 + tsconfig.base.json | 2 + x-pack/.i18nrc.json | 1 + x-pack/plugins/actions/README.md | 368 ----------------- x-pack/plugins/actions/common/index.ts | 8 - x-pack/plugins/actions/common/types.ts | 6 + .../actions/server/actions_client.test.ts | 12 +- .../plugins/actions/server/actions_client.ts | 6 +- .../plugins/actions/server/actions_config.ts | 2 +- .../server/builtin_action_types/index.test.ts | 65 --- .../server/builtin_action_types/index.ts | 86 ---- x-pack/plugins/actions/server/index.ts | 25 -- .../actions/server/lib/action_executor.ts | 1 + .../actions/server/lib/axios_utils.test.ts | 2 +- .../plugins/actions/server/lib/axios_utils.ts | 2 +- .../lib/connector_token_client.mock.ts | 0 .../lib/connector_token_client.test.ts | 2 +- .../lib/connector_token_client.ts | 4 +- .../lib/create_jwt_assertion.test.ts | 0 .../lib/create_jwt_assertion.ts | 0 .../server/lib/ensure_sufficient_license.ts | 4 +- .../lib/get_custom_agents.test.ts | 2 +- .../lib/get_custom_agents.ts | 2 +- .../lib/get_node_ssl_options.test.ts | 0 .../lib/get_node_ssl_options.ts | 2 +- ...th_client_credentials_access_token.test.ts | 2 +- ...t_oauth_client_credentials_access_token.ts | 4 +- .../lib/get_oauth_jwt_access_token.test.ts | 2 +- .../lib/get_oauth_jwt_access_token.ts | 4 +- ...est.ts => is_connector_deprecated.test.ts} | 2 +- ...precated.ts => is_connector_deprecated.ts} | 4 +- ...est_oauth_client_credentials_token.test.ts | 2 +- .../request_oauth_client_credentials_token.ts | 4 +- .../lib/request_oauth_jwt_token.test.ts | 2 +- .../lib/request_oauth_jwt_token.ts | 4 +- .../lib/request_oauth_token.test.ts | 2 +- .../lib/request_oauth_token.ts | 6 +- x-pack/plugins/actions/server/mocks.ts | 2 +- x-pack/plugins/actions/server/plugin.test.ts | 27 +- x-pack/plugins/actions/server/plugin.ts | 12 +- .../alert_history_es_index.ts | 2 +- .../get_well_known_email_service.test.ts | 175 -------- .../routes/get_well_known_email_service.ts | 57 --- x-pack/plugins/actions/server/routes/index.ts | 2 - .../transform_connectors_for_export.test.ts | 57 +-- .../transform_connectors_for_export.ts | 5 +- .../sub_action_framework/executor.test.ts | 25 +- x-pack/plugins/actions/server/types.ts | 7 +- .../cases/server/client/cases/types.ts | 6 +- x-pack/plugins/cases/tsconfig.json | 1 + x-pack/plugins/monitoring/common/constants.ts | 4 +- x-pack/plugins/stack_connectors/README.md | 373 ++++++++++++++++++ .../plugins/stack_connectors/common/index.ts | 15 + .../common/servicenow_config.ts | 4 - .../plugins/stack_connectors/jest.config.js | 17 + x-pack/plugins/stack_connectors/kibana.json | 13 + .../cases}/cases_webhook/api.test.ts | 0 .../cases}/cases_webhook/api.ts | 0 .../cases}/cases_webhook/index.ts | 33 +- .../cases}/cases_webhook/mock.ts | 0 .../cases}/cases_webhook/schema.ts | 2 +- .../cases}/cases_webhook/service.test.ts | 8 +- .../cases}/cases_webhook/service.ts | 6 +- .../cases}/cases_webhook/translations.ts | 10 +- .../cases}/cases_webhook/types.ts | 2 +- .../cases}/cases_webhook/utils.test.ts | 0 .../cases}/cases_webhook/utils.ts | 2 +- .../cases}/cases_webhook/validators.ts | 4 +- .../server/connector_types/cases/index.ts | 41 ++ .../connector_types/cases}/jira/api.test.ts | 0 .../server/connector_types/cases}/jira/api.ts | 0 .../connector_types/cases}/jira/index.ts | 49 ++- .../connector_types/cases}/jira/mocks.ts | 0 .../connector_types/cases}/jira/schema.ts | 0 .../cases}/jira/service.test.ts | 8 +- .../connector_types/cases}/jira/service.ts | 8 +- .../cases}/jira/translations.ts | 4 +- .../connector_types/cases}/jira/types.ts | 2 +- .../connector_types/cases}/jira/validators.ts | 2 +- .../cases}/resilient/api.test.ts | 0 .../connector_types/cases}/resilient/api.ts | 0 .../connector_types/cases}/resilient/index.ts | 47 ++- .../connector_types/cases}/resilient/mocks.ts | 0 .../cases}/resilient/schema.ts | 0 .../cases}/resilient/service.test.ts | 8 +- .../cases}/resilient/service.ts | 8 +- .../cases}/resilient/translations.ts | 4 +- .../connector_types/cases}/resilient/types.ts | 3 +- .../cases}/resilient/validators.ts | 2 +- .../cases}/servicenow/api.test.ts | 0 .../connector_types/cases}/servicenow/api.ts | 0 .../cases}/servicenow/api_itom.test.ts | 0 .../cases}/servicenow/api_itom.ts | 0 .../cases}/servicenow/api_sir.test.ts | 0 .../cases}/servicenow/api_sir.ts | 0 .../cases}/servicenow/config.test.ts | 0 .../cases}/servicenow/config.ts | 6 +- .../servicenow/create_service_wrapper.test.ts | 4 +- .../servicenow/create_service_wrapper.ts | 4 +- .../cases}/servicenow/index.test.ts | 60 ++- .../cases}/servicenow/index.ts | 99 +++-- .../cases}/servicenow/mocks.ts | 0 .../cases}/servicenow/schema.ts | 0 .../cases}/servicenow/service.test.ts | 8 +- .../cases}/servicenow/service.ts | 2 +- .../cases}/servicenow/service_itom.test.ts | 8 +- .../cases}/servicenow/service_itom.ts | 2 +- .../cases}/servicenow/service_sir.test.ts | 8 +- .../cases}/servicenow/service_sir.ts | 2 +- .../cases}/servicenow/translations.ts | 35 +- .../cases}/servicenow/types.ts | 8 +- .../cases}/servicenow/utils.test.ts | 8 +- .../cases}/servicenow/utils.ts | 8 +- .../cases}/servicenow/validators.test.ts | 2 +- .../cases}/servicenow/validators.ts | 2 +- .../cases}/swimlane/api.test.ts | 0 .../connector_types/cases}/swimlane/api.ts | 0 .../cases}/swimlane/helpers.test.ts | 0 .../cases}/swimlane/helpers.ts | 0 .../connector_types/cases}/swimlane/index.ts | 46 +-- .../connector_types/cases}/swimlane/mocks.ts | 0 .../connector_types/cases}/swimlane/schema.ts | 0 .../cases}/swimlane/service.test.ts | 8 +- .../cases}/swimlane/service.ts | 8 +- .../cases}/swimlane/translations.ts | 4 +- .../connector_types/cases}/swimlane/types.ts | 2 +- .../cases}/swimlane/validators.ts | 2 +- .../cases/xmatters/index.test.ts} | 138 +++---- .../connector_types/cases/xmatters/index.ts} | 115 +++--- .../cases/xmatters}/post_xmatters.ts | 4 +- .../server/connector_types/index.test.ts | 46 +++ .../server/connector_types/index.ts | 89 +++++ .../lib/http_response_retry_header.ts} | 0 .../server/connector_types}/lib/nullable.ts | 0 .../connector_types}/lib/result_type.ts | 0 .../server/connector_types}/lib/schemas.ts | 0 .../connector_types}/lib/string_utils.test.ts | 0 .../connector_types}/lib/string_utils.ts | 0 .../server/connector_types/security/index.ts | 6 + .../stack/email/index.test.ts} | 195 +++++---- .../connector_types/stack/email/index.ts} | 92 ++--- .../stack/email}/send_email.test.ts | 12 +- .../stack/email}/send_email.ts | 15 +- .../stack/email}/send_email_graph_api.test.ts | 6 +- .../stack/email}/send_email_graph_api.ts | 4 +- .../stack/es_index/index.test.ts} | 121 +++--- .../connector_types/stack/es_index/index.ts} | 49 ++- .../server/connector_types/stack/index.ts | 48 +++ .../stack/pagerduty/index.test.ts} | 160 ++++---- .../connector_types/stack/pagerduty/index.ts} | 81 ++-- .../stack/pagerduty}/post_pagerduty.ts | 6 +- .../stack/server_log/index.test.ts} | 58 ++- .../stack/server_log/index.ts} | 33 +- .../stack/slack/index.test.ts} | 124 +++--- .../connector_types/stack/slack/index.ts} | 91 +++-- .../stack/teams/index.test.ts} | 85 ++-- .../connector_types/stack/teams/index.ts} | 88 ++--- .../stack/webhook/index.test.ts} | 119 +++--- .../connector_types/stack/webhook/index.ts} | 103 +++-- .../plugins/stack_connectors/server/index.ts | 11 + .../stack_connectors/server/plugin.test.ts | 136 +++++++ .../plugins/stack_connectors/server/plugin.ts | 42 ++ .../get_well_known_email_service.test.ts | 83 ++++ .../routes/get_well_known_email_service.ts | 61 +++ .../stack_connectors/server/routes/index.ts | 8 + .../plugins/stack_connectors/server/types.ts | 37 ++ x-pack/plugins/stack_connectors/tsconfig.json | 19 + .../components/settings/types.ts | 38 +- .../legacy_uptime/state/api/alert_actions.ts | 2 +- .../translations/translations/fr-FR.json | 160 ++++---- .../translations/translations/ja-JP.json | 160 ++++---- .../translations/translations/zh-CN.json | 160 ++++---- .../cases_webhook/types.ts | 2 +- .../builtin_action_types/email/api.ts | 4 +- .../email/email_connector.tsx | 3 +- .../email/use_email_config.test.ts | 6 +- .../email/use_email_config.ts | 2 +- .../builtin_action_types/jira/types.ts | 2 +- .../builtin_action_types/resilient/types.ts | 2 +- .../builtin_action_types/servicenow/api.ts | 4 +- .../servicenow/servicenow_connectors.tsx | 2 +- .../builtin_action_types/servicenow/types.ts | 2 +- .../servicenow/update_connector.tsx | 2 +- .../builtin_action_types/swimlane/types.ts | 2 +- .../public/application/constants/index.ts | 1 + .../plugins/triggers_actions_ui/tsconfig.json | 1 + x-pack/test/tsconfig.json | 1 + 189 files changed, 2565 insertions(+), 2318 deletions(-) delete mode 100644 x-pack/plugins/actions/server/builtin_action_types/index.test.ts delete mode 100644 x-pack/plugins/actions/server/builtin_action_types/index.ts rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/connector_token_client.mock.ts (100%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/connector_token_client.test.ts (99%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/connector_token_client.ts (98%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/create_jwt_assertion.test.ts (100%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/create_jwt_assertion.ts (100%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_custom_agents.test.ts (99%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_custom_agents.ts (98%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_node_ssl_options.test.ts (100%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_node_ssl_options.ts (97%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_oauth_client_credentials_access_token.test.ts (99%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_oauth_client_credentials_access_token.ts (97%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_oauth_jwt_access_token.test.ts (99%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/get_oauth_jwt_access_token.ts (97%) rename x-pack/plugins/actions/server/lib/{is_conector_deprecated.test.ts => is_connector_deprecated.test.ts} (97%) rename x-pack/plugins/actions/server/lib/{is_conector_deprecated.ts => is_connector_deprecated.ts} (92%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_client_credentials_token.test.ts (98%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_client_credentials_token.ts (90%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_jwt_token.test.ts (98%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_jwt_token.ts (91%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_token.test.ts (98%) rename x-pack/plugins/actions/server/{builtin_action_types => }/lib/request_oauth_token.ts (90%) delete mode 100644 x-pack/plugins/actions/server/routes/get_well_known_email_service.test.ts delete mode 100644 x-pack/plugins/actions/server/routes/get_well_known_email_service.ts create mode 100644 x-pack/plugins/stack_connectors/README.md create mode 100644 x-pack/plugins/stack_connectors/common/index.ts rename x-pack/plugins/{actions => stack_connectors}/common/servicenow_config.ts (89%) create mode 100644 x-pack/plugins/stack_connectors/jest.config.js create mode 100644 x-pack/plugins/stack_connectors/kibana.json rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/api.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/api.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/index.ts (79%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/mock.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/schema.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/service.test.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/service.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/translations.ts (71%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/types.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/utils.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/utils.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/cases_webhook/validators.ts (95%) create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/cases/index.ts rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/api.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/api.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/index.ts (84%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/mocks.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/schema.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/service.test.ts (99%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/service.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/translations.ts (78%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/types.ts (99%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/jira/validators.ts (93%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/api.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/api.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/index.ts (81%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/mocks.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/schema.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/service.test.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/service.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/translations.ts (74%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/types.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/resilient/validators.ts (93%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api_itom.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api_itom.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api_sir.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/api_sir.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/config.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/config.ts (87%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/create_service_wrapper.test.ts (92%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/create_service_wrapper.ts (89%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/index.test.ts (62%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/index.ts (78%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/mocks.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/schema.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service.test.ts (99%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service.ts (99%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service_itom.test.ts (89%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service_itom.ts (95%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service_sir.test.ts (91%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/service_sir.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/translations.ts (56%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/types.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/utils.test.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/utils.ts (93%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/validators.test.ts (99%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/servicenow/validators.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/api.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/api.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/helpers.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/helpers.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/index.ts (76%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/mocks.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/schema.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/service.test.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/service.ts (96%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/translations.ts (78%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/types.ts (98%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types/cases}/swimlane/validators.ts (93%) rename x-pack/plugins/{actions/server/builtin_action_types/xmatters.test.ts => stack_connectors/server/connector_types/cases/xmatters/index.test.ts} (80%) rename x-pack/plugins/{actions/server/builtin_action_types/xmatters.ts => stack_connectors/server/connector_types/cases/xmatters/index.ts} (72%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/cases/xmatters}/post_xmatters.ts (87%) create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/index.test.ts create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/index.ts rename x-pack/plugins/{actions/server/builtin_action_types/lib/http_rersponse_retry_header.ts => stack_connectors/server/connector_types/lib/http_response_retry_header.ts} (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types}/lib/nullable.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types}/lib/result_type.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types}/lib/schemas.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types}/lib/string_utils.test.ts (100%) rename x-pack/plugins/{actions/server/builtin_action_types => stack_connectors/server/connector_types}/lib/string_utils.ts (100%) create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/security/index.ts rename x-pack/plugins/{actions/server/builtin_action_types/email.test.ts => stack_connectors/server/connector_types/stack/email/index.test.ts} (78%) rename x-pack/plugins/{actions/server/builtin_action_types/email.ts => stack_connectors/server/connector_types/stack/email/index.ts} (84%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/stack/email}/send_email.test.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/stack/email}/send_email.ts (94%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/stack/email}/send_email_graph_api.test.ts (97%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/stack/email}/send_email_graph_api.ts (93%) rename x-pack/plugins/{actions/server/builtin_action_types/es_index.test.ts => stack_connectors/server/connector_types/stack/es_index/index.test.ts} (83%) rename x-pack/plugins/{actions/server/builtin_action_types/es_index.ts => stack_connectors/server/connector_types/stack/es_index/index.ts} (77%) create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/stack/index.ts rename x-pack/plugins/{actions/server/builtin_action_types/pagerduty.test.ts => stack_connectors/server/connector_types/stack/pagerduty/index.test.ts} (83%) rename x-pack/plugins/{actions/server/builtin_action_types/pagerduty.ts => stack_connectors/server/connector_types/stack/pagerduty/index.ts} (79%) rename x-pack/plugins/{actions/server/builtin_action_types/lib => stack_connectors/server/connector_types/stack/pagerduty}/post_pagerduty.ts (81%) rename x-pack/plugins/{actions/server/builtin_action_types/server_log.test.ts => stack_connectors/server/connector_types/stack/server_log/index.test.ts} (62%) rename x-pack/plugins/{actions/server/builtin_action_types/server_log.ts => stack_connectors/server/connector_types/stack/server_log/index.ts} (63%) rename x-pack/plugins/{actions/server/builtin_action_types/slack.test.ts => stack_connectors/server/connector_types/stack/slack/index.test.ts} (77%) rename x-pack/plugins/{actions/server/builtin_action_types/slack.ts => stack_connectors/server/connector_types/stack/slack/index.ts} (71%) rename x-pack/plugins/{actions/server/builtin_action_types/teams.test.ts => stack_connectors/server/connector_types/stack/teams/index.test.ts} (74%) rename x-pack/plugins/{actions/server/builtin_action_types/teams.ts => stack_connectors/server/connector_types/stack/teams/index.ts} (71%) rename x-pack/plugins/{actions/server/builtin_action_types/webhook.test.ts => stack_connectors/server/connector_types/stack/webhook/index.test.ts} (76%) rename x-pack/plugins/{actions/server/builtin_action_types/webhook.ts => stack_connectors/server/connector_types/stack/webhook/index.ts} (74%) create mode 100644 x-pack/plugins/stack_connectors/server/index.ts create mode 100644 x-pack/plugins/stack_connectors/server/plugin.test.ts create mode 100644 x-pack/plugins/stack_connectors/server/plugin.ts create mode 100644 x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.test.ts create mode 100644 x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts create mode 100644 x-pack/plugins/stack_connectors/server/routes/index.ts create mode 100644 x-pack/plugins/stack_connectors/server/types.ts create mode 100644 x-pack/plugins/stack_connectors/tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index e907d104a3c10..c36e8b5e7e668 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1313,7 +1313,7 @@ module.exports = { { // typescript for front and back end files: [ - 'x-pack/plugins/{alerting,stack_alerts,actions,task_manager,event_log}/**/*.{ts,tsx}', + 'x-pack/plugins/{alerting,stack_alerts,stack_connectors,actions,task_manager,event_log}/**/*.{ts,tsx}', ], rules: { '@typescript-eslint/no-explicit-any': 'error', diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 189dc56985cb9..514effa288865 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -326,6 +326,9 @@ x-pack/examples/files_example @elastic/kibana-app-services /x-pack/plugins/actions/ @elastic/response-ops /x-pack/plugins/event_log/ @elastic/response-ops /x-pack/plugins/task_manager/ @elastic/response-ops +/x-pack/plugins/stack_connectors/ @elastic/response-ops +/x-pack/plugins/stack_connectors/server/connector_types/stack/ @elastic/response-ops-execution +/x-pack/plugins/stack_connectors/server/connector_types/cases/ @elastic/response-ops-cases /x-pack/test/alerting_api_integration/ @elastic/response-ops /x-pack/test/plugin_api_integration/test_suites/task_manager/ @elastic/response-ops /x-pack/plugins/triggers_actions_ui/ @elastic/response-ops diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 3716d64909f7b..9fd9bf84f09d5 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -645,6 +645,10 @@ the alertTypes by the Stack in the alerting plugin, register associated HTTP routes, etc. +|{kib-repo}blob/{branch}/x-pack/plugins/stack_connectors/README.md[stackConnectors] +|The stack_connectors plugin provides connector types shipped with Kibana, built on top of the framework provided in the actions plugin. + + |{kib-repo}blob/{branch}/x-pack/plugins/synthetics/README.md[synthetics] |The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening in their infrastructure. diff --git a/tsconfig.base.json b/tsconfig.base.json index 29a4a52c73515..9f04a4d6a1e4e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -419,6 +419,8 @@ "@kbn/spaces-plugin/*": ["x-pack/plugins/spaces/*"], "@kbn/stack-alerts-plugin": ["x-pack/plugins/stack_alerts"], "@kbn/stack-alerts-plugin/*": ["x-pack/plugins/stack_alerts/*"], + "@kbn/stack-connectors-plugin": ["x-pack/plugins/stack_connectors"], + "@kbn/stack-connectors-plugin/*": ["x-pack/plugins/stack_connectors/*"], "@kbn/synthetics-plugin": ["x-pack/plugins/synthetics"], "@kbn/synthetics-plugin/*": ["x-pack/plugins/synthetics/*"], "@kbn/task-manager-plugin": ["x-pack/plugins/task_manager"], diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 569c5f6fddbe0..8c1b4ce3daa86 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -5,6 +5,7 @@ "xpack.alerting": "plugins/alerting", "xpack.eventLog": "plugins/event_log", "xpack.stackAlerts": "plugins/stack_alerts", + "xpack.stackConnectors": "plugins/stack_connectors", "xpack.apm": "plugins/apm", "xpack.canvas": "plugins/canvas", "xpack.cases": "plugins/cases", diff --git a/x-pack/plugins/actions/README.md b/x-pack/plugins/actions/README.md index 213ec6d8f23ce..7cab1ffe0c0b3 100644 --- a/x-pack/plugins/actions/README.md +++ b/x-pack/plugins/actions/README.md @@ -32,49 +32,7 @@ Table of Contents - [Example](#example-1) - [actionsClient.execute(options)](#actionsclientexecuteoptions) - [Example](#example-2) -- [Built-in Action Types](#built-in-action-types) - - [ServiceNow ITSM](#servicenow-itsm) - - [`params`](#params) - - [`subActionParams (pushToService)`](#subactionparams-pushtoservice) - - [`subActionParams (getFields)`](#subactionparams-getfields) - - [`subActionParams (getIncident)`](#subactionparams-getincident) - - [`subActionParams (getChoices)`](#subactionparams-getchoices) - - [ServiceNow Sec Ops](#servicenow-sec-ops) - - [`params`](#params-1) - - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-1) - - [`subActionParams (getFields)`](#subactionparams-getfields-1) - - [`subActionParams (getIncident)`](#subactionparams-getincident-1) - - [`subActionParams (getChoices)`](#subactionparams-getchoices-1) - - [ServiceNow ITOM](#servicenow-itom) - - [`params`](#params-2) - - [`subActionParams (addEvent)`](#subactionparams-addevent) - - [`subActionParams (getChoices)`](#subactionparams-getchoices-2) - - [Jira](#jira) - - [`params`](#params-3) - - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-2) - - [`subActionParams (getIncident)`](#subactionparams-getincident-2) - - [`subActionParams (issueTypes)`](#subactionparams-issuetypes) - - [`subActionParams (fieldsByIssueType)`](#subactionparams-fieldsbyissuetype) - - [`subActionParams (issues)`](#subactionparams-issues) - - [`subActionParams (issue)`](#subactionparams-issue) - - [`subActionParams (getFields)`](#subactionparams-getfields-2) - - [IBM Resilient](#ibm-resilient) - - [`params`](#params-4) - - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-3) - - [`subActionParams (getFields)`](#subactionparams-getfields-3) - - [`subActionParams (incidentTypes)`](#subactionparams-incidenttypes) - - [`subActionParams (severity)`](#subactionparams-severity) - - [Swimlane](#swimlane) - - [`params`](#params-5) - - [| severity | The severity of the incident. | string _(optional)_ |](#-severity-----the-severity-of-the-incident-----string-optional-) - [Command Line Utility](#command-line-utility) -- [Developing New Action Types](#developing-new-action-types) - - [licensing](#licensing) - - [plugin location](#plugin-location) - - [documentation](#documentation) - - [tests](#tests) - - [action type config and secrets](#action-type-config-and-secrets) - - [user interface](#user-interface) ## Terminology @@ -251,292 +209,6 @@ const result = await actionsClient.execute({ }), }); ``` - -# Built-in Action Types - -Kibana ships with a set of built-in action types. See [Actions and connector types Documentation](https://www.elastic.co/guide/en/kibana/master/action-types.html). - -In addition to the documented configurations, several built in action type offer additional `params` configurations. - -## ServiceNow ITSM - -Refer to the [Run connector API documentation](https://www.elastic.co/guide/en/kibana/master/execute-connector-api.html#execute-connector-api-request-body) -for the full list of properties. - -### `params` - -| Property | Description | Type | -| --------------- | -------------------------------------------------------------------------------------------------- | ------ | -| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `getIncident`, and `getChoices`. | string | -| subActionParams | The parameters of the subaction. | object | - -#### `subActionParams (pushToService)` - -| Property | Description | Type | -| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | -| incident | The ServiceNow incident. | object | -| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | - -The following table describes the properties of the `incident` object. - -| Property | Description | Type | -| ------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------- | -| short_description | The title of the incident. | string | -| description | The description of the incident. | string _(optional)_ | -| externalId | The ID of the incident in ServiceNow. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | -| severity | The severity in ServiceNow. | string _(optional)_ | -| urgency | The urgency in ServiceNow. | string _(optional)_ | -| impact | The impact in ServiceNow. | string _(optional)_ | -| category | The category in ServiceNow. | string _(optional)_ | -| subcategory | The subcategory in ServiceNow. | string _(optional)_ | -| correlation_id | The correlation id of the incident. | string _(optional)_ | -| correlation_display | The correlation display of the ServiceNow. | string _(optional)_ | - -#### `subActionParams (getFields)` - -No parameters for the `getFields` subaction. Provide an empty object `{}`. - -#### `subActionParams (getIncident)` - -| Property | Description | Type | -| ---------- | ------------------------------------- | ------ | -| externalId | The ID of the incident in ServiceNow. | string | - - -#### `subActionParams (getChoices)` - -| Property | Description | Type | -| -------- | -------------------------------------------------- | -------- | -| fields | An array of fields. Example: `[category, impact]`. | string[] | - ---- - -## ServiceNow Sec Ops - -Refer to the [Run connector API documentation](https://www.elastic.co/guide/en/kibana/master/execute-connector-api.html#execute-connector-api-request-body) -for the full list of properties. - -### `params` - -| Property | Description | Type | -| --------------- | -------------------------------------------------------------------------------------------------- | ------ | -| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `getIncident`, and `getChoices`. | string | -| subActionParams | The parameters of the subaction. | object | - -#### `subActionParams (pushToService)` - -| Property | Description | Type | -| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | -| incident | The ServiceNow security incident. | object | -| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | - -The following table describes the properties of the `incident` object. - -| Property | Description | Type | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -| short_description | The title of the security incident. | string | -| description | The description of the security incident. | string _(optional)_ | -| externalId | The ID of the security incident in ServiceNow. If present, the security incident is updated. Otherwise, a new security incident is created. | string _(optional)_ | -| priority | The priority in ServiceNow. | string _(optional)_ | -| dest_ip | A list of destination IPs related to the security incident. The IPs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | -| source_ip | A list of source IPs related to the security incident. The IPs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | -| malware_hash | A list of malware hashes related to the security incident. The hashes will be added as observables to the security incident. | (string \| string[]) _(optional)_ | -| malware_url | A list of malware URLs related to the security incident. The URLs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | -| category | The category in ServiceNow. | string _(optional)_ | -| subcategory | The subcategory in ServiceNow. | string _(optional)_ | -| correlation_id | The correlation id of the security incident. | string _(optional)_ | -| correlation_display | The correlation display of the security incident. | string _(optional)_ | - -#### `subActionParams (getFields)` - -No parameters for the `getFields` subaction. Provide an empty object `{}`. - -#### `subActionParams (getIncident)` - -| Property | Description | Type | -| ---------- | ---------------------------------------------- | ------ | -| externalId | The ID of the security incident in ServiceNow. | string | - - -#### `subActionParams (getChoices)` - -| Property | Description | Type | -| -------- | ---------------------------------------------------- | -------- | -| fields | An array of fields. Example: `[priority, category]`. | string[] | - ---- -## ServiceNow ITOM - -Refer to the [Run connector API documentation](https://www.elastic.co/guide/en/kibana/master/execute-connector-api.html#execute-connector-api-request-body) -for the full list of properties. - -### `params` - -| Property | Description | Type | -| --------------- | ----------------------------------------------------------------- | ------ | -| subAction | The subaction to perform. It can be `addEvent`, and `getChoices`. | string | -| subActionParams | The parameters of the subaction. | object | - -#### `subActionParams (addEvent)` - - -| Property | Description | Type | -| --------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -| source | The name of the event source type. | string _(optional)_ | -| event_class | Specific instance of the source. | string _(optional)_ | -| resource | The name of the resource. | string _(optional)_ | -| node | The Host that the event was triggered for. | string _(optional)_ | -| metric_name | Name of the metric. | string _(optional)_ | -| type | The type of event. | string _(optional)_ | -| severity | The category in ServiceNow. | string _(optional)_ | -| description | The subcategory in ServiceNow. | string _(optional)_ | -| additional_info | Any additional information about the event. | string _(optional)_ | -| message_key | This value is used for de-duplication of events. All actions sharing this key will be associated with the same ServiceNow alert. | string _(optional)_ | -| time_of_event | The time of the event. | string _(optional)_ | - -Refer to [ServiceNow documentation](https://docs.servicenow.com/bundle/rome-it-operations-management/page/product/event-management/task/send-events-via-web-service.html) for more information about the properties. - -#### `subActionParams (getChoices)` - -| Property | Description | Type | -| -------- | ------------------------------------------ | -------- | -| fields | An array of fields. Example: `[severity]`. | string[] | - ---- -## Jira - -The [Jira user documentation `params`](https://www.elastic.co/guide/en/kibana/master/jira-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. -### `params` - -| Property | Description | Type | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------ | -| subAction | The subaction to perform. It can be `pushToService`, `getIncident`, `issueTypes`, `fieldsByIssueType`, `issues`, `issue`, and `getFields`. | string | -| subActionParams | The parameters of the subaction. | object | - -#### `subActionParams (pushToService)` - -| Property | Description | Type | -| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | -| incident | The Jira incident. | object | -| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | - -The following table describes the properties of the `incident` object. - -| Property | Description | Type | -| ----------- | ------------------------------------------------------------------------------------------------------- | --------------------- | -| summary | The title of the issue. | string | -| description | The description of the issue. | string _(optional)_ | -| externalId | The ID of the issue in Jira. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | -| issueType | The ID of the issue type in Jira. | string _(optional)_ | -| priority | The name of the priority in Jira. Example: `Medium`. | string _(optional)_ | -| labels | An array of labels. Labels cannot contain spaces. | string[] _(optional)_ | -| parent | The ID or key of the parent issue. Only for `Sub-task` issue types. | string _(optional)_ | - -#### `subActionParams (getIncident)` - -| Property | Description | Type | -| ---------- | ---------------------------- | ------ | -| externalId | The ID of the issue in Jira. | string | - -#### `subActionParams (issueTypes)` - -No parameters for the `issueTypes` subaction. Provide an empty object `{}`. - -#### `subActionParams (fieldsByIssueType)` - -| Property | Description | Type | -| -------- | --------------------------------- | ------ | -| id | The ID of the issue type in Jira. | string | - -#### `subActionParams (issues)` - -| Property | Description | Type | -| -------- | ------------------------ | ------ | -| title | The title to search for. | string | - -#### `subActionParams (issue)` - -| Property | Description | Type | -| -------- | ---------------------------- | ------ | -| id | The ID of the issue in Jira. | string | - -#### `subActionParams (getFields)` - -No parameters for the `getFields` subaction. Provide an empty object `{}`. - ---- - -## IBM Resilient - -The [IBM Resilient user documentation `params`](https://www.elastic.co/guide/en/kibana/master/resilient-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. - -### `params` - -| Property | Description | Type | -| --------------- | ------------------------------------------------------------------------------------------------- | ------ | -| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `incidentTypes`, and `severity. | string | -| subActionParams | The parameters of the subaction. | object | - -#### `subActionParams (pushToService)` - -| Property | Description | Type | -| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | -| incident | The IBM Resilient incident. | object | -| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | - -The following table describes the properties of the `incident` object. - -| Property | Description | Type | -| ------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------- | -| name | The title of the incident. | string _(optional)_ | -| description | The description of the incident. | string _(optional)_ | -| externalId | The ID of the incident in IBM Resilient. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | -| incidentTypes | An array with the IDs of IBM Resilient incident types. | number[] _(optional)_ | -| severityCode | IBM Resilient ID of the severity code. | number _(optional)_ | - -#### `subActionParams (getFields)` - -No parameters for the `getFields` subaction. Provide an empty object `{}`. - -#### `subActionParams (incidentTypes)` - -No parameters for the `incidentTypes` subaction. Provide an empty object `{}`. - -#### `subActionParams (severity)` - -No parameters for the `severity` subaction. Provide an empty object `{}`. - ---- -## Swimlane - - -### `params` - -| Property | Description | Type | -| --------------- | ---------------------------------------------------- | ------ | -| subAction | The subaction to perform. It can be `pushToService`. | string | -| subActionParams | The parameters of the subaction. | object | - - -`subActionParams (pushToService)` - -| Property | Description | Type | -| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | -| incident | The Swimlane incident. | object | -| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | - - -The following table describes the properties of the `incident` object. - -| Property | Description | Type | -| ----------- | -------------------------------- | ------------------- | -| alertId | The alert id. | string _(optional)_ | -| caseId | The case id of the incident. | string _(optional)_ | -| caseName | The case name of the incident. | string _(optional)_ | -| description | The description of the incident. | string _(optional)_ | -| ruleName | The rule name. | string _(optional)_ | -| severity | The severity of the incident. | string _(optional)_ | ---- # Command Line Utility The [`kbn-action`](https://github.com/pmuellr/kbn-action) tool can be used to send HTTP requests to the Actions plugin. For instance, to create a Slack action from the `.slack` Action Type, use the following command: @@ -556,43 +228,3 @@ $ kbn-action create .slack "post to slack" '{"webhookUrl": "https://hooks.slack. "version": "WzMsMV0=" } ``` - -# Developing New Action Types - -When creating a new action type, your plugin will eventually call `server.plugins.actions.setup.registerType()` to register the type with the actions plugin, but there are some additional things to think about about and implement. - -Consider working with the alerting team on early structure /design feedback of new actions, especially as the APIs and infrastructure are still under development. - -Don't forget to ping @elastic/security-detections-response to see if the new connector should be enabled within their solution. - -## licensing - -Currently actions are licensed as "basic" if the action only interacts with the stack, eg the server log and es index actions. Other actions are at least "gold" level. - -## plugin location - -Currently actions that are licensed as "basic" **MUST** be implemented in the actions plugin, other actions can be implemented in any other plugin that pre-reqs the actions plugin. If the new action is generic across the stack, it probably belongs in the actions plugin, but if your action is very specific to a plugin/solution, it might be easiest to implement it in the plugin/solution. Keep in mind that if Kibana is run without the plugin being enabled, any actions defined in that plugin will not run, nor will those actions be available via APIs or UI. - -Actions that take URLs or hostnames should check that those values are allowed. The allowed host list utilities are currently internal to the actions plugin, and so such actions will need to be implemented in the actions plugin. Longer-term, we will expose these utilities so they can be used by alerts implemented in other plugins; see [issue #64659](https://github.com/elastic/kibana/issues/64659). - -## documentation - -You should create asciidoc for the new action type. Add an entry to the action type index - [`docs/user/alerting/action-types.asciidoc`](../../../docs/user/alerting/action-types.asciidoc), which points to a new document for the action type that should be in the directory [`docs/user/alerting/action-types`](../../../docs/user/alerting/action-types). - -We suggest following the template provided in `docs/action-type-template.asciidoc`. The [Email action type](https://www.elastic.co/guide/en/kibana/master/email-action-type.html) is an example of documentation created following the template. - -## tests - -The action type should have both jest tests and functional tests. For functional tests, if your action interacts with a 3rd party service via HTTP, you may be able to create a simulator for your service, to test with. See the existing functional test servers in the directory [`x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server`](../../test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server) - -## action type config and secrets - -Action types must define `config` and `secrets` which are used to create connectors. This data should be described with `@kbn/config-schema` object schemas, and you **MUST NOT** use `schema.maybe()` to define properties. - -This is due to the fact that the structures are persisted in saved objects, which performs partial updates on the persisted data. If a property value is already persisted, but an update either doesn't include the property, or sets it to `undefined`, the persisted value will not be changed. Beyond this being a semantic error in general, it also ends up invalidating the encryption used to save secrets, and will render the secrets will not be able to be unencrypted later. - -Instead of `schema.maybe()`, use `schema.nullable()`, which is the same as `schema.maybe()` except that when passed an `undefined` value, the object returned from the validation will be set to `null`. The resulting type will be `property-type | null`, whereas with `schema.maybe()` it would be `property-type | undefined`. - -## user interface - -To make this action usable in the Kibana UI, you will need to provide all the UI editing aspects of the action. The existing action type user interfaces are defined in [`x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types`](../triggers_actions_ui/public/application/components/builtin_action_types). For more information, see the [UI documentation](../triggers_actions_ui/README.md#create-and-register-new-action-type-ui). \ No newline at end of file diff --git a/x-pack/plugins/actions/common/index.ts b/x-pack/plugins/actions/common/index.ts index 547aad66e6776..95b3d9e6c7c07 100644 --- a/x-pack/plugins/actions/common/index.ts +++ b/x-pack/plugins/actions/common/index.ts @@ -13,16 +13,8 @@ export * from './alert_history_schema'; export * from './rewrite_request_case'; export * from './mustache_template'; export * from './validate_email_addresses'; -export * from './servicenow_config'; export * from './connector_feature_config'; export const BASE_ACTION_API_PATH = '/api/actions'; export const INTERNAL_BASE_ACTION_API_PATH = '/internal/actions'; export const ACTIONS_FEATURE_ID = 'actions'; - -// supported values for `service` in addition to nodemailer's list of well-known services -export enum AdditionalEmailServices { - ELASTIC_CLOUD = 'elastic_cloud', - EXCHANGE = 'exchange_server', - OTHER = 'other', -} diff --git a/x-pack/plugins/actions/common/types.ts b/x-pack/plugins/actions/common/types.ts index 7db57477f8f3c..052ebc108077a 100644 --- a/x-pack/plugins/actions/common/types.ts +++ b/x-pack/plugins/actions/common/types.ts @@ -7,6 +7,12 @@ import { LicenseType } from '@kbn/licensing-plugin/common/types'; +export { + AlertingConnectorFeatureId, + CasesConnectorFeatureId, + UptimeConnectorFeatureId, + SecurityConnectorFeatureId, +} from './connector_feature_config'; export interface ActionType { id: string; name: string; diff --git a/x-pack/plugins/actions/server/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client.test.ts index 1c1a6f7167b8f..79810d6cd8572 100644 --- a/x-pack/plugins/actions/server/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client.test.ts @@ -36,13 +36,13 @@ import { } from './authorization/get_authorization_mode_by_source'; import { actionsAuthorizationMock } from './authorization/actions_authorization.mock'; import { trackLegacyRBACExemption } from './lib/track_legacy_rbac_exemption'; -import { ConnectorTokenClient } from './builtin_action_types/lib/connector_token_client'; +import { ConnectorTokenClient } from './lib/connector_token_client'; import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; import { Logger } from '@kbn/core/server'; -import { connectorTokenClientMock } from './builtin_action_types/lib/connector_token_client.mock'; +import { connectorTokenClientMock } from './lib/connector_token_client.mock'; import { inMemoryMetricsMock } from './monitoring/in_memory_metrics.mock'; -import { getOAuthJwtAccessToken } from './builtin_action_types/lib/get_oauth_jwt_access_token'; -import { getOAuthClientCredentialsAccessToken } from './builtin_action_types/lib/get_oauth_client_credentials_access_token'; +import { getOAuthJwtAccessToken } from './lib/get_oauth_jwt_access_token'; +import { getOAuthClientCredentialsAccessToken } from './lib/get_oauth_client_credentials_access_token'; import { OAuthParams } from './routes/get_oauth_access_token'; jest.mock('@kbn/core-saved-objects-utils-server', () => { @@ -74,10 +74,10 @@ jest.mock('./authorization/get_authorization_mode_by_source', () => { }; }); -jest.mock('./builtin_action_types/lib/get_oauth_jwt_access_token', () => ({ +jest.mock('./lib/get_oauth_jwt_access_token', () => ({ getOAuthJwtAccessToken: jest.fn(), })); -jest.mock('./builtin_action_types/lib/get_oauth_client_credentials_access_token', () => ({ +jest.mock('./lib/get_oauth_client_credentials_access_token', () => ({ getOAuthClientCredentialsAccessToken: jest.fn(), })); diff --git a/x-pack/plugins/actions/server/actions_client.ts b/x-pack/plugins/actions/server/actions_client.ts index 73d5b32d077a9..232d292008023 100644 --- a/x-pack/plugins/actions/server/actions_client.ts +++ b/x-pack/plugins/actions/server/actions_client.ts @@ -55,7 +55,7 @@ import { } from './authorization/get_authorization_mode_by_source'; import { connectorAuditEvent, ConnectorAuditAction } from './lib/audit_events'; import { trackLegacyRBACExemption } from './lib/track_legacy_rbac_exemption'; -import { isConnectorDeprecated } from './lib/is_conector_deprecated'; +import { isConnectorDeprecated } from './lib/is_connector_deprecated'; import { ActionsConfigurationUtilities } from './actions_config'; import { OAuthClientCredentialsParams, @@ -66,12 +66,12 @@ import { getOAuthJwtAccessToken, GetOAuthJwtConfig, GetOAuthJwtSecrets, -} from './builtin_action_types/lib/get_oauth_jwt_access_token'; +} from './lib/get_oauth_jwt_access_token'; import { getOAuthClientCredentialsAccessToken, GetOAuthClientCredentialsConfig, GetOAuthClientCredentialsSecrets, -} from './builtin_action_types/lib/get_oauth_client_credentials_access_token'; +} from './lib/get_oauth_client_credentials_access_token'; // We are assuming there won't be many actions. This is why we will load // all the actions in advance and assume the total count to not go over 10000. diff --git a/x-pack/plugins/actions/server/actions_config.ts b/x-pack/plugins/actions/server/actions_config.ts index 49f1d1fd5445e..611cf4a394ad7 100644 --- a/x-pack/plugins/actions/server/actions_config.ts +++ b/x-pack/plugins/actions/server/actions_config.ts @@ -15,7 +15,7 @@ import { ActionsConfig, AllowedHosts, EnabledActionTypes, CustomHostSettings } f import { getCanonicalCustomHostUrl } from './lib/custom_host_settings'; import { ActionTypeDisabledError } from './lib'; import { ProxySettings, ResponseSettings, SSLSettings } from './types'; -import { getSSLSettingsFromConfig } from './builtin_action_types/lib/get_node_ssl_options'; +import { getSSLSettingsFromConfig } from './lib/get_node_ssl_options'; import { ValidateEmailAddressesOptions, validateEmailAddresses, diff --git a/x-pack/plugins/actions/server/builtin_action_types/index.test.ts b/x-pack/plugins/actions/server/builtin_action_types/index.test.ts deleted file mode 100644 index 2465e64179a7b..0000000000000 --- a/x-pack/plugins/actions/server/builtin_action_types/index.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ActionExecutor, TaskRunnerFactory } from '../lib'; -import { ActionTypeRegistry } from '../action_type_registry'; -import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { registerBuiltInActionTypes } from '.'; -import { Logger } from '@kbn/core/server'; -import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../actions_config.mock'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import { inMemoryMetricsMock } from '../monitoring/in_memory_metrics.mock'; - -const ACTION_TYPE_IDS = [ - '.index', - '.email', - '.pagerduty', - '.server-log', - '.slack', - '.swimlane', - '.teams', - '.webhook', - '.xmatters', -]; - -export function createActionTypeRegistry(): { - logger: jest.Mocked; - actionTypeRegistry: ActionTypeRegistry; -} { - const logger = loggingSystemMock.create().get() as jest.Mocked; - const inMemoryMetrics = inMemoryMetricsMock.create(); - const actionTypeRegistry = new ActionTypeRegistry({ - taskManager: taskManagerMock.createSetup(), - licensing: licensingMock.createSetup(), - taskRunnerFactory: new TaskRunnerFactory( - new ActionExecutor({ isESOCanEncrypt: true }), - inMemoryMetrics - ), - actionsConfigUtils: actionsConfigMock.create(), - licenseState: licenseStateMock.create(), - preconfiguredActions: [], - }); - registerBuiltInActionTypes({ - logger, - actionTypeRegistry, - actionsConfigUtils: actionsConfigMock.create(), - }); - return { logger, actionTypeRegistry }; -} - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('action is registered', () => { - test('gets registered with builtin actions', () => { - const { actionTypeRegistry } = createActionTypeRegistry(); - ACTION_TYPE_IDS.forEach((id) => expect(actionTypeRegistry.has(id)).toEqual(true)); - }); -}); diff --git a/x-pack/plugins/actions/server/builtin_action_types/index.ts b/x-pack/plugins/actions/server/builtin_action_types/index.ts deleted file mode 100644 index 587fdd4f20d2d..0000000000000 --- a/x-pack/plugins/actions/server/builtin_action_types/index.ts +++ /dev/null @@ -1,86 +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 { Logger } from '@kbn/core/server'; -import { ActionTypeRegistry } from '../action_type_registry'; -import { ActionsConfigurationUtilities } from '../actions_config'; - -import { getActionType as getEmailActionType } from './email'; -import { getActionType as getIndexActionType } from './es_index'; -import { getActionType as getPagerDutyActionType } from './pagerduty'; -import { getActionType as getSwimlaneActionType } from './swimlane'; -import { getActionType as getServerLogActionType } from './server_log'; -import { getActionType as getSlackActionType } from './slack'; -import { getActionType as getWebhookActionType } from './webhook'; -import { getActionType as getCasesWebhookActionType } from './cases_webhook'; -import { getActionType as getXmattersActionType } from './xmatters'; -import { - getServiceNowITSMActionType, - getServiceNowSIRActionType, - getServiceNowITOMActionType, -} from './servicenow'; -import { getActionType as getJiraActionType } from './jira'; -import { getActionType as getResilientActionType } from './resilient'; -import { getActionType as getTeamsActionType } from './teams'; -export type { ActionParamsType as EmailActionParams } from './email'; -export { ActionTypeId as EmailActionTypeId } from './email'; -export type { ActionParamsType as IndexActionParams } from './es_index'; -export { ActionTypeId as IndexActionTypeId } from './es_index'; -export type { ActionParamsType as PagerDutyActionParams } from './pagerduty'; -export { ActionTypeId as PagerDutyActionTypeId } from './pagerduty'; -export type { ActionParamsType as ServerLogActionParams } from './server_log'; -export { ActionTypeId as ServerLogActionTypeId } from './server_log'; -export type { ActionParamsType as SlackActionParams } from './slack'; -export { ActionTypeId as SlackActionTypeId } from './slack'; -export type { ActionParamsType as WebhookActionParams } from './webhook'; -export type { ActionParamsType as CasesWebhookActionParams } from './cases_webhook'; -export { ActionTypeId as CasesWebhookActionTypeId } from './cases_webhook'; -export { ActionTypeId as WebhookActionTypeId } from './webhook'; -export type { ActionParamsType as XmattersActionParams } from './xmatters'; -export { ActionTypeId as XmattersActionTypeId } from './xmatters'; -export type { ActionParamsType as ServiceNowActionParams } from './servicenow'; -export { - ServiceNowITSMActionTypeId, - ServiceNowSIRActionTypeId, - ServiceNowITOMActionTypeId, -} from './servicenow'; -export type { ActionParamsType as JiraActionParams } from './jira'; -export { ActionTypeId as JiraActionTypeId } from './jira'; -export type { ActionParamsType as ResilientActionParams } from './resilient'; -export { ActionTypeId as ResilientActionTypeId } from './resilient'; -export type { ActionParamsType as TeamsActionParams } from './teams'; -export { ActionTypeId as TeamsActionTypeId } from './teams'; - -export function registerBuiltInActionTypes({ - actionsConfigUtils: configurationUtilities, - actionTypeRegistry, - logger, - publicBaseUrl, -}: { - actionsConfigUtils: ActionsConfigurationUtilities; - actionTypeRegistry: ActionTypeRegistry; - logger: Logger; - publicBaseUrl?: string; -}) { - actionTypeRegistry.register( - getEmailActionType({ logger, configurationUtilities, publicBaseUrl }) - ); - actionTypeRegistry.register(getIndexActionType({ logger })); - actionTypeRegistry.register(getPagerDutyActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getSwimlaneActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getServerLogActionType({ logger })); - actionTypeRegistry.register(getSlackActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getWebhookActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getCasesWebhookActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getXmattersActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getServiceNowITSMActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getServiceNowSIRActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getServiceNowITOMActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getJiraActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getResilientActionType({ logger, configurationUtilities })); - actionTypeRegistry.register(getTeamsActionType({ logger, configurationUtilities })); -} diff --git a/x-pack/plugins/actions/server/index.ts b/x-pack/plugins/actions/server/index.ts index d04d0209cba45..7f9b45c368e90 100644 --- a/x-pack/plugins/actions/server/index.ts +++ b/x-pack/plugins/actions/server/index.ts @@ -25,31 +25,6 @@ export type { FindActionResult, } from './types'; -export type { - CasesWebhookActionTypeId, - CasesWebhookActionParams, - EmailActionTypeId, - EmailActionParams, - IndexActionTypeId, - IndexActionParams, - PagerDutyActionTypeId, - PagerDutyActionParams, - ServerLogActionTypeId, - ServerLogActionParams, - SlackActionTypeId, - SlackActionParams, - WebhookActionTypeId, - WebhookActionParams, - ServiceNowITSMActionTypeId, - ServiceNowSIRActionTypeId, - ServiceNowActionParams, - JiraActionTypeId, - JiraActionParams, - ResilientActionTypeId, - ResilientActionParams, - TeamsActionTypeId, - TeamsActionParams, -} from './builtin_action_types'; export type { PluginSetupContract, PluginStartContract } from './plugin'; export { asSavedObjectExecutionSource, asHttpRequestExecutionSource } from './lib'; diff --git a/x-pack/plugins/actions/server/lib/action_executor.ts b/x-pack/plugins/actions/server/lib/action_executor.ts index dd4f15894ee28..00a3980833ef2 100644 --- a/x-pack/plugins/actions/server/lib/action_executor.ts +++ b/x-pack/plugins/actions/server/lib/action_executor.ts @@ -227,6 +227,7 @@ export class ActionExecutor { secrets: validatedSecrets, isEphemeral, taskInfo, + configurationUtilities, }); } catch (err) { if (err.reason === ActionExecutionErrorReason.Validation) { diff --git a/x-pack/plugins/actions/server/lib/axios_utils.test.ts b/x-pack/plugins/actions/server/lib/axios_utils.test.ts index 6de88c268c234..1f94e610f60bf 100644 --- a/x-pack/plugins/actions/server/lib/axios_utils.test.ts +++ b/x-pack/plugins/actions/server/lib/axios_utils.test.ts @@ -20,7 +20,7 @@ import { } from './axios_utils'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { actionsConfigMock } from '../actions_config.mock'; -import { getCustomAgents } from '../builtin_action_types/lib/get_custom_agents'; +import { getCustomAgents } from './get_custom_agents'; const TestUrl = 'https://elastic.co/foo/bar/baz'; diff --git a/x-pack/plugins/actions/server/lib/axios_utils.ts b/x-pack/plugins/actions/server/lib/axios_utils.ts index 18faa1f4d089c..9d1401ee65343 100644 --- a/x-pack/plugins/actions/server/lib/axios_utils.ts +++ b/x-pack/plugins/actions/server/lib/axios_utils.ts @@ -8,7 +8,7 @@ import { isObjectLike, isEmpty } from 'lodash'; import { AxiosInstance, Method, AxiosResponse, AxiosRequestConfig } from 'axios'; import { Logger } from '@kbn/core/server'; -import { getCustomAgents } from '../builtin_action_types/lib/get_custom_agents'; +import { getCustomAgents } from './get_custom_agents'; import { ActionsConfigurationUtilities } from '../actions_config'; export const request = async ({ diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.mock.ts b/x-pack/plugins/actions/server/lib/connector_token_client.mock.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.mock.ts rename to x-pack/plugins/actions/server/lib/connector_token_client.mock.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.test.ts b/x-pack/plugins/actions/server/lib/connector_token_client.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.test.ts rename to x-pack/plugins/actions/server/lib/connector_token_client.test.ts index 1aa8bbb3da9a7..d1308537400b4 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.test.ts +++ b/x-pack/plugins/actions/server/lib/connector_token_client.test.ts @@ -10,7 +10,7 @@ import { loggingSystemMock, savedObjectsClientMock } from '@kbn/core/server/mock import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; import { ConnectorTokenClient } from './connector_token_client'; import { Logger } from '@kbn/core/server'; -import { ConnectorToken } from '../../types'; +import { ConnectorToken } from '../types'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('@kbn/core-saved-objects-utils-server', () => { diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.ts b/x-pack/plugins/actions/server/lib/connector_token_client.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.ts rename to x-pack/plugins/actions/server/lib/connector_token_client.ts index df1615d503329..79febc6f79dc8 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/connector_token_client.ts +++ b/x-pack/plugins/actions/server/lib/connector_token_client.ts @@ -8,8 +8,8 @@ import { omitBy, isUndefined } from 'lodash'; import { EncryptedSavedObjectsClient } from '@kbn/encrypted-saved-objects-plugin/server'; import { Logger, SavedObjectsClientContract, SavedObjectsUtils } from '@kbn/core/server'; -import { ConnectorToken } from '../../types'; -import { CONNECTOR_TOKEN_SAVED_OBJECT_TYPE } from '../../constants/saved_objects'; +import { ConnectorToken } from '../types'; +import { CONNECTOR_TOKEN_SAVED_OBJECT_TYPE } from '../constants/saved_objects'; export const MAX_TOKENS_RETURNED = 1; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/create_jwt_assertion.test.ts b/x-pack/plugins/actions/server/lib/create_jwt_assertion.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/create_jwt_assertion.test.ts rename to x-pack/plugins/actions/server/lib/create_jwt_assertion.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/create_jwt_assertion.ts b/x-pack/plugins/actions/server/lib/create_jwt_assertion.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/create_jwt_assertion.ts rename to x-pack/plugins/actions/server/lib/create_jwt_assertion.ts diff --git a/x-pack/plugins/actions/server/lib/ensure_sufficient_license.ts b/x-pack/plugins/actions/server/lib/ensure_sufficient_license.ts index 2bd3a6aa24576..e7d781a7218bd 100644 --- a/x-pack/plugins/actions/server/lib/ensure_sufficient_license.ts +++ b/x-pack/plugins/actions/server/lib/ensure_sufficient_license.ts @@ -7,11 +7,11 @@ import { LICENSE_TYPE } from '@kbn/licensing-plugin/common/types'; import { ActionType } from '../types'; -import { ServerLogActionTypeId, IndexActionTypeId } from '../builtin_action_types'; import { ActionTypeConfig, ActionTypeSecrets, ActionTypeParams } from '../types'; const CASE_ACTION_TYPE_ID = '.case'; - +const ServerLogActionTypeId = '.server-log'; +const IndexActionTypeId = '.index'; const ACTIONS_SCOPED_WITHIN_STACK = new Set([ ServerLogActionTypeId, IndexActionTypeId, diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.test.ts b/x-pack/plugins/actions/server/lib/get_custom_agents.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.test.ts rename to x-pack/plugins/actions/server/lib/get_custom_agents.test.ts index 4d83cce7be1a7..9bf1e26f1d374 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.test.ts +++ b/x-pack/plugins/actions/server/lib/get_custom_agents.test.ts @@ -11,7 +11,7 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; import { Logger } from '@kbn/core/server'; import { getCustomAgents } from './get_custom_agents'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; const logger = loggingSystemMock.create().get() as jest.Mocked; const targetHost = 'elastic.co'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.ts b/x-pack/plugins/actions/server/lib/get_custom_agents.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.ts rename to x-pack/plugins/actions/server/lib/get_custom_agents.ts index 2654198828eef..49eca54afcde7 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_custom_agents.ts +++ b/x-pack/plugins/actions/server/lib/get_custom_agents.ts @@ -10,7 +10,7 @@ import { Agent as HttpsAgent, AgentOptions } from 'https'; import HttpProxyAgent from 'http-proxy-agent'; import { HttpsProxyAgent } from 'https-proxy-agent'; import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { ActionsConfigurationUtilities } from '../actions_config'; import { getNodeSSLOptions, getSSLSettingsFromConfig } from './get_node_ssl_options'; interface GetCustomAgentsResponse { diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_node_ssl_options.test.ts b/x-pack/plugins/actions/server/lib/get_node_ssl_options.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_node_ssl_options.test.ts rename to x-pack/plugins/actions/server/lib/get_node_ssl_options.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_node_ssl_options.ts b/x-pack/plugins/actions/server/lib/get_node_ssl_options.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_node_ssl_options.ts rename to x-pack/plugins/actions/server/lib/get_node_ssl_options.ts index 5892442a1a319..e7246aaf3aa16 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_node_ssl_options.ts +++ b/x-pack/plugins/actions/server/lib/get_node_ssl_options.ts @@ -7,7 +7,7 @@ import { PeerCertificate } from 'tls'; import { Logger } from '@kbn/core/server'; -import { SSLSettings } from '../../types'; +import { SSLSettings } from '../types'; export function getNodeSSLOptions( logger: Logger, diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.test.ts b/x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.test.ts rename to x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.test.ts index c3464a11e557e..8e611b0e5e67b 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.test.ts +++ b/x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.test.ts @@ -8,7 +8,7 @@ import sinon from 'sinon'; import { Logger } from '@kbn/core/server'; import { asyncForEach } from '@kbn/std'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; import { connectorTokenClientMock } from './connector_token_client.mock'; import { getOAuthClientCredentialsAccessToken } from './get_oauth_client_credentials_access_token'; import { requestOAuthClientCredentialsToken } from './request_oauth_client_credentials_token'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.ts b/x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.ts rename to x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.ts index 1cce245a154c2..c6de6011d6f6d 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_client_credentials_access_token.ts +++ b/x-pack/plugins/actions/server/lib/get_oauth_client_credentials_access_token.ts @@ -5,8 +5,8 @@ * 2.0. */ import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ConnectorToken, ConnectorTokenClientContract } from '../../types'; +import { ActionsConfigurationUtilities } from '../actions_config'; +import { ConnectorToken, ConnectorTokenClientContract } from '../types'; import { requestOAuthClientCredentialsToken } from './request_oauth_client_credentials_token'; export interface GetOAuthClientCredentialsConfig { diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.test.ts b/x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.test.ts rename to x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.test.ts index 0fe837fc0581a..f647056649a21 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.test.ts +++ b/x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.test.ts @@ -8,7 +8,7 @@ import sinon from 'sinon'; import { Logger } from '@kbn/core/server'; import { asyncForEach } from '@kbn/std'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; import { connectorTokenClientMock } from './connector_token_client.mock'; import { getOAuthJwtAccessToken } from './get_oauth_jwt_access_token'; import { createJWTAssertion } from './create_jwt_assertion'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.ts b/x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.ts rename to x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.ts index 1233a61c0f3c8..ce12f035400b2 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/get_oauth_jwt_access_token.ts +++ b/x-pack/plugins/actions/server/lib/get_oauth_jwt_access_token.ts @@ -5,8 +5,8 @@ * 2.0. */ import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ConnectorToken, ConnectorTokenClientContract } from '../../types'; +import { ActionsConfigurationUtilities } from '../actions_config'; +import { ConnectorToken, ConnectorTokenClientContract } from '../types'; import { createJWTAssertion } from './create_jwt_assertion'; import { requestOAuthJWTToken } from './request_oauth_jwt_token'; diff --git a/x-pack/plugins/actions/server/lib/is_conector_deprecated.test.ts b/x-pack/plugins/actions/server/lib/is_connector_deprecated.test.ts similarity index 97% rename from x-pack/plugins/actions/server/lib/is_conector_deprecated.test.ts rename to x-pack/plugins/actions/server/lib/is_connector_deprecated.test.ts index c3697cea6a34e..8d2a698563b0c 100644 --- a/x-pack/plugins/actions/server/lib/is_conector_deprecated.test.ts +++ b/x-pack/plugins/actions/server/lib/is_connector_deprecated.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { isConnectorDeprecated } from './is_conector_deprecated'; +import { isConnectorDeprecated } from './is_connector_deprecated'; describe('isConnectorDeprecated', () => { const connector = { diff --git a/x-pack/plugins/actions/server/lib/is_conector_deprecated.ts b/x-pack/plugins/actions/server/lib/is_connector_deprecated.ts similarity index 92% rename from x-pack/plugins/actions/server/lib/is_conector_deprecated.ts rename to x-pack/plugins/actions/server/lib/is_connector_deprecated.ts index ed46f5e685459..db5138cddc53f 100644 --- a/x-pack/plugins/actions/server/lib/is_conector_deprecated.ts +++ b/x-pack/plugins/actions/server/lib/is_connector_deprecated.ts @@ -40,7 +40,7 @@ export const isConnectorDeprecated = ( * the usesTableApi property to true to all connectors prior 7.16. Pre configured connectors * cannot be migrated. This check ensures that pre configured connectors without the * usesTableApi property explicitly in the kibana.yml file are considered deprecated. - * According to the schema defined here x-pack/plugins/actions/server/builtin_action_types/servicenow/schema.ts + * According to the schema defined here x-pack/plugins/stack_connector/server/connector_types/servicenow/schema.ts * if the property is not defined it will be set to true at the execution of the connector. */ if (!Object.hasOwn(connector.config, 'usesTableApi')) { @@ -51,7 +51,7 @@ export const isConnectorDeprecated = ( * Connector created prior to 7.16 will be migrated to have the usesTableApi property set to true. * Connectors created after 7.16 should have the usesTableApi property set to true or false. * If the usesTableApi is omitted on an API call it will be defaulted to true. Check the schema - * here x-pack/plugins/actions/server/builtin_action_types/servicenow/schema.ts. + * here x-pack/plugins/stack_connector/server/connector_types/servicenow/schema.ts. * The !! is to make TS happy. */ return !!connector.config.usesTableApi; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.test.ts b/x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.test.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.test.ts rename to x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.test.ts index 95964214dd6b1..20896e2691f10 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.test.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.test.ts @@ -11,7 +11,7 @@ jest.mock('axios', () => ({ import axios from 'axios'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; import { requestOAuthClientCredentialsToken } from './request_oauth_client_credentials_token'; const createAxiosInstanceMock = axios.create as jest.Mock; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.ts b/x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.ts similarity index 90% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.ts rename to x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.ts index 784e5958803a2..9cfa2ead2f959 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_client_credentials_token.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_client_credentials_token.ts @@ -5,9 +5,9 @@ * 2.0. */ import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { ActionsConfigurationUtilities } from '../actions_config'; import { OAuthTokenResponse, requestOAuthToken } from './request_oauth_token'; -import { RewriteResponseCase } from '../../../common'; +import { RewriteResponseCase } from '../../common'; export const OAUTH_CLIENT_CREDENTIALS_GRANT_TYPE = 'client_credentials'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.test.ts b/x-pack/plugins/actions/server/lib/request_oauth_jwt_token.test.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.test.ts rename to x-pack/plugins/actions/server/lib/request_oauth_jwt_token.test.ts index 43d4fd7180549..318775762bbbd 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.test.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_jwt_token.test.ts @@ -11,7 +11,7 @@ jest.mock('axios', () => ({ import axios from 'axios'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; import { requestOAuthJWTToken } from './request_oauth_jwt_token'; const createAxiosInstanceMock = axios.create as jest.Mock; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.ts b/x-pack/plugins/actions/server/lib/request_oauth_jwt_token.ts similarity index 91% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.ts rename to x-pack/plugins/actions/server/lib/request_oauth_jwt_token.ts index 84b31f590413f..d5d476c533557 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_jwt_token.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_jwt_token.ts @@ -5,9 +5,9 @@ * 2.0. */ import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { ActionsConfigurationUtilities } from '../actions_config'; import { OAuthTokenResponse, requestOAuthToken } from './request_oauth_token'; -import { RewriteResponseCase } from '../../../common'; +import { RewriteResponseCase } from '../../common'; // This is a standard for JSON Web Token (JWT) Profile // for OAuth 2.0 Client Authentication and Authorization Grants https://datatracker.ietf.org/doc/html/rfc7523#section-8.1 diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.test.ts b/x-pack/plugins/actions/server/lib/request_oauth_token.test.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.test.ts rename to x-pack/plugins/actions/server/lib/request_oauth_token.test.ts index 443a9234d7a08..cc9ea6a74517a 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.test.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_token.test.ts @@ -12,7 +12,7 @@ import axios from 'axios'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { requestOAuthToken } from './request_oauth_token'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '../actions_config.mock'; const createAxiosInstanceMock = axios.create as jest.Mock; const axiosInstanceMock = jest.fn(); diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.ts b/x-pack/plugins/actions/server/lib/request_oauth_token.ts similarity index 90% rename from x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.ts rename to x-pack/plugins/actions/server/lib/request_oauth_token.ts index 20016989e63e7..116d3f2cc3315 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/request_oauth_token.ts +++ b/x-pack/plugins/actions/server/lib/request_oauth_token.ts @@ -9,9 +9,9 @@ import qs from 'query-string'; import axios from 'axios'; import stringify from 'json-stable-stringify'; import { Logger } from '@kbn/core/server'; -import { request } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { AsApiContract } from '../../../common'; +import { request } from './axios_utils'; +import { ActionsConfigurationUtilities } from '../actions_config'; +import { AsApiContract } from '../../common'; export interface OAuthTokenResponse { tokenType: string; diff --git a/x-pack/plugins/actions/server/mocks.ts b/x-pack/plugins/actions/server/mocks.ts index ebd7ed6bad453..3b8155818452f 100644 --- a/x-pack/plugins/actions/server/mocks.ts +++ b/x-pack/plugins/actions/server/mocks.ts @@ -16,7 +16,7 @@ import { actionsClientMock } from './actions_client.mock'; import { PluginSetupContract, PluginStartContract, renderActionParameterTemplates } from './plugin'; import { Services } from './types'; import { actionsAuthorizationMock } from './authorization/actions_authorization.mock'; -import { ConnectorTokenClient } from './builtin_action_types/lib/connector_token_client'; +import { ConnectorTokenClient } from './lib/connector_token_client'; export { actionsAuthorizationMock }; export { actionsClientMock }; const logger = loggingSystemMock.create().get() as jest.Mocked; diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 250751a1f5a46..d560beab681c4 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -15,7 +15,7 @@ import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; import { eventLogMock } from '@kbn/event-log-plugin/server/mocks'; -import { ActionType, ActionsApiRequestHandlerContext } from './types'; +import { ActionType, ActionsApiRequestHandlerContext, ExecutorType } from './types'; import { ActionsConfig } from './config'; import { ActionsPlugin, @@ -25,6 +25,10 @@ import { } from './plugin'; import { AlertHistoryEsIndexConnectorId } from '../common'; +const executor: ExecutorType<{}, {}, {}, void> = async (options) => { + return { status: 'ok', actionId: options.actionId }; +}; + describe('Actions Plugin', () => { describe('setup()', () => { let context: PluginInitializerContext; @@ -383,7 +387,15 @@ describe('Actions Plugin', () => { setup(getConfig()); // coreMock.createSetup doesn't support Plugin generics // eslint-disable-next-line @typescript-eslint/no-explicit-any - await plugin.setup(coreSetup as any, pluginsSetup); + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + pluginSetup.registerType({ + id: '.server-log', + name: 'Server log', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + executor, + }); + const pluginStart = await plugin.start(coreStart, pluginsStart); expect(pluginStart.preconfiguredActions.length).toEqual(1); @@ -393,7 +405,16 @@ describe('Actions Plugin', () => { it('should handle preconfiguredAlertHistoryEsIndex = true', async () => { setup(getConfig({ preconfiguredAlertHistoryEsIndex: true })); - await plugin.setup(coreSetup, pluginsSetup); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + pluginSetup.registerType({ + id: '.index', + name: 'ES Index', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + executor, + }); + const pluginStart = await plugin.start(coreStart, pluginsStart); expect(pluginStart.preconfiguredActions.length).toEqual(2); diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index 91e08d4950c61..fa70e0dc71354 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -49,7 +49,6 @@ import { createEphemeralExecutionEnqueuerFunction, createBulkExecutionEnqueuerFunction, } from './create_execute_function'; -import { registerBuiltInActionTypes } from './builtin_action_types'; import { registerActionsUsageCollector } from './usage'; import { ActionExecutor, @@ -92,12 +91,12 @@ import { getAlertHistoryEsIndex } from './preconfigured_connectors/alert_history import { createAlertHistoryIndexTemplate } from './preconfigured_connectors/alert_history_es_index/create_alert_history_index_template'; import { ACTIONS_FEATURE_ID, AlertHistoryEsIndexConnectorId } from '../common'; import { EVENT_LOG_ACTIONS, EVENT_LOG_PROVIDER } from './constants/event_log'; -import { ConnectorTokenClient } from './builtin_action_types/lib/connector_token_client'; +import { ConnectorTokenClient } from './lib/connector_token_client'; import { InMemoryMetrics, registerClusterCollector, registerNodeCollector } from './monitoring'; import { isConnectorDeprecated, ConnectorWithOptionalDeprecation, -} from './lib/is_conector_deprecated'; +} from './lib/is_connector_deprecated'; import { createSubActionConnectorFramework } from './sub_action_framework'; import { IServiceAbstract, SubActionConnectorType } from './sub_action_framework/types'; import { SubActionConnector } from './sub_action_framework/sub_action_connector'; @@ -275,13 +274,6 @@ export class ActionsPlugin implements Plugin { return Object.freeze({ name: i18n.translate('xpack.actions.alertHistoryEsIndexConnector.name', { diff --git a/x-pack/plugins/actions/server/routes/get_well_known_email_service.test.ts b/x-pack/plugins/actions/server/routes/get_well_known_email_service.test.ts deleted file mode 100644 index 26048c25ce157..0000000000000 --- a/x-pack/plugins/actions/server/routes/get_well_known_email_service.test.ts +++ /dev/null @@ -1,175 +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 { getWellKnownEmailServiceRoute } from './get_well_known_email_service'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { mockHandlerArguments } from './legacy/_mock_handler_arguments'; -import { verifyAccessAndContext } from './verify_access_and_context'; - -jest.mock('./verify_access_and_context', () => ({ - verifyAccessAndContext: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); - (verifyAccessAndContext as jest.Mock).mockImplementation((license, handler) => handler); -}); - -describe('getWellKnownEmailServiceRoute', () => { - it('returns config for well known email service', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getWellKnownEmailServiceRoute(router, licenseState); - - const [config, handler] = router.get.mock.calls[0]; - expect(config.path).toMatchInlineSnapshot( - `"/internal/actions/connector/_email_config/{service}"` - ); - - const [context, req, res] = mockHandlerArguments( - {}, - { - params: { service: 'gmail' }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Object { - "host": "smtp.gmail.com", - "port": 465, - "secure": true, - }, - } - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: { - host: 'smtp.gmail.com', - port: 465, - secure: true, - }, - }); - }); - - it('returns config for elastic cloud email service', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getWellKnownEmailServiceRoute(router, licenseState); - - const [config, handler] = router.get.mock.calls[0]; - expect(config.path).toMatchInlineSnapshot( - `"/internal/actions/connector/_email_config/{service}"` - ); - - const [context, req, res] = mockHandlerArguments( - {}, - { - params: { service: 'elastic_cloud' }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Object { - "host": "dockerhost", - "port": 10025, - "secure": false, - }, - } - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: { - host: 'dockerhost', - port: 10025, - secure: false, - }, - }); - }); - - it('returns empty for unknown service', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getWellKnownEmailServiceRoute(router, licenseState); - - const [config, handler] = router.get.mock.calls[0]; - expect(config.path).toMatchInlineSnapshot( - `"/internal/actions/connector/_email_config/{service}"` - ); - - const [context, req, res] = mockHandlerArguments( - {}, - { - params: { service: 'foo' }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Object {}, - } - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: {}, - }); - }); - - it('ensures the license allows getting well known email service config', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getWellKnownEmailServiceRoute(router, licenseState); - - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - {}, - { - params: { service: 'gmail' }, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(verifyAccessAndContext).toHaveBeenCalledWith(licenseState, expect.any(Function)); - }); - - it('ensures the license check prevents getting well known email service config', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyAccessAndContext as jest.Mock).mockImplementation(() => async () => { - throw new Error('OMG'); - }); - - getWellKnownEmailServiceRoute(router, licenseState); - - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - {}, - { - params: { service: 'gmail' }, - }, - ['ok'] - ); - - expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyAccessAndContext).toHaveBeenCalledWith(licenseState, expect.any(Function)); - }); -}); diff --git a/x-pack/plugins/actions/server/routes/get_well_known_email_service.ts b/x-pack/plugins/actions/server/routes/get_well_known_email_service.ts deleted file mode 100644 index 9a74bd7afc90e..0000000000000 --- a/x-pack/plugins/actions/server/routes/get_well_known_email_service.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { IRouter } from '@kbn/core/server'; -import nodemailerGetService from 'nodemailer/lib/well-known'; -import SMTPConnection from 'nodemailer/lib/smtp-connection'; -import { ILicenseState } from '../lib'; -import { AdditionalEmailServices, INTERNAL_BASE_ACTION_API_PATH } from '../../common'; -import { ActionsRequestHandlerContext } from '../types'; -import { verifyAccessAndContext } from './verify_access_and_context'; -import { ELASTIC_CLOUD_SERVICE } from '../builtin_action_types/email'; - -const paramSchema = schema.object({ - service: schema.string(), -}); - -export const getWellKnownEmailServiceRoute = ( - router: IRouter, - licenseState: ILicenseState -) => { - router.get( - { - path: `${INTERNAL_BASE_ACTION_API_PATH}/connector/_email_config/{service}`, - validate: { - params: paramSchema, - }, - }, - router.handleLegacyErrors( - verifyAccessAndContext(licenseState, async function (context, req, res) { - const { service } = req.params; - - let response: SMTPConnection.Options = {}; - if (service === AdditionalEmailServices.ELASTIC_CLOUD) { - response = ELASTIC_CLOUD_SERVICE; - } else { - const serviceEntry = nodemailerGetService(service); - if (serviceEntry) { - response = { - host: serviceEntry.host, - port: serviceEntry.port, - secure: serviceEntry.secure, - }; - } - } - - return res.ok({ - body: response, - }); - }) - ) - ); -}; diff --git a/x-pack/plugins/actions/server/routes/index.ts b/x-pack/plugins/actions/server/routes/index.ts index 501d7045e6d92..9ff98e1ee940b 100644 --- a/x-pack/plugins/actions/server/routes/index.ts +++ b/x-pack/plugins/actions/server/routes/index.ts @@ -16,7 +16,6 @@ import { getActionRoute } from './get'; import { getAllActionRoute } from './get_all'; import { connectorTypesRoute } from './connector_types'; import { updateActionRoute } from './update'; -import { getWellKnownEmailServiceRoute } from './get_well_known_email_service'; import { getOAuthAccessToken } from './get_oauth_access_token'; import { defineLegacyRoutes } from './legacy'; import { ActionsConfigurationUtilities } from '../actions_config'; @@ -42,5 +41,4 @@ export function defineRoutes(opts: RouteOptions) { executeActionRoute(router, licenseState); getOAuthAccessToken(router, licenseState, actionsConfigUtils); - getWellKnownEmailServiceRoute(router, licenseState); } diff --git a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts index 3524d4ae37867..bbe8009566e94 100644 --- a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts +++ b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts @@ -6,36 +6,26 @@ */ import { transformConnectorsForExport } from './transform_connectors_for_export'; -import { ActionTypeRegistry, ActionTypeRegistryOpts } from '../action_type_registry'; -import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../actions_config.mock'; -import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { ActionExecutor, TaskRunnerFactory } from '../lib'; -import { registerBuiltInActionTypes } from '../builtin_action_types'; -import { inMemoryMetricsMock } from '../monitoring/in_memory_metrics.mock'; +import { actionTypeRegistryMock } from '../action_type_registry.mock'; +import { ActionType, ActionTypeRegistryContract, ActionTypeSecrets } from '../types'; describe('transform connector for export', () => { - const inMemoryMetrics = inMemoryMetricsMock.create(); - const actionTypeRegistryParams: ActionTypeRegistryOpts = { - licensing: licensingMock.createSetup(), - taskManager: taskManagerMock.createSetup(), - taskRunnerFactory: new TaskRunnerFactory( - new ActionExecutor({ isESOCanEncrypt: true }), - inMemoryMetrics - ), - actionsConfigUtils: actionsConfigMock.create(), - licenseState: licenseStateMock.create(), - preconfiguredActions: [], + const connectorType: jest.Mocked = { + id: 'test', + name: 'Test', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + executor: jest.fn(), + validate: { + secrets: { + schema: { + validate: (value: unknown) => value as ActionTypeSecrets, + }, + }, + }, }; - const actionTypeRegistry: ActionTypeRegistry = new ActionTypeRegistry(actionTypeRegistryParams); - - registerBuiltInActionTypes({ - logger: loggingSystemMock.create().get(), - actionTypeRegistry, - actionsConfigUtils: actionsConfigMock.create(), - }); + const actionTypeRegistry: jest.Mocked = + actionTypeRegistryMock.create(); const connectorsWithNoSecrets = [ { @@ -239,6 +229,7 @@ describe('transform connector for export', () => { ]; it('should not change connectors without secrets', () => { + actionTypeRegistry.get.mockReturnValue(connectorType); expect(transformConnectorsForExport(connectorsWithNoSecrets, actionTypeRegistry)).toEqual( connectorsWithNoSecrets.map((connector) => ({ ...connector, @@ -251,6 +242,18 @@ describe('transform connector for export', () => { }); it('should remove secrets for connectors with secrets', () => { + actionTypeRegistry.get.mockReturnValue({ + ...connectorType, + validate: { + secrets: { + schema: { + validate: (value: unknown) => { + throw new Error('i need secrets!'); + }, + }, + }, + }, + }); expect(transformConnectorsForExport(connectorsWithSecrets, actionTypeRegistry)).toEqual( connectorsWithSecrets.map((connector) => ({ ...connector, diff --git a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts index 34ff241c36852..111d5dd12d4ab 100644 --- a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts +++ b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts @@ -7,13 +7,12 @@ import { SavedObject } from '@kbn/core/server'; import { ActionsConfigurationUtilities } from '../actions_config'; -import { ActionTypeRegistry } from '../action_type_registry'; import { validateSecrets } from '../lib'; -import { RawAction, ActionType } from '../types'; +import { RawAction, ActionType, ActionTypeRegistryContract } from '../types'; export function transformConnectorsForExport( connectors: SavedObject[], - actionTypeRegistry: ActionTypeRegistry + actionTypeRegistry: ActionTypeRegistryContract ): Array> { return connectors.map((c) => { const connector = c as SavedObject; diff --git a/x-pack/plugins/actions/server/sub_action_framework/executor.test.ts b/x-pack/plugins/actions/server/sub_action_framework/executor.test.ts index d02a054360be7..5fc07c4b6f236 100644 --- a/x-pack/plugins/actions/server/sub_action_framework/executor.test.ts +++ b/x-pack/plugins/actions/server/sub_action_framework/executor.test.ts @@ -64,6 +64,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }); expect(res).toEqual({ @@ -84,6 +85,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }); expect(res).toEqual({ @@ -104,6 +106,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }); expect(res).toEqual({ @@ -122,6 +125,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }); expect(res).toEqual({ @@ -135,7 +139,14 @@ describe('Executor', () => { const executor = createExecutor(TestNoSubActions); await expect(async () => - executor({ actionId, params, config, secrets, services }) + executor({ + actionId, + params, + config, + secrets, + services, + configurationUtilities: mockedActionsConfig, + }) ).rejects.toThrowError('You should register at least one subAction for your connector type'); }); @@ -149,6 +160,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }) ).rejects.toThrowError( 'Sub action "not-exist" is not registered. Connector id: test-action-id. Connector name: Test. Connector type: .test' @@ -165,6 +177,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }) ).rejects.toThrowError( 'Method "not-exist" does not exists in service. Sub action: "testUrl". Connector id: test-action-id. Connector name: Test. Connector type: .test' @@ -181,6 +194,7 @@ describe('Executor', () => { config, secrets, services, + configurationUtilities: mockedActionsConfig, }) ).rejects.toThrowError( 'Method "notAFunction" must be a function. Connector id: test-action-id. Connector name: Test. Connector type: .test' @@ -191,7 +205,14 @@ describe('Executor', () => { const executor = createExecutor(TestExecutor); await expect(async () => - executor({ actionId, params: { ...params, subAction: 'echo' }, config, secrets, services }) + executor({ + actionId, + params: { ...params, subAction: 'echo' }, + config, + secrets, + services, + configurationUtilities: mockedActionsConfig, + }) ).rejects.toThrowError( 'Request validation failed (Error: [id]: expected value of type [string] but got [undefined])' ); diff --git a/x-pack/plugins/actions/server/types.ts b/x-pack/plugins/actions/server/types.ts index d809228e4eeda..ae344d4f62dbc 100644 --- a/x-pack/plugins/actions/server/types.ts +++ b/x-pack/plugins/actions/server/types.ts @@ -20,14 +20,10 @@ import { PluginSetupContract, PluginStartContract } from './plugin'; import { ActionsClient } from './actions_client'; import { ActionTypeExecutorResult } from '../common'; import { TaskInfo } from './lib/action_executor'; -import { ConnectorTokenClient } from './builtin_action_types/lib/connector_token_client'; +import { ConnectorTokenClient } from './lib/connector_token_client'; import { ActionsConfigurationUtilities } from './actions_config'; export type { ActionTypeExecutorResult, ActionTypeExecutorRawResult } from '../common'; -export type { GetFieldsByIssueTypeResponse as JiraGetFieldsResponse } from './builtin_action_types/jira/types'; -export type { GetCommonFieldsResponse as ServiceNowGetFieldsResponse } from './builtin_action_types/servicenow/types'; -export type { GetCommonFieldsResponse as ResilientGetFieldsResponse } from './builtin_action_types/resilient/types'; -export type { SwimlanePublicConfigurationType } from './builtin_action_types/swimlane/types'; export type WithoutQueryAndParams = Pick>; export type GetServicesFunction = (request: KibanaRequest) => Services; export type ActionTypeRegistryContract = PublicMethodsOf; @@ -66,6 +62,7 @@ export interface ActionTypeExecutorOptions { params: Params; isEphemeral?: boolean; taskInfo?: TaskInfo; + configurationUtilities: ActionsConfigurationUtilities; } export interface ActionResult { diff --git a/x-pack/plugins/cases/server/client/cases/types.ts b/x-pack/plugins/cases/server/client/cases/types.ts index 297d42b32ece9..c14cc66210614 100644 --- a/x-pack/plugins/cases/server/client/cases/types.ts +++ b/x-pack/plugins/cases/server/client/cases/types.ts @@ -8,16 +8,16 @@ import { PushToServiceApiParams as JiraPushToServiceApiParams, Incident as JiraIncident, -} from '@kbn/actions-plugin/server/builtin_action_types/jira/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/jira/types'; import { PushToServiceApiParams as ResilientPushToServiceApiParams, Incident as ResilientIncident, -} from '@kbn/actions-plugin/server/builtin_action_types/resilient/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/resilient/types'; import { PushToServiceApiParamsITSM as ServiceNowITSMPushToServiceApiParams, PushToServiceApiParamsSIR as ServiceNowSIRPushToServiceApiParams, ServiceNowITSMIncident, -} from '@kbn/actions-plugin/server/builtin_action_types/servicenow/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/servicenow/types'; import { UserProfile } from '@kbn/security-plugin/common'; import { CaseResponse, ConnectorMappingsAttributes } from '../../../common/api'; diff --git a/x-pack/plugins/cases/tsconfig.json b/x-pack/plugins/cases/tsconfig.json index d7c123ce3970b..b893fcfc9b277 100644 --- a/x-pack/plugins/cases/tsconfig.json +++ b/x-pack/plugins/cases/tsconfig.json @@ -24,6 +24,7 @@ { "path": "../actions/tsconfig.json" }, { "path": "../rule_registry/tsconfig.json" }, { "path": "../triggers_actions_ui/tsconfig.json"}, + { "path": "../stack_connectors/tsconfig.json"}, { "path": "../../../src/plugins/es_ui_shared/tsconfig.json" }, { "path": "../../../src/plugins/kibana_react/tsconfig.json" }, { "path": "../../../src/plugins/kibana_utils/tsconfig.json" }, diff --git a/x-pack/plugins/monitoring/common/constants.ts b/x-pack/plugins/monitoring/common/constants.ts index da12e560aa7fc..f2522ea023ec3 100644 --- a/x-pack/plugins/monitoring/common/constants.ts +++ b/x-pack/plugins/monitoring/common/constants.ts @@ -568,12 +568,12 @@ export const LEGACY_RULES = [ /** * Matches the id for the built-in in email action type - * See x-pack/plugins/actions/server/builtin_action_types/email.ts + * See x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.ts */ export const ALERT_ACTION_TYPE_EMAIL = '.email'; /** * Matches the id for the built-in in log action type - * See x-pack/plugins/actions/server/builtin_action_types/log.ts + * See x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.ts */ export const ALERT_ACTION_TYPE_LOG = '.server-log'; diff --git a/x-pack/plugins/stack_connectors/README.md b/x-pack/plugins/stack_connectors/README.md new file mode 100644 index 0000000000000..38685950658d6 --- /dev/null +++ b/x-pack/plugins/stack_connectors/README.md @@ -0,0 +1,373 @@ +# Stack Connectors + +The `stack_connectors` plugin provides connector types shipped with Kibana, built on top of the framework provided in the `actions` plugin. + +--- + +Table of Contents + +- [Connector Types](#connector-types) + - [ServiceNow ITSM](#servicenow-itsm) + - [`params`](#params) + - [`subActionParams (pushToService)`](#subactionparams-pushtoservice) + - [`subActionParams (getFields)`](#subactionparams-getfields) + - [`subActionParams (getIncident)`](#subactionparams-getincident) + - [`subActionParams (getChoices)`](#subactionparams-getchoices) + - [ServiceNow Sec Ops](#servicenow-sec-ops) + - [`params`](#params-1) + - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-1) + - [`subActionParams (getFields)`](#subactionparams-getfields-1) + - [`subActionParams (getIncident)`](#subactionparams-getincident-1) + - [`subActionParams (getChoices)`](#subactionparams-getchoices-1) + - [ServiceNow ITOM](#servicenow-itom) + - [`params`](#params-2) + - [`subActionParams (addEvent)`](#subactionparams-addevent) + - [`subActionParams (getChoices)`](#subactionparams-getchoices-2) + - [Jira](#jira) + - [`params`](#params-3) + - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-2) + - [`subActionParams (getIncident)`](#subactionparams-getincident-2) + - [`subActionParams (issueTypes)`](#subactionparams-issuetypes) + - [`subActionParams (fieldsByIssueType)`](#subactionparams-fieldsbyissuetype) + - [`subActionParams (issues)`](#subactionparams-issues) + - [`subActionParams (issue)`](#subactionparams-issue) + - [`subActionParams (getFields)`](#subactionparams-getfields-2) + - [IBM Resilient](#ibm-resilient) + - [`params`](#params-4) + - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-3) + - [`subActionParams (getFields)`](#subactionparams-getfields-3) + - [`subActionParams (incidentTypes)`](#subactionparams-incidenttypes) + - [`subActionParams (severity)`](#subactionparams-severity) + - [Swimlane](#swimlane) + - [`params`](#params-5) + - [| severity | The severity of the incident. | string _(optional)_ |](#-severity-----the-severity-of-the-incident-----string-optional-) +- [Developing New Connector Types](#developing-new-connector-types) + - [licensing](#licensing) + - [plugin location](#plugin-location) + - [documentation](#documentation) + - [tests](#tests) + - [connector type config and secrets](#connector-type-config-and-secrets) + - [user interface](#user-interface) + +# Connector Types + +Kibana ships with a set of built-in connector types. See [Connectors Documentation](https://www.elastic.co/guide/en/kibana/master/action-types.html). + +In addition to the documented configurations, several built in connector type offer additional `params` configurations. + +## ServiceNow ITSM + +The [ServiceNow ITSM user documentation `params`](https://www.elastic.co/guide/en/kibana/master/servicenow-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. +### `params` + +| Property | Description | Type | +| --------------- | -------------------------------------------------------------------------------------------------- | ------ | +| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `getIncident`, and `getChoices`. | string | +| subActionParams | The parameters of the subaction. | object | + +#### `subActionParams (pushToService)` + +| Property | Description | Type | +| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | +| incident | The ServiceNow incident. | object | +| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | + +The following table describes the properties of the `incident` object. + +| Property | Description | Type | +| ------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------- | +| short_description | The title of the incident. | string | +| description | The description of the incident. | string _(optional)_ | +| externalId | The ID of the incident in ServiceNow. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | +| severity | The severity in ServiceNow. | string _(optional)_ | +| urgency | The urgency in ServiceNow. | string _(optional)_ | +| impact | The impact in ServiceNow. | string _(optional)_ | +| category | The category in ServiceNow. | string _(optional)_ | +| subcategory | The subcategory in ServiceNow. | string _(optional)_ | +| correlation_id | The correlation id of the incident. | string _(optional)_ | +| correlation_display | The correlation display of the ServiceNow. | string _(optional)_ | + +#### `subActionParams (getFields)` + +No parameters for the `getFields` subaction. Provide an empty object `{}`. + +#### `subActionParams (getIncident)` + +| Property | Description | Type | +| ---------- | ------------------------------------- | ------ | +| externalId | The ID of the incident in ServiceNow. | string | + + +#### `subActionParams (getChoices)` + +| Property | Description | Type | +| -------- | -------------------------------------------------- | -------- | +| fields | An array of fields. Example: `[category, impact]`. | string[] | + +--- + +## ServiceNow Sec Ops + +The [ServiceNow SecOps user documentation `params`](https://www.elastic.co/guide/en/kibana/master/servicenow-sir-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. + +### `params` + +| Property | Description | Type | +| --------------- | -------------------------------------------------------------------------------------------------- | ------ | +| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `getIncident`, and `getChoices`. | string | +| subActionParams | The parameters of the subaction. | object | + +#### `subActionParams (pushToService)` + +| Property | Description | Type | +| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | +| incident | The ServiceNow security incident. | object | +| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | + +The following table describes the properties of the `incident` object. + +| Property | Description | Type | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| short_description | The title of the security incident. | string | +| description | The description of the security incident. | string _(optional)_ | +| externalId | The ID of the security incident in ServiceNow. If present, the security incident is updated. Otherwise, a new security incident is created. | string _(optional)_ | +| priority | The priority in ServiceNow. | string _(optional)_ | +| dest_ip | A list of destination IPs related to the security incident. The IPs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | +| source_ip | A list of source IPs related to the security incident. The IPs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | +| malware_hash | A list of malware hashes related to the security incident. The hashes will be added as observables to the security incident. | (string \| string[]) _(optional)_ | +| malware_url | A list of malware URLs related to the security incident. The URLs will be added as observables to the security incident. | (string \| string[]) _(optional)_ | +| category | The category in ServiceNow. | string _(optional)_ | +| subcategory | The subcategory in ServiceNow. | string _(optional)_ | +| correlation_id | The correlation id of the security incident. | string _(optional)_ | +| correlation_display | The correlation display of the security incident. | string _(optional)_ | + +#### `subActionParams (getFields)` + +No parameters for the `getFields` subaction. Provide an empty object `{}`. + +#### `subActionParams (getIncident)` + +| Property | Description | Type | +| ---------- | ---------------------------------------------- | ------ | +| externalId | The ID of the security incident in ServiceNow. | string | + + +#### `subActionParams (getChoices)` + +| Property | Description | Type | +| -------- | ---------------------------------------------------- | -------- | +| fields | An array of fields. Example: `[priority, category]`. | string[] | + +--- +## ServiceNow ITOM + +The [ServiceNow ITOM user documentation `params`](https://www.elastic.co/guide/en/kibana/master/servicenow-itom-action-type.html) lists configuration properties for the `addEvent` subaction. In addition, several other subaction types are available. +### `params` + +| Property | Description | Type | +| --------------- | ----------------------------------------------------------------- | ------ | +| subAction | The subaction to perform. It can be `addEvent`, and `getChoices`. | string | +| subActionParams | The parameters of the subaction. | object | + +#### `subActionParams (addEvent)` + + +| Property | Description | Type | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------- | +| source | The name of the event source type. | string _(optional)_ | +| event_class | Specific instance of the source. | string _(optional)_ | +| resource | The name of the resource. | string _(optional)_ | +| node | The Host that the event was triggered for. | string _(optional)_ | +| metric_name | Name of the metric. | string _(optional)_ | +| type | The type of event. | string _(optional)_ | +| severity | The category in ServiceNow. | string _(optional)_ | +| description | The subcategory in ServiceNow. | string _(optional)_ | +| additional_info | Any additional information about the event. | string _(optional)_ | +| message_key | This value is used for de-duplication of events. All actions sharing this key will be associated with the same ServiceNow alert. | string _(optional)_ | +| time_of_event | The time of the event. | string _(optional)_ | + +Refer to [ServiceNow documentation](https://docs.servicenow.com/bundle/rome-it-operations-management/page/product/event-management/task/send-events-via-web-service.html) for more information about the properties. + +#### `subActionParams (getChoices)` + +| Property | Description | Type | +| -------- | ------------------------------------------ | -------- | +| fields | An array of fields. Example: `[severity]`. | string[] | + +--- +## Jira + +The [Jira user documentation `params`](https://www.elastic.co/guide/en/kibana/master/jira-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. +### `params` + +| Property | Description | Type | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------ | +| subAction | The subaction to perform. It can be `pushToService`, `getIncident`, `issueTypes`, `fieldsByIssueType`, `issues`, `issue`, and `getFields`. | string | +| subActionParams | The parameters of the subaction. | object | + +#### `subActionParams (pushToService)` + +| Property | Description | Type | +| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | +| incident | The Jira incident. | object | +| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | + +The following table describes the properties of the `incident` object. + +| Property | Description | Type | +| ----------- | ------------------------------------------------------------------------------------------------------- | --------------------- | +| summary | The title of the issue. | string | +| description | The description of the issue. | string _(optional)_ | +| externalId | The ID of the issue in Jira. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | +| issueType | The ID of the issue type in Jira. | string _(optional)_ | +| priority | The name of the priority in Jira. Example: `Medium`. | string _(optional)_ | +| labels | An array of labels. Labels cannot contain spaces. | string[] _(optional)_ | +| parent | The ID or key of the parent issue. Only for `Sub-task` issue types. | string _(optional)_ | + +#### `subActionParams (getIncident)` + +| Property | Description | Type | +| ---------- | ---------------------------- | ------ | +| externalId | The ID of the issue in Jira. | string | + +#### `subActionParams (issueTypes)` + +No parameters for the `issueTypes` subaction. Provide an empty object `{}`. + +#### `subActionParams (fieldsByIssueType)` + +| Property | Description | Type | +| -------- | --------------------------------- | ------ | +| id | The ID of the issue type in Jira. | string | + +#### `subActionParams (issues)` + +| Property | Description | Type | +| -------- | ------------------------ | ------ | +| title | The title to search for. | string | + +#### `subActionParams (issue)` + +| Property | Description | Type | +| -------- | ---------------------------- | ------ | +| id | The ID of the issue in Jira. | string | + +#### `subActionParams (getFields)` + +No parameters for the `getFields` subaction. Provide an empty object `{}`. + +--- + +## IBM Resilient + +The [IBM Resilient user documentation `params`](https://www.elastic.co/guide/en/kibana/master/resilient-action-type.html) lists configuration properties for the `pushToService` subaction. In addition, several other subaction types are available. + +### `params` + +| Property | Description | Type | +| --------------- | ------------------------------------------------------------------------------------------------- | ------ | +| subAction | The subaction to perform. It can be `pushToService`, `getFields`, `incidentTypes`, and `severity. | string | +| subActionParams | The parameters of the subaction. | object | + +#### `subActionParams (pushToService)` + +| Property | Description | Type | +| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | +| incident | The IBM Resilient incident. | object | +| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | + +The following table describes the properties of the `incident` object. + +| Property | Description | Type | +| ------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------- | +| name | The title of the incident. | string _(optional)_ | +| description | The description of the incident. | string _(optional)_ | +| externalId | The ID of the incident in IBM Resilient. If present, the incident is updated. Otherwise, a new incident is created. | string _(optional)_ | +| incidentTypes | An array with the IDs of IBM Resilient incident types. | number[] _(optional)_ | +| severityCode | IBM Resilient ID of the severity code. | number _(optional)_ | + +#### `subActionParams (getFields)` + +No parameters for the `getFields` subaction. Provide an empty object `{}`. + +#### `subActionParams (incidentTypes)` + +No parameters for the `incidentTypes` subaction. Provide an empty object `{}`. + +#### `subActionParams (severity)` + +No parameters for the `severity` subaction. Provide an empty object `{}`. + +--- +## Swimlane + +Refer to the [Run connector API documentation](https://www.elastic.co/guide/en/kibana/master/execute-connector-api.html#execute-connector-api-request-body) +for the full list of properties. + +### `params` + +| Property | Description | Type | +| --------------- | ---------------------------------------------------- | ------ | +| subAction | The subaction to perform. It can be `pushToService`. | string | +| subActionParams | The parameters of the subaction. | object | + + +`subActionParams (pushToService)` + +| Property | Description | Type | +| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- | +| incident | The Swimlane incident. | object | +| comments | The comments of the case. A comment is of the form `{ commentId: string, version: string, comment: string }`. | object[] _(optional)_ | + + +The following table describes the properties of the `incident` object. + +| Property | Description | Type | +| ----------- | -------------------------------- | ------------------- | +| alertId | The alert id. | string _(optional)_ | +| caseId | The case id of the incident. | string _(optional)_ | +| caseName | The case name of the incident. | string _(optional)_ | +| description | The description of the incident. | string _(optional)_ | +| ruleName | The rule name. | string _(optional)_ | +| severity | The severity of the incident. | string _(optional)_ | +--- + +# Developing New Connector Types + +When creating a new connector type, your plugin will eventually call `server.plugins.actions.setup.registerType()` to register the type with the `actions` plugin, but there are some additional things to think about about and implement. + +Consider working with the alerting team on early structure /design feedback of new connectors, especially as the APIs and infrastructure are still under development. + +Don't forget to ping @elastic/security-detections-response to see if the new connector should be enabled within their solution. + +## Licensing + +Currently connectors are licensed as "basic" if the connector only interacts with the stack, eg the server log and es index connectors. Other connectors are at least "gold" level. + +## Plugin location + +If the new connector is generic across the stack, it probably belongs in the `stack_connectors` plugin, but if your connector is very specific to a plugin/solution, it might be easiest to implement it in that plugin/solution. + +Connectors that take URLs or hostnames should check that those values are allowed by using the allowed host utilities in the `actions` plugin. + +## Documentation + +You should create asciidoc for the new connector type. Add an entry to the connector type index - [`docs/user/alerting/action-types.asciidoc`](../../../docs/user/alerting/action-types.asciidoc), which points to a new document for the connector type that should be in the directory [`docs/user/alerting/action-types`](../../../docs/user/alerting/action-types). + +We suggest following the template provided in `docs/action-type-template.asciidoc`. The [Email action type](https://www.elastic.co/guide/en/kibana/master/email-action-type.html) is an example of documentation created following the template. + +## Tests + +The connector type should have both unit tests and functional tests. For functional tests, if your connector interacts with a 3rd party service via HTTP, you may be able to create a simulator for your service to test with. See the existing functional test servers in the directory [`x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server`](../../test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server) + +## Connector type config and secrets + +Connector types must define `config` and `secrets` which are used to create connectors. This data should be described with `@kbn/config-schema` object schemas, and you **MUST NOT** use `schema.maybe()` to define properties. + +This is due to the fact that the structures are persisted in saved objects, which performs partial updates on the persisted data. If a property value is already persisted, but an update either doesn't include the property, or sets it to `undefined`, the persisted value will not be changed. Beyond this being a semantic error in general, it also ends up invalidating the encryption used to save secrets, and will render the secrets unable to be unencrypted later. + +Instead of `schema.maybe()`, use `schema.nullable()`, which is the same as `schema.maybe()` except that when passed an `undefined` value, the object returned from the validation will be set to `null`. The resulting type will be `property-type | null`, whereas with `schema.maybe()` it would be `property-type | undefined`. + +## User interface + +To make this connector usable in the Kibana UI, you will need to provide all the UI editing aspects of the connector. The existing connector type user interfaces are defined in [`x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types`](../triggers_actions_ui/public/application/components/builtin_action_types). For more information, see the [UI documentation](../triggers_actions_ui/README.md#create-and-register-new-action-type-ui). \ No newline at end of file diff --git a/x-pack/plugins/stack_connectors/common/index.ts b/x-pack/plugins/stack_connectors/common/index.ts new file mode 100644 index 0000000000000..bdaa075cbfa01 --- /dev/null +++ b/x-pack/plugins/stack_connectors/common/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// supported values for `service` in addition to nodemailer's list of well-known services +export enum AdditionalEmailServices { + ELASTIC_CLOUD = 'elastic_cloud', + EXCHANGE = 'exchange_server', + OTHER = 'other', +} + +export const INTERNAL_BASE_STACK_CONNECTORS_API_PATH = '/internal/stack_connectors'; diff --git a/x-pack/plugins/actions/common/servicenow_config.ts b/x-pack/plugins/stack_connectors/common/servicenow_config.ts similarity index 89% rename from x-pack/plugins/actions/common/servicenow_config.ts rename to x-pack/plugins/stack_connectors/common/servicenow_config.ts index 994f6cb33524f..316995ec8bca1 100644 --- a/x-pack/plugins/actions/common/servicenow_config.ts +++ b/x-pack/plugins/stack_connectors/common/servicenow_config.ts @@ -8,10 +8,6 @@ export const serviceNowITSMTable = 'incident'; export const serviceNowSIRTable = 'sn_si_incident'; -export const ServiceNowITSMActionTypeId = '.servicenow'; -export const ServiceNowSIRActionTypeId = '.servicenow-sir'; -export const ServiceNowITOMActionTypeId = '.servicenow-itom'; - const SN_ITSM_APP_ID = '7148dbc91bf1f450ced060a7234bcb88'; const SN_SIR_APP_ID = '2f0746801baeb01019ae54e4604bcb0f'; diff --git a/x-pack/plugins/stack_connectors/jest.config.js b/x-pack/plugins/stack_connectors/jest.config.js new file mode 100644 index 0000000000000..9a343089b9475 --- /dev/null +++ b/x-pack/plugins/stack_connectors/jest.config.js @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/stack_connectors'], + coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/stack_connectors', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/stack_connectors/{common,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/stack_connectors/kibana.json b/x-pack/plugins/stack_connectors/kibana.json new file mode 100644 index 0000000000000..a2fc97ad9547e --- /dev/null +++ b/x-pack/plugins/stack_connectors/kibana.json @@ -0,0 +1,13 @@ +{ + "id": "stackConnectors", + "owner": { + "name": "Response Ops", + "githubTeam": "response-ops" + }, + "server": true, + "version": "8.0.0", + "kibanaVersion": "kibana", + "configPath": ["xpack", "stack_connectors"], + "requiredPlugins": ["actions"], + "ui": false +} diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/api.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/api.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/api.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/api.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/api.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/index.ts similarity index 79% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/index.ts index 821ab792308c1..3b32e79ac725c 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/index.ts @@ -7,7 +7,12 @@ import { curry } from 'lodash'; import { Logger } from '@kbn/core/server'; -import { CasesConnectorFeatureId } from '../../../common'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { CasesConnectorFeatureId } from '@kbn/actions-plugin/common/connector_feature_config'; import { CasesWebhookActionParamsType, CasesWebhookExecutorResultData, @@ -16,8 +21,6 @@ import { ExecutorParams, ExecutorSubActionPushParams, } from './types'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../../types'; -import { ActionsConfigurationUtilities } from '../../actions_config'; import { createExternalService } from './service'; import { ExecutorParamsSchema, @@ -30,22 +33,20 @@ import * as i18n from './translations'; const supportedSubActions: string[] = ['pushToService']; export type ActionParamsType = CasesWebhookActionParamsType; -export const ActionTypeId = '.cases-webhook'; -// action type definition -export function getActionType({ +export const ConnectorTypeId = '.cases-webhook'; +// connector type definition +export function getConnectorType({ logger, - configurationUtilities, }: { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; -}): ActionType< +}): ConnectorType< CasesWebhookPublicConfigurationType, CasesWebhookSecretConfigurationType, ExecutorParams, CasesWebhookExecutorResultData > { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', name: i18n.NAME, validate: { @@ -62,24 +63,22 @@ export function getActionType({ }, connector: validate.connector, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), supportedFeatureIds: [CasesConnectorFeatureId], }; } // action executor export async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: ActionTypeExecutorOptions< + { logger }: { logger: Logger }, + execOptions: ConnectorTypeExecutorOptions< CasesWebhookPublicConfigurationType, CasesWebhookSecretConfigurationType, CasesWebhookActionParamsType > -): Promise> { +): Promise> { const actionId = execOptions.actionId; + const configurationUtilities = execOptions.configurationUtilities; const { subAction, subActionParams } = execOptions.params; let data: CasesWebhookExecutorResultData | undefined; diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/mock.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/mock.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/mock.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/mock.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/schema.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/schema.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/schema.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/schema.ts index 1fb3edca6e4b7..fb8d7f8a05d28 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/schema.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/schema.ts @@ -7,7 +7,7 @@ import { schema } from '@kbn/config-schema'; import { CasesWebhookMethods } from './types'; -import { nullableType } from '../lib/nullable'; +import { nullableType } from '../../lib/nullable'; const HeadersSchema = schema.recordOf(schema.string(), schema.string()); diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.test.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.test.ts index 2d79819d3cc4a..8e5c34e1e9ca5 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.test.ts @@ -8,15 +8,15 @@ import axios, { AxiosError, AxiosResponse } from 'axios'; import { createExternalService } from './service'; -import { request, createAxiosResponse } from '../../lib/axios_utils'; +import { request, createAxiosResponse } from '@kbn/actions-plugin/server/lib/axios_utils'; import { CasesWebhookMethods, CasesWebhookPublicConfigurationType, ExternalService } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; const logger = loggingSystemMock.create().get() as jest.Mocked; -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.ts index 6e657d8b21d9e..518debe43a002 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/service.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/service.ts @@ -9,8 +9,10 @@ import axios, { AxiosResponse } from 'axios'; import { Logger } from '@kbn/core/server'; import { isString } from 'lodash'; +import { renderMustacheStringNoEscape } from '@kbn/actions-plugin/server/lib/mustache_renderer'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { validateAndNormalizeUrl, validateJson } from './validators'; -import { renderMustacheStringNoEscape } from '../../lib/mustache_renderer'; import { createServiceError, getObjectValueByKeyAsString, @@ -31,8 +33,6 @@ import { } from './types'; import * as i18n from './translations'; -import { request } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; export const createExternalService = ( actionId: string, diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/translations.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/translations.ts similarity index 71% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/translations.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/translations.ts index 06fd81491c004..207230016ea30 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/translations.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/translations.ts @@ -7,12 +7,12 @@ import { i18n } from '@kbn/i18n'; -export const NAME = i18n.translate('xpack.actions.builtin.cases.casesWebhookTitle', { +export const NAME = i18n.translate('xpack.stackConnectors.casesWebhook.title', { defaultMessage: 'Webhook - Case Management', }); export const INVALID_URL = (err: string, url: string) => - i18n.translate('xpack.actions.builtin.casesWebhook.casesWebhookConfigurationErrorNoHostname', { + i18n.translate('xpack.stackConnectors.casesWebhook.configurationErrorNoHostname', { defaultMessage: 'error configuring cases webhook action: unable to parse {url}: {err}', values: { err, @@ -21,7 +21,7 @@ export const INVALID_URL = (err: string, url: string) => }); export const CONFIG_ERR = (err: string) => - i18n.translate('xpack.actions.builtin.casesWebhook.casesWebhookConfigurationError', { + i18n.translate('xpack.stackConnectors.casesWebhook.configurationError', { defaultMessage: 'error configuring cases webhook action: {err}', values: { err, @@ -29,14 +29,14 @@ export const CONFIG_ERR = (err: string) => }); export const INVALID_USER_PW = i18n.translate( - 'xpack.actions.builtin.casesWebhook.invalidUsernamePassword', + 'xpack.stackConnectors.casesWebhook.invalidUsernamePassword', { defaultMessage: 'both user and password must be specified', } ); export const ALLOWED_HOSTS_ERROR = (message: string) => - i18n.translate('xpack.actions.builtin.casesWebhook.configuration.apiAllowedHostsError', { + i18n.translate('xpack.stackConnectors.casesWebhook.configuration.apiAllowedHostsError', { defaultMessage: 'error configuring connector action: {message}', values: { message, diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/types.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/types.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/types.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/types.ts index aae733d4ed94b..f9fde29f252e0 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/types.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/types.ts @@ -7,7 +7,7 @@ import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; -import { ValidatorServices } from '../../types'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ExecutorParamsSchema, ExecutorSubActionPushParamsSchema, diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/utils.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/utils.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/utils.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/utils.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/utils.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/utils.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/utils.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/utils.ts index 3466e73bdbe5d..108674d5a5a11 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/utils.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/utils.ts @@ -7,7 +7,7 @@ import { AxiosResponse, AxiosError } from 'axios'; import { isEmpty, isObjectLike, get } from 'lodash'; -import { getErrorMessage } from '../../lib/axios_utils'; +import { getErrorMessage } from '@kbn/actions-plugin/server/lib/axios_utils'; import * as i18n from './translations'; export const createServiceError = (error: AxiosError, message: string) => { diff --git a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/validators.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/validators.ts similarity index 95% rename from x-pack/plugins/actions/server/builtin_action_types/cases_webhook/validators.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/validators.ts index 22113f0f7626e..95265cfcaf6ef 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/cases_webhook/validators.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/cases_webhook/validators.ts @@ -5,14 +5,14 @@ * 2.0. */ +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import * as i18n from './translations'; -import { ActionsConfigurationUtilities } from '../../actions_config'; import { CasesWebhookPublicConfigurationType, CasesWebhookSecretConfigurationType, ExternalServiceValidation, } from './types'; -import { ValidatorServices } from '../../types'; const validateConfig = ( configObject: CasesWebhookPublicConfigurationType, diff --git a/x-pack/plugins/stack_connectors/server/connector_types/cases/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/index.ts new file mode 100644 index 0000000000000..abc6c0557a780 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/index.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export { + getConnectorType as getCasesWebhookConnectorType, + ConnectorTypeId as CasesWebhookConnectorTypeId, +} from './cases_webhook'; +export type { ActionParamsType as CasesWebhookActionParams } from './cases_webhook'; + +export { + getConnectorType as getJiraConnectorType, + ConnectorTypeId as JiraConnectorTypeId, +} from './jira'; +export type { ActionParamsType as JiraActionParams } from './jira'; + +export { + getConnectorType as getResilientConnectorType, + ConnectorTypeId as ResilientConnectorTypeId, +} from './resilient'; +export type { ActionParamsType as ResilientActionParams } from './resilient'; + +export { + getServiceNowITSMConnectorType, + getServiceNowSIRConnectorType, + getServiceNowITOMConnectorType, + ServiceNowITSMConnectorTypeId, + ServiceNowSIRConnectorTypeId, + ServiceNowITOMConnectorTypeId, +} from './servicenow'; +export type { ActionParamsType as ServiceNowActionParams } from './servicenow'; + +export { getConnectorType as getSwimlaneConnectorType } from './swimlane'; + +export { + getConnectorType as getXmattersConnectorType, + ConnectorTypeId as XmattersConnectorTypeId, +} from './xmatters'; +export type { ActionParamsType as XmattersActionParams } from './xmatters'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/api.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/jira/api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/api.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/api.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/api.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/jira/api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/api.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/index.ts similarity index 84% rename from x-pack/plugins/actions/server/builtin_action_types/jira/index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/index.ts index 86ed10f57d20b..d2130c085cda1 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/index.ts @@ -9,14 +9,23 @@ import { curry } from 'lodash'; import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { + AlertingConnectorFeatureId, + CasesConnectorFeatureId, + UptimeConnectorFeatureId, + SecurityConnectorFeatureId, +} from '@kbn/actions-plugin/common/types'; import { validate } from './validators'; import { ExternalIncidentServiceConfigurationSchema, ExternalIncidentServiceSecretConfigurationSchema, ExecutorParamsSchema, } from './schema'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../../types'; import { createExternalService } from './service'; import { api } from './api'; import { @@ -32,17 +41,10 @@ import { ExecutorSubActionGetIncidentParams, } from './types'; import * as i18n from './translations'; -import { - AlertingConnectorFeatureId, - CasesConnectorFeatureId, - UptimeConnectorFeatureId, - SecurityConnectorFeatureId, -} from '../../../common'; export type ActionParamsType = TypeOf; -interface GetActionTypeParams { +interface GetConnectorTypeParams { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; } const supportedSubActions: string[] = [ @@ -55,19 +57,19 @@ const supportedSubActions: string[] = [ 'issue', ]; -export const ActionTypeId = '.jira'; -// action type definition -export function getActionType( - params: GetActionTypeParams -): ActionType< +export const ConnectorTypeId = '.jira'; +// connector type definition +export function getConnectorType( + params: GetConnectorTypeParams +): ConnectorType< JiraPublicConfigurationType, JiraSecretConfigurationType, ExecutorParams, JiraExecutorResultData | {} > { - const { logger, configurationUtilities } = params; + const { logger } = params; return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', name: i18n.NAME, supportedFeatureIds: [ @@ -89,23 +91,20 @@ export function getActionType( schema: ExecutorParamsSchema, }, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } // action executor async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: ActionTypeExecutorOptions< + { logger }: { logger: Logger }, + execOptions: ConnectorTypeExecutorOptions< JiraPublicConfigurationType, JiraSecretConfigurationType, ExecutorParams > -): Promise> { - const { actionId, config, params, secrets } = execOptions; +): Promise> { + const { actionId, config, params, secrets, configurationUtilities } = execOptions; const { subAction, subActionParams } = params as ExecutorParams; let data: JiraExecutorResultData | null = null; diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/mocks.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/mocks.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/jira/mocks.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/mocks.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/schema.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/schema.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/jira/schema.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/schema.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/service.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/jira/service.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.test.ts index 59f00826cae43..9dcd4f2ce2af2 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/service.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.test.ts @@ -8,11 +8,11 @@ import axios from 'axios'; import { createExternalService } from './service'; -import { request, createAxiosResponse } from '../../lib/axios_utils'; +import { request, createAxiosResponse } from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalService } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; const logger = loggingSystemMock.create().get() as jest.Mocked; interface ResponseError extends Error { @@ -20,8 +20,8 @@ interface ResponseError extends Error { } jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/service.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/jira/service.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.ts index 948fab0586a28..b0d7571b302cd 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/service.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/service.ts @@ -9,6 +9,12 @@ import axios from 'axios'; import { isEmpty } from 'lodash'; import { Logger } from '@kbn/core/server'; +import { + request, + getErrorMessage, + throwIfResponseIsNotValid, +} from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { CreateCommentParams, CreateIncidentParams, @@ -27,8 +33,6 @@ import { } from './types'; import * as i18n from './translations'; -import { request, getErrorMessage, throwIfResponseIsNotValid } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; const VERSION = '2'; const BASE_URL = `rest/api/${VERSION}`; diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/translations.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/translations.ts similarity index 78% rename from x-pack/plugins/actions/server/builtin_action_types/jira/translations.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/translations.ts index f3baefc9e2900..1ca5ec985d1f0 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/translations.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/translations.ts @@ -7,12 +7,12 @@ import { i18n } from '@kbn/i18n'; -export const NAME = i18n.translate('xpack.actions.builtin.cases.jiraTitle', { +export const NAME = i18n.translate('xpack.stackConnectors.jira.title', { defaultMessage: 'Jira', }); export const ALLOWED_HOSTS_ERROR = (message: string) => - i18n.translate('xpack.actions.builtin.jira.configuration.apiAllowedHostsError', { + i18n.translate('xpack.stackConnectors.jira.configuration.apiAllowedHostsError', { defaultMessage: 'error configuring connector action: {message}', values: { message, diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/types.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/types.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/jira/types.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/types.ts index 75b5f5a2ef30a..c975e23b1b783 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/types.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/types.ts @@ -9,6 +9,7 @@ import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ExternalIncidentServiceConfigurationSchema, ExternalIncidentServiceSecretConfigurationSchema, @@ -22,7 +23,6 @@ import { ExecutorSubActionGetIssueParamsSchema, ExecutorSubActionCommonFieldsParamsSchema, } from './schema'; -import { ValidatorServices } from '../../types'; export type JiraPublicConfigurationType = TypeOf; export type JiraSecretConfigurationType = TypeOf< diff --git a/x-pack/plugins/actions/server/builtin_action_types/jira/validators.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/validators.ts similarity index 93% rename from x-pack/plugins/actions/server/builtin_action_types/jira/validators.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/jira/validators.ts index 4195920703248..894f457947b71 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/jira/validators.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/jira/validators.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { JiraPublicConfigurationType, JiraSecretConfigurationType, @@ -12,7 +13,6 @@ import { } from './types'; import * as i18n from './translations'; -import { ValidatorServices } from '../../types'; export const validateCommonConfig = ( configObject: JiraPublicConfigurationType, diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/api.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/api.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/api.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/api.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/api.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/index.ts similarity index 81% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/index.ts index b0553a63239c2..081fbe92502d9 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/index.ts @@ -9,14 +9,22 @@ import { curry } from 'lodash'; import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { + AlertingConnectorFeatureId, + CasesConnectorFeatureId, + SecurityConnectorFeatureId, +} from '@kbn/actions-plugin/common/types'; import { validate } from './validators'; import { ExternalIncidentServiceConfigurationSchema, ExternalIncidentServiceSecretConfigurationSchema, ExecutorParamsSchema, } from './schema'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../../types'; import { createExternalService } from './service'; import { api } from './api'; import { @@ -30,34 +38,28 @@ import { ExecutorSubActionCommonFieldsParams, } from './types'; import * as i18n from './translations'; -import { - AlertingConnectorFeatureId, - CasesConnectorFeatureId, - SecurityConnectorFeatureId, -} from '../../../common'; export type ActionParamsType = TypeOf; -interface GetActionTypeParams { +interface GetConnectorTypeParams { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; } const supportedSubActions: string[] = ['getFields', 'pushToService', 'incidentTypes', 'severity']; -export const ActionTypeId = '.resilient'; -// action type definition -export function getActionType( - params: GetActionTypeParams -): ActionType< +export const ConnectorTypeId = '.resilient'; +// connector type definition +export function getConnectorType( + params: GetConnectorTypeParams +): ConnectorType< ResilientPublicConfigurationType, ResilientSecretConfigurationType, ExecutorParams, ResilientExecutorResultData | {} > { - const { logger, configurationUtilities } = params; + const { logger } = params; return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'platinum', name: i18n.NAME, supportedFeatureIds: [ @@ -78,23 +80,20 @@ export function getActionType( schema: ExecutorParamsSchema, }, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } // action executor async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: ActionTypeExecutorOptions< + { logger }: { logger: Logger }, + execOptions: ConnectorTypeExecutorOptions< ResilientPublicConfigurationType, ResilientSecretConfigurationType, ExecutorParams > -): Promise> { - const { actionId, config, params, secrets } = execOptions; +): Promise> { + const { actionId, config, params, secrets, configurationUtilities } = execOptions; const { subAction, subActionParams } = params as ExecutorParams; let data: ResilientExecutorResultData | null = null; diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/mocks.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/mocks.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/mocks.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/mocks.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/schema.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/schema.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/schema.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/schema.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/service.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.test.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/service.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.test.ts index 2d577771c57f3..b45cf9b1e34fe 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/service.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.test.ts @@ -8,18 +8,18 @@ import axios from 'axios'; import { createExternalService, getValueTextContent, formatUpdateRequest } from './service'; -import { request, createAxiosResponse } from '../../lib/axios_utils'; +import { request, createAxiosResponse } from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalService } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { incidentTypes, resilientFields, severity } from './mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/service.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/service.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.ts index f99ce7f1a0ef1..1e668348e9975 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/service.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/service.ts @@ -9,6 +9,12 @@ import axios from 'axios'; import { omitBy, isNil } from 'lodash/fp'; import { Logger } from '@kbn/core/server'; +import { + getErrorMessage, + request, + throwIfResponseIsNotValid, +} from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { ExternalServiceCredentials, ExternalService, @@ -24,8 +30,6 @@ import { } from './types'; import * as i18n from './translations'; -import { getErrorMessage, request, throwIfResponseIsNotValid } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; const VIEW_INCIDENT_URL = `#incidents`; diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/translations.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/translations.ts similarity index 74% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/translations.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/translations.ts index fcb800c1499db..e6f75e5b9d05f 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/translations.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/translations.ts @@ -7,12 +7,12 @@ import { i18n } from '@kbn/i18n'; -export const NAME = i18n.translate('xpack.actions.builtin.cases.resilientTitle', { +export const NAME = i18n.translate('xpack.stackConnectors.resilient.title', { defaultMessage: 'IBM Resilient', }); export const ALLOWED_HOSTS_ERROR = (message: string) => - i18n.translate('xpack.actions.builtin.configuration.apiAllowedHostsError', { + i18n.translate('xpack.stackConnectors.resilient.configuration.apiAllowedHostsError', { defaultMessage: 'error configuring connector action: {message}', values: { message, diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/types.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/types.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/types.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/types.ts index 2528e1742e1b9..336e899380c56 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/types.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/types.ts @@ -9,6 +9,7 @@ import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ExecutorParamsSchema, ExecutorSubActionCommonFieldsParamsSchema, @@ -21,8 +22,6 @@ import { ExternalIncidentServiceSecretConfigurationSchema, } from './schema'; -import { ValidatorServices } from '../../types'; - export type ResilientPublicConfigurationType = TypeOf< typeof ExternalIncidentServiceConfigurationSchema >; diff --git a/x-pack/plugins/actions/server/builtin_action_types/resilient/validators.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/validators.ts similarity index 93% rename from x-pack/plugins/actions/server/builtin_action_types/resilient/validators.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/validators.ts index 5d70aea1660a1..335b8f6b405ad 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/resilient/validators.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/resilient/validators.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ResilientPublicConfigurationType, ResilientSecretConfigurationType, @@ -12,7 +13,6 @@ import { } from './types'; import * as i18n from './translations'; -import { ValidatorServices } from '../../types'; export const validateCommonConfig = ( configObject: ResilientPublicConfigurationType, diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api_itom.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_itom.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api_itom.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_itom.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api_itom.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_itom.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api_itom.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_itom.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api_sir.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_sir.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api_sir.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_sir.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/api_sir.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_sir.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/api_sir.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/api_sir.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/config.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/config.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/config.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/config.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/config.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/config.ts similarity index 87% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/config.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/config.ts index 11f18f0407fdf..4fae325fec2f9 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/config.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/config.ts @@ -10,9 +10,9 @@ import { SNProductsConfig } from './types'; export const serviceNowITSMTable = 'incident'; export const serviceNowSIRTable = 'sn_si_incident'; -export const ServiceNowITSMActionTypeId = '.servicenow'; -export const ServiceNowSIRActionTypeId = '.servicenow-sir'; -export const ServiceNowITOMActionTypeId = '.servicenow-itom'; +export const ServiceNowITSMConnectorTypeId = '.servicenow'; +export const ServiceNowSIRConnectorTypeId = '.servicenow-sir'; +export const ServiceNowITOMConnectorTypeId = '.servicenow-itom'; const SN_ITSM_APP_ID = '7148dbc91bf1f450ced060a7234bcb88'; const SN_SIR_APP_ID = '2f0746801baeb01019ae54e4604bcb0f'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.test.ts similarity index 92% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.test.ts index 37ada260c75a9..311de65eb4abe 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.test.ts @@ -9,8 +9,8 @@ import axios from 'axios'; import { createServiceWrapper } from './create_service_wrapper'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; -import { connectorTokenClientMock } from '../lib/connector_token_client.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { connectorTokenClientMock } from '@kbn/actions-plugin/server/lib/connector_token_client.mock'; import { snExternalServiceConfig } from './config'; const logger = loggingSystemMock.create().get() as jest.Mocked; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.ts similarity index 89% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.ts index cd431027a720f..f2de6e3787f70 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/create_service_wrapper.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/create_service_wrapper.ts @@ -6,12 +6,12 @@ */ import { Logger } from '@kbn/core/server'; +import type { ConnectorTokenClientContract } from '@kbn/actions-plugin/server/types'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { ExternalService, ExternalServiceCredentials, SNProductsConfigValue } from './types'; import { ServiceNowPublicConfigurationType, ServiceFactory } from './types'; -import { ActionsConfigurationUtilities } from '../../actions_config'; import { getAxiosInstance } from './utils'; -import { ConnectorTokenClientContract } from '../../types'; interface CreateServiceWrapperOpts { connectorId: string; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/index.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.test.ts similarity index 62% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/index.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.test.ts index 6ba8b80dfc09c..02cc32111bff4 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/index.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.test.ts @@ -5,19 +5,15 @@ * 2.0. */ -import { actionsMock } from '../../mocks'; -import { createActionTypeRegistry } from '../index.test'; +import { Logger } from '@kbn/core/server'; +import { loggerMock } from '@kbn/logging-mocks'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { ExecutorParams, ServiceNowPublicConfigurationType } from './types'; import { - ServiceNowPublicConfigurationBaseType, - ServiceNowSecretConfigurationType, - ExecutorParams, - PushToServiceResponse, -} from './types'; -import { - ServiceNowActionType, - ServiceNowITSMActionTypeId, - ServiceNowSIRActionTypeId, - ServiceNowActionTypeExecutorOptions, + ServiceNowConnectorType, + ServiceNowConnectorTypeExecutorOptions, + getServiceNowITSMConnectorType, + getServiceNowSIRConnectorType, } from '.'; import { api } from './api'; @@ -32,6 +28,7 @@ jest.mock('./api', () => ({ })); const services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); describe('ServiceNow', () => { const config = { apiUrl: 'https://instance.com' }; @@ -51,16 +48,11 @@ describe('ServiceNow', () => { }); describe('ServiceNow ITSM', () => { - let actionType: ServiceNowActionType; - + let connectorType: ServiceNowConnectorType; beforeAll(() => { - const { actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get< - ServiceNowPublicConfigurationBaseType, - ServiceNowSecretConfigurationType, - ExecutorParams, - PushToServiceResponse | {} - >(ServiceNowITSMActionTypeId); + connectorType = getServiceNowITSMConnectorType({ + logger: mockedLogger, + }); }); describe('execute()', () => { @@ -76,8 +68,11 @@ describe('ServiceNow', () => { secrets, params, services, - } as unknown as ServiceNowActionTypeExecutorOptions; - await actionType.executor(executorOptions); + } as unknown as ServiceNowConnectorTypeExecutorOptions< + ServiceNowPublicConfigurationType, + ExecutorParams + >; + await connectorType.executor(executorOptions); expect((api.pushToService as jest.Mock).mock.calls[0][0].commentFieldKey).toBe( 'work_notes' ); @@ -86,16 +81,12 @@ describe('ServiceNow', () => { }); describe('ServiceNow SIR', () => { - let actionType: ServiceNowActionType; + let connectorType: ServiceNowConnectorType; beforeAll(() => { - const { actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get< - ServiceNowPublicConfigurationBaseType, - ServiceNowSecretConfigurationType, - ExecutorParams, - PushToServiceResponse | {} - >(ServiceNowSIRActionTypeId); + connectorType = getServiceNowSIRConnectorType({ + logger: mockedLogger, + }); }); describe('execute()', () => { @@ -111,8 +102,11 @@ describe('ServiceNow', () => { secrets, params, services, - } as unknown as ServiceNowActionTypeExecutorOptions; - await actionType.executor(executorOptions); + } as unknown as ServiceNowConnectorTypeExecutorOptions< + ServiceNowPublicConfigurationType, + ExecutorParams + >; + await connectorType.executor(executorOptions); expect((api.pushToService as jest.Mock).mock.calls[0][0].commentFieldKey).toBe( 'work_notes' ); diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.ts similarity index 78% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.ts index cb008de5587d6..493c7024bb15f 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/index.ts @@ -9,6 +9,17 @@ import { curry } from 'lodash'; import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { + AlertingConnectorFeatureId, + CasesConnectorFeatureId, + UptimeConnectorFeatureId, + SecurityConnectorFeatureId, +} from '@kbn/actions-plugin/common/types'; import { validate } from './validators'; import { ExternalIncidentServiceConfigurationSchema, @@ -18,8 +29,6 @@ import { ExecutorParamsSchemaSIR, ExecutorParamsSchemaITOM, } from './schema'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../../types'; import { createExternalService } from './service'; import { api as commonAPI } from './api'; import * as i18n from './translations'; @@ -42,10 +51,10 @@ import { ExternalService, } from './types'; import { - ServiceNowITOMActionTypeId, - ServiceNowITSMActionTypeId, + ServiceNowITOMConnectorTypeId, + ServiceNowITSMConnectorTypeId, serviceNowITSMTable, - ServiceNowSIRActionTypeId, + ServiceNowSIRConnectorTypeId, serviceNowSIRTable, snExternalServiceConfig, } from './config'; @@ -55,47 +64,40 @@ import { throwIfSubActionIsNotSupported } from './utils'; import { createExternalServiceITOM } from './service_itom'; import { apiITOM } from './api_itom'; import { createServiceWrapper } from './create_service_wrapper'; -import { - AlertingConnectorFeatureId, - CasesConnectorFeatureId, - UptimeConnectorFeatureId, - SecurityConnectorFeatureId, -} from '../../../common'; export { - ServiceNowITSMActionTypeId, + ServiceNowITSMConnectorTypeId, serviceNowITSMTable, - ServiceNowSIRActionTypeId, + ServiceNowSIRConnectorTypeId, serviceNowSIRTable, - ServiceNowITOMActionTypeId, + ServiceNowITOMConnectorTypeId, }; export type ActionParamsType = | TypeOf | TypeOf; -interface GetActionTypeParams { +interface GetConnectorTypeParams { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; } -export type ServiceNowActionType< +export type ServiceNowConnectorType< C extends Record = ServiceNowPublicConfigurationBaseType, T extends Record = ExecutorParams -> = ActionType; +> = ConnectorType; -export type ServiceNowActionTypeExecutorOptions< +export type ServiceNowConnectorTypeExecutorOptions< C extends Record = ServiceNowPublicConfigurationBaseType, T extends Record = ExecutorParams -> = ActionTypeExecutorOptions; +> = ConnectorTypeExecutorOptions; -// action type definition -export function getServiceNowITSMActionType( - params: GetActionTypeParams -): ServiceNowActionType { - const { logger, configurationUtilities } = params; +// connector type definition +export function getServiceNowITSMConnectorType( + params: GetConnectorTypeParams +): ServiceNowConnectorType { + const { logger } = params; return { - id: ServiceNowITSMActionTypeId, + id: ServiceNowITSMConnectorTypeId, minimumLicenseRequired: 'platinum', name: i18n.SERVICENOW_ITSM, supportedFeatureIds: [ @@ -120,20 +122,19 @@ export function getServiceNowITSMActionType( }, executor: curry(executor)({ logger, - configurationUtilities, - actionTypeId: ServiceNowITSMActionTypeId, + actionTypeId: ServiceNowITSMConnectorTypeId, createService: createExternalService, api: commonAPI, }), }; } -export function getServiceNowSIRActionType( - params: GetActionTypeParams -): ServiceNowActionType { - const { logger, configurationUtilities } = params; +export function getServiceNowSIRConnectorType( + params: GetConnectorTypeParams +): ServiceNowConnectorType { + const { logger } = params; return { - id: ServiceNowSIRActionTypeId, + id: ServiceNowSIRConnectorTypeId, minimumLicenseRequired: 'platinum', name: i18n.SERVICENOW_SIR, supportedFeatureIds: [ @@ -157,20 +158,19 @@ export function getServiceNowSIRActionType( }, executor: curry(executor)({ logger, - configurationUtilities, - actionTypeId: ServiceNowSIRActionTypeId, + actionTypeId: ServiceNowSIRConnectorTypeId, createService: createExternalServiceSIR, api: apiSIR, }), }; } -export function getServiceNowITOMActionType( - params: GetActionTypeParams -): ServiceNowActionType { - const { logger, configurationUtilities } = params; +export function getServiceNowITOMConnectorType( + params: GetConnectorTypeParams +): ServiceNowConnectorType { + const { logger } = params; return { - id: ServiceNowITOMActionTypeId, + id: ServiceNowITOMConnectorTypeId, minimumLicenseRequired: 'platinum', name: i18n.SERVICENOW_ITOM, supportedFeatureIds: [AlertingConnectorFeatureId, SecurityConnectorFeatureId], @@ -190,8 +190,7 @@ export function getServiceNowITOMActionType( }, executor: curry(executorITOM)({ logger, - configurationUtilities, - actionTypeId: ServiceNowITOMActionTypeId, + actionTypeId: ServiceNowITOMConnectorTypeId, createService: createExternalServiceITOM, api: apiITOM, }), @@ -203,23 +202,21 @@ const supportedSubActions: string[] = ['getFields', 'pushToService', 'getChoices async function executor( { logger, - configurationUtilities, actionTypeId, createService, api, }: { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; actionTypeId: string; createService: ServiceFactory; api: ExternalServiceAPI; }, - execOptions: ServiceNowActionTypeExecutorOptions< + execOptions: ServiceNowConnectorTypeExecutorOptions< ServiceNowPublicConfigurationType, ExecutorParams > -): Promise> { - const { actionId, config, params, secrets, services } = execOptions; +): Promise> { + const { actionId, config, params, secrets, services, configurationUtilities } = execOptions; const { subAction, subActionParams } = params; const connectorTokenClient = services.connectorTokenClient; const externalServiceConfig = snExternalServiceConfig[actionTypeId]; @@ -281,23 +278,21 @@ const supportedSubActionsITOM = ['addEvent', 'getChoices']; async function executorITOM( { logger, - configurationUtilities, actionTypeId, createService, api, }: { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; actionTypeId: string; createService: ServiceFactory; api: ExternalServiceApiITOM; }, - execOptions: ServiceNowActionTypeExecutorOptions< + execOptions: ServiceNowConnectorTypeExecutorOptions< ServiceNowPublicConfigurationBaseType, ExecutorParamsITOM > -): Promise> { - const { actionId, config, params, secrets } = execOptions; +): Promise> { + const { actionId, config, params, secrets, configurationUtilities } = execOptions; const { subAction, subActionParams } = params; const connectorTokenClient = execOptions.services.connectorTokenClient; const externalServiceConfig = snExternalServiceConfig[actionTypeId]; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/mocks.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/mocks.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/mocks.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/mocks.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/schema.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/schema.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/schema.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/schema.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.test.ts index 262569548fe94..28ee0e248c2b8 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.test.ts @@ -8,18 +8,18 @@ import axios, { AxiosResponse } from 'axios'; import { createExternalService } from './service'; -import * as utils from '../../lib/axios_utils'; +import * as utils from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalService, ServiceNowITSMIncident } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; import { serviceNowCommonFields, serviceNowChoices } from './mocks'; import { snExternalServiceConfig } from './config'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.ts index f4a23ee224781..3f1b7cd7cdc64 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.ts @@ -7,6 +7,7 @@ import { AxiosResponse } from 'axios'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalService, ExternalServiceParamsCreate, @@ -20,7 +21,6 @@ import { import * as i18n from './translations'; import { ServiceNowPublicConfigurationType, ServiceNowSecretConfigurationType } from './types'; -import { request } from '../../lib/axios_utils'; import { createServiceError, getPushedDate, prepareIncident } from './utils'; export const SYS_DICTIONARY_ENDPOINT = `api/now/table/sys_dictionary`; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.test.ts similarity index 89% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.test.ts index 43498f60b5196..ddc347f49dc76 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.test.ts @@ -8,19 +8,19 @@ import axios from 'axios'; import { createExternalServiceITOM } from './service_itom'; -import * as utils from '../../lib/axios_utils'; +import * as utils from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalServiceITOM } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; import { snExternalServiceConfig } from './config'; import { itomEventParams, serviceNowChoices } from './mocks'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.ts similarity index 95% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.ts index ac63dbd35e2b0..74e76e4aedc1d 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_itom.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_itom.ts @@ -5,9 +5,9 @@ * 2.0. */ +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; import { ServiceFactory, ExternalServiceITOM, ExecutorSubActionAddEventParams } from './types'; -import { request } from '../../lib/axios_utils'; import { createExternalService } from './service'; import { createServiceError } from './utils'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.test.ts similarity index 91% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.test.ts index bed12a5970e5c..0cf30d358b47f 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.test.ts @@ -8,19 +8,19 @@ import axios from 'axios'; import { createExternalServiceSIR } from './service_sir'; -import * as utils from '../../lib/axios_utils'; +import * as utils from '@kbn/actions-plugin/server/lib/axios_utils'; import { ExternalServiceSIR } from './types'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; import { observables } from './mocks'; import { snExternalServiceConfig } from './config'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.ts index 796eff15806e2..de3220c36bd4c 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/service_sir.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service_sir.ts @@ -5,9 +5,9 @@ * 2.0. */ +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; import { Observable, ExternalServiceSIR, ObservableResponse, ServiceFactory } from './types'; -import { request } from '../../lib/axios_utils'; import { createExternalService } from './service'; import { createServiceError } from './utils'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/translations.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/translations.ts similarity index 56% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/translations.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/translations.ts index b007e57773989..2a7e9f94c6704 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/translations.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/translations.ts @@ -7,24 +7,24 @@ import { i18n } from '@kbn/i18n'; -export const SERVICENOW = i18n.translate('xpack.actions.builtin.serviceNowTitle', { +export const SERVICENOW = i18n.translate('xpack.stackConnectors.serviceNow.title', { defaultMessage: 'ServiceNow', }); -export const SERVICENOW_ITSM = i18n.translate('xpack.actions.builtin.serviceNowITSMTitle', { +export const SERVICENOW_ITSM = i18n.translate('xpack.stackConnectors.serviceNowITSM.title', { defaultMessage: 'ServiceNow ITSM', }); -export const SERVICENOW_SIR = i18n.translate('xpack.actions.builtin.serviceNowSIRTitle', { +export const SERVICENOW_SIR = i18n.translate('xpack.stackConnectors.serviceNowSIR.title', { defaultMessage: 'ServiceNow SecOps', }); -export const SERVICENOW_ITOM = i18n.translate('xpack.actions.builtin.serviceNowITOMTitle', { +export const SERVICENOW_ITOM = i18n.translate('xpack.stackConnectors.serviceNowITOM.title', { defaultMessage: 'ServiceNow ITOM', }); export const ALLOWED_HOSTS_ERROR = (message: string) => - i18n.translate('xpack.actions.builtin.configuration.apiAllowedHostsError', { + i18n.translate('xpack.stackConnectors.serviceNow.configuration.apiAllowedHostsError', { defaultMessage: 'error configuring connector action: {message}', values: { message, @@ -32,37 +32,40 @@ export const ALLOWED_HOSTS_ERROR = (message: string) => }); export const CREDENTIALS_ERROR = i18n.translate( - 'xpack.actions.builtin.configuration.apiCredentialsError', + 'xpack.stackConnectors.serviceNow.configuration.apiCredentialsError', { defaultMessage: 'Either basic auth or OAuth credentials must be specified', } ); export const BASIC_AUTH_CREDENTIALS_ERROR = i18n.translate( - 'xpack.actions.builtin.configuration.apiBasicAuthCredentialsError', + 'xpack.stackConnectors.serviceNow.configuration.apiBasicAuthCredentialsError', { defaultMessage: 'username and password must both be specified', } ); export const OAUTH_CREDENTIALS_ERROR = i18n.translate( - 'xpack.actions.builtin.configuration.apiOAuthCredentialsError', + 'xpack.stackConnectors.serviceNow.configuration.apiOAuthCredentialsError', { defaultMessage: 'clientSecret and privateKey must both be specified', } ); export const VALIDATE_OAUTH_MISSING_FIELD_ERROR = (field: string, isOAuth: boolean) => - i18n.translate('xpack.actions.builtin.configuration.apiValidateMissingOAuthFieldError', { - defaultMessage: '{field} must be provided when isOAuth = {isOAuth}', - values: { - field, - isOAuth: isOAuth ? 'true' : 'false', - }, - }); + i18n.translate( + 'xpack.stackConnectors.serviceNow.configuration.apiValidateMissingOAuthFieldError', + { + defaultMessage: '{field} must be provided when isOAuth = {isOAuth}', + values: { + field, + isOAuth: isOAuth ? 'true' : 'false', + }, + } + ); export const VALIDATE_OAUTH_POPULATED_FIELD_ERROR = (field: string, isOAuth: boolean) => - i18n.translate('xpack.actions.builtin.configuration.apiValidateOAuthFieldError', { + i18n.translate('xpack.stackConnectors.serviceNow.configuration.apiValidateOAuthFieldError', { defaultMessage: '{field} should not be provided with isOAuth = {isOAuth}', values: { field, diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/types.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/types.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/types.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/types.ts index 069f123fae4ec..dbd17e67d9500 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/types.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/types.ts @@ -10,6 +10,8 @@ import { AxiosError, AxiosInstance, AxiosResponse } from 'axios'; import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ExecutorParamsSchemaITSM, ExecutorSubActionCommonFieldsParamsSchema, @@ -25,11 +27,9 @@ import { ExecutorSubActionAddEventParamsSchema, ExternalIncidentServiceConfigurationBaseSchema, } from './schema'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { SNProductsConfigValue } from '../../../common'; -import { ValidatorServices } from '../../types'; +import { SNProductsConfigValue } from '../../../../common/servicenow_config'; -export type { SNProductsConfigValue, SNProductsConfig } from '../../../common'; +export type { SNProductsConfigValue, SNProductsConfig } from '../../../../common/servicenow_config'; export type ServiceNowPublicConfigurationBaseType = TypeOf< typeof ExternalIncidentServiceConfigurationBaseSchema diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.test.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.test.ts index fcd2023dc8e27..56e6e45cd04c2 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.test.ts @@ -17,11 +17,11 @@ import { getAxiosInstance, } from './utils'; import type { ResponseError } from './types'; -import { connectorTokenClientMock } from '../lib/connector_token_client.mock'; -import { actionsConfigMock } from '../../actions_config.mock'; -import { getOAuthJwtAccessToken } from '../lib/get_oauth_jwt_access_token'; +import { connectorTokenClientMock } from '@kbn/actions-plugin/server/lib/connector_token_client.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { getOAuthJwtAccessToken } from '@kbn/actions-plugin/server/lib/get_oauth_jwt_access_token'; -jest.mock('../lib/get_oauth_jwt_access_token', () => ({ +jest.mock('@kbn/actions-plugin/server/lib/get_oauth_jwt_access_token', () => ({ getOAuthJwtAccessToken: jest.fn(), })); diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.ts similarity index 93% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.ts index 65c1cd8a5b1ac..f5ae7baa3e256 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/utils.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/utils.ts @@ -7,6 +7,10 @@ import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; import { Logger } from '@kbn/core/server'; +import { addTimeZoneToDate, getErrorMessage } from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { ConnectorTokenClientContract } from '@kbn/actions-plugin/server/types'; +import { getOAuthJwtAccessToken } from '@kbn/actions-plugin/server/lib/get_oauth_jwt_access_token'; import { ExternalServiceCredentials, Incident, @@ -17,11 +21,7 @@ import { ServiceNowSecretConfigurationType, } from './types'; import { FIELD_PREFIX } from './config'; -import { addTimeZoneToDate, getErrorMessage } from '../../lib/axios_utils'; import * as i18n from './translations'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { ConnectorTokenClientContract } from '../../types'; -import { getOAuthJwtAccessToken } from '../lib/get_oauth_jwt_access_token'; export const prepareIncident = (useOldApi: boolean, incident: PartialIncident): PartialIncident => useOldApi diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.test.ts similarity index 99% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.test.ts index 8b2f6b26e1a5a..598f5ba576d0f 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.test.ts @@ -6,7 +6,7 @@ */ import { validateCommonConfig, validateCommonSecrets, validateCommonConnector } from './validators'; -import { actionsConfigMock } from '../../actions_config.mock'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; const configurationUtilities = actionsConfigMock.create(); diff --git a/x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.ts index 6978a5335f8b0..1ff9d09ad54ee 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/servicenow/validators.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/validators.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ServiceNowPublicConfigurationType, ServiceNowSecretConfigurationType, @@ -12,7 +13,6 @@ import { } from './types'; import * as i18n from './translations'; -import { ValidatorServices } from '../../types'; export const validateCommonConfig = ( config: ServiceNowPublicConfigurationType, diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/api.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/api.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/api.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/api.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/api.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/helpers.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/helpers.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/helpers.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/helpers.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/helpers.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/helpers.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/helpers.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/helpers.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/index.ts similarity index 76% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/index.ts index 38cf28edc1e09..a033abd875ea4 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/index.ts @@ -8,8 +8,16 @@ import { curry } from 'lodash'; import { i18n } from '@kbn/i18n'; import { Logger } from '@kbn/logging'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../../types'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { + AlertingConnectorFeatureId, + CasesConnectorFeatureId, + SecurityConnectorFeatureId, +} from '@kbn/actions-plugin/common/types'; import { SwimlaneExecutorResultData, SwimlanePublicConfigurationType, @@ -25,33 +33,28 @@ import { } from './schema'; import { createExternalService } from './service'; import { api } from './api'; -import { - AlertingConnectorFeatureId, - CasesConnectorFeatureId, - SecurityConnectorFeatureId, -} from '../../../common'; -interface GetActionTypeParams { + +interface GetConnectorTypeParams { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; } const supportedSubActions: string[] = ['pushToService']; -// action type definition -export function getActionType( - params: GetActionTypeParams -): ActionType< +// connector type definition +export function getConnectorType( + params: GetConnectorTypeParams +): ConnectorType< SwimlanePublicConfigurationType, SwimlaneSecretConfigurationType, ExecutorParams, SwimlaneExecutorResultData | {} > { - const { logger, configurationUtilities } = params; + const { logger } = params; return { id: '.swimlane', minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.swimlaneTitle', { + name: i18n.translate('xpack.stackConnectors.swimlane.title', { defaultMessage: 'Swimlane', }), supportedFeatureIds: [ @@ -72,22 +75,19 @@ export function getActionType( schema: ExecutorParamsSchema, }, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: ActionTypeExecutorOptions< + { logger }: { logger: Logger }, + execOptions: ConnectorTypeExecutorOptions< SwimlanePublicConfigurationType, SwimlaneSecretConfigurationType, ExecutorParams > -): Promise> { - const { actionId, config, params, secrets } = execOptions; +): Promise> { + const { actionId, config, params, secrets, configurationUtilities } = execOptions; const { subAction, subActionParams } = params as ExecutorParams; let data: SwimlaneExecutorResultData | null = null; diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/mocks.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/mocks.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/mocks.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/mocks.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/schema.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/schema.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/schema.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/schema.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/service.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.test.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/service.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.test.ts index c2b5a41ca7e95..1aeee9c586fd5 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/service.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.test.ts @@ -9,8 +9,8 @@ import axios from 'axios'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { Logger } from '@kbn/core/server'; -import { actionsConfigMock } from '../../actions_config.mock'; -import { request, createAxiosResponse } from '../../lib/axios_utils'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { request, createAxiosResponse } from '@kbn/actions-plugin/server/lib/axios_utils'; import { createExternalService } from './service'; import { mappings } from './mocks'; import { ExternalService } from './types'; @@ -18,8 +18,8 @@ import { ExternalService } from './types'; const logger = loggingSystemMock.create().get() as jest.Mocked; jest.mock('axios'); -jest.mock('../../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/service.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.ts similarity index 96% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/service.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.ts index 746cf25b63788..42c4b65408f21 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/service.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/service.ts @@ -8,8 +8,12 @@ import { Logger } from '@kbn/logging'; import axios from 'axios'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { getErrorMessage, request, throwIfResponseIsNotValid } from '../../lib/axios_utils'; +import { + getErrorMessage, + request, + throwIfResponseIsNotValid, +} from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { getBodyForEventAction } from './helpers'; import { CreateCommentParams, diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/translations.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/translations.ts similarity index 78% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/translations.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/translations.ts index 671cf224448f6..d820a3cfa57ae 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/translations.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/translations.ts @@ -7,12 +7,12 @@ import { i18n } from '@kbn/i18n'; -export const NAME = i18n.translate('xpack.actions.builtin.case.swimlaneTitle', { +export const NAME = i18n.translate('xpack.stackConnectors.swimlane.title', { defaultMessage: 'Swimlane', }); export const ALLOWED_HOSTS_ERROR = (message: string) => - i18n.translate('xpack.actions.builtin.swimlane.configuration.apiAllowedHostsError', { + i18n.translate('xpack.stackConnectors.swimlane.configuration.apiAllowedHostsError', { defaultMessage: 'error configuring connector action: {message}', values: { message, diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/types.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/types.ts similarity index 98% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/types.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/types.ts index b00f0d25ee2f7..dc36aa13f6541 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/types.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/types.ts @@ -8,6 +8,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/logging'; +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ConfigMappingSchema, ExecutorParamsSchema, @@ -15,7 +16,6 @@ import { SwimlaneSecretsConfigurationSchema, SwimlaneServiceConfigurationSchema, } from './schema'; -import { ValidatorServices } from '../../types'; export type SwimlanePublicConfigurationType = TypeOf; export type SwimlaneSecretConfigurationType = TypeOf; diff --git a/x-pack/plugins/actions/server/builtin_action_types/swimlane/validators.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/validators.ts similarity index 93% rename from x-pack/plugins/actions/server/builtin_action_types/swimlane/validators.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/validators.ts index fc1d0a95d0d85..050a25c5c9966 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/swimlane/validators.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/swimlane/validators.ts @@ -5,13 +5,13 @@ * 2.0. */ +import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { ExternalServiceValidation, SwimlanePublicConfigurationType, SwimlaneSecretConfigurationType, } from './types'; import * as i18n from './translations'; -import { ValidatorServices } from '../../types'; export const validateCommonConfig = ( configObject: SwimlanePublicConfigurationType, diff --git a/x-pack/plugins/actions/server/builtin_action_types/xmatters.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.test.ts similarity index 80% rename from x-pack/plugins/actions/server/builtin_action_types/xmatters.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.test.ts index 83e43ee8b3ba2..98cac875e6b55 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/xmatters.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.test.ts @@ -5,58 +5,48 @@ * 2.0. */ -jest.mock('./lib/post_xmatters', () => ({ +jest.mock('./post_xmatters', () => ({ postXmatters: jest.fn(), })); +import { postXmatters } from './post_xmatters'; -import { Services } from '../types'; -import { validateConfig, validateSecrets, validateParams, validateConnector } from '../lib'; -import { postXmatters } from './lib/post_xmatters'; -import { actionsConfigMock } from '../actions_config.mock'; -import { createActionTypeRegistry } from './index.test'; import { Logger } from '@kbn/core/server'; -import { actionsMock } from '../mocks'; import { - ActionParamsType, - ActionTypeConfigType, - ActionTypeSecretsType, - getActionType, - XmattersActionType, -} from './xmatters'; -import { ActionsConfigurationUtilities } from '../actions_config'; + ConnectorTypeConfigType, + ConnectorTypeSecretsType, + getConnectorType, + XmattersConnectorType, +} from '.'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { Services } from '@kbn/actions-plugin/server/types'; +import { + validateConfig, + validateConnector, + validateParams, + validateSecrets, +} from '@kbn/actions-plugin/server/lib'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { loggerMock } from '@kbn/logging-mocks'; const postxMattersMock = postXmatters as jest.Mock; - -const ACTION_TYPE_ID = '.xmatters'; - const services: Services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: XmattersActionType; -let mockedLogger: jest.Mocked; +let connectorType: XmattersConnectorType; let configurationUtilities: jest.Mocked; -beforeAll(() => { - const { logger, actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get< - ActionTypeConfigType, - ActionTypeSecretsType, - ActionParamsType - >(ACTION_TYPE_ID); - mockedLogger = logger; -}); - beforeEach(() => { configurationUtilities = actionsConfigMock.create(); - actionType = getActionType({ + connectorType = getConnectorType({ logger: mockedLogger, - configurationUtilities, }); }); -describe('actionType', () => { - test('exposes the action as `xmatters` on its Id and Name', () => { - expect(actionType.id).toEqual('.xmatters'); - expect(actionType.name).toEqual('xMatters'); +describe('connectorType', () => { + test('exposes the connector as `xmatters` on its Id and Name', () => { + expect(connectorType.id).toEqual('.xmatters'); + expect(connectorType.name).toEqual('xMatters'); }); }); @@ -66,7 +56,7 @@ describe('secrets validation', () => { user: 'bob', password: 'supersecret', }; - expect(validateSecrets(actionType, secrets, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, secrets, { configurationUtilities })).toEqual({ ...secrets, secretsUrl: null, }); @@ -76,7 +66,7 @@ describe('secrets validation', () => { const secrets: Record = { secretsUrl: 'http://mylisteningserver:9200/endpoint?apiKey=someKey', }; - expect(validateSecrets(actionType, secrets, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, secrets, { configurationUtilities })).toEqual({ ...secrets, user: null, password: null, @@ -89,7 +79,7 @@ describe('secrets validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint?apiKey=someKey', }; expect(() => { - validateSecrets(actionType, secrets, { configurationUtilities }); + validateSecrets(connectorType, secrets, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Cannot use user/password for URL authentication. Provide valid secretsUrl or use Basic Authentication."` ); @@ -101,7 +91,7 @@ describe('secrets validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint?apiKey=someKey', }; expect(() => { - validateSecrets(actionType, secrets, { configurationUtilities }); + validateSecrets(connectorType, secrets, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Cannot use user/password for URL authentication. Provide valid secretsUrl or use Basic Authentication."` ); @@ -114,7 +104,7 @@ describe('secrets validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint?apiKey=someKey', }; expect(() => { - validateSecrets(actionType, secrets, { configurationUtilities }); + validateSecrets(connectorType, secrets, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Cannot use user/password for URL authentication. Provide valid secretsUrl or use Basic Authentication."` ); @@ -122,7 +112,7 @@ describe('secrets validation', () => { test('fails when secret user is provided, but password is omitted', () => { expect(() => { - validateSecrets(actionType, { user: 'bob' }, { configurationUtilities }); + validateSecrets(connectorType, { user: 'bob' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Both user and password must be specified."` ); @@ -130,7 +120,7 @@ describe('secrets validation', () => { test('fails when password is provided, but user is omitted', () => { expect(() => { - validateSecrets(actionType, { password: 'supersecret' }, { configurationUtilities }); + validateSecrets(connectorType, { password: 'supersecret' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Both user and password must be specified."` ); @@ -138,7 +128,7 @@ describe('secrets validation', () => { test('fails when user, password, and secretsUrl are omitted', () => { expect(() => { - validateSecrets(actionType, {}, { configurationUtilities }); + validateSecrets(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: Provide either secretsUrl link or user/password to authenticate"` ); @@ -149,7 +139,7 @@ describe('secrets validation', () => { secretsUrl: 'example.com/do-something?apiKey=someKey', }; expect(() => { - validateSecrets(actionType, secrets, { configurationUtilities }); + validateSecrets(connectorType, secrets, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( '"error validating action type secrets: Invalid secretsUrl: TypeError: Invalid URL: example.com/do-something?apiKey=someKey"' ); @@ -162,16 +152,12 @@ describe('secrets validation', () => { throw new Error(`target url is not present in allowedHosts`); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); const secrets: Record = { secretsUrl: 'http://mylisteningserver.com:9200/endpoint', }; expect(() => { - validateSecrets(actionType, secrets, { configurationUtilities: configUtils }); + validateSecrets(connectorType, secrets, { configurationUtilities: configUtils }); }).toThrowErrorMatchingInlineSnapshot( '"error validating action type secrets: target url is not present in allowedHosts"' ); @@ -184,7 +170,7 @@ describe('config validation', () => { configUrl: 'http://mylisteningserver:9200/endpoint', usesBasic: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual(config); + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual(config); }); test('config validation failed when a url is invalid', () => { @@ -193,7 +179,7 @@ describe('config validation', () => { usesBasic: true, }; expect(() => { - validateConfig(actionType, config, { configurationUtilities }); + validateConfig(connectorType, config, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( '"error validating action type config: Error configuring xMatters action: unable to parse url: TypeError: Invalid URL: example.com/do-something"' ); @@ -206,18 +192,13 @@ describe('config validation', () => { throw new Error(`target url is not present in allowedHosts`); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); - const config: Record = { configUrl: 'http://mylisteningserver.com:9200/endpoint', usesBasic: true, }; expect(() => { - validateConfig(actionType, config, { configurationUtilities: configUtils }); + validateConfig(connectorType, config, { configurationUtilities: configUtils }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: Error configuring xMatters action: target url is not present in allowedHosts"` ); @@ -229,7 +210,7 @@ describe('config validation', () => { usesBasic: false, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual(config); + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual(config); }); }); @@ -238,7 +219,7 @@ describe('params validation', () => { const params: Record = { severity: 'high', }; - expect(validateParams(actionType, params, { configurationUtilities })).toEqual({ + expect(validateParams(connectorType, params, { configurationUtilities })).toEqual({ severity: 'high', }); }); @@ -253,7 +234,7 @@ describe('params validation', () => { spaceId: 'default', tags: 'test1, test2', }; - expect(validateParams(actionType, params, { configurationUtilities })).toEqual({ + expect(validateParams(connectorType, params, { configurationUtilities })).toEqual({ ...params, }); }); @@ -267,7 +248,7 @@ describe('connector validation', () => { }; const secrets: Record = {}; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: Provide valid Username"` ); @@ -282,7 +263,7 @@ describe('connector validation', () => { user: 'bob', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: Provide valid Password"` ); @@ -297,7 +278,7 @@ describe('connector validation', () => { password: 'supersecret', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: Provide valid configUrl"` ); @@ -313,7 +294,7 @@ describe('connector validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: Username and password should not be provided when usesBasic is false"` ); @@ -330,7 +311,7 @@ describe('connector validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: secretsUrl should not be provided when usesBasic is true"` ); @@ -344,7 +325,7 @@ describe('connector validation', () => { secretsUrl: 'http://mylisteningserver:9200/endpoint', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: secretsUrl should not be provided when usesBasic is true"` ); @@ -360,7 +341,7 @@ describe('connector validation', () => { password: 'supersecret', }; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: Username and password should not be provided when usesBasic is false"` ); @@ -373,7 +354,7 @@ describe('connector validation', () => { }; const secrets: Record = {}; expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: configUrl should not be provided when usesBasic is false"` ); @@ -388,7 +369,7 @@ describe('connector validation', () => { user: 'bob', password: 'supersecret', }; - expect(validateConnector(actionType, { config, secrets })).toEqual(null); + expect(validateConnector(connectorType, { config, secrets })).toEqual(null); }); test('connector validation succeeds with url auth', () => { @@ -398,7 +379,7 @@ describe('connector validation', () => { const secrets: Record = { secretsUrl: 'http://mylisteningserver:9200/endpoint', }; - expect(validateConnector(actionType, { config, secrets })).toEqual(null); + expect(validateConnector(connectorType, { config, secrets })).toEqual(null); }); }); @@ -414,11 +395,11 @@ describe('execute()', () => { }); test('execute with useBasic=true uses authentication object', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { configUrl: 'https://abc.def/my-xmatters', usesBasic: true, }; - await actionType.executor({ + await connectorType.executor({ actionId: 'some-id', services, config, @@ -432,6 +413,7 @@ describe('execute()', () => { spaceId: 'default', tags: 'test1, test2', }, + configurationUtilities, }); expect(postxMattersMock.mock.calls[0][0]).toMatchInlineSnapshot(` @@ -457,7 +439,7 @@ describe('execute()', () => { }); test('execute with exception maxContentLength size exceeded should log the proper error', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { configUrl: 'https://abc.def/my-xmatters', usesBasic: true, }; @@ -465,7 +447,7 @@ describe('execute()', () => { tag: 'err', message: 'maxContentLength size of 1000000 exceeded', }); - await actionType.executor({ + await connectorType.executor({ actionId: 'some-id', services, config, @@ -479,6 +461,7 @@ describe('execute()', () => { spaceId: 'default', tags: 'test1, test2', }, + configurationUtilities, }); expect(mockedLogger.warn).toBeCalledWith( 'Error thrown triggering xMatters workflow: maxContentLength size of 1000000 exceeded' @@ -486,16 +469,16 @@ describe('execute()', () => { }); test('execute with useBasic=false uses empty authentication object', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { configUrl: null, usesBasic: false, }; - const secrets: ActionTypeSecretsType = { + const secrets: ConnectorTypeSecretsType = { user: null, password: null, secretsUrl: 'https://abc.def/my-xmatters?apiKey=someKey', }; - await actionType.executor({ + await connectorType.executor({ actionId: 'some-id', services, config, @@ -509,6 +492,7 @@ describe('execute()', () => { spaceId: 'default', tags: 'test1, test2', }, + configurationUtilities, }); expect(postxMattersMock.mock.calls[0][0]).toMatchInlineSnapshot(` diff --git a/x-pack/plugins/actions/server/builtin_action_types/xmatters.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.ts similarity index 72% rename from x-pack/plugins/actions/server/builtin_action_types/xmatters.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.ts index 8bd6350ada633..0686d37a953f5 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/xmatters.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/index.ts @@ -5,29 +5,28 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; import { curry, isString } from 'lodash'; +import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; -import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; -import { postXmatters } from './lib/post_xmatters'; -import { AlertingConnectorFeatureId } from '../../common'; +} from '@kbn/actions-plugin/server/types'; +import { AlertingConnectorFeatureId } from '@kbn/actions-plugin/common/types'; +import { postXmatters } from './post_xmatters'; -export type XmattersActionType = ActionType< - ActionTypeConfigType, - ActionTypeSecretsType, +export type XmattersConnectorType = ConnectorType< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType, unknown >; -export type XmattersActionTypeExecutorOptions = ActionTypeExecutorOptions< - ActionTypeConfigType, - ActionTypeSecretsType, +export type XmattersConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType >; @@ -36,10 +35,10 @@ const configSchemaProps = { usesBasic: schema.boolean({ defaultValue: true }), }; const ConfigSchema = schema.object(configSchemaProps); -export type ActionTypeConfigType = TypeOf; +export type ConnectorTypeConfigType = TypeOf; // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const secretSchemaProps = { user: schema.nullable(schema.string()), password: schema.nullable(schema.string()), @@ -59,42 +58,36 @@ const ParamsSchema = schema.object({ tags: schema.maybe(schema.string()), }); -export const ActionTypeId = '.xmatters'; -// action type definition -export function getActionType({ - logger, - configurationUtilities, -}: { - logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; -}): XmattersActionType { +export const ConnectorTypeId = '.xmatters'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): XmattersConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.xmattersTitle', { + name: i18n.translate('xpack.stackConnectors.xmatters.title', { defaultMessage: 'xMatters', }), supportedFeatureIds: [AlertingConnectorFeatureId], validate: { config: { schema: ConfigSchema, - customValidator: validateActionTypeConfig, + customValidator: validateConnectorTypeConfig, }, secrets: { schema: SecretsSchema, - customValidator: validateActionTypeSecrets, + customValidator: validateConnectorTypeSecrets, }, params: { schema: ParamsSchema, }, connector: validateConnector, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } -function validateActionTypeConfig( - configObject: ActionTypeConfigType, +function validateConnectorTypeConfig( + configObject: ConnectorTypeConfigType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; @@ -107,7 +100,7 @@ function validateActionTypeConfig( } } catch (err) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.xmattersConfigurationErrorNoHostname', { + i18n.translate('xpack.stackConnectors.xmatters.configurationErrorNoHostname', { defaultMessage: 'Error configuring xMatters action: unable to parse url: {err}', values: { err, @@ -122,7 +115,7 @@ function validateActionTypeConfig( } } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.xmattersConfigurationError', { + i18n.translate('xpack.stackConnectors.xmatters.configurationError', { defaultMessage: 'Error configuring xMatters action: {message}', values: { message: allowListError.message, @@ -133,46 +126,46 @@ function validateActionTypeConfig( } function validateConnector( - config: ActionTypeConfigType, - secrets: ActionTypeSecretsType + config: ConnectorTypeConfigType, + secrets: ConnectorTypeSecretsType ): string | null { const { user, password, secretsUrl } = secrets; const { usesBasic, configUrl } = config; if (usesBasic) { if (secretsUrl) { - return i18n.translate('xpack.actions.builtin.xmatters.shouldNotHaveSecretsUrl', { + return i18n.translate('xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl', { defaultMessage: 'secretsUrl should not be provided when usesBasic is true', }); } if (user == null) { - return i18n.translate('xpack.actions.builtin.xmatters.missingUser', { + return i18n.translate('xpack.stackConnectors.xmatters.missingUser', { defaultMessage: 'Provide valid Username', }); } if (password == null) { - return i18n.translate('xpack.actions.builtin.xmatters.missingPassword', { + return i18n.translate('xpack.stackConnectors.xmatters.missingPassword', { defaultMessage: 'Provide valid Password', }); } if (configUrl == null) { - return i18n.translate('xpack.actions.builtin.xmatters.missingConfigUrl', { + return i18n.translate('xpack.stackConnectors.xmatters.missingConfigUrl', { defaultMessage: 'Provide valid configUrl', }); } } else { if (user || password) { - return i18n.translate('xpack.actions.builtin.xmatters.shouldNotHaveUsernamePassword', { + return i18n.translate('xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword', { defaultMessage: 'Username and password should not be provided when usesBasic is false', }); } if (configUrl) { - return i18n.translate('xpack.actions.builtin.xmatters.shouldNotHaveConfigUrl', { + return i18n.translate('xpack.stackConnectors.xmatters.shouldNotHaveConfigUrl', { defaultMessage: 'configUrl should not be provided when usesBasic is false', }); } if (secretsUrl == null) { - return i18n.translate('xpack.actions.builtin.xmatters.missingSecretsUrl', { + return i18n.translate('xpack.stackConnectors.xmatters.missingSecretsUrl', { defaultMessage: 'Provide valid secretsUrl with API Key', }); } @@ -180,14 +173,14 @@ function validateConnector( return null; } -function validateActionTypeSecrets( - secretsObject: ActionTypeSecretsType, +function validateConnectorTypeSecrets( + secretsObject: ConnectorTypeSecretsType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; if (!secretsObject.secretsUrl && !secretsObject.user && !secretsObject.password) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.noSecretsProvided', { + i18n.translate('xpack.stackConnectors.xmatters.noSecretsProvided', { defaultMessage: 'Provide either secretsUrl link or user/password to authenticate', }) ); @@ -198,7 +191,7 @@ function validateActionTypeSecrets( // Neither user/password should be defined if secretsUrl is specified if (secretsObject.user || secretsObject.password) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.noUserPassWhenSecretsUrl', { + i18n.translate('xpack.stackConnectors.xmatters.noUserPassWhenSecretsUrl', { defaultMessage: 'Cannot use user/password for URL authentication. Provide valid secretsUrl or use Basic Authentication.', }) @@ -212,7 +205,7 @@ function validateActionTypeSecrets( } } catch (err) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.xmattersInvalidUrlError', { + i18n.translate('xpack.stackConnectors.xmatters.invalidUrlError', { defaultMessage: 'Invalid secretsUrl: {err}', values: { err, @@ -228,7 +221,7 @@ function validateActionTypeSecrets( } } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.xmattersHostnameNotAllowed', { + i18n.translate('xpack.stackConnectors.xmatters.hostnameNotAllowed', { defaultMessage: '{message}', values: { message: allowListError.message, @@ -240,7 +233,7 @@ function validateActionTypeSecrets( // Username and password must both be set if (!secretsObject.user || !secretsObject.password) { throw new Error( - i18n.translate('xpack.actions.builtin.xmatters.invalidUsernamePassword', { + i18n.translate('xpack.stackConnectors.xmatters.invalidUsernamePassword', { defaultMessage: 'Both user and password must be specified.', }) ); @@ -250,17 +243,15 @@ function validateActionTypeSecrets( // action executor export async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: XmattersActionTypeExecutorOptions -): Promise> { + { logger }: { logger: Logger }, + execOptions: XmattersConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; + const configurationUtilities = execOptions.configurationUtilities; const { configUrl, usesBasic } = execOptions.config; const data = getPayloadForRequest(execOptions.params); - const secrets: ActionTypeSecretsType = execOptions.secrets; + const secrets: ConnectorTypeSecretsType = execOptions.secrets; const basicAuth = usesBasic && isString(secrets.user) && isString(secrets.password) ? { auth: { username: secrets.user, password: secrets.password } } @@ -274,7 +265,7 @@ export async function executor( } result = await postXmatters({ url, data, basicAuth }, logger, configurationUtilities); } catch (err) { - const message = i18n.translate('xpack.actions.builtin.xmatters.postingErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.xmatters.postingErrorMessage', { defaultMessage: 'Error triggering xMatters workflow', }); logger.warn(`Error thrown triggering xMatters workflow: ${err.message}`); @@ -294,7 +285,7 @@ export async function executor( } if (result.status === 429 || result.status >= 500) { - const message = i18n.translate('xpack.actions.builtin.xmatters.postingRetryErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.xmatters.postingRetryErrorMessage', { defaultMessage: 'Error triggering xMatters flow: http status {status}, retry later', values: { status: result.status, @@ -308,7 +299,7 @@ export async function executor( retry: true, }; } - const message = i18n.translate('xpack.actions.builtin.xmatters.unexpectedStatusErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.xmatters.unexpectedStatusErrorMessage', { defaultMessage: 'Error triggering xMatters flow: unexpected status {status}', values: { status: result.status, @@ -323,7 +314,7 @@ export async function executor( } // Action Executor Result w/ internationalisation -function successResult(actionId: string, data: unknown): ActionTypeExecutorResult { +function successResult(actionId: string, data: unknown): ConnectorTypeExecutorResult { return { status: 'ok', data, actionId }; } diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/post_xmatters.ts b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/post_xmatters.ts similarity index 87% rename from x-pack/plugins/actions/server/builtin_action_types/lib/post_xmatters.ts rename to x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/post_xmatters.ts index 67a7504a339e2..1fcec5a4238f7 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/post_xmatters.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/cases/xmatters/post_xmatters.ts @@ -7,8 +7,8 @@ import axios, { AxiosResponse } from 'axios'; import { Logger } from '@kbn/core/server'; -import { request } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; interface PostXmattersOptions { url: string; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/index.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/index.test.ts new file mode 100644 index 0000000000000..55fd99c040941 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/index.test.ts @@ -0,0 +1,46 @@ +/* + * 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 { registerConnectorTypes } from '.'; +import { Logger } from '@kbn/core/server'; +import { loggingSystemMock } from '@kbn/core/server/mocks'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; + +const ACTION_TYPE_IDS = [ + '.index', + '.email', + '.pagerduty', + '.server-log', + '.slack', + '.swimlane', + '.teams', + '.webhook', + '.xmatters', +]; + +const logger = loggingSystemMock.create().get() as jest.Mocked; +const mockedActions = actionsMock.createSetup(); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe('registers connectors', () => { + test('calls registerType with expected connector types', () => { + registerConnectorTypes({ + logger, + actions: mockedActions, + }); + ACTION_TYPE_IDS.forEach((id) => + expect(mockedActions.registerType).toHaveBeenCalledWith( + expect.objectContaining({ + id, + }) + ) + ); + }); +}); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/index.ts new file mode 100644 index 0000000000000..db227eb96109a --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/index.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Logger } from '@kbn/core/server'; +import { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; +import { + getEmailConnectorType, + getIndexConnectorType, + getPagerDutyConnectorType, + getServerLogConnectorType, + getSlackConnectorType, + getTeamsConnectorType, + getWebhookConnectorType, +} from './stack'; +import { + getCasesWebhookConnectorType, + getJiraConnectorType, + getResilientConnectorType, + getServiceNowITOMConnectorType, + getServiceNowITSMConnectorType, + getServiceNowSIRConnectorType, + getSwimlaneConnectorType, + getXmattersConnectorType, +} from './cases'; + +export type { + EmailActionParams, + IndexActionParams, + PagerDutyActionParams, + ServerLogActionParams, + SlackActionParams, + TeamsActionParams, + WebhookActionParams, +} from './stack'; +export { + EmailConnectorTypeId, + IndexConnectorTypeId, + PagerDutyConnectorTypeId, + ServerLogConnectorTypeId, + SlackConnectorTypeId, + TeamsConnectorTypeId, + WebhookConnectorTypeId, +} from './stack'; +export type { + CasesWebhookActionParams, + JiraActionParams, + ResilientActionParams, + ServiceNowActionParams, + XmattersActionParams, +} from './cases'; +export { + CasesWebhookConnectorTypeId, + JiraConnectorTypeId, + ResilientConnectorTypeId, + ServiceNowITOMConnectorTypeId, + ServiceNowITSMConnectorTypeId, + ServiceNowSIRConnectorTypeId, + XmattersConnectorTypeId, +} from './cases'; + +export function registerConnectorTypes({ + actions, + logger, + publicBaseUrl, +}: { + actions: ActionsPluginSetupContract; + logger: Logger; + publicBaseUrl?: string; +}) { + actions.registerType(getEmailConnectorType({ logger, publicBaseUrl })); + actions.registerType(getIndexConnectorType({ logger })); + actions.registerType(getPagerDutyConnectorType({ logger })); + actions.registerType(getSwimlaneConnectorType({ logger })); + actions.registerType(getServerLogConnectorType({ logger })); + actions.registerType(getSlackConnectorType({ logger })); + actions.registerType(getWebhookConnectorType({ logger })); + actions.registerType(getCasesWebhookConnectorType({ logger })); + actions.registerType(getXmattersConnectorType({ logger })); + actions.registerType(getServiceNowITSMConnectorType({ logger })); + actions.registerType(getServiceNowSIRConnectorType({ logger })); + actions.registerType(getServiceNowITOMConnectorType({ logger })); + actions.registerType(getJiraConnectorType({ logger })); + actions.registerType(getResilientConnectorType({ logger })); + actions.registerType(getTeamsConnectorType({ logger })); +} diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/http_rersponse_retry_header.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/http_response_retry_header.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/http_rersponse_retry_header.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/http_response_retry_header.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/nullable.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/nullable.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/nullable.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/nullable.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/result_type.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/result_type.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/result_type.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/result_type.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/schemas.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/schemas.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/schemas.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/schemas.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/string_utils.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/string_utils.test.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/string_utils.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/string_utils.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/string_utils.ts b/x-pack/plugins/stack_connectors/server/connector_types/lib/string_utils.ts similarity index 100% rename from x-pack/plugins/actions/server/builtin_action_types/lib/string_utils.ts rename to x-pack/plugins/stack_connectors/server/connector_types/lib/string_utils.ts diff --git a/x-pack/plugins/stack_connectors/server/connector_types/security/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/security/index.ts new file mode 100644 index 0000000000000..1fec1c76430eb --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/security/index.ts @@ -0,0 +1,6 @@ +/* + * 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. + */ diff --git a/x-pack/plugins/actions/server/builtin_action_types/email.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.test.ts similarity index 78% rename from x-pack/plugins/actions/server/builtin_action_types/email.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.test.ts index e586526d74e76..ab5f909ecd4f7 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/email.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.test.ts @@ -5,53 +5,52 @@ * 2.0. */ -jest.mock('./lib/send_email', () => ({ +jest.mock('./send_email', () => ({ sendEmail: jest.fn(), })); import { Logger } from '@kbn/core/server'; - -import { actionsConfigMock } from '../actions_config.mock'; -import { validateConfig, validateConnector, validateParams, validateSecrets } from '../lib'; -import { createActionTypeRegistry } from './index.test'; -import { sendEmail } from './lib/send_email'; -import { actionsMock } from '../mocks'; +import { loggerMock } from '@kbn/logging-mocks'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { + validateConfig, + validateConnector, + validateParams, + validateSecrets, +} from '@kbn/actions-plugin/server/lib'; +import { sendEmail } from './send_email'; import { ActionParamsType, - ActionTypeConfigType, - ActionTypeSecretsType, - getActionType, - EmailActionType, - EmailActionTypeExecutorOptions, -} from './email'; -import { ValidateEmailAddressesOptions } from '../../common'; -import { ActionsConfigurationUtilities } from '../actions_config'; + getConnectorType, + EmailConnectorType, + EmailConnectorTypeExecutorOptions, + ConnectorTypeConfigType, + ConnectorTypeSecretsType, +} from '.'; +import { ValidateEmailAddressesOptions } from '@kbn/actions-plugin/common'; const sendEmailMock = sendEmail as jest.Mock; -const ACTION_TYPE_ID = '.email'; - const services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: EmailActionType; -let mockedLogger: jest.Mocked; -let configurationUtilities: ActionsConfigurationUtilities; +let connectorType: EmailConnectorType; +let configurationUtilities: jest.Mocked; beforeEach(() => { jest.resetAllMocks(); - const { actionTypeRegistry } = createActionTypeRegistry(); - configurationUtilities = actionTypeRegistry.getUtils(); - actionType = actionTypeRegistry.get< - ActionTypeConfigType, - ActionTypeSecretsType, - ActionParamsType - >(ACTION_TYPE_ID); + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('Email'); +describe('connector registration', () => { + test('returns connector type', () => { + expect(connectorType.id).toEqual('.email'); + expect(connectorType.name).toEqual('Email'); }); }); @@ -62,7 +61,7 @@ describe('config validation', () => { from: 'bob@example.com', hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, host: null, port: null, @@ -80,7 +79,7 @@ describe('config validation', () => { port: 8080, hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, service: 'other', secure: null, @@ -98,7 +97,7 @@ describe('config validation', () => { port: 8080, hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, secure: null, clientId: null, @@ -115,7 +114,7 @@ describe('config validation', () => { tenantId: '12345778', hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, secure: null, host: null, @@ -130,7 +129,7 @@ describe('config validation', () => { from: 'bob@example.com', hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, host: null, port: null, @@ -148,28 +147,32 @@ describe('config validation', () => { // empty object expect(() => { - validateConfig(actionType, {}, { configurationUtilities }); + validateConfig(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [from]: expected value of type [string] but got [undefined]"` ); // no service or host/port expect(() => { - validateConfig(actionType, baseConfig, { configurationUtilities }); + validateConfig(connectorType, baseConfig, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [host]/[port] is required"` ); // host but no port expect(() => { - validateConfig(actionType, { ...baseConfig, host: 'elastic.co' }, { configurationUtilities }); + validateConfig( + connectorType, + { ...baseConfig, host: 'elastic.co' }, + { configurationUtilities } + ); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [port] is required"` ); // port but no host expect(() => { - validateConfig(actionType, { ...baseConfig, port: 8080 }, { configurationUtilities }); + validateConfig(connectorType, { ...baseConfig, port: 8080 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [host] is required"` ); @@ -177,7 +180,7 @@ describe('config validation', () => { // invalid service expect(() => { validateConfig( - actionType, + connectorType, { ...baseConfig, service: 'bad-nodemailer-service', @@ -191,7 +194,7 @@ describe('config validation', () => { // invalid exchange_server no clientId and no tenantId expect(() => { validateConfig( - actionType, + connectorType, { ...baseConfig, service: 'exchange_server', @@ -205,7 +208,7 @@ describe('config validation', () => { // invalid exchange_server no clientId expect(() => { validateConfig( - actionType, + connectorType, { ...baseConfig, service: 'exchange_server', @@ -220,7 +223,7 @@ describe('config validation', () => { // invalid exchange_server no tenantId expect(() => { validateConfig( - actionType, + connectorType, { ...baseConfig, service: 'exchange_server', @@ -242,10 +245,6 @@ describe('config validation', () => { ...actionsConfigMock.create(), isHostnameAllowed: (hostname: string) => hostname === NODEMAILER_AOL_SERVICE_HOST, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); const baseConfig = { from: 'bob@example.com', }; @@ -269,13 +268,13 @@ describe('config validation', () => { port: 42, }; - const validatedConfig1 = validateConfig(actionType, allowedHosts1, { + const validatedConfig1 = validateConfig(connectorType, allowedHosts1, { configurationUtilities: configUtils, }); expect(validatedConfig1.service).toEqual(allowedHosts1.service); expect(validatedConfig1.from).toEqual(allowedHosts1.from); - const validatedConfig2 = validateConfig(actionType, allowedHosts2, { + const validatedConfig2 = validateConfig(connectorType, allowedHosts2, { configurationUtilities: configUtils, }); expect(validatedConfig2.host).toEqual(allowedHosts2.host); @@ -283,7 +282,7 @@ describe('config validation', () => { expect(validatedConfig2.from).toEqual(allowedHosts2.from); expect(() => { - validateConfig(actionType, notAllowedHosts1, { + validateConfig(connectorType, notAllowedHosts1, { configurationUtilities: configUtils, }); }).toThrowErrorMatchingInlineSnapshot( @@ -291,7 +290,7 @@ describe('config validation', () => { ); expect(() => { - validateConfig(actionType, notAllowedHosts2, { configurationUtilities: configUtils }); + validateConfig(connectorType, notAllowedHosts2, { configurationUtilities: configUtils }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [host] value 'smtp.gmail.com' is not in the allowedHosts configuration"` ); @@ -301,14 +300,9 @@ describe('config validation', () => { const configUtils = actionsConfigMock.create(); configUtils.validateEmailAddresses.mockImplementation(validateEmailAddressesImpl); - const basicActionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); - expect(() => { validateConfig( - basicActionType, + connectorType, { from: 'badmail', service: 'gmail', @@ -328,7 +322,7 @@ describe('secrets validation', () => { user: 'bob', password: 'supersecret', }; - expect(validateSecrets(actionType, secrets, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, secrets, { configurationUtilities })).toEqual({ ...secrets, clientSecret: null, }); @@ -340,11 +334,11 @@ describe('secrets validation', () => { password: null, clientSecret: null, }; - expect(validateSecrets(actionType, {}, { configurationUtilities })).toEqual(secrets); - expect(validateSecrets(actionType, { user: null }, { configurationUtilities })).toEqual( + expect(validateSecrets(connectorType, {}, { configurationUtilities })).toEqual(secrets); + expect(validateSecrets(connectorType, { user: null }, { configurationUtilities })).toEqual( secrets ); - expect(validateSecrets(actionType, { password: null }, { configurationUtilities })).toEqual( + expect(validateSecrets(connectorType, { password: null }, { configurationUtilities })).toEqual( secrets ); }); @@ -353,7 +347,7 @@ describe('secrets validation', () => { const secrets: Record = { clientSecret: '12345678', }; - expect(validateSecrets(actionType, secrets, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, secrets, { configurationUtilities })).toEqual({ ...secrets, user: null, password: null, @@ -370,7 +364,7 @@ describe('connector validation: secrets with config', () => { const config: Record = { hasAuth: true, }; - expect(validateConnector(actionType, { config, secrets })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets })).toBeNull(); }); test('connector validation succeeds when username/password not filled for hasAuth false', () => { @@ -382,10 +376,10 @@ describe('connector validation: secrets with config', () => { const config: Record = { hasAuth: false, }; - expect(validateConnector(actionType, { config, secrets })).toBeNull(); - expect(validateConnector(actionType, { config, secrets: {} })).toBeNull(); - expect(validateConnector(actionType, { config, secrets: { user: null } })).toBeNull(); - expect(validateConnector(actionType, { config, secrets: { password: null } })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets: {} })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets: { user: null } })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets: { password: null } })).toBeNull(); }); test('connector validation fails when username/password was populated for hasAuth true', () => { @@ -398,7 +392,7 @@ describe('connector validation: secrets with config', () => { }; // invalid user expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: [user] is required"` ); @@ -411,7 +405,7 @@ describe('connector validation: secrets with config', () => { const config: Record = { service: 'exchange_server', }; - expect(validateConnector(actionType, { config, secrets })).toBeNull(); + expect(validateConnector(connectorType, { config, secrets })).toBeNull(); }); test('connector validation fails when service is exchange_server and clientSecret is not populated', () => { @@ -423,7 +417,7 @@ describe('connector validation: secrets with config', () => { }; // invalid user expect(() => { - validateConnector(actionType, { config, secrets }); + validateConnector(connectorType, { config, secrets }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type connector: [clientSecret] is required"` ); @@ -437,7 +431,8 @@ describe('params validation', () => { subject: 'this is a test', message: 'this is the message', }; - expect(validateParams(actionType, params, { configurationUtilities })).toMatchInlineSnapshot(` + expect(validateParams(connectorType, params, { configurationUtilities })) + .toMatchInlineSnapshot(` Object { "bcc": Array [], "cc": Array [], @@ -457,7 +452,7 @@ describe('params validation', () => { test('params validation fails when params is not valid', () => { // empty object expect(() => { - validateParams(actionType, {}, { configurationUtilities }); + validateParams(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [subject]: expected value of type [string] but got [undefined]"` ); @@ -467,14 +462,9 @@ describe('params validation', () => { const configUtils = actionsConfigMock.create(); configUtils.validateEmailAddresses.mockImplementation(validateEmailAddressesImpl); - const basicActionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); - expect(() => { validateParams( - basicActionType, + connectorType, { to: ['to@example.com'], cc: ['cc@example.com'], @@ -496,7 +486,7 @@ describe('params validation', () => { }); describe('execute()', () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { service: '__json', host: 'a host', port: 42, @@ -507,7 +497,7 @@ describe('execute()', () => { tenantId: null, oauthTokenUrl: null, }; - const secrets: ActionTypeSecretsType = { + const secrets: ConnectorTypeSecretsType = { user: 'bob', password: 'supersecret', clientSecret: null, @@ -525,17 +515,18 @@ describe('execute()', () => { }; const actionId = 'some-id'; - const executorOptions: EmailActionTypeExecutorOptions = { + const executorOptions: EmailConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities: actionsConfigMock.create(), }; test('ensure parameters are as expected', async () => { sendEmailMock.mockReset(); - const result = await actionType.executor(executorOptions); + const result = await connectorType.executor(executorOptions); expect(result).toMatchInlineSnapshot(` Object { "actionId": "some-id", @@ -578,7 +569,7 @@ describe('execute()', () => { }); test('parameters are as expected with no auth', async () => { - const customExecutorOptions: EmailActionTypeExecutorOptions = { + const customExecutorOptions: EmailConnectorTypeExecutorOptions = { ...executorOptions, config: { ...config, @@ -593,7 +584,7 @@ describe('execute()', () => { }; sendEmailMock.mockReset(); - await actionType.executor(customExecutorOptions); + await connectorType.executor(customExecutorOptions); delete sendEmailMock.mock.calls[0][1].configurationUtilities; expect(sendEmailMock.mock.calls[0][1]).toMatchInlineSnapshot(` Object { @@ -629,7 +620,7 @@ describe('execute()', () => { }); test('parameters are as expected when using elastic_cloud service', async () => { - const customExecutorOptions: EmailActionTypeExecutorOptions = { + const customExecutorOptions: EmailConnectorTypeExecutorOptions = { ...executorOptions, config: { ...config, @@ -644,7 +635,7 @@ describe('execute()', () => { }; sendEmailMock.mockReset(); - await actionType.executor(customExecutorOptions); + await connectorType.executor(customExecutorOptions); delete sendEmailMock.mock.calls[0][1].configurationUtilities; expect(sendEmailMock.mock.calls[0][1]).toMatchInlineSnapshot(` Object { @@ -680,7 +671,7 @@ describe('execute()', () => { }); test('returns expected result when an error is thrown', async () => { - const customExecutorOptions: EmailActionTypeExecutorOptions = { + const customExecutorOptions: EmailConnectorTypeExecutorOptions = { ...executorOptions, config: { ...config, @@ -696,7 +687,7 @@ describe('execute()', () => { sendEmailMock.mockReset(); sendEmailMock.mockRejectedValue(new Error('wops')); - const result = await actionType.executor(customExecutorOptions); + const result = await connectorType.executor(customExecutorOptions); expect(result).toMatchInlineSnapshot(` Object { "actionId": "some-id", @@ -708,7 +699,7 @@ describe('execute()', () => { }); test('renders parameter templates as expected', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { to: [], cc: ['{{rogue}}'], @@ -723,7 +714,7 @@ describe('execute()', () => { const variables = { rogue: '*bold*', }; - const renderedParams = actionType.renderParameterTemplates!(paramsWithTemplates, variables); + const renderedParams = connectorType.renderParameterTemplates!(paramsWithTemplates, variables); // Yes, this is tested in the snapshot below, but it's double-escaped there, // so easier to see here that the escaping is correct. expect(renderedParams.message).toBe('\\*bold\\*'); @@ -749,13 +740,12 @@ describe('execute()', () => { }); test('provides a footer link to Kibana when publicBaseUrl is defined', async () => { - const actionTypeWithPublicUrl = getActionType({ + const connectorTypeWithPublicUrl = getConnectorType({ logger: mockedLogger, - configurationUtilities: actionsConfigMock.create(), publicBaseUrl: 'https://localhost:1234/foo/bar', }); - await actionTypeWithPublicUrl.executor(executorOptions); + await connectorTypeWithPublicUrl.executor(executorOptions); expect(sendEmailMock).toHaveBeenCalledTimes(1); const sendMailCall = sendEmailMock.mock.calls[0][1]; @@ -769,13 +759,12 @@ describe('execute()', () => { }); test('allows to generate a deep link into Kibana when publicBaseUrl is defined', async () => { - const actionTypeWithPublicUrl = getActionType({ + const connectorTypeWithPublicUrl = getConnectorType({ logger: mockedLogger, - configurationUtilities: actionsConfigMock.create(), publicBaseUrl: 'https://localhost:1234/foo/bar', }); - const customExecutorOptions: EmailActionTypeExecutorOptions = { + const customExecutorOptions: EmailConnectorTypeExecutorOptions = { ...executorOptions, params: { ...params, @@ -786,7 +775,7 @@ describe('execute()', () => { }, }; - await actionTypeWithPublicUrl.executor(customExecutorOptions); + await connectorTypeWithPublicUrl.executor(customExecutorOptions); expect(sendEmailMock).toHaveBeenCalledTimes(1); const sendMailCall = sendEmailMock.mock.calls[0][1]; @@ -803,19 +792,15 @@ describe('execute()', () => { const configUtils = actionsConfigMock.create(); configUtils.validateEmailAddresses.mockImplementation(validateEmailAddressesImpl); - const testActionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); - - const customExecutorOptions: EmailActionTypeExecutorOptions = { + const customExecutorOptions: EmailConnectorTypeExecutorOptions = { ...executorOptions, params: { ...params, }, + configurationUtilities: configUtils, }; - const result = await testActionType.executor(customExecutorOptions); + const result = await connectorType.executor(customExecutorOptions); expect(result).toMatchInlineSnapshot(` Object { "actionId": "some-id", diff --git a/x-pack/plugins/actions/server/builtin_action_types/email.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.ts similarity index 84% rename from x-pack/plugins/actions/server/builtin_action_types/email.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.ts index 8d70f1de208b6..e146baba68fbc 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/email.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/index.ts @@ -11,39 +11,40 @@ import { schema, TypeOf } from '@kbn/config-schema'; import nodemailerGetService from 'nodemailer/lib/well-known'; import SMTPConnection from 'nodemailer/lib/smtp-connection'; import { Logger } from '@kbn/core/server'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, + ValidatorServices, +} from '@kbn/actions-plugin/server/types'; import { AlertingConnectorFeatureId, - AdditionalEmailServices, - withoutMustacheTemplate, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; - -import { sendEmail, JSON_TRANSPORT_SERVICE, SendEmailOptions, Transport } from './lib/send_email'; -import { portSchema } from './lib/schemas'; +} from '@kbn/actions-plugin/common/connector_feature_config'; +import { withoutMustacheTemplate } from '@kbn/actions-plugin/common'; import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, - ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; -import { renderMustacheString, renderMustacheObject } from '../lib/mustache_renderer'; - -export type EmailActionType = ActionType< - ActionTypeConfigType, - ActionTypeSecretsType, + renderMustacheObject, + renderMustacheString, +} from '@kbn/actions-plugin/server/lib/mustache_renderer'; +import { AdditionalEmailServices } from '../../../../common'; +import { sendEmail, JSON_TRANSPORT_SERVICE, SendEmailOptions, Transport } from './send_email'; +import { portSchema } from '../../lib/schemas'; + +export type EmailConnectorType = ConnectorType< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType, unknown >; -export type EmailActionTypeExecutorOptions = ActionTypeExecutorOptions< - ActionTypeConfigType, - ActionTypeSecretsType, +export type EmailConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType >; // config definition -export type ActionTypeConfigType = TypeOf; +export type ConnectorTypeConfigType = TypeOf; // these values for `service` require users to fill in host/port/secure export const CUSTOM_HOST_PORT_SERVICES: string[] = [AdditionalEmailServices.OTHER]; @@ -70,7 +71,10 @@ const ConfigSchemaProps = { const ConfigSchema = schema.object(ConfigSchemaProps); -function validateConfig(configObject: ActionTypeConfigType, validatorServices: ValidatorServices) { +function validateConfig( + configObject: ConnectorTypeConfigType, + validatorServices: ValidatorServices +) { const config = configObject; const { configurationUtilities } = validatorServices; @@ -131,7 +135,7 @@ function validateConfig(configObject: ActionTypeConfigType, validatorServices: V // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const SecretsSchemaProps = { user: schema.nullable(schema.string()), @@ -156,7 +160,7 @@ const ParamsSchemaProps = { kibanaFooterLink: schema.object({ path: schema.string({ defaultValue: '/' }), text: schema.string({ - defaultValue: i18n.translate('xpack.actions.builtin.email.kibanaFooterLinkText', { + defaultValue: i18n.translate('xpack.stackConnectors.email.kibanaFooterLinkText', { defaultMessage: 'Go to Kibana', }), }), @@ -187,15 +191,14 @@ function validateParams(paramsObject: unknown, validatorServices: ValidatorServi } } -interface GetActionTypeParams { +interface GetConnectorTypeParams { logger: Logger; publicBaseUrl?: string; - configurationUtilities: ActionsConfigurationUtilities; } function validateConnector( - config: ActionTypeConfigType, - secrets: ActionTypeSecretsType + config: ConnectorTypeConfigType, + secrets: ConnectorTypeSecretsType ): string | null { if (config.service === AdditionalEmailServices.EXCHANGE) { if (secrets.clientSecret == null) { @@ -212,14 +215,14 @@ function validateConnector( return null; } -// action type definition -export const ActionTypeId = '.email'; -export function getActionType(params: GetActionTypeParams): EmailActionType { - const { logger, publicBaseUrl, configurationUtilities } = params; +// connector type definition +export const ConnectorTypeId = '.email'; +export function getConnectorType(params: GetConnectorTypeParams): EmailConnectorType { + const { logger, publicBaseUrl } = params; return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.emailTitle', { + name: i18n.translate('xpack.stackConnectors.email.title', { defaultMessage: 'Email', }), supportedFeatureIds: [ @@ -242,7 +245,7 @@ export function getActionType(params: GetActionTypeParams): EmailActionType { connector: validateConnector, }, renderParameterTemplates, - executor: curry(executor)({ logger, publicBaseUrl, configurationUtilities }), + executor: curry(executor)({ logger, publicBaseUrl }), }; } @@ -264,18 +267,17 @@ async function executor( { logger, publicBaseUrl, - configurationUtilities, }: { - logger: GetActionTypeParams['logger']; - publicBaseUrl: GetActionTypeParams['publicBaseUrl']; - configurationUtilities: ActionsConfigurationUtilities; + logger: GetConnectorTypeParams['logger']; + publicBaseUrl: GetConnectorTypeParams['publicBaseUrl']; }, - execOptions: EmailActionTypeExecutorOptions -): Promise> { + execOptions: EmailConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const config = execOptions.config; const secrets = execOptions.secrets; const params = execOptions.params; + const configurationUtilities = execOptions.configurationUtilities; const connectorTokenClient = execOptions.services.connectorTokenClient; const emails = params.to.concat(params.cc).concat(params.bcc); @@ -351,7 +353,7 @@ async function executor( try { result = await sendEmail(logger, sendEmailOptions, connectorTokenClient); } catch (err) { - const message = i18n.translate('xpack.actions.builtin.email.errorSendingErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.email.errorSendingErrorMessage', { defaultMessage: 'error sending email', }); return { @@ -396,16 +398,16 @@ function getFooterMessage({ publicBaseUrl, kibanaFooterLink, }: { - publicBaseUrl: GetActionTypeParams['publicBaseUrl']; + publicBaseUrl: GetConnectorTypeParams['publicBaseUrl']; kibanaFooterLink: ActionParamsType['kibanaFooterLink']; }) { if (!publicBaseUrl) { - return i18n.translate('xpack.actions.builtin.email.sentByKibanaMessage', { + return i18n.translate('xpack.stackConnectors.email.sentByKibanaMessage', { defaultMessage: 'This message was sent by Kibana.', }); } - return i18n.translate('xpack.actions.builtin.email.customViewInKibanaMessage', { + return i18n.translate('xpack.stackConnectors.email.customViewInKibanaMessage', { defaultMessage: 'This message was sent by Kibana. [{kibanaFooterLinkText}]({link}).', values: { kibanaFooterLinkText: kibanaFooterLink.text, diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.test.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.test.ts index fe6fc3492492a..9aa780788bc10 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.test.ts @@ -10,12 +10,12 @@ import { Logger } from '@kbn/core/server'; import { sendEmail } from './send_email'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import nodemailer from 'nodemailer'; -import { ProxySettings } from '../../types'; -import { actionsConfigMock } from '../../actions_config.mock'; -import { CustomHostSettings } from '../../config'; +import { ProxySettings } from '@kbn/actions-plugin/server/types'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { CustomHostSettings } from '@kbn/actions-plugin/server/config'; import { sendEmailGraphApi } from './send_email_graph_api'; -import { getOAuthClientCredentialsAccessToken } from './get_oauth_client_credentials_access_token'; -import { connectorTokenClientMock } from './connector_token_client.mock'; +import { getOAuthClientCredentialsAccessToken } from '@kbn/actions-plugin/server/lib/get_oauth_client_credentials_access_token'; +import { connectorTokenClientMock } from '@kbn/actions-plugin/server/lib/connector_token_client.mock'; jest.mock('nodemailer', () => ({ createTransport: jest.fn(), @@ -23,7 +23,7 @@ jest.mock('nodemailer', () => ({ jest.mock('./send_email_graph_api', () => ({ sendEmailGraphApi: jest.fn(), })); -jest.mock('./get_oauth_client_credentials_access_token', () => ({ +jest.mock('@kbn/actions-plugin/server/lib/get_oauth_client_credentials_access_token', () => ({ getOAuthClientCredentialsAccessToken: jest.fn(), })); diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.ts similarity index 94% rename from x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.ts index 2fee4dd8b377d..b829def7617c3 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email.ts @@ -11,13 +11,16 @@ import nodemailer from 'nodemailer'; import { default as MarkdownIt } from 'markdown-it'; import { Logger } from '@kbn/core/server'; -import { ActionsConfigurationUtilities } from '../../actions_config'; -import { CustomHostSettings } from '../../config'; -import { getNodeSSLOptions, getSSLSettingsFromConfig } from './get_node_ssl_options'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { CustomHostSettings } from '@kbn/actions-plugin/server/config'; +import { + getNodeSSLOptions, + getSSLSettingsFromConfig, +} from '@kbn/actions-plugin/server/lib/get_node_ssl_options'; +import { ConnectorTokenClientContract, ProxySettings } from '@kbn/actions-plugin/server/types'; +import { getOAuthClientCredentialsAccessToken } from '@kbn/actions-plugin/server/lib/get_oauth_client_credentials_access_token'; +import { AdditionalEmailServices } from '../../../../common'; import { sendEmailGraphApi } from './send_email_graph_api'; -import { ConnectorTokenClientContract, ProxySettings } from '../../types'; -import { AdditionalEmailServices } from '../../../common'; -import { getOAuthClientCredentialsAccessToken } from './get_oauth_client_credentials_access_token'; // an email "service" which doesn't actually send, just returns what it would send export const JSON_TRANSPORT_SERVICE = '__json'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.test.ts similarity index 97% rename from x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.test.ts index fc67302b9bb0a..4ab03837f416b 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.test.ts @@ -11,9 +11,9 @@ jest.mock('axios', () => ({ import axios from 'axios'; import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { actionsConfigMock } from '../../actions_config.mock'; -import { CustomHostSettings } from '../../config'; -import { ProxySettings } from '../../types'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { CustomHostSettings } from '@kbn/actions-plugin/server/config'; +import { ProxySettings } from '@kbn/actions-plugin/server/types'; import { sendEmailGraphApi } from './send_email_graph_api'; const createAxiosInstanceMock = axios.create as jest.Mock; diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.ts similarity index 93% rename from x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.ts index dad4154d5bac6..40177e50a0d18 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email_graph_api.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/email/send_email_graph_api.ts @@ -9,8 +9,8 @@ import stringify from 'json-stringify-safe'; import axios, { AxiosInstance, AxiosResponse } from 'axios'; import { Logger } from '@kbn/core/server'; -import { request } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { SendEmailOptions } from './send_email'; interface SendEmailGraphApiOptions { diff --git a/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.test.ts similarity index 83% rename from x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.test.ts index 8a87255dc1210..9968a67e87b45 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.test.ts @@ -5,44 +5,41 @@ * 2.0. */ -jest.mock('./lib/send_email', () => ({ - sendEmail: jest.fn(), -})); import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { validateConfig, validateParams } from '../lib'; -import { createActionTypeRegistry } from './index.test'; -import { actionsMock } from '../mocks'; +import { validateConfig, validateParams } from '@kbn/actions-plugin/server/lib'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; import { ActionParamsType, - ActionTypeConfigType, - ESIndexActionType, - ESIndexActionTypeExecutorOptions, -} from './es_index'; -import { AlertHistoryEsIndexConnectorId } from '../../common'; + ConnectorTypeConfigType, + ESIndexConnectorType, + ESIndexConnectorTypeExecutorOptions, + getConnectorType, +} from '.'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; -import { ActionsConfigurationUtilities } from '../actions_config'; - -const ACTION_TYPE_ID = '.index'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { loggerMock } from '@kbn/logging-mocks'; +import { Logger } from '@kbn/logging'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { AlertHistoryEsIndexConnectorId } from '@kbn/actions-plugin/common'; const services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: ESIndexActionType; +let connectorType: ESIndexConnectorType; let configurationUtilities: ActionsConfigurationUtilities; -beforeAll(() => { - const { actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get(ACTION_TYPE_ID); - configurationUtilities = actionTypeRegistry.getUtils(); -}); - beforeEach(() => { jest.resetAllMocks(); + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('Index'); +describe('connector registration', () => { + test('returns connector type', () => { + expect(connectorType.id).toEqual('.index'); + expect(connectorType.name).toEqual('Index'); }); }); @@ -53,7 +50,7 @@ describe('config validation', () => { refresh: false, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, index: 'testing-123', refresh: false, @@ -61,7 +58,7 @@ describe('config validation', () => { }); config.executionTimeField = 'field-123'; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, index: 'testing-123', refresh: false, @@ -69,7 +66,7 @@ describe('config validation', () => { }); config.executionTimeField = null; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...config, index: 'testing-123', refresh: false, @@ -79,7 +76,7 @@ describe('config validation', () => { delete config.index; expect(() => { - validateConfig(actionType, { index: 666 }, { configurationUtilities }); + validateConfig(connectorType, { index: 666 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [index]: expected value of type [string] but got [number]"` ); @@ -87,7 +84,7 @@ describe('config validation', () => { expect(() => { validateConfig( - actionType, + connectorType, { index: 'testing-123', executionTimeField: true }, { configurationUtilities } ); @@ -100,7 +97,7 @@ describe('config validation', () => { delete config.refresh; expect(() => { validateConfig( - actionType, + connectorType, { index: 'testing-123', refresh: 'foo' }, { configurationUtilities } ); @@ -115,7 +112,7 @@ describe('config validation', () => { }; expect(() => { - validateConfig(actionType, baseConfig, { configurationUtilities }); + validateConfig(connectorType, baseConfig, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [index]: expected value of type [string] but got [undefined]"` ); @@ -128,7 +125,8 @@ describe('params validation', () => { documents: [{ rando: 'thing' }], indexOverride: null, }; - expect(validateParams(actionType, params, { configurationUtilities })).toMatchInlineSnapshot(` + expect(validateParams(connectorType, params, { configurationUtilities })) + .toMatchInlineSnapshot(` Object { "documents": Array [ Object { @@ -142,20 +140,20 @@ describe('params validation', () => { test('params validation fails when params is not valid', () => { expect(() => { - validateParams(actionType, { documents: [{}], jim: 'bob' }, { configurationUtilities }); + validateParams(connectorType, { documents: [{}], jim: 'bob' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [jim]: definition for this key is missing"` ); expect(() => { - validateParams(actionType, {}, { configurationUtilities }); + validateParams(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [documents]: expected value of type [array] but got [undefined]"` ); expect(() => { validateParams( - actionType, + connectorType, { documents: ['should be an object'] }, { configurationUtilities } ); @@ -168,9 +166,9 @@ describe('params validation', () => { describe('execute()', () => { test('ensure parameters are as expected', async () => { const secrets = {}; - let config: ActionTypeConfigType; + let config: ConnectorTypeConfigType; let params: ActionParamsType; - let executorOptions: ESIndexActionTypeExecutorOptions; + let executorOptions: ESIndexConnectorTypeExecutorOptions; // minimal params config = { index: 'index-value', refresh: false, executionTimeField: null }; @@ -187,11 +185,12 @@ describe('execute()', () => { secrets, params, services, + configurationUtilities, }; const scopedClusterClient = elasticsearchClientMock .createClusterClient() .asScoped().asCurrentUser; - await actionType.executor({ + await connectorType.executor({ ...executorOptions, services: { ...services, scopedClusterClient }, }); @@ -224,9 +223,9 @@ describe('execute()', () => { indexOverride: null, }; - executorOptions = { actionId, config, secrets, params, services }; + executorOptions = { actionId, config, secrets, params, services, configurationUtilities }; scopedClusterClient.bulk.mockClear(); - await actionType.executor({ + await connectorType.executor({ ...executorOptions, services: { ...services, scopedClusterClient }, }); @@ -266,10 +265,10 @@ describe('execute()', () => { indexOverride: null, }; - executorOptions = { actionId, config, secrets, params, services }; + executorOptions = { actionId, config, secrets, params, services, configurationUtilities }; scopedClusterClient.bulk.mockClear(); - await actionType.executor({ + await connectorType.executor({ ...executorOptions, services: { ...services, scopedClusterClient }, }); @@ -302,9 +301,9 @@ describe('execute()', () => { indexOverride: null, }; - executorOptions = { actionId, config, secrets, params, services }; + executorOptions = { actionId, config, secrets, params, services, configurationUtilities }; scopedClusterClient.bulk.mockClear(); - await actionType.executor({ + await connectorType.executor({ ...executorOptions, services: { ...services, scopedClusterClient }, }); @@ -340,7 +339,7 @@ describe('execute()', () => { }); test('renders parameter templates as expected', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { documents: [{ hello: '{{who}}' }], indexOverride: null, @@ -348,7 +347,7 @@ describe('execute()', () => { const variables = { who: 'world', }; - const renderedParams = actionType.renderParameterTemplates!( + const renderedParams = connectorType.renderParameterTemplates!( paramsWithTemplates, variables, 'action-type-id' @@ -366,7 +365,7 @@ describe('execute()', () => { }); test('ignores indexOverride for generic es index connector', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { documents: [{ hello: '{{who}}' }], indexOverride: 'hello-world', @@ -374,7 +373,7 @@ describe('execute()', () => { const variables = { who: 'world', }; - const renderedParams = actionType.renderParameterTemplates!( + const renderedParams = connectorType.renderParameterTemplates!( paramsWithTemplates, variables, 'action-type-id' @@ -392,7 +391,7 @@ describe('execute()', () => { }); test('renders parameter templates as expected for preconfigured alert history connector', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { documents: [{ hello: '{{who}}' }], indexOverride: null, @@ -423,7 +422,7 @@ describe('execute()', () => { alertStateAnotherValue: 'yes', }, }; - const renderedParams = actionType.renderParameterTemplates!( + const renderedParams = connectorType.renderParameterTemplates!( paramsWithTemplates, variables, AlertHistoryEsIndexConnectorId @@ -472,7 +471,7 @@ describe('execute()', () => { }); test('passes through indexOverride for preconfigured alert history connector', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { documents: [{ hello: '{{who}}' }], indexOverride: 'hello-world', @@ -503,7 +502,7 @@ describe('execute()', () => { alertStateAnotherValue: 'yes', }, }; - const renderedParams = actionType.renderParameterTemplates!( + const renderedParams = connectorType.renderParameterTemplates!( paramsWithTemplates, variables, AlertHistoryEsIndexConnectorId @@ -552,7 +551,7 @@ describe('execute()', () => { }); test('throws error for preconfigured alert history index when no variables are available', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { documents: [{ hello: '{{who}}' }], indexOverride: null, @@ -560,7 +559,7 @@ describe('execute()', () => { const variables = {}; expect(() => - actionType.renderParameterTemplates!( + connectorType.renderParameterTemplates!( paramsWithTemplates, variables, AlertHistoryEsIndexConnectorId @@ -605,8 +604,16 @@ describe('execute()', () => { ], }); - expect(await actionType.executor({ actionId, config, secrets, params, services })) - .toMatchInlineSnapshot(` + expect( + await connectorType.executor({ + actionId, + config, + secrets, + params, + services, + configurationUtilities, + }) + ).toMatchInlineSnapshot(` Object { "actionId": "some-id", "message": "error indexing documents", diff --git a/x-pack/plugins/actions/server/builtin_action_types/es_index.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.ts similarity index 77% rename from x-pack/plugins/actions/server/builtin_action_types/es_index.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.ts index cc5b58f211671..6346e166f97ac 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/es_index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/es_index/index.ts @@ -9,27 +9,38 @@ import { curry, find } from 'lodash'; import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../types'; -import { renderMustacheObject } from '../lib/mustache_renderer'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { renderMustacheObject } from '@kbn/actions-plugin/server/lib/mustache_renderer'; import { - buildAlertHistoryDocument, - AlertHistoryEsIndexConnectorId, AlertingConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; -import { ALERT_HISTORY_PREFIX } from '../../common/alert_history_schema'; +} from '@kbn/actions-plugin/common/types'; +import { + AlertHistoryEsIndexConnectorId, + ALERT_HISTORY_PREFIX, + buildAlertHistoryDocument, +} from '@kbn/actions-plugin/common'; -export type ESIndexActionType = ActionType; -export type ESIndexActionTypeExecutorOptions = ActionTypeExecutorOptions< - ActionTypeConfigType, +export type ESIndexConnectorType = ConnectorType< + ConnectorTypeConfigType, + {}, + ActionParamsType, + unknown +>; +export type ESIndexConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< + ConnectorTypeConfigType, {}, ActionParamsType >; // config definition -export type ActionTypeConfigType = TypeOf; +export type ConnectorTypeConfigType = TypeOf; const ConfigSchema = schema.object({ index: schema.string(), @@ -57,13 +68,13 @@ const ParamsSchema = schema.object({ ), }); -export const ActionTypeId = '.index'; -// action type definition -export function getActionType({ logger }: { logger: Logger }): ESIndexActionType { +export const ConnectorTypeId = '.index'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): ESIndexConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'basic', - name: i18n.translate('xpack.actions.builtin.esIndexTitle', { + name: i18n.translate('xpack.stackConnectors.esIndex.title', { defaultMessage: 'Index', }), supportedFeatureIds: [ @@ -88,8 +99,8 @@ export function getActionType({ logger }: { logger: Logger }): ESIndexActionType async function executor( { logger }: { logger: Logger }, - execOptions: ESIndexActionTypeExecutorOptions -): Promise> { + execOptions: ESIndexConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const config = execOptions.config; const params = execOptions.params; @@ -156,8 +167,8 @@ function wrapErr( errMessage: string, actionId: string, logger: Logger -): ActionTypeExecutorResult { - const message = i18n.translate('xpack.actions.builtin.esIndex.errorIndexingErrorMessage', { +): ConnectorTypeExecutorResult { + const message = i18n.translate('xpack.stackConnectors.esIndex.errorIndexingErrorMessage', { defaultMessage: 'error indexing documents', }); logger.error(`error indexing documents: ${errMessage}`); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/stack/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/index.ts new file mode 100644 index 0000000000000..18fc54872261e --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/index.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { + getConnectorType as getEmailConnectorType, + ConnectorTypeId as EmailConnectorTypeId, +} from './email'; +export type { ActionParamsType as EmailActionParams } from './email'; + +export { + getConnectorType as getIndexConnectorType, + ConnectorTypeId as IndexConnectorTypeId, +} from './es_index'; +export type { ActionParamsType as IndexActionParams } from './es_index'; + +export { + getConnectorType as getPagerDutyConnectorType, + ConnectorTypeId as PagerDutyConnectorTypeId, +} from './pagerduty'; +export type { ActionParamsType as PagerDutyActionParams } from './pagerduty'; + +export { + getConnectorType as getServerLogConnectorType, + ConnectorTypeId as ServerLogConnectorTypeId, +} from './server_log'; +export type { ActionParamsType as ServerLogActionParams } from './server_log'; + +export { + getConnectorType as getSlackConnectorType, + ConnectorTypeId as SlackConnectorTypeId, +} from './slack'; +export type { ActionParamsType as SlackActionParams } from './slack'; + +export { + getConnectorType as getTeamsConnectorType, + ConnectorTypeId as TeamsConnectorTypeId, +} from './teams'; +export type { ActionParamsType as TeamsActionParams } from './teams'; + +export { + getConnectorType as getWebhookConnectorType, + ConnectorTypeId as WebhookConnectorTypeId, +} from './webhook'; +export type { ActionParamsType as WebhookActionParams } from './webhook'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/pagerduty.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.test.ts similarity index 83% rename from x-pack/plugins/actions/server/builtin_action_types/pagerduty.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.test.ts index a601532366fc4..eaf073f732f77 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/pagerduty.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.test.ts @@ -7,61 +7,51 @@ import moment from 'moment'; -jest.mock('./lib/post_pagerduty', () => ({ +jest.mock('./post_pagerduty', () => ({ postPagerduty: jest.fn(), })); - -import { Services } from '../types'; -import { validateConfig, validateSecrets, validateParams } from '../lib'; -import { postPagerduty } from './lib/post_pagerduty'; -import { createActionTypeRegistry } from './index.test'; +import { Services } from '@kbn/actions-plugin/server/types'; +import { validateConfig, validateSecrets, validateParams } from '@kbn/actions-plugin/server/lib'; +import { postPagerduty } from './post_pagerduty'; import { Logger } from '@kbn/core/server'; -import { actionsConfigMock } from '../actions_config.mock'; -import { actionsMock } from '../mocks'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; import { ActionParamsType, - ActionTypeConfigType, - ActionTypeSecretsType, - getActionType, - PagerDutyActionType, - PagerDutyActionTypeExecutorOptions, -} from './pagerduty'; -import { ActionsConfigurationUtilities } from '../actions_config'; + getConnectorType, + PagerDutyConnectorType, + PagerDutyConnectorTypeExecutorOptions, +} from '.'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { loggerMock } from '@kbn/logging-mocks'; const postPagerdutyMock = postPagerduty as jest.Mock; - -const ACTION_TYPE_ID = '.pagerduty'; - const services: Services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: PagerDutyActionType; -let mockedLogger: jest.Mocked; -let configurationUtilities: ActionsConfigurationUtilities; - -beforeAll(() => { - const { logger, actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get< - ActionTypeConfigType, - ActionTypeSecretsType, - ActionParamsType - >(ACTION_TYPE_ID); - mockedLogger = logger; - configurationUtilities = actionTypeRegistry.getUtils(); +let connectorType: PagerDutyConnectorType; +let configurationUtilities: jest.Mocked; + +beforeEach(() => { + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); describe('get()', () => { - test('should return correct action type', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('PagerDuty'); + test('should return correct connector type', () => { + expect(connectorType.id).toEqual('.pagerduty'); + expect(connectorType.name).toEqual('PagerDuty'); }); }); describe('validateConfig()', () => { test('should validate and pass when config is valid', () => { - expect(validateConfig(actionType, {}, { configurationUtilities })).toEqual({ apiUrl: null }); + expect(validateConfig(connectorType, {}, { configurationUtilities })).toEqual({ apiUrl: null }); expect( validateConfig( - actionType, + connectorType, { apiUrl: 'bar', }, @@ -72,7 +62,7 @@ describe('validateConfig()', () => { test('should validate and throw error when config is invalid', () => { expect(() => { - validateConfig(actionType, { shouldNotBeHere: true }, { configurationUtilities }); + validateConfig(connectorType, { shouldNotBeHere: true }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: [shouldNotBeHere]: definition for this key is missing"` ); @@ -85,14 +75,13 @@ describe('validateConfig()', () => { expect(url).toEqual('https://events.pagerduty.com/v2/enqueue'); }, }; - actionType = getActionType({ + connectorType = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); expect( validateConfig( - actionType, + connectorType, { apiUrl: 'https://events.pagerduty.com/v2/enqueue' }, { configurationUtilities: configUtils } ) @@ -106,14 +95,13 @@ describe('validateConfig()', () => { throw new Error(`target url is not added to allowedHosts`); }, }; - actionType = getActionType({ + connectorType = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); expect(() => { validateConfig( - actionType, + connectorType, { apiUrl: 'https://events.pagerduty.com/v2/enqueue' }, { configurationUtilities: configUtils } ); @@ -126,20 +114,20 @@ describe('validateConfig()', () => { describe('validateSecrets()', () => { test('should validate and pass when secrets is valid', () => { const routingKey = 'super-secret'; - expect(validateSecrets(actionType, { routingKey }, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, { routingKey }, { configurationUtilities })).toEqual({ routingKey, }); }); test('should validate and throw error when secrets is invalid', () => { expect(() => { - validateSecrets(actionType, { routingKey: false }, { configurationUtilities }); + validateSecrets(connectorType, { routingKey: false }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [routingKey]: expected value of type [string] but got [boolean]"` ); expect(() => { - validateSecrets(actionType, {}, { configurationUtilities }); + validateSecrets(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [routingKey]: expected value of type [string] but got [undefined]"` ); @@ -148,7 +136,7 @@ describe('validateSecrets()', () => { describe('validateParams()', () => { test('should validate and pass when params is valid', () => { - expect(validateParams(actionType, {}, { configurationUtilities })).toEqual({}); + expect(validateParams(connectorType, {}, { configurationUtilities })).toEqual({}); const params = { eventAction: 'trigger', @@ -161,12 +149,12 @@ describe('validateParams()', () => { group: 'a group', class: 'a class', }; - expect(validateParams(actionType, params, { configurationUtilities })).toEqual(params); + expect(validateParams(connectorType, params, { configurationUtilities })).toEqual(params); }); test('should validate and throw error when params is invalid', () => { expect(() => { - validateParams(actionType, { eventAction: 'ackynollage' }, { configurationUtilities }); + validateParams(connectorType, { eventAction: 'ackynollage' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot(` "error validating action params: [eventAction]: types that failed validation: - [eventAction.0]: expected value to equal [trigger] @@ -180,7 +168,7 @@ describe('validateParams()', () => { const timestamp = ` ${randoDate}`; expect( validateParams( - actionType, + connectorType, { timestamp, }, @@ -193,7 +181,7 @@ describe('validateParams()', () => { const timestamp = ''; expect( validateParams( - actionType, + connectorType, { timestamp, }, @@ -209,7 +197,7 @@ describe('validateParams()', () => { expect( validateParams( - actionType, + connectorType, { timestamp: date1, }, @@ -218,7 +206,7 @@ describe('validateParams()', () => { ).toEqual({ timestamp: date1 }); expect( validateParams( - actionType, + connectorType, { timestamp: date2, }, @@ -227,7 +215,7 @@ describe('validateParams()', () => { ).toEqual({ timestamp: date2 }); expect( validateParams( - actionType, + connectorType, { timestamp: date3, }, @@ -240,7 +228,7 @@ describe('validateParams()', () => { const timestamp = `1963-09-55 90:23:45`; expect(() => { validateParams( - actionType, + connectorType, { timestamp, }, @@ -252,7 +240,7 @@ describe('validateParams()', () => { test('should validate and throw error when dedupKey is missing on resolve', () => { expect(() => { validateParams( - actionType, + connectorType, { eventAction: 'resolve', }, @@ -279,14 +267,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -339,14 +328,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -404,14 +394,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -460,14 +451,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -501,14 +493,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); expect(actionResponse).toMatchInlineSnapshot(` Object { "actionId": "some-action-id", @@ -529,14 +522,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); expect(actionResponse).toMatchInlineSnapshot(` Object { "actionId": "some-action-id", @@ -557,14 +551,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); expect(actionResponse).toMatchInlineSnapshot(` Object { "actionId": "some-action-id", @@ -585,14 +580,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); expect(actionResponse).toMatchInlineSnapshot(` Object { "actionId": "some-action-id", @@ -623,14 +619,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -684,14 +681,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -748,14 +746,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { @@ -811,14 +810,15 @@ describe('execute()', () => { }); const actionId = 'some-action-id'; - const executorOptions: PagerDutyActionTypeExecutorOptions = { + const executorOptions: PagerDutyConnectorTypeExecutorOptions = { actionId, config, params, secrets, services, + configurationUtilities, }; - const actionResponse = await actionType.executor(executorOptions); + const actionResponse = await connectorType.executor(executorOptions); const { apiUrl, data, headers } = postPagerdutyMock.mock.calls[0][0]; expect({ apiUrl, data, headers }).toMatchInlineSnapshot(` Object { diff --git a/x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.ts similarity index 79% rename from x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.ts index da30adf2b3672..e09f6159d26d8 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/index.ts @@ -10,39 +10,38 @@ import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import moment from 'moment'; import { Logger } from '@kbn/core/server'; -import { postPagerduty } from './lib/post_pagerduty'; -import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; +} from '@kbn/actions-plugin/server/types'; import { AlertingConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; +} from '@kbn/actions-plugin/common/types'; +import { postPagerduty } from './post_pagerduty'; // uses the PagerDuty Events API v2 // https://v2.developer.pagerduty.com/docs/events-api-v2 const PAGER_DUTY_API_URL = 'https://events.pagerduty.com/v2/enqueue'; -export type PagerDutyActionType = ActionType< - ActionTypeConfigType, - ActionTypeSecretsType, +export type PagerDutyConnectorType = ConnectorType< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType, unknown >; -export type PagerDutyActionTypeExecutorOptions = ActionTypeExecutorOptions< - ActionTypeConfigType, - ActionTypeSecretsType, +export type PagerDutyConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType >; // config definition -export type ActionTypeConfigType = TypeOf; +export type ConnectorTypeConfigType = TypeOf; const configSchemaProps = { apiUrl: schema.nullable(schema.string()), @@ -50,7 +49,7 @@ const configSchemaProps = { const ConfigSchema = schema.object(configSchemaProps); // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const SecretsSchema = schema.object({ routingKey: schema.string(), @@ -110,7 +109,7 @@ function validateParams(paramsObject: unknown): string | void { try { const date = moment(validatedTimestamp); if (!date.isValid()) { - return i18n.translate('xpack.actions.builtin.pagerduty.invalidTimestampErrorMessage', { + return i18n.translate('xpack.stackConnectors.pagerduty.invalidTimestampErrorMessage', { defaultMessage: `error parsing timestamp "{timestamp}"`, values: { timestamp, @@ -118,7 +117,7 @@ function validateParams(paramsObject: unknown): string | void { }); } } catch (err) { - return i18n.translate('xpack.actions.builtin.pagerduty.timestampParsingFailedErrorMessage', { + return i18n.translate('xpack.stackConnectors.pagerduty.timestampParsingFailedErrorMessage', { defaultMessage: `error parsing timestamp "{timestamp}": {message}`, values: { timestamp, @@ -128,7 +127,7 @@ function validateParams(paramsObject: unknown): string | void { } } if (eventAction && EVENT_ACTIONS_WITH_REQUIRED_DEDUPKEY.has(eventAction) && !dedupKey) { - return i18n.translate('xpack.actions.builtin.pagerduty.missingDedupkeyErrorMessage', { + return i18n.translate('xpack.stackConnectors.pagerduty.missingDedupkeyErrorMessage', { defaultMessage: `DedupKey is required when eventAction is "{eventAction}"`, values: { eventAction, @@ -137,19 +136,13 @@ function validateParams(paramsObject: unknown): string | void { } } -export const ActionTypeId = '.pagerduty'; -// action type definition -export function getActionType({ - logger, - configurationUtilities, -}: { - logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; -}): PagerDutyActionType { +export const ConnectorTypeId = '.pagerduty'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): PagerDutyConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.pagerdutyTitle', { + name: i18n.translate('xpack.stackConnectors.pagerduty.title', { defaultMessage: 'PagerDuty', }), supportedFeatureIds: [ @@ -160,7 +153,7 @@ export function getActionType({ validate: { config: { schema: ConfigSchema, - customValidator: validateActionTypeConfig, + customValidator: validateConnectorTypeConfig, }, secrets: { schema: SecretsSchema, @@ -169,12 +162,12 @@ export function getActionType({ schema: ParamsSchema, }, }, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } -function validateActionTypeConfig( - configObject: ActionTypeConfigType, +function validateConnectorTypeConfig( + configObject: ConnectorTypeConfigType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; @@ -182,7 +175,7 @@ function validateActionTypeConfig( configurationUtilities.ensureUriAllowed(getPagerDutyApiUrl(configObject)); } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.pagerduty.pagerdutyConfigurationError', { + i18n.translate('xpack.stackConnectors.pagerduty.configurationError', { defaultMessage: 'error configuring pagerduty action: {message}', values: { message: allowListError.message, @@ -192,24 +185,22 @@ function validateActionTypeConfig( } } -function getPagerDutyApiUrl(config: ActionTypeConfigType): string { +function getPagerDutyApiUrl(config: ConnectorTypeConfigType): string { return config.apiUrl || PAGER_DUTY_API_URL; } // action executor async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: PagerDutyActionTypeExecutorOptions -): Promise> { + { logger }: { logger: Logger }, + execOptions: PagerDutyConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const config = execOptions.config; const secrets = execOptions.secrets; const params = execOptions.params; const services = execOptions.services; + const configurationUtilities = execOptions.configurationUtilities; const apiUrl = getPagerDutyApiUrl(config); const headers = { @@ -226,7 +217,7 @@ async function executor( configurationUtilities ); } catch (err) { - const message = i18n.translate('xpack.actions.builtin.pagerduty.postingErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.pagerduty.postingErrorMessage', { defaultMessage: 'error posting pagerduty event', }); logger.warn(`error thrown posting pagerduty event: ${err.message}`); @@ -249,7 +240,7 @@ async function executor( } if (response.status === 429 || response.status >= 500) { - const message = i18n.translate('xpack.actions.builtin.pagerduty.postingRetryErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.pagerduty.postingRetryErrorMessage', { defaultMessage: 'error posting pagerduty event: http status {status}, retry later', values: { status: response.status, @@ -264,7 +255,7 @@ async function executor( }; } - const message = i18n.translate('xpack.actions.builtin.pagerduty.postingUnexpectedErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.pagerduty.postingUnexpectedErrorMessage', { defaultMessage: 'error posting pagerduty event: unexpected status {status}', values: { status: response.status, diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/post_pagerduty.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/post_pagerduty.ts similarity index 81% rename from x-pack/plugins/actions/server/builtin_action_types/lib/post_pagerduty.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/post_pagerduty.ts index 5aa46703d5ff4..0ef41637967d2 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/post_pagerduty.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/pagerduty/post_pagerduty.ts @@ -7,9 +7,9 @@ import axios, { AxiosResponse } from 'axios'; import { Logger } from '@kbn/core/server'; -import { Services } from '../../types'; -import { request } from '../../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../../actions_config'; +import { Services } from '@kbn/actions-plugin/server/types'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; interface PostPagerdutyOptions { apiUrl: string; diff --git a/x-pack/plugins/actions/server/builtin_action_types/server_log.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.test.ts similarity index 62% rename from x-pack/plugins/actions/server/builtin_action_types/server_log.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.test.ts index 89db7e3d10b84..04c8f9e562f79 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/server_log.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.test.ts @@ -5,35 +5,30 @@ * 2.0. */ -import { validateParams } from '../lib'; +import { validateParams } from '@kbn/actions-plugin/server/lib'; import { Logger } from '@kbn/core/server'; -import { createActionTypeRegistry } from './index.test'; -import { actionsMock } from '../mocks'; -import { - ActionParamsType, - ServerLogActionType, - ServerLogActionTypeExecutorOptions, -} from './server_log'; -import { ActionsConfigurationUtilities } from '../actions_config'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { getConnectorType, ServerLogConnectorType, ServerLogConnectorTypeExecutorOptions } from '.'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { loggerMock } from '@kbn/logging-mocks'; -const ACTION_TYPE_ID = '.server-log'; +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: ServerLogActionType; -let mockedLogger: jest.Mocked; -let configurationUtilities: ActionsConfigurationUtilities; +let connectorType: ServerLogConnectorType; +let configurationUtilities: jest.Mocked; -beforeAll(() => { - const { logger, actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get<{}, {}, ActionParamsType>(ACTION_TYPE_ID); - mockedLogger = logger; - configurationUtilities = actionTypeRegistry.getUtils(); - expect(actionType).toBeTruthy(); +beforeEach(() => { + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); -describe('get()', () => { - test('returns action type', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('Server log'); +describe('connectorType', () => { + test('returns connector type', () => { + expect(connectorType.id).toEqual('.server-log'); + expect(connectorType.name).toEqual('Server log'); }); }); @@ -41,7 +36,7 @@ describe('validateParams()', () => { test('should validate and pass when params is valid', () => { expect( validateParams( - actionType, + connectorType, { message: 'a message', level: 'info' }, { configurationUtilities } ) @@ -51,7 +46,7 @@ describe('validateParams()', () => { }); expect( validateParams( - actionType, + connectorType, { message: 'a message', level: 'info', @@ -66,19 +61,19 @@ describe('validateParams()', () => { test('should validate and throw error when params is invalid', () => { expect(() => { - validateParams(actionType, {}, { configurationUtilities }); + validateParams(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [undefined]"` ); expect(() => { - validateParams(actionType, { message: 1 }, { configurationUtilities }); + validateParams(connectorType, { message: 1 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [number]"` ); expect(() => { - validateParams(actionType, { message: 'x', level: 2 }, { configurationUtilities }); + validateParams(connectorType, { message: 'x', level: 2 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot(` "error validating action params: [level]: types that failed validation: - [level.0]: expected value to equal [trace] @@ -90,7 +85,7 @@ describe('validateParams()', () => { `); expect(() => { - validateParams(actionType, { message: 'x', level: 'foo' }, { configurationUtilities }); + validateParams(connectorType, { message: 'x', level: 'foo' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot(` "error validating action params: [level]: types that failed validation: - [level.0]: expected value to equal [trace] @@ -106,14 +101,15 @@ describe('validateParams()', () => { describe('execute()', () => { test('calls the executor with proper params', async () => { const actionId = 'some-id'; - const executorOptions: ServerLogActionTypeExecutorOptions = { + const executorOptions: ServerLogConnectorTypeExecutorOptions = { actionId, services: actionsMock.createServices(), params: { message: 'message text here', level: 'info' }, config: {}, secrets: {}, + configurationUtilities, }; - await actionType.executor(executorOptions); + await connectorType.executor(executorOptions); expect(mockedLogger.info).toHaveBeenCalledWith('Server log: message text here'); }); }); diff --git a/x-pack/plugins/actions/server/builtin_action_types/server_log.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.ts similarity index 63% rename from x-pack/plugins/actions/server/builtin_action_types/server_log.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.ts index e33894e6099d7..23bfe27466349 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/server_log.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/server_log/index.ts @@ -10,12 +10,19 @@ import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import { Logger, LogMeta } from '@kbn/core/server'; -import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../types'; -import { withoutControlCharacters } from './lib/string_utils'; -import { AlertingConnectorFeatureId, UptimeConnectorFeatureId } from '../../common'; +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { + AlertingConnectorFeatureId, + UptimeConnectorFeatureId, +} from '@kbn/actions-plugin/common/connector_feature_config'; +import { withoutControlCharacters } from '../../lib/string_utils'; -export type ServerLogActionType = ActionType<{}, {}, ActionParamsType>; -export type ServerLogActionTypeExecutorOptions = ActionTypeExecutorOptions< +export type ServerLogConnectorType = ConnectorType<{}, {}, ActionParamsType>; +export type ServerLogConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< {}, {}, ActionParamsType @@ -40,13 +47,13 @@ const ParamsSchema = schema.object({ ), }); -export const ActionTypeId = '.server-log'; -// action type definition -export function getActionType({ logger }: { logger: Logger }): ServerLogActionType { +export const ConnectorTypeId = '.server-log'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): ServerLogConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'basic', - name: i18n.translate('xpack.actions.builtin.serverLogTitle', { + name: i18n.translate('xpack.stackConnectors.serverLog.title', { defaultMessage: 'Server log', }), supportedFeatureIds: [AlertingConnectorFeatureId, UptimeConnectorFeatureId], @@ -63,8 +70,8 @@ export function getActionType({ logger }: { logger: Logger }): ServerLogActionTy async function executor( { logger }: { logger: Logger }, - execOptions: ServerLogActionTypeExecutorOptions -): Promise> { + execOptions: ServerLogConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const params = execOptions.params; @@ -72,7 +79,7 @@ async function executor( try { (logger[params.level] as Logger['info'])(`Server log: ${sanitizedMessage}`); } catch (err) { - const message = i18n.translate('xpack.actions.builtin.serverLog.errorLoggingErrorMessage', { + const message = i18n.translate('xpack.stackConnectors.serverLog.errorLoggingErrorMessage', { defaultMessage: 'error logging message', }); return { diff --git a/x-pack/plugins/actions/server/builtin_action_types/slack.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.test.ts similarity index 77% rename from x-pack/plugins/actions/server/builtin_action_types/slack.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.test.ts index f400e00db52d6..742cfd7ed1f60 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/slack.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.test.ts @@ -6,13 +6,21 @@ */ import { Logger } from '@kbn/core/server'; -import { Services, ActionTypeExecutorResult } from '../types'; -import { validateParams, validateSecrets } from '../lib'; -import { getActionType, SlackActionType, SlackActionTypeExecutorOptions } from './slack'; -import { actionsConfigMock } from '../actions_config.mock'; -import { actionsMock } from '../mocks'; -import { createActionTypeRegistry } from './index.test'; -import { ActionsConfigurationUtilities } from '../actions_config'; +import { + Services, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, +} from '@kbn/actions-plugin/server/types'; +import { validateParams, validateSecrets } from '@kbn/actions-plugin/server/lib'; +import { + getConnectorType, + SlackConnectorType, + SlackConnectorTypeExecutorOptions, + ConnectorTypeId, +} from '.'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { loggerMock } from '@kbn/logging-mocks'; jest.mock('@slack/webhook', () => { return { @@ -22,39 +30,33 @@ jest.mock('@slack/webhook', () => { }; }); -const ACTION_TYPE_ID = '.slack'; - const services: Services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: SlackActionType; -let mockedLogger: jest.Mocked; +let connectorType: SlackConnectorType; let configurationUtilities: jest.Mocked; -beforeAll(() => { - const { logger } = createActionTypeRegistry(); +beforeEach(() => { configurationUtilities = actionsConfigMock.create(); - actionType = getActionType({ + connectorType = getConnectorType({ async executor(options) { return { status: 'ok', actionId: options.actionId }; }, - configurationUtilities, - logger, + logger: mockedLogger, }); - mockedLogger = logger; - expect(actionType).toBeTruthy(); }); -describe('action registeration', () => { - test('returns action type', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('Slack'); +describe('connector registration', () => { + test('returns connector type', () => { + expect(connectorType.id).toEqual(ConnectorTypeId); + expect(connectorType.name).toEqual('Slack'); }); }); describe('validateParams()', () => { test('should validate and pass when params is valid', () => { expect( - validateParams(actionType, { message: 'a message' }, { configurationUtilities }) + validateParams(connectorType, { message: 'a message' }, { configurationUtilities }) ).toEqual({ message: 'a message', }); @@ -62,23 +64,23 @@ describe('validateParams()', () => { test('should validate and throw error when params is invalid', () => { expect(() => { - validateParams(actionType, {}, { configurationUtilities }); + validateParams(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [undefined]"` ); expect(() => { - validateParams(actionType, { message: 1 }, { configurationUtilities }); + validateParams(connectorType, { message: 1 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [number]"` ); }); }); -describe('validateActionTypeSecrets()', () => { +describe('validateConnectorTypeSecrets()', () => { test('should validate and pass when config is valid', () => { validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://example.com', }, @@ -88,19 +90,19 @@ describe('validateActionTypeSecrets()', () => { test('should validate and throw error when config is invalid', () => { expect(() => { - validateSecrets(actionType, {}, { configurationUtilities }); + validateSecrets(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [webhookUrl]: expected value of type [string] but got [undefined]"` ); expect(() => { - validateSecrets(actionType, { webhookUrl: 1 }, { configurationUtilities }); + validateSecrets(connectorType, { webhookUrl: 1 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [webhookUrl]: expected value of type [string] but got [number]"` ); expect(() => { - validateSecrets(actionType, { webhookUrl: 'fee-fi-fo-fum' }, { configurationUtilities }); + validateSecrets(connectorType, { webhookUrl: 'fee-fi-fo-fum' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: error configuring slack action: unable to parse host name from webhookUrl"` ); @@ -113,14 +115,10 @@ describe('validateActionTypeSecrets()', () => { expect(url).toEqual('https://api.slack.com/'); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); expect( validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://api.slack.com/' }, { configurationUtilities: configUtils } ) @@ -136,14 +134,10 @@ describe('validateActionTypeSecrets()', () => { throw new Error(`target hostname is not added to allowedHosts`); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); expect(() => { validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://api.slack.com/' }, { configurationUtilities: configUtils } ); @@ -154,8 +148,9 @@ describe('validateActionTypeSecrets()', () => { }); describe('execute()', () => { - beforeAll(() => { - async function mockSlackExecutor(options: SlackActionTypeExecutorOptions) { + beforeEach(() => { + jest.resetAllMocks(); + async function mockSlackExecutor(options: SlackConnectorTypeExecutorOptions) { const { params } = options; const { message } = params; if (message == null) throw new Error('message property required in parameter'); @@ -170,23 +165,23 @@ describe('execute()', () => { text: `slack mockExecutor success: ${message}`, actionId: '', status: 'ok', - } as ActionTypeExecutorResult; + } as ConnectorTypeExecutorResult; } - actionType = getActionType({ + connectorType = getConnectorType({ executor: mockSlackExecutor, logger: mockedLogger, - configurationUtilities: actionsConfigMock.create(), }); }); test('calls the mock executor with success', async () => { - const response = await actionType.executor({ + const response = await connectorType.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities, }); expect(response).toMatchInlineSnapshot(` Object { @@ -199,12 +194,13 @@ describe('execute()', () => { test('calls the mock executor with failure', async () => { await expect( - actionType.executor({ + connectorType.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'failure: this invocation should fail' }, + configurationUtilities, }) ).rejects.toThrowErrorMatchingInlineSnapshot( `"slack mockExecutor failure: this invocation should fail"` @@ -221,16 +217,16 @@ describe('execute()', () => { proxyBypassHosts: undefined, proxyOnlyHosts: undefined, }); - const actionTypeProxy = getActionType({ + const connectorTypeProxy = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); - await actionTypeProxy.executor({ + await connectorTypeProxy.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities: configUtils, }); expect(mockedLogger.debug).toHaveBeenCalledWith( 'IncomingWebhook was called with proxyUrl https://someproxyhost' @@ -248,16 +244,16 @@ describe('execute()', () => { proxyBypassHosts: new Set(['example.com']), proxyOnlyHosts: undefined, }); - const actionTypeProxy = getActionType({ + const connectorTypeProxy = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); - await actionTypeProxy.executor({ + await connectorTypeProxy.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities: configUtils, }); expect(mockedLogger.debug).not.toHaveBeenCalledWith( 'IncomingWebhook was called with proxyUrl https://someproxyhost' @@ -275,16 +271,16 @@ describe('execute()', () => { proxyBypassHosts: new Set(['not-example.com']), proxyOnlyHosts: undefined, }); - const actionTypeProxy = getActionType({ + const connectorTypeProxy = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); - await actionTypeProxy.executor({ + await connectorTypeProxy.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities: configUtils, }); expect(mockedLogger.debug).toHaveBeenCalledWith( 'IncomingWebhook was called with proxyUrl https://someproxyhost' @@ -302,16 +298,16 @@ describe('execute()', () => { proxyBypassHosts: undefined, proxyOnlyHosts: new Set(['example.com']), }); - const actionTypeProxy = getActionType({ + const connectorTypeProxy = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); - await actionTypeProxy.executor({ + await connectorTypeProxy.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities: configUtils, }); expect(mockedLogger.debug).toHaveBeenCalledWith( 'IncomingWebhook was called with proxyUrl https://someproxyhost' @@ -329,16 +325,16 @@ describe('execute()', () => { proxyBypassHosts: undefined, proxyOnlyHosts: new Set(['not-example.com']), }); - const actionTypeProxy = getActionType({ + const connectorTypeProxy = getConnectorType({ logger: mockedLogger, - configurationUtilities: configUtils, }); - await actionTypeProxy.executor({ + await connectorTypeProxy.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities: configUtils, }); expect(mockedLogger.debug).not.toHaveBeenCalledWith( 'IncomingWebhook was called with proxyUrl https://someproxyhost' @@ -346,14 +342,14 @@ describe('execute()', () => { }); test('renders parameter templates as expected', async () => { - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { message: '{{rogue}}', }; const variables = { rogue: '*bold*', }; - const params = actionType.renderParameterTemplates!(paramsWithTemplates, variables); + const params = connectorType.renderParameterTemplates!(paramsWithTemplates, variables); expect(params.message).toBe('`*bold*`'); }); }); diff --git a/x-pack/plugins/actions/server/builtin_action_types/slack.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.ts similarity index 71% rename from x-pack/plugins/actions/server/builtin_action_types/slack.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.ts index 48f1fb5fc2a82..343d353443f51 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/slack.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/slack/index.ts @@ -15,34 +15,37 @@ import { IncomingWebhook, IncomingWebhookResult } from '@slack/webhook'; import { pipe } from 'fp-ts/lib/pipeable'; import { map, getOrElse } from 'fp-ts/lib/Option'; import { Logger } from '@kbn/core/server'; -import { getRetryAfterIntervalFromHeaders } from './lib/http_rersponse_retry_header'; -import { renderMustacheString } from '../lib/mustache_renderer'; - -import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, ExecutorType, ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; -import { getCustomAgents } from './lib/get_custom_agents'; +} from '@kbn/actions-plugin/server/types'; import { AlertingConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; +} from '@kbn/actions-plugin/common/types'; +import { renderMustacheString } from '@kbn/actions-plugin/server/lib/mustache_renderer'; +import { getCustomAgents } from '@kbn/actions-plugin/server/lib/get_custom_agents'; +import { getRetryAfterIntervalFromHeaders } from '../../lib/http_response_retry_header'; -export type SlackActionType = ActionType<{}, ActionTypeSecretsType, ActionParamsType, unknown>; -export type SlackActionTypeExecutorOptions = ActionTypeExecutorOptions< +export type SlackConnectorType = ConnectorType< + {}, + ConnectorTypeSecretsType, + ActionParamsType, + unknown +>; +export type SlackConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< {}, - ActionTypeSecretsType, + ConnectorTypeSecretsType, ActionParamsType >; // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const secretsSchemaProps = { webhookUrl: schema.string(), @@ -57,23 +60,21 @@ const ParamsSchema = schema.object({ message: schema.string({ minLength: 1 }), }); -// action type definition +// connector type definition -export const ActionTypeId = '.slack'; +export const ConnectorTypeId = '.slack'; // customizing executor is only used for tests -export function getActionType({ +export function getConnectorType({ logger, - configurationUtilities, - executor = curry(slackExecutor)({ logger, configurationUtilities }), + executor = curry(slackExecutor)({ logger }), }: { logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; - executor?: ExecutorType<{}, ActionTypeSecretsType, ActionParamsType, unknown>; -}): SlackActionType { + executor?: ExecutorType<{}, ConnectorTypeSecretsType, ActionParamsType, unknown>; +}): SlackConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.slackTitle', { + name: i18n.translate('xpack.stackConnectors.slack.title', { defaultMessage: 'Slack', }), supportedFeatureIds: [ @@ -84,7 +85,7 @@ export function getActionType({ validate: { secrets: { schema: SecretsSchema, - customValidator: validateActionTypeConfig, + customValidator: validateConnectorTypeConfig, }, params: { schema: ParamsSchema, @@ -104,8 +105,8 @@ function renderParameterTemplates( }; } -function validateActionTypeConfig( - secretsObject: ActionTypeSecretsType, +function validateConnectorTypeConfig( + secretsObject: ConnectorTypeSecretsType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; @@ -114,7 +115,7 @@ function validateActionTypeConfig( new URL(configuredUrl); } catch (err) { throw new Error( - i18n.translate('xpack.actions.builtin.slack.slackConfigurationErrorNoHostname', { + i18n.translate('xpack.stackConnectors.slack.configurationErrorNoHostname', { defaultMessage: 'error configuring slack action: unable to parse host name from webhookUrl', }) ); @@ -124,7 +125,7 @@ function validateActionTypeConfig( configurationUtilities.ensureUriAllowed(configuredUrl); } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.slack.slackConfigurationError', { + i18n.translate('xpack.stackConnectors.slack.configurationError', { defaultMessage: 'error configuring slack action: {message}', values: { message: allowListError.message, @@ -137,15 +138,13 @@ function validateActionTypeConfig( // action executor async function slackExecutor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: SlackActionTypeExecutorOptions -): Promise> { + { logger }: { logger: Logger }, + execOptions: SlackConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const secrets = execOptions.secrets; const params = execOptions.params; + const configurationUtilities = execOptions.configurationUtilities; let result: IncomingWebhookResult; const { webhookUrl } = secrets; @@ -192,7 +191,7 @@ async function slackExecutor( } const errMessage = i18n.translate( - 'xpack.actions.builtin.slack.unexpectedHttpResponseErrorMessage', + 'xpack.stackConnectors.slack.unexpectedHttpResponseErrorMessage', { defaultMessage: 'unexpected http response from slack: {httpStatus} {httpStatusText}', values: { @@ -208,7 +207,7 @@ async function slackExecutor( if (result == null) { const errMessage = i18n.translate( - 'xpack.actions.builtin.slack.unexpectedNullResponseErrorMessage', + 'xpack.stackConnectors.slack.unexpectedNullResponseErrorMessage', { defaultMessage: 'unexpected null response from slack', } @@ -223,11 +222,11 @@ async function slackExecutor( return successResult(actionId, result); } -function successResult(actionId: string, data: unknown): ActionTypeExecutorResult { +function successResult(actionId: string, data: unknown): ConnectorTypeExecutorResult { return { status: 'ok', data, actionId }; } -function errorResult(actionId: string, message: string): ActionTypeExecutorResult { +function errorResult(actionId: string, message: string): ConnectorTypeExecutorResult { return { status: 'error', message, @@ -237,8 +236,8 @@ function errorResult(actionId: string, message: string): ActionTypeExecutorResul function serviceErrorResult( actionId: string, serviceMessage: string -): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.slack.errorPostingErrorMessage', { +): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.slack.errorPostingErrorMessage', { defaultMessage: 'error posting slack message', }); return { @@ -249,9 +248,9 @@ function serviceErrorResult( }; } -function retryResult(actionId: string, message: string): ActionTypeExecutorResult { +function retryResult(actionId: string, message: string): ConnectorTypeExecutorResult { const errMessage = i18n.translate( - 'xpack.actions.builtin.slack.errorPostingRetryLaterErrorMessage', + 'xpack.stackConnectors.slack.errorPostingRetryLaterErrorMessage', { defaultMessage: 'error posting a slack message, retry later', } @@ -268,12 +267,12 @@ function retryResultSeconds( actionId: string, message: string, retryAfter: number -): ActionTypeExecutorResult { +): ConnectorTypeExecutorResult { const retryEpoch = Date.now() + retryAfter * 1000; const retry = new Date(retryEpoch); const retryString = retry.toISOString(); const errMessage = i18n.translate( - 'xpack.actions.builtin.slack.errorPostingRetryDateErrorMessage', + 'xpack.stackConnectors.slack.errorPostingRetryDateErrorMessage', { defaultMessage: 'error posting a slack message, retry at {retryString}', values: { diff --git a/x-pack/plugins/actions/server/builtin_action_types/teams.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.test.ts similarity index 74% rename from x-pack/plugins/actions/server/builtin_action_types/teams.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.test.ts index 6b5dd3fb0d50f..a45db6021bfd7 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/teams.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.test.ts @@ -6,19 +6,19 @@ */ import { Logger } from '@kbn/core/server'; -import { Services } from '../types'; -import { validateParams, validateSecrets } from '../lib'; +import { Services } from '@kbn/actions-plugin/server/types'; +import { validateParams, validateSecrets } from '@kbn/actions-plugin/server/lib'; import axios from 'axios'; -import { ActionParamsType, ActionTypeSecretsType, getActionType, TeamsActionType } from './teams'; -import { actionsConfigMock } from '../actions_config.mock'; -import { actionsMock } from '../mocks'; -import { createActionTypeRegistry } from './index.test'; -import * as utils from '../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../actions_config'; +import { getConnectorType, TeamsConnectorType, ConnectorTypeId } from '.'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import * as utils from '@kbn/actions-plugin/server/lib/axios_utils'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; +import { loggerMock } from '@kbn/logging-mocks'; jest.mock('axios'); -jest.mock('../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), @@ -27,34 +27,32 @@ jest.mock('../lib/axios_utils', () => { }); axios.create = jest.fn(() => axios); -const requestMock = utils.request as jest.Mock; - -const ACTION_TYPE_ID = '.teams'; +const requestMock = utils.request as jest.Mock; const services: Services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); -let actionType: TeamsActionType; -let mockedLogger: jest.Mocked; -let configurationUtilities: ActionsConfigurationUtilities; +let connectorType: TeamsConnectorType; +let configurationUtilities: jest.Mocked; -beforeAll(() => { - const { logger, actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get<{}, ActionTypeSecretsType, ActionParamsType>(ACTION_TYPE_ID); - mockedLogger = logger; - configurationUtilities = actionTypeRegistry.getUtils(); +beforeEach(() => { + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); -describe('action registration', () => { - test('returns action type', () => { - expect(actionType.id).toEqual(ACTION_TYPE_ID); - expect(actionType.name).toEqual('Microsoft Teams'); +describe('connector registration', () => { + test('returns connector type', () => { + expect(connectorType.id).toEqual(ConnectorTypeId); + expect(connectorType.name).toEqual('Microsoft Teams'); }); }); describe('validateParams()', () => { test('should validate and pass when params is valid', () => { expect( - validateParams(actionType, { message: 'a message' }, { configurationUtilities }) + validateParams(connectorType, { message: 'a message' }, { configurationUtilities }) ).toEqual({ message: 'a message', }); @@ -62,13 +60,13 @@ describe('validateParams()', () => { test('should validate and throw error when params is invalid', () => { expect(() => { - validateParams(actionType, {}, { configurationUtilities }); + validateParams(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [undefined]"` ); expect(() => { - validateParams(actionType, { message: 1 }, { configurationUtilities }); + validateParams(connectorType, { message: 1 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action params: [message]: expected value of type [string] but got [number]"` ); @@ -78,7 +76,7 @@ describe('validateParams()', () => { describe('validateActionTypeSecrets()', () => { test('should validate and pass when config is valid', () => { validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://example.com', }, @@ -88,19 +86,19 @@ describe('validateActionTypeSecrets()', () => { test('should validate and throw error when config is invalid', () => { expect(() => { - validateSecrets(actionType, {}, { configurationUtilities }); + validateSecrets(connectorType, {}, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [webhookUrl]: expected value of type [string] but got [undefined]"` ); expect(() => { - validateSecrets(actionType, { webhookUrl: 1 }, { configurationUtilities }); + validateSecrets(connectorType, { webhookUrl: 1 }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: [webhookUrl]: expected value of type [string] but got [number]"` ); expect(() => { - validateSecrets(actionType, { webhookUrl: 'fee-fi-fo-fum' }, { configurationUtilities }); + validateSecrets(connectorType, { webhookUrl: 'fee-fi-fo-fum' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: error configuring teams action: unable to parse host name from webhookUrl"` ); @@ -113,14 +111,10 @@ describe('validateActionTypeSecrets()', () => { expect(url).toEqual('https://outlook.office.com/'); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); expect( validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://outlook.office.com/' }, { configurationUtilities: configUtils } ) @@ -136,14 +130,10 @@ describe('validateActionTypeSecrets()', () => { throw new Error(`target hostname is not added to allowedHosts`); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); expect(() => { validateSecrets( - actionType, + connectorType, { webhookUrl: 'https://outlook.office.com/' }, { configurationUtilities: configUtils } ); @@ -156,13 +146,10 @@ describe('validateActionTypeSecrets()', () => { describe('execute()', () => { beforeAll(() => { requestMock.mockReset(); - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: actionsConfigMock.create(), - }); }); beforeEach(() => { + jest.resetAllMocks(); requestMock.mockReset(); requestMock.mockResolvedValue({ status: 200, @@ -174,12 +161,13 @@ describe('execute()', () => { }); test('calls the mock executor with success', async () => { - const response = await actionType.executor({ + const response = await connectorType.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities, }); delete requestMock.mock.calls[0][0].configurationUtilities; expect(requestMock.mock.calls[0][0]).toMatchInlineSnapshot(` @@ -227,12 +215,13 @@ describe('execute()', () => { }); test('calls the mock executor with success proxy', async () => { - const response = await actionType.executor({ + const response = await connectorType.executor({ actionId: 'some-id', services, config: {}, secrets: { webhookUrl: 'http://example.com' }, params: { message: 'this invocation should succeed' }, + configurationUtilities, }); delete requestMock.mock.calls[0][0].configurationUtilities; expect(requestMock.mock.calls[0][0]).toMatchInlineSnapshot(` diff --git a/x-pack/plugins/actions/server/builtin_action_types/teams.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.ts similarity index 71% rename from x-pack/plugins/actions/server/builtin_action_types/teams.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.ts index 490c52f8f901a..3405f59a68f7a 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/teams.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/teams/index.ts @@ -13,32 +13,36 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { pipe } from 'fp-ts/lib/pipeable'; import { map, getOrElse } from 'fp-ts/lib/Option'; import { Logger } from '@kbn/core/server'; -import { getRetryAfterIntervalFromHeaders } from './lib/http_rersponse_retry_header'; -import { isOk, promiseResult, Result } from './lib/result_type'; -import { request } from '../lib/axios_utils'; -import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; +} from '@kbn/actions-plugin/server/types'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; import { AlertingConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; +} from '@kbn/actions-plugin/common/types'; +import { getRetryAfterIntervalFromHeaders } from '../../lib/http_response_retry_header'; +import { isOk, promiseResult, Result } from '../../lib/result_type'; -export type TeamsActionType = ActionType<{}, ActionTypeSecretsType, ActionParamsType, unknown>; -export type TeamsActionTypeExecutorOptions = ActionTypeExecutorOptions< +export type TeamsConnectorType = ConnectorType< + {}, + ConnectorTypeSecretsType, + ActionParamsType, + unknown +>; +export type TeamsConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< {}, - ActionTypeSecretsType, + ConnectorTypeSecretsType, ActionParamsType >; // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const secretsSchemaProps = { webhookUrl: schema.string(), @@ -53,19 +57,13 @@ const ParamsSchema = schema.object({ message: schema.string({ minLength: 1 }), }); -export const ActionTypeId = '.teams'; -// action type definition -export function getActionType({ - logger, - configurationUtilities, -}: { - logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; -}): TeamsActionType { +export const ConnectorTypeId = '.teams'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): TeamsConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.teamsTitle', { + name: i18n.translate('xpack.stackConnectors.teams.title', { defaultMessage: 'Microsoft Teams', }), supportedFeatureIds: [ @@ -76,18 +74,18 @@ export function getActionType({ validate: { secrets: { schema: SecretsSchema, - customValidator: validateActionTypeConfig, + customValidator: validateConnectorTypeConfig, }, params: { schema: ParamsSchema, }, }, - executor: curry(teamsExecutor)({ logger, configurationUtilities }), + executor: curry(teamsExecutor)({ logger }), }; } -function validateActionTypeConfig( - secretsObject: ActionTypeSecretsType, +function validateConnectorTypeConfig( + secretsObject: ConnectorTypeSecretsType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; @@ -96,7 +94,7 @@ function validateActionTypeConfig( new URL(configuredUrl); } catch (err) { throw new Error( - i18n.translate('xpack.actions.builtin.teams.teamsConfigurationErrorNoHostname', { + i18n.translate('xpack.stackConnectors.teams.configurationErrorNoHostname', { defaultMessage: 'error configuring teams action: unable to parse host name from webhookUrl', }) ); @@ -106,7 +104,7 @@ function validateActionTypeConfig( configurationUtilities.ensureUriAllowed(configuredUrl); } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.teams.teamsConfigurationError', { + i18n.translate('xpack.stackConnectors.teams.configurationError', { defaultMessage: 'error configuring teams action: {message}', values: { message: allowListError.message, @@ -119,15 +117,13 @@ function validateActionTypeConfig( // action executor async function teamsExecutor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: TeamsActionTypeExecutorOptions -): Promise> { + { logger }: { logger: Logger }, + execOptions: TeamsConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const secrets = execOptions.secrets; const params = execOptions.params; + const configurationUtilities = execOptions.configurationUtilities; const { webhookUrl } = secrets; const { message } = params; const data = { text: message }; @@ -185,12 +181,12 @@ async function teamsExecutor( } } -function successResult(actionId: string, data: unknown): ActionTypeExecutorResult { +function successResult(actionId: string, data: unknown): ConnectorTypeExecutorResult { return { status: 'ok', data, actionId }; } -function errorResultUnexpectedError(actionId: string): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.teams.unreachableErrorMessage', { +function errorResultUnexpectedError(actionId: string): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.teams.unreachableErrorMessage', { defaultMessage: 'error posting to Microsoft Teams, unexpected error', }); return { @@ -203,8 +199,8 @@ function errorResultUnexpectedError(actionId: string): ActionTypeExecutorResult< function errorResultInvalid( actionId: string, serviceMessage: string -): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.teams.invalidResponseErrorMessage', { +): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.teams.invalidResponseErrorMessage', { defaultMessage: 'error posting to Microsoft Teams, invalid response', }); return { @@ -215,9 +211,9 @@ function errorResultInvalid( }; } -function retryResult(actionId: string, message: string): ActionTypeExecutorResult { +function retryResult(actionId: string, message: string): ConnectorTypeExecutorResult { const errMessage = i18n.translate( - 'xpack.actions.builtin.teams.errorPostingRetryLaterErrorMessage', + 'xpack.stackConnectors.teams.errorPostingRetryLaterErrorMessage', { defaultMessage: 'error posting a Microsoft Teams message, retry later', } @@ -234,12 +230,12 @@ function retryResultSeconds( actionId: string, message: string, retryAfter: number -): ActionTypeExecutorResult { +): ConnectorTypeExecutorResult { const retryEpoch = Date.now() + retryAfter * 1000; const retry = new Date(retryEpoch); const retryString = retry.toISOString(); const errMessage = i18n.translate( - 'xpack.actions.builtin.teams.errorPostingRetryDateErrorMessage', + 'xpack.stackConnectors.teams.errorPostingRetryDateErrorMessage', { defaultMessage: 'error posting a Microsoft Teams message, retry at {retryString}', values: { diff --git a/x-pack/plugins/actions/server/builtin_action_types/webhook.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.test.ts similarity index 76% rename from x-pack/plugins/actions/server/builtin_action_types/webhook.test.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.test.ts index c374a25d1088b..5d82212e67179 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/webhook.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.test.ts @@ -5,28 +5,27 @@ * 2.0. */ -import { Services } from '../types'; -import { validateConfig, validateSecrets, validateParams } from '../lib'; -import { actionsConfigMock } from '../actions_config.mock'; -import { createActionTypeRegistry } from './index.test'; +import { Services } from '@kbn/actions-plugin/server/types'; +import { validateConfig, validateParams, validateSecrets } from '@kbn/actions-plugin/server/lib'; +import { actionsConfigMock } from '@kbn/actions-plugin/server/actions_config.mock'; +import { ActionsConfigurationUtilities } from '@kbn/actions-plugin/server/actions_config'; import { Logger } from '@kbn/core/server'; -import { actionsMock } from '../mocks'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; import axios from 'axios'; import { - ActionParamsType, - ActionTypeConfigType, - ActionTypeSecretsType, - getActionType, - WebhookActionType, + ConnectorTypeConfigType, + ConnectorTypeSecretsType, + getConnectorType, + WebhookConnectorType, WebhookMethods, -} from './webhook'; +} from '.'; -import * as utils from '../lib/axios_utils'; -import { ActionsConfigurationUtilities } from '../actions_config'; +import * as utils from '@kbn/actions-plugin/server/lib/axios_utils'; +import { loggerMock } from '@kbn/logging-mocks'; jest.mock('axios'); -jest.mock('../lib/axios_utils', () => { - const originalUtils = jest.requireActual('../lib/axios_utils'); +jest.mock('@kbn/actions-plugin/server/lib/axios_utils', () => { + const originalUtils = jest.requireActual('@kbn/actions-plugin/server/lib/axios_utils'); return { ...originalUtils, request: jest.fn(), @@ -39,29 +38,23 @@ const requestMock = utils.request as jest.Mock; axios.create = jest.fn(() => axios); -const ACTION_TYPE_ID = '.webhook'; - const services: Services = actionsMock.createServices(); +const mockedLogger: jest.Mocked = loggerMock.create(); + +let connectorType: WebhookConnectorType; +let configurationUtilities: jest.Mocked; -let actionType: WebhookActionType; -let mockedLogger: jest.Mocked; -let configurationUtilities: ActionsConfigurationUtilities; - -beforeAll(() => { - const { logger, actionTypeRegistry } = createActionTypeRegistry(); - actionType = actionTypeRegistry.get< - ActionTypeConfigType, - ActionTypeSecretsType, - ActionParamsType - >(ACTION_TYPE_ID); - mockedLogger = logger; - configurationUtilities = actionTypeRegistry.getUtils(); +beforeEach(() => { + configurationUtilities = actionsConfigMock.create(); + connectorType = getConnectorType({ + logger: mockedLogger, + }); }); -describe('actionType', () => { - test('exposes the action as `webhook` on its Id and Name', () => { - expect(actionType.id).toEqual('.webhook'); - expect(actionType.name).toEqual('Webhook'); +describe('connectorType', () => { + test('exposes the connector as `webhook` on its Id and Name', () => { + expect(connectorType.id).toEqual('.webhook'); + expect(connectorType.name).toEqual('Webhook'); }); }); @@ -71,19 +64,19 @@ describe('secrets validation', () => { user: 'bob', password: 'supersecret', }; - expect(validateSecrets(actionType, secrets, { configurationUtilities })).toEqual(secrets); + expect(validateSecrets(connectorType, secrets, { configurationUtilities })).toEqual(secrets); }); test('fails when secret user is provided, but password is omitted', () => { expect(() => { - validateSecrets(actionType, { user: 'bob' }, { configurationUtilities }); + validateSecrets(connectorType, { user: 'bob' }, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type secrets: both user and password must be specified"` ); }); test('succeeds when basic authentication credentials are omitted', () => { - expect(validateSecrets(actionType, {}, { configurationUtilities })).toEqual({ + expect(validateSecrets(connectorType, {}, { configurationUtilities })).toEqual({ password: null, user: null, }); @@ -101,7 +94,7 @@ describe('config validation', () => { url: 'http://mylisteningserver:9200/endpoint', hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...defaultValues, ...config, }); @@ -114,7 +107,7 @@ describe('config validation', () => { method, hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...defaultValues, ...config, }); @@ -127,7 +120,7 @@ describe('config validation', () => { method: 'https', }; expect(() => { - validateConfig(actionType, config, { configurationUtilities }); + validateConfig(connectorType, config, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot(` "error validating action type config: [method]: types that failed validation: - [method.0]: expected value to equal [post] @@ -140,7 +133,7 @@ describe('config validation', () => { url: 'http://mylisteningserver:9200/endpoint', hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...defaultValues, ...config, }); @@ -151,7 +144,7 @@ describe('config validation', () => { url: 'example.com/do-something', }; expect(() => { - validateConfig(actionType, config, { configurationUtilities }); + validateConfig(connectorType, config, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot( '"error validating action type config: error configuring webhook action: unable to parse url: TypeError: Invalid URL: example.com/do-something"' ); @@ -167,7 +160,7 @@ describe('config validation', () => { }, hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...defaultValues, ...config, }); @@ -179,7 +172,7 @@ describe('config validation', () => { headers: 'application/json', }; expect(() => { - validateConfig(actionType, config, { configurationUtilities }); + validateConfig(connectorType, config, { configurationUtilities }); }).toThrowErrorMatchingInlineSnapshot(` "error validating action type config: [headers]: types that failed validation: - [headers.0]: could not parse record value from json input @@ -198,7 +191,7 @@ describe('config validation', () => { hasAuth: true, }; - expect(validateConfig(actionType, config, { configurationUtilities })).toEqual({ + expect(validateConfig(connectorType, config, { configurationUtilities })).toEqual({ ...defaultValues, ...config, }); @@ -211,10 +204,6 @@ describe('config validation', () => { throw new Error(`target url is not present in allowedHosts`); }, }; - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: configUtils, - }); // any for testing // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -226,7 +215,7 @@ describe('config validation', () => { }; expect(() => { - validateConfig(actionType, config, { configurationUtilities: configUtils }); + validateConfig(connectorType, config, { configurationUtilities: configUtils }); }).toThrowErrorMatchingInlineSnapshot( `"error validating action type config: error configuring webhook action: target url is not present in allowedHosts"` ); @@ -236,14 +225,14 @@ describe('config validation', () => { describe('params validation', () => { test('param validation passes when no fields are provided as none are required', () => { const params: Record = {}; - expect(validateParams(actionType, params, { configurationUtilities })).toEqual({}); + expect(validateParams(connectorType, params, { configurationUtilities })).toEqual({}); }); test('params validation passes when a valid body is provided', () => { const params: Record = { body: 'count: {{ctx.payload.hits.total}}', }; - expect(validateParams(actionType, params, { configurationUtilities })).toEqual({ + expect(validateParams(connectorType, params, { configurationUtilities })).toEqual({ ...params, }); }); @@ -252,13 +241,10 @@ describe('params validation', () => { describe('execute()', () => { beforeAll(() => { requestMock.mockReset(); - actionType = getActionType({ - logger: mockedLogger, - configurationUtilities: actionsConfigMock.create(), - }); }); beforeEach(() => { + jest.resetAllMocks(); requestMock.mockReset(); requestMock.mockResolvedValue({ status: 200, @@ -270,7 +256,7 @@ describe('execute()', () => { }); test('execute with username/password sends request with basic auth', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { url: 'https://abc.def/my-webhook', method: WebhookMethods.POST, headers: { @@ -278,12 +264,13 @@ describe('execute()', () => { }, hasAuth: true, }; - await actionType.executor({ + await connectorType.executor({ actionId: 'some-id', services, config, secrets: { user: 'abc', password: '123' }, params: { body: 'some data' }, + configurationUtilities, }); delete requestMock.mock.calls[0][0].configurationUtilities; @@ -328,7 +315,7 @@ describe('execute()', () => { }); test('execute with exception maxContentLength size exceeded should log the proper error', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { url: 'https://abc.def/my-webhook', method: WebhookMethods.POST, headers: { @@ -342,12 +329,13 @@ describe('execute()', () => { isAxiosError: true, message: 'maxContentLength size of 1000000 exceeded', }); - await actionType.executor({ + await connectorType.executor({ actionId: 'some-id', services, config, secrets: { user: 'abc', password: '123' }, params: { body: 'some data' }, + configurationUtilities, }); expect(mockedLogger.error).toBeCalledWith( 'error on some-id webhook event: maxContentLength size of 1000000 exceeded' @@ -355,7 +343,7 @@ describe('execute()', () => { }); test('execute without username/password sends request without basic auth', async () => { - const config: ActionTypeConfigType = { + const config: ConnectorTypeConfigType = { url: 'https://abc.def/my-webhook', method: WebhookMethods.POST, headers: { @@ -363,13 +351,14 @@ describe('execute()', () => { }, hasAuth: false, }; - const secrets: ActionTypeSecretsType = { user: null, password: null }; - await actionType.executor({ + const secrets: ConnectorTypeSecretsType = { user: null, password: null }; + await connectorType.executor({ actionId: 'some-id', services, config, secrets, params: { body: 'some data' }, + configurationUtilities, }); delete requestMock.mock.calls[0][0].configurationUtilities; @@ -412,14 +401,14 @@ describe('execute()', () => { test('renders parameter templates as expected', async () => { const rogue = `double-quote:"; line-break->\n`; - expect(actionType.renderParameterTemplates).toBeTruthy(); + expect(connectorType.renderParameterTemplates).toBeTruthy(); const paramsWithTemplates = { body: '{"x": "{{rogue}}"}', }; const variables = { rogue, }; - const params = actionType.renderParameterTemplates!(paramsWithTemplates, variables); + const params = connectorType.renderParameterTemplates!(paramsWithTemplates, variables); // eslint-disable-next-line @typescript-eslint/no-explicit-any let paramsObject: any; diff --git a/x-pack/plugins/actions/server/builtin_action_types/webhook.ts b/x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.ts similarity index 74% rename from x-pack/plugins/actions/server/builtin_action_types/webhook.ts rename to x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.ts index 42454b53ebde8..bc25d65d45915 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/webhook.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/stack/webhook/index.ts @@ -12,23 +12,22 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { pipe } from 'fp-ts/lib/pipeable'; import { map, getOrElse } from 'fp-ts/lib/Option'; import { Logger } from '@kbn/core/server'; -import { getRetryAfterIntervalFromHeaders } from './lib/http_rersponse_retry_header'; -import { nullableType } from './lib/nullable'; -import { isOk, promiseResult, Result } from './lib/result_type'; -import { - ActionType, - ActionTypeExecutorOptions, - ActionTypeExecutorResult, +import type { + ActionType as ConnectorType, + ActionTypeExecutorOptions as ConnectorTypeExecutorOptions, + ActionTypeExecutorResult as ConnectorTypeExecutorResult, ValidatorServices, -} from '../types'; -import { ActionsConfigurationUtilities } from '../actions_config'; -import { request } from '../lib/axios_utils'; -import { renderMustacheString } from '../lib/mustache_renderer'; +} from '@kbn/actions-plugin/server/types'; +import { request } from '@kbn/actions-plugin/server/lib/axios_utils'; import { AlertingConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, -} from '../../common'; +} from '@kbn/actions-plugin/common/types'; +import { renderMustacheString } from '@kbn/actions-plugin/server/lib/mustache_renderer'; +import { getRetryAfterIntervalFromHeaders } from '../../lib/http_response_retry_header'; +import { nullableType } from '../../lib/nullable'; +import { isOk, promiseResult, Result } from '../../lib/result_type'; // config definition export enum WebhookMethods { @@ -36,15 +35,15 @@ export enum WebhookMethods { PUT = 'put', } -export type WebhookActionType = ActionType< - ActionTypeConfigType, - ActionTypeSecretsType, +export type WebhookConnectorType = ConnectorType< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType, unknown >; -export type WebhookActionTypeExecutorOptions = ActionTypeExecutorOptions< - ActionTypeConfigType, - ActionTypeSecretsType, +export type WebhookConnectorTypeExecutorOptions = ConnectorTypeExecutorOptions< + ConnectorTypeConfigType, + ConnectorTypeSecretsType, ActionParamsType >; @@ -58,10 +57,10 @@ const configSchemaProps = { hasAuth: schema.boolean({ defaultValue: true }), }; const ConfigSchema = schema.object(configSchemaProps); -export type ActionTypeConfigType = TypeOf; +export type ConnectorTypeConfigType = TypeOf; // secrets definition -export type ActionTypeSecretsType = TypeOf; +export type ConnectorTypeSecretsType = TypeOf; const secretSchemaProps = { user: schema.nullable(schema.string()), password: schema.nullable(schema.string()), @@ -71,7 +70,7 @@ const SecretsSchema = schema.object(secretSchemaProps, { // user and password must be set together (or not at all) if (!secrets.password && !secrets.user) return; if (secrets.password && secrets.user) return; - return i18n.translate('xpack.actions.builtin.webhook.invalidUsernamePassword', { + return i18n.translate('xpack.stackConnectors.webhook.invalidUsernamePassword', { defaultMessage: 'both user and password must be specified', }); }, @@ -83,19 +82,13 @@ const ParamsSchema = schema.object({ body: schema.maybe(schema.string()), }); -export const ActionTypeId = '.webhook'; -// action type definition -export function getActionType({ - logger, - configurationUtilities, -}: { - logger: Logger; - configurationUtilities: ActionsConfigurationUtilities; -}): WebhookActionType { +export const ConnectorTypeId = '.webhook'; +// connector type definition +export function getConnectorType({ logger }: { logger: Logger }): WebhookConnectorType { return { - id: ActionTypeId, + id: ConnectorTypeId, minimumLicenseRequired: 'gold', - name: i18n.translate('xpack.actions.builtin.webhookTitle', { + name: i18n.translate('xpack.stackConnectors.webhook.title', { defaultMessage: 'Webhook', }), supportedFeatureIds: [ @@ -106,7 +99,7 @@ export function getActionType({ validate: { config: { schema: ConfigSchema, - customValidator: validateActionTypeConfig, + customValidator: validateConnectorTypeConfig, }, secrets: { schema: SecretsSchema, @@ -116,7 +109,7 @@ export function getActionType({ }, }, renderParameterTemplates, - executor: curry(executor)({ logger, configurationUtilities }), + executor: curry(executor)({ logger }), }; } @@ -130,8 +123,8 @@ function renderParameterTemplates( }; } -function validateActionTypeConfig( - configObject: ActionTypeConfigType, +function validateConnectorTypeConfig( + configObject: ConnectorTypeConfigType, validatorServices: ValidatorServices ) { const { configurationUtilities } = validatorServices; @@ -140,7 +133,7 @@ function validateActionTypeConfig( new URL(configuredUrl); } catch (err) { throw new Error( - i18n.translate('xpack.actions.builtin.webhook.webhookConfigurationErrorNoHostname', { + i18n.translate('xpack.stackConnectors.webhook.configurationErrorNoHostname', { defaultMessage: 'error configuring webhook action: unable to parse url: {err}', values: { err, @@ -153,7 +146,7 @@ function validateActionTypeConfig( configurationUtilities.ensureUriAllowed(configuredUrl); } catch (allowListError) { throw new Error( - i18n.translate('xpack.actions.builtin.webhook.webhookConfigurationError', { + i18n.translate('xpack.stackConnectors.webhook.configurationError', { defaultMessage: 'error configuring webhook action: {message}', values: { message: allowListError.message, @@ -165,17 +158,15 @@ function validateActionTypeConfig( // action executor export async function executor( - { - logger, - configurationUtilities, - }: { logger: Logger; configurationUtilities: ActionsConfigurationUtilities }, - execOptions: WebhookActionTypeExecutorOptions -): Promise> { + { logger }: { logger: Logger }, + execOptions: WebhookConnectorTypeExecutorOptions +): Promise> { const actionId = execOptions.actionId; const { method, url, headers = {}, hasAuth } = execOptions.config; const { body: data } = execOptions.params; + const configurationUtilities = execOptions.configurationUtilities; - const secrets: ActionTypeSecretsType = execOptions.secrets; + const secrets: ConnectorTypeSecretsType = execOptions.secrets; const basicAuth = hasAuth && isString(secrets.user) && isString(secrets.password) ? { auth: { username: secrets.user, password: secrets.password } } @@ -247,15 +238,15 @@ export async function executor( } // Action Executor Result w/ internationalisation -function successResult(actionId: string, data: unknown): ActionTypeExecutorResult { +function successResult(actionId: string, data: unknown): ConnectorTypeExecutorResult { return { status: 'ok', data, actionId }; } function errorResultInvalid( actionId: string, serviceMessage: string -): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.webhook.invalidResponseErrorMessage', { +): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.webhook.invalidResponseErrorMessage', { defaultMessage: 'error calling webhook, invalid response', }); return { @@ -269,8 +260,8 @@ function errorResultInvalid( function errorResultRequestFailed( actionId: string, serviceMessage: string -): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.webhook.requestFailedErrorMessage', { +): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.webhook.requestFailedErrorMessage', { defaultMessage: 'error calling webhook, request failed', }); return { @@ -281,8 +272,8 @@ function errorResultRequestFailed( }; } -function errorResultUnexpectedError(actionId: string): ActionTypeExecutorResult { - const errMessage = i18n.translate('xpack.actions.builtin.webhook.unreachableErrorMessage', { +function errorResultUnexpectedError(actionId: string): ConnectorTypeExecutorResult { + const errMessage = i18n.translate('xpack.stackConnectors.webhook.unreachableErrorMessage', { defaultMessage: 'error calling webhook, unexpected error', }); return { @@ -292,9 +283,9 @@ function errorResultUnexpectedError(actionId: string): ActionTypeExecutorResult< }; } -function retryResult(actionId: string, serviceMessage: string): ActionTypeExecutorResult { +function retryResult(actionId: string, serviceMessage: string): ConnectorTypeExecutorResult { const errMessage = i18n.translate( - 'xpack.actions.builtin.webhook.invalidResponseRetryLaterErrorMessage', + 'xpack.stackConnectors.webhook.invalidResponseRetryLaterErrorMessage', { defaultMessage: 'error calling webhook, retry later', } @@ -313,12 +304,12 @@ function retryResultSeconds( serviceMessage: string, retryAfter: number -): ActionTypeExecutorResult { +): ConnectorTypeExecutorResult { const retryEpoch = Date.now() + retryAfter * 1000; const retry = new Date(retryEpoch); const retryString = retry.toISOString(); const errMessage = i18n.translate( - 'xpack.actions.builtin.webhook.invalidResponseRetryDateErrorMessage', + 'xpack.stackConnectors.webhook.invalidResponseRetryDateErrorMessage', { defaultMessage: 'error calling webhook, retry at {retryString}', values: { diff --git a/x-pack/plugins/stack_connectors/server/index.ts b/x-pack/plugins/stack_connectors/server/index.ts new file mode 100644 index 0000000000000..2cc792da9f9a3 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { PluginInitializerContext } from '@kbn/core/server'; +import { StackConnectorsPlugin } from './plugin'; + +export const plugin = (initContext: PluginInitializerContext) => + new StackConnectorsPlugin(initContext); diff --git a/x-pack/plugins/stack_connectors/server/plugin.test.ts b/x-pack/plugins/stack_connectors/server/plugin.test.ts new file mode 100644 index 0000000000000..b28899ecf0865 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/plugin.test.ts @@ -0,0 +1,136 @@ +/* + * 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 { PluginInitializerContext } from '@kbn/core/server'; +import { coreMock } from '@kbn/core/server/mocks'; +import { StackConnectorsPlugin } from './plugin'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; + +describe('Stack Connectors Plugin', () => { + describe('setup()', () => { + let context: PluginInitializerContext; + let plugin: StackConnectorsPlugin; + let coreSetup: ReturnType; + + beforeEach(() => { + context = coreMock.createPluginInitializerContext(); + plugin = new StackConnectorsPlugin(context); + coreSetup = coreMock.createSetup(); + }); + + it('should register built in connector types', () => { + const actionsSetup = actionsMock.createSetup(); + plugin.setup(coreSetup, { actions: actionsSetup }); + expect(actionsSetup.registerType).toHaveBeenCalledTimes(15); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + id: '.email', + name: 'Email', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + id: '.index', + name: 'Index', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ + id: '.pagerduty', + name: 'PagerDuty', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 4, + expect.objectContaining({ + id: '.swimlane', + name: 'Swimlane', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 5, + expect.objectContaining({ + id: '.server-log', + name: 'Server log', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 6, + expect.objectContaining({ + id: '.slack', + name: 'Slack', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 7, + expect.objectContaining({ + id: '.webhook', + name: 'Webhook', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 8, + expect.objectContaining({ + id: '.cases-webhook', + name: 'Webhook - Case Management', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 9, + expect.objectContaining({ + id: '.xmatters', + name: 'xMatters', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 10, + expect.objectContaining({ + id: '.servicenow', + name: 'ServiceNow ITSM', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 11, + expect.objectContaining({ + id: '.servicenow-sir', + name: 'ServiceNow SecOps', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 12, + expect.objectContaining({ + id: '.servicenow-itom', + name: 'ServiceNow ITOM', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 13, + expect.objectContaining({ + id: '.jira', + name: 'Jira', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 14, + expect.objectContaining({ + id: '.resilient', + name: 'IBM Resilient', + }) + ); + expect(actionsSetup.registerType).toHaveBeenNthCalledWith( + 15, + expect.objectContaining({ + id: '.teams', + name: 'Microsoft Teams', + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/stack_connectors/server/plugin.ts b/x-pack/plugins/stack_connectors/server/plugin.ts new file mode 100644 index 0000000000000..0c8b32b49d9f4 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/plugin.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PluginInitializerContext, Plugin, CoreSetup, Logger } from '@kbn/core/server'; +import { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; +import { registerConnectorTypes } from './connector_types'; +import { getWellKnownEmailServiceRoute } from './routes'; +export interface ConnectorsPluginsSetup { + actions: ActionsPluginSetupContract; +} + +export interface ConnectorsPluginsStart { + actions: ActionsPluginSetupContract; +} + +export class StackConnectorsPlugin implements Plugin { + private readonly logger: Logger; + + constructor(context: PluginInitializerContext) { + this.logger = context.logger.get(); + } + + public setup(core: CoreSetup, plugins: ConnectorsPluginsSetup) { + const router = core.http.createRouter(); + const { actions } = plugins; + + getWellKnownEmailServiceRoute(router); + + registerConnectorTypes({ + logger: this.logger, + actions, + publicBaseUrl: core.http.basePath.publicBaseUrl, + }); + } + + public start() {} + public stop() {} +} diff --git a/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.test.ts b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.test.ts new file mode 100644 index 0000000000000..ed8d827f6e237 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.test.ts @@ -0,0 +1,83 @@ +/* + * 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 { getWellKnownEmailServiceRoute } from './get_well_known_email_service'; +import { httpServiceMock, httpServerMock } from '@kbn/core/server/mocks'; + +describe('getWellKnownEmailServiceRoute', () => { + it('returns config for well known email service', async () => { + const router = httpServiceMock.createRouter(); + + getWellKnownEmailServiceRoute(router); + + const [config, handler] = router.get.mock.calls[0]; + expect(config.path).toMatchInlineSnapshot( + `"/internal/stack_connectors/_email_config/{service}"` + ); + + const mockResponse = httpServerMock.createResponseFactory(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { service: 'gmail' }, + }); + await handler({}, mockRequest, mockResponse); + + expect(mockResponse.ok).toHaveBeenCalledWith({ + body: { + host: 'smtp.gmail.com', + port: 465, + secure: true, + }, + }); + }); + + it('returns config for elastic cloud email service', async () => { + const router = httpServiceMock.createRouter(); + + getWellKnownEmailServiceRoute(router); + + const [config, handler] = router.get.mock.calls[0]; + expect(config.path).toMatchInlineSnapshot( + `"/internal/stack_connectors/_email_config/{service}"` + ); + + const mockResponse = httpServerMock.createResponseFactory(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { service: 'elastic_cloud' }, + }); + + await handler({}, mockRequest, mockResponse); + + expect(mockResponse.ok).toHaveBeenCalledWith({ + body: { + host: 'dockerhost', + port: 10025, + secure: false, + }, + }); + }); + + it('returns empty for unknown service', async () => { + const router = httpServiceMock.createRouter(); + + getWellKnownEmailServiceRoute(router); + + const [config, handler] = router.get.mock.calls[0]; + expect(config.path).toMatchInlineSnapshot( + `"/internal/stack_connectors/_email_config/{service}"` + ); + + const mockResponse = httpServerMock.createResponseFactory(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { service: 'foo' }, + }); + await handler({}, mockRequest, mockResponse); + + expect(mockResponse.ok).toHaveBeenCalledWith({ + body: {}, + }); + }); +}); diff --git a/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts new file mode 100644 index 0000000000000..8606240d60be0 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts @@ -0,0 +1,61 @@ +/* + * 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 { schema } from '@kbn/config-schema'; +import { + IRouter, + RequestHandlerContext, + KibanaRequest, + IKibanaResponse, + KibanaResponseFactory, +} from '@kbn/core/server'; +import nodemailerGetService from 'nodemailer/lib/well-known'; +import SMTPConnection from 'nodemailer/lib/smtp-connection'; +import { AdditionalEmailServices, INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../common'; +import { ELASTIC_CLOUD_SERVICE } from '../connector_types/stack/email'; + +const paramSchema = schema.object({ + service: schema.string(), +}); + +export const getWellKnownEmailServiceRoute = (router: IRouter) => { + router.get( + { + path: `${INTERNAL_BASE_STACK_CONNECTORS_API_PATH}/_email_config/{service}`, + validate: { + params: paramSchema, + }, + }, + handler + ); + + async function handler( + ctx: RequestHandlerContext, + req: KibanaRequest<{ service: string }, unknown, unknown>, + res: KibanaResponseFactory + ): Promise { + const { service } = req.params; + + let response: SMTPConnection.Options = {}; + if (service === AdditionalEmailServices.ELASTIC_CLOUD) { + response = ELASTIC_CLOUD_SERVICE; + } else { + const serviceEntry = nodemailerGetService(service); + if (serviceEntry) { + response = { + host: serviceEntry.host, + port: serviceEntry.port, + secure: serviceEntry.secure, + }; + } + } + + return res.ok({ + body: response, + }); + } +}; diff --git a/x-pack/plugins/stack_connectors/server/routes/index.ts b/x-pack/plugins/stack_connectors/server/routes/index.ts new file mode 100644 index 0000000000000..2766b99679845 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/routes/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { getWellKnownEmailServiceRoute } from './get_well_known_email_service'; diff --git a/x-pack/plugins/stack_connectors/server/types.ts b/x-pack/plugins/stack_connectors/server/types.ts new file mode 100644 index 0000000000000..01f7768bfac10 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/types.ts @@ -0,0 +1,37 @@ +/* + * 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 type { GetFieldsByIssueTypeResponse as JiraGetFieldsResponse } from './connector_types/cases/jira/types'; +export type { GetCommonFieldsResponse as ServiceNowGetFieldsResponse } from './connector_types/cases/servicenow/types'; +export type { GetCommonFieldsResponse as ResilientGetFieldsResponse } from './connector_types/cases/resilient/types'; +export type { SwimlanePublicConfigurationType } from './connector_types/cases/swimlane/types'; + +export type { + CasesWebhookConnectorTypeId, + CasesWebhookActionParams, + EmailConnectorTypeId, + EmailActionParams, + IndexConnectorTypeId, + IndexActionParams, + PagerDutyConnectorTypeId, + PagerDutyActionParams, + ServerLogConnectorTypeId, + ServerLogActionParams, + SlackConnectorTypeId, + SlackActionParams, + WebhookConnectorTypeId, + WebhookActionParams, + ServiceNowITSMConnectorTypeId, + ServiceNowSIRConnectorTypeId, + ServiceNowActionParams, + JiraConnectorTypeId, + JiraActionParams, + ResilientConnectorTypeId, + ResilientActionParams, + TeamsConnectorTypeId, + TeamsActionParams, +} from './connector_types'; diff --git a/x-pack/plugins/stack_connectors/tsconfig.json b/x-pack/plugins/stack_connectors/tsconfig.json new file mode 100644 index 0000000000000..395dc5a65be86 --- /dev/null +++ b/x-pack/plugins/stack_connectors/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true + }, + "include": [ + "server/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "common/**/*" + ], + "references": [ + { "path": "../../../src/core/tsconfig.json" }, + { "path": "../actions/tsconfig.json" } + ] +} diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/settings/types.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/settings/types.ts index e0ddd911b23da..ad13d23259d99 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/settings/types.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/settings/types.ts @@ -6,24 +6,24 @@ */ import type { - IndexActionTypeId, - JiraActionTypeId, - PagerDutyActionTypeId, - ServerLogActionTypeId, - ServiceNowITSMActionTypeId as ServiceNowActionTypeId, - SlackActionTypeId, - TeamsActionTypeId, - WebhookActionTypeId, - EmailActionTypeId, -} from '@kbn/actions-plugin/server/builtin_action_types'; + IndexConnectorTypeId, + JiraConnectorTypeId, + PagerDutyConnectorTypeId, + ServerLogConnectorTypeId, + ServiceNowITSMConnectorTypeId as ServiceNowConnectorTypeId, + SlackConnectorTypeId, + TeamsConnectorTypeId, + WebhookConnectorTypeId, + EmailConnectorTypeId, +} from '@kbn/stack-connectors-plugin/server/connector_types'; export type ActionTypeId = - | typeof SlackActionTypeId - | typeof PagerDutyActionTypeId - | typeof ServerLogActionTypeId - | typeof IndexActionTypeId - | typeof TeamsActionTypeId - | typeof ServiceNowActionTypeId - | typeof JiraActionTypeId - | typeof WebhookActionTypeId - | typeof EmailActionTypeId; + | typeof SlackConnectorTypeId + | typeof PagerDutyConnectorTypeId + | typeof ServerLogConnectorTypeId + | typeof IndexConnectorTypeId + | typeof TeamsConnectorTypeId + | typeof ServiceNowConnectorTypeId + | typeof JiraConnectorTypeId + | typeof WebhookConnectorTypeId + | typeof EmailConnectorTypeId; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/state/api/alert_actions.ts b/x-pack/plugins/synthetics/public/legacy_uptime/state/api/alert_actions.ts index 8bda332884546..7c04b0ba9ef92 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/state/api/alert_actions.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/state/api/alert_actions.ts @@ -15,7 +15,7 @@ import type { JiraActionParams, WebhookActionParams, EmailActionParams, -} from '@kbn/actions-plugin/server'; +} from '@kbn/stack-connectors-plugin/server/connector_types'; import { NewAlertParams } from './alerts'; import { ACTION_GROUP_DEFINITIONS } from '../../../../common/constants/alerts'; import { MonitorStatusTranslations } from '../../../../common/translations'; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 210b5da642173..a430b41307f26 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -6304,35 +6304,6 @@ "xpack.actions.actionTypeRegistry.register.invalidConnectorFeatureIds": "ID \"{ids}\" de fonctionnalité non valides pour le type de connecteur \"{connectorTypeId}\".", "xpack.actions.actionTypeRegistry.register.missingSupportedFeatureIds": "Au moins une valeur \"supportedFeatureId\" doit être fournie pour le type de connecteur \"{connectorTypeId}\".", "xpack.actions.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationError": "erreur lors de la configuration de l'action webhook des cas : {err}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationErrorNoHostname": "erreur lors de la configuration de l'action webhook des cas : impossible d'analyser l'url {url} : {err}", - "xpack.actions.builtin.casesWebhook.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", - "xpack.actions.builtin.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", - "xpack.actions.builtin.configuration.apiValidateMissingOAuthFieldError": "{field} doit être fourni quand isOAuth = {isOAuth}", - "xpack.actions.builtin.configuration.apiValidateOAuthFieldError": "{field} ne doit pas être fourni quand isOAuth = {isOAuth}", - "xpack.actions.builtin.email.customViewInKibanaMessage": "Ce message a été envoyé par Kibana. [{kibanaFooterLinkText}]({link}).", - "xpack.actions.builtin.jira.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", - "xpack.actions.builtin.pagerduty.invalidTimestampErrorMessage": "erreur lors de l'analyse de l'horodatage \"{timestamp}\"", - "xpack.actions.builtin.pagerduty.missingDedupkeyErrorMessage": "DedupKey est requis lorsque eventAction est \"{eventAction}\"", - "xpack.actions.builtin.pagerduty.pagerdutyConfigurationError": "erreur lors de la configuration de l'action pagerduty : {message}", - "xpack.actions.builtin.pagerduty.postingRetryErrorMessage": "erreur lors de la publication de l'événement pagerduty : statut http {status}, réessayer ultérieurement", - "xpack.actions.builtin.pagerduty.postingUnexpectedErrorMessage": "erreur lors de la publication de l'événement pagerduty : statut inattendu {status}", - "xpack.actions.builtin.pagerduty.timestampParsingFailedErrorMessage": "erreur lors de l'analyse de l'horodatage \"{timestamp}\" : {message}", - "xpack.actions.builtin.slack.errorPostingRetryDateErrorMessage": "erreur lors de la publication d'un message slack, réessayer à cette date/heure : {retryString}", - "xpack.actions.builtin.slack.slackConfigurationError": "erreur lors de la configuration de l'action slack : {message}", - "xpack.actions.builtin.slack.unexpectedHttpResponseErrorMessage": "réponse http inattendue de Slack : {httpStatus} {httpStatusText}", - "xpack.actions.builtin.swimlane.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", - "xpack.actions.builtin.teams.errorPostingRetryDateErrorMessage": "erreur lors de la publication d'un message Microsoft Teams, réessayer à cette date/heure : {retryString}", - "xpack.actions.builtin.teams.teamsConfigurationError": "erreur lors de la configuration de l'action teams : {message}", - "xpack.actions.builtin.webhook.invalidResponseRetryDateErrorMessage": "erreur lors de l'appel de webhook, réessayer à cette date/heure : {retryString}", - "xpack.actions.builtin.webhook.webhookConfigurationError": "erreur lors de la configuration de l'action webhook : {message}", - "xpack.actions.builtin.webhook.webhookConfigurationErrorNoHostname": "erreur lors de la configuration de l'action webhook : impossible d'analyser l'url : {err}", - "xpack.actions.builtin.xmatters.postingRetryErrorMessage": "Erreur lors du déclenchement du flux xMatters : statut http {status}, réessayer plus tard", - "xpack.actions.builtin.xmatters.unexpectedStatusErrorMessage": "Erreur de déclenchement du flux xMatters : statut inattendu {status}", - "xpack.actions.builtin.xmatters.xmattersConfigurationError": "Erreur lors de la configuration de l'action xMatters : {message}", - "xpack.actions.builtin.xmatters.xmattersConfigurationErrorNoHostname": "Erreur lors de la configuration de l'action xMatters : impossible d'analyser l'url : {err}", - "xpack.actions.builtin.xmatters.xmattersHostnameNotAllowed": "{message}", - "xpack.actions.builtin.xmatters.xmattersInvalidUrlError": "secretsUrl non valide : {err}", "xpack.actions.disabledActionTypeError": "le type d'action \"{actionType}\" n'est pas activé dans la configuration Kibana xpack.actions.enabledActionTypes", "xpack.actions.savedObjects.onImportText": "{connectorsWithSecretsLength} {connectorsWithSecretsLength, plural, one {Le connecteur contient} other {Les connecteurs contiennent}} des informations sensibles qui requièrent des mises à jour.", "xpack.actions.serverSideErrors.expirerdLicenseErrorMessage": "Le type d'action {actionTypeId} est désactivé, car votre licence {licenseType} a expiré.", @@ -6347,60 +6318,89 @@ "xpack.actions.availableConnectorFeatures.cases": "Cas", "xpack.actions.availableConnectorFeatures.securitySolution": "Solution de sécurité", "xpack.actions.availableConnectorFeatures.uptime": "Uptime", - "xpack.actions.builtin.case.swimlaneTitle": "Swimlane", - "xpack.actions.builtin.cases.casesWebhookTitle": "Webhook - Gestion des cas", - "xpack.actions.builtin.cases.jiraTitle": "Jira", - "xpack.actions.builtin.cases.resilientTitle": "IBM Resilient", - "xpack.actions.builtin.casesWebhook.invalidUsernamePassword": "l'utilisateur et le mot de passe doivent être spécifiés", - "xpack.actions.builtin.configuration.apiBasicAuthCredentialsError": "le nom d'utilisateur et le mot de passe doivent être tous deux spécifiés", - "xpack.actions.builtin.configuration.apiCredentialsError": "Les informations d'identification auth ou OAuth de base doivent être spécifiées", - "xpack.actions.builtin.configuration.apiOAuthCredentialsError": "clientSecret et privateKey doivent tous deux être spécifiés", - "xpack.actions.builtin.email.errorSendingErrorMessage": "erreur lors de l'envoi de l'e-mail", - "xpack.actions.builtin.email.kibanaFooterLinkText": "Accéder à Kibana", - "xpack.actions.builtin.email.sentByKibanaMessage": "Ce message a été envoyé par Kibana.", - "xpack.actions.builtin.emailTitle": "E-mail", - "xpack.actions.builtin.esIndex.errorIndexingErrorMessage": "erreur lors de l'indexation des documents", - "xpack.actions.builtin.esIndexTitle": "Index", - "xpack.actions.builtin.pagerduty.postingErrorMessage": "erreur lors de la publication de l'événement pagerduty", - "xpack.actions.builtin.pagerdutyTitle": "PagerDuty", - "xpack.actions.builtin.serverLog.errorLoggingErrorMessage": "erreur lors du logging du message", - "xpack.actions.builtin.serverLogTitle": "Log de serveur", - "xpack.actions.builtin.serviceNowITOMTitle": "ServiceNow ITOM", - "xpack.actions.builtin.serviceNowITSMTitle": "ServiceNow ITSM", - "xpack.actions.builtin.serviceNowSIRTitle": "ServiceNow SecOps", - "xpack.actions.builtin.serviceNowTitle": "ServiceNow", - "xpack.actions.builtin.slack.errorPostingErrorMessage": "erreur lors de la publication du message slack", - "xpack.actions.builtin.slack.errorPostingRetryLaterErrorMessage": "erreur lors de la publication d'un message slack, réessayer ultérieurement", - "xpack.actions.builtin.slack.slackConfigurationErrorNoHostname": "erreur lors de la configuration de l'action slack : impossible d'analyser le nom de l'hôte depuis webhookUrl", - "xpack.actions.builtin.slack.unexpectedNullResponseErrorMessage": "réponse nulle inattendue de Slack", - "xpack.actions.builtin.slackTitle": "Slack", - "xpack.actions.builtin.swimlaneTitle": "Swimlane", - "xpack.actions.builtin.teams.errorPostingRetryLaterErrorMessage": "erreur lors de la publication d'un message Microsoft Teams, réessayer ultérieurement", - "xpack.actions.builtin.teams.invalidResponseErrorMessage": "erreur lors de la publication sur Microsoft Teams, réponse non valide", - "xpack.actions.builtin.teams.teamsConfigurationErrorNoHostname": "erreur lors de la configuration de l'action teams : impossible d'analyser le nom de l'hôte depuis webhookUrl", - "xpack.actions.builtin.teams.unreachableErrorMessage": "erreur lors de la publication sur Microsoft Teams, erreur inattendue", - "xpack.actions.builtin.teamsTitle": "Microsoft Teams", - "xpack.actions.builtin.webhook.invalidResponseErrorMessage": "erreur lors de l'appel de webhook, réponse non valide", - "xpack.actions.builtin.webhook.invalidResponseRetryLaterErrorMessage": "erreur lors de l'appel de webhook, réessayer ultérieurement", - "xpack.actions.builtin.webhook.invalidUsernamePassword": "l'utilisateur et le mot de passe doivent être spécifiés", - "xpack.actions.builtin.webhook.requestFailedErrorMessage": "erreur lors de l'appel de webhook, requête échouée", - "xpack.actions.builtin.webhook.unreachableErrorMessage": "erreur lors de l'appel de webhook, erreur inattendue", - "xpack.actions.builtin.webhookTitle": "Webhook", - "xpack.actions.builtin.xmatters.invalidUsernamePassword": "L'utilisateur et le mot de passe doivent être spécifiés.", - "xpack.actions.builtin.xmatters.missingConfigUrl": "Fournir une configUrl valide", - "xpack.actions.builtin.xmatters.missingPassword": "Fournir un mot de passe valide", - "xpack.actions.builtin.xmatters.missingSecretsUrl": "Fournir une secretsUrl valide avec la clé d'API", - "xpack.actions.builtin.xmatters.missingUser": "Fournir un nom d'utilisateur valide", - "xpack.actions.builtin.xmatters.noSecretsProvided": "Fournir le lien secretsUrl ou le nom d'utilisateur/le mot de passe pour vous authentifier", - "xpack.actions.builtin.xmatters.noUserPassWhenSecretsUrl": "Impossible d'utiliser le nom d'utilisateur/le mot de passe pour l'authentification de l'URL. Fournir une secretsUrl valide ou utiliser l'authentification de base.", - "xpack.actions.builtin.xmatters.postingErrorMessage": "Erreur de déclenchement du workflow xMatters", - "xpack.actions.builtin.xmatters.shouldNotHaveConfigUrl": "configUrl ne doit pas être fournie lorsque usesBasic est faux", - "xpack.actions.builtin.xmatters.shouldNotHaveSecretsUrl": "secretsUrl ne doit pas être fournie lorsque usesBasic est vrai", - "xpack.actions.builtin.xmatters.shouldNotHaveUsernamePassword": "Le nom d'utilisateur et le mot de passe ne doivent pas être fournis lorsque usesBasic est faux", - "xpack.actions.builtin.xmattersTitle": "xMatters", "xpack.actions.featureRegistry.actionsFeatureName": "Actions et connecteurs", "xpack.actions.savedObjects.goToConnectorsButtonText": "Accéder aux connecteurs", "xpack.actions.serverSideErrors.unavailableLicenseInformationErrorMessage": "Les actions sont indisponibles - les informations de licence ne sont pas disponibles actuellement.", + "xpack.stackConnectors.casesWebhook.configurationError": "erreur lors de la configuration de l'action webhook des cas : {err}", + "xpack.stackConnectors.casesWebhook.configurationErrorNoHostname": "erreur lors de la configuration de l'action webhook des cas : impossible d'analyser l'url {url} : {err}", + "xpack.stackConnectors.casesWebhook.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", + "xpack.stackConnectors.resilient.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", + "xpack.stackConnectors.serviceNow.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", + "xpack.stackConnectors.serviceNow.configuration.apiValidateMissingOAuthFieldError": "{field} doit être fourni quand isOAuth = {isOAuth}", + "xpack.stackConnectors.serviceNow.configuration.apiValidateOAuthFieldError": "{field} ne doit pas être fourni quand isOAuth = {isOAuth}", + "xpack.stackConnectors.email.customViewInKibanaMessage": "Ce message a été envoyé par Kibana. [{kibanaFooterLinkText}]({link}).", + "xpack.stackConnectors.jira.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", + "xpack.stackConnectors.pagerduty.invalidTimestampErrorMessage": "erreur lors de l'analyse de l'horodatage \"{timestamp}\"", + "xpack.stackConnectors.pagerduty.missingDedupkeyErrorMessage": "DedupKey est requis lorsque eventAction est \"{eventAction}\"", + "xpack.stackConnectors.pagerduty.configurationError": "erreur lors de la configuration de l'action pagerduty : {message}", + "xpack.stackConnectors.pagerduty.postingRetryErrorMessage": "erreur lors de la publication de l'événement pagerduty : statut http {status}, réessayer ultérieurement", + "xpack.stackConnectors.pagerduty.postingUnexpectedErrorMessage": "erreur lors de la publication de l'événement pagerduty : statut inattendu {status}", + "xpack.stackConnectors.pagerduty.timestampParsingFailedErrorMessage": "erreur lors de l'analyse de l'horodatage \"{timestamp}\" : {message}", + "xpack.stackConnectors.slack.errorPostingRetryDateErrorMessage": "erreur lors de la publication d'un message slack, réessayer à cette date/heure : {retryString}", + "xpack.stackConnectors.slack.configurationError": "erreur lors de la configuration de l'action slack : {message}", + "xpack.stackConnectors.slack.unexpectedHttpResponseErrorMessage": "réponse http inattendue de Slack : {httpStatus} {httpStatusText}", + "xpack.stackConnectors.swimlane.configuration.apiAllowedHostsError": "erreur lors de la configuration de l'action du connecteur : {message}", + "xpack.stackConnectors.teams.errorPostingRetryDateErrorMessage": "erreur lors de la publication d'un message Microsoft Teams, réessayer à cette date/heure : {retryString}", + "xpack.stackConnectors.teams.configurationError": "erreur lors de la configuration de l'action teams : {message}", + "xpack.stackConnectors.webhook.invalidResponseRetryDateErrorMessage": "erreur lors de l'appel de webhook, réessayer à cette date/heure : {retryString}", + "xpack.stackConnectors.webhook.configurationError": "erreur lors de la configuration de l'action webhook : {message}", + "xpack.stackConnectors.webhook.configurationErrorNoHostname": "erreur lors de la configuration de l'action webhook : impossible d'analyser l'url : {err}", + "xpack.stackConnectors.xmatters.postingRetryErrorMessage": "Erreur lors du déclenchement du flux xMatters : statut http {status}, réessayer plus tard", + "xpack.stackConnectors.xmatters.unexpectedStatusErrorMessage": "Erreur de déclenchement du flux xMatters : statut inattendu {status}", + "xpack.stackConnectors.xmatters.configurationError": "Erreur lors de la configuration de l'action xMatters : {message}", + "xpack.stackConnectors.xmatters.configurationErrorNoHostname": "Erreur lors de la configuration de l'action xMatters : impossible d'analyser l'url : {err}", + "xpack.stackConnectors.xmatters.hostnameNotAllowed": "{message}", + "xpack.stackConnectors.xmatters.invalidUrlError": "secretsUrl non valide : {err}", + "xpack.stackConnectors.casesWebhook.title": "Webhook - Gestion des cas", + "xpack.stackConnectors.jira.title": "Jira", + "xpack.stackConnectors.resilient.title": "IBM Resilient", + "xpack.stackConnectors.casesWebhook.invalidUsernamePassword": "l'utilisateur et le mot de passe doivent être spécifiés", + "xpack.stackConnectors.serviceNow.configuration.apiBasicAuthCredentialsError": "le nom d'utilisateur et le mot de passe doivent être tous deux spécifiés", + "xpack.stackConnectors.serviceNow.configuration.apiCredentialsError": "Les informations d'identification auth ou OAuth de base doivent être spécifiées", + "xpack.stackConnectors.serviceNow.configuration.apiOAuthCredentialsError": "clientSecret et privateKey doivent tous deux être spécifiés", + "xpack.stackConnectors.email.errorSendingErrorMessage": "erreur lors de l'envoi de l'e-mail", + "xpack.stackConnectors.email.kibanaFooterLinkText": "Accéder à Kibana", + "xpack.stackConnectors.email.sentByKibanaMessage": "Ce message a été envoyé par Kibana.", + "xpack.stackConnectors.email.title": "E-mail", + "xpack.stackConnectors.esIndex.errorIndexingErrorMessage": "erreur lors de l'indexation des documents", + "xpack.stackConnectors.esIndex.title": "Index", + "xpack.stackConnectors.pagerduty.postingErrorMessage": "erreur lors de la publication de l'événement pagerduty", + "xpack.stackConnectors.pagerduty.title": "PagerDuty", + "xpack.stackConnectors.serverLog.errorLoggingErrorMessage": "erreur lors du logging du message", + "xpack.stackConnectors.serverLog.title": "Log de serveur", + "xpack.stackConnectors.serviceNowITOM.title": "ServiceNow ITOM", + "xpack.stackConnectors.serviceNowITSM.title": "ServiceNow ITSM", + "xpack.stackConnectors.serviceNowSIR.title": "ServiceNow SecOps", + "xpack.stackConnectors.serviceNow.title": "ServiceNow", + "xpack.stackConnectors.slack.errorPostingErrorMessage": "erreur lors de la publication du message slack", + "xpack.stackConnectors.slack.errorPostingRetryLaterErrorMessage": "erreur lors de la publication d'un message slack, réessayer ultérieurement", + "xpack.stackConnectors.slack.configurationErrorNoHostname": "erreur lors de la configuration de l'action slack : impossible d'analyser le nom de l'hôte depuis webhookUrl", + "xpack.stackConnectors.slack.unexpectedNullResponseErrorMessage": "réponse nulle inattendue de Slack", + "xpack.stackConnectors.slack.title": "Slack", + "xpack.stackConnectors.swimlane.title": "Swimlane", + "xpack.stackConnectors.teams.errorPostingRetryLaterErrorMessage": "erreur lors de la publication d'un message Microsoft Teams, réessayer ultérieurement", + "xpack.stackConnectors.teams.invalidResponseErrorMessage": "erreur lors de la publication sur Microsoft Teams, réponse non valide", + "xpack.stackConnectors.teams.configurationErrorNoHostname": "erreur lors de la configuration de l'action teams : impossible d'analyser le nom de l'hôte depuis webhookUrl", + "xpack.stackConnectors.teams.unreachableErrorMessage": "erreur lors de la publication sur Microsoft Teams, erreur inattendue", + "xpack.stackConnectors.teams.title": "Microsoft Teams", + "xpack.stackConnectors.webhook.invalidResponseErrorMessage": "erreur lors de l'appel de webhook, réponse non valide", + "xpack.stackConnectors.webhook.invalidResponseRetryLaterErrorMessage": "erreur lors de l'appel de webhook, réessayer ultérieurement", + "xpack.stackConnectors.webhook.invalidUsernamePassword": "l'utilisateur et le mot de passe doivent être spécifiés", + "xpack.stackConnectors.webhook.requestFailedErrorMessage": "erreur lors de l'appel de webhook, requête échouée", + "xpack.stackConnectors.webhook.unreachableErrorMessage": "erreur lors de l'appel de webhook, erreur inattendue", + "xpack.stackConnectors.webhook.title": "Webhook", + "xpack.stackConnectors.xmatters.invalidUsernamePassword": "L'utilisateur et le mot de passe doivent être spécifiés.", + "xpack.stackConnectors.xmatters.missingConfigUrl": "Fournir une configUrl valide", + "xpack.stackConnectors.xmatters.missingPassword": "Fournir un mot de passe valide", + "xpack.stackConnectors.xmatters.missingSecretsUrl": "Fournir une secretsUrl valide avec la clé d'API", + "xpack.stackConnectors.xmatters.missingUser": "Fournir un nom d'utilisateur valide", + "xpack.stackConnectors.xmatters.noSecretsProvided": "Fournir le lien secretsUrl ou le nom d'utilisateur/le mot de passe pour vous authentifier", + "xpack.stackConnectors.xmatters.noUserPassWhenSecretsUrl": "Impossible d'utiliser le nom d'utilisateur/le mot de passe pour l'authentification de l'URL. Fournir une secretsUrl valide ou utiliser l'authentification de base.", + "xpack.stackConnectors.xmatters.postingErrorMessage": "Erreur de déclenchement du workflow xMatters", + "xpack.stackConnectors.xmatters.shouldNotHaveConfigUrl": "configUrl ne doit pas être fournie lorsque usesBasic est faux", + "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "secretsUrl ne doit pas être fournie lorsque usesBasic est vrai", + "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "Le nom d'utilisateur et le mot de passe ne doivent pas être fournis lorsque usesBasic est faux", + "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "{fieldCandidatesCount, plural, one {# candidat de champ identifié} other {# candidats de champs identifiés}}.", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "{fieldValuePairsCount, plural, one {# paire significative champ/valeur identifiée} other {# paires significatives champ/valeur identifiées}}.", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "Erreur lors du chargement des données dans l'index {index}. {message}. La requête a peut-être expiré. Essayez d'utiliser un échantillon d'une taille inférieure ou de réduire la plage temporelle.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 278b153606d81..757dd00a6e1a8 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -6300,35 +6300,6 @@ "xpack.actions.actionTypeRegistry.register.invalidConnectorFeatureIds": "コネクタータイプ\"{connectorTypeId}\"の機能ID \"{ids}\"が無効です。", "xpack.actions.actionTypeRegistry.register.missingSupportedFeatureIds": "コネクタータイプ\"{connectorTypeId}\"に対して、1つ以上のsupportedFeatureId値を入力する必要があります。", "xpack.actions.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationError": "ケースWebフックアクションの構成エラー:{err}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationErrorNoHostname": "ケースWebフックアクションの構成エラー:{url}を解析できません:{err}", - "xpack.actions.builtin.casesWebhook.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", - "xpack.actions.builtin.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", - "xpack.actions.builtin.configuration.apiValidateMissingOAuthFieldError": "isOAuth = {isOAuth}のときには、{field}を指定する必要があります", - "xpack.actions.builtin.configuration.apiValidateOAuthFieldError": "isOAuth = {isOAuth}のときには、{field}を指定しないでください", - "xpack.actions.builtin.email.customViewInKibanaMessage": "このメッセージは Kibana によって送信されました。[{kibanaFooterLinkText}]({link})。", - "xpack.actions.builtin.jira.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", - "xpack.actions.builtin.pagerduty.invalidTimestampErrorMessage": "タイムスタンプ\"{timestamp}\"の解析エラー", - "xpack.actions.builtin.pagerduty.missingDedupkeyErrorMessage": "eventActionが「{eventAction}」のときにはDedupKeyが必要です", - "xpack.actions.builtin.pagerduty.pagerdutyConfigurationError": "pagerduty アクションの設定エラー:{message}", - "xpack.actions.builtin.pagerduty.postingRetryErrorMessage": "pagerduty イベントの投稿エラー:http status {status}、後ほど再試行", - "xpack.actions.builtin.pagerduty.postingUnexpectedErrorMessage": "pagerduty イベントの投稿エラー:予期せぬステータス {status}", - "xpack.actions.builtin.pagerduty.timestampParsingFailedErrorMessage": "タイムスタンプの解析エラー \"{timestamp}\":{message}", - "xpack.actions.builtin.slack.errorPostingRetryDateErrorMessage": "slack メッセージの投稿エラー、 {retryString} で再試行", - "xpack.actions.builtin.slack.slackConfigurationError": "slack アクションの設定エラー:{message}", - "xpack.actions.builtin.slack.unexpectedHttpResponseErrorMessage": "slack からの予期せぬ http 応答:{httpStatus} {httpStatusText}", - "xpack.actions.builtin.swimlane.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", - "xpack.actions.builtin.teams.errorPostingRetryDateErrorMessage": "Microsoft Teams メッセージの投稿エラーです。{retryString} に再試行します", - "xpack.actions.builtin.teams.teamsConfigurationError": "Teams アクションの設定エラー:{message}", - "xpack.actions.builtin.webhook.invalidResponseRetryDateErrorMessage": "Webフックの呼び出しエラー、{retryString} に再試行", - "xpack.actions.builtin.webhook.webhookConfigurationError": "Web フックアクションの構成中にエラーが発生:{message}", - "xpack.actions.builtin.webhook.webhookConfigurationErrorNoHostname": "Webフックアクションの構成エラーです。URLを解析できません。{err}", - "xpack.actions.builtin.xmatters.postingRetryErrorMessage": "xMattersフローのトリガーエラー:HTTPステータス{status}。しばらくたってから再試行してください", - "xpack.actions.builtin.xmatters.unexpectedStatusErrorMessage": "xMattersフローのトリガーエラー:予期しないステータス{status}", - "xpack.actions.builtin.xmatters.xmattersConfigurationError": "xMattersアクションの設定エラー:{message}", - "xpack.actions.builtin.xmatters.xmattersConfigurationErrorNoHostname": "xMattersアクションの構成エラー:URLを解析できません:{err}", - "xpack.actions.builtin.xmatters.xmattersHostnameNotAllowed": "{message}", - "xpack.actions.builtin.xmatters.xmattersInvalidUrlError": "無効なsecretsUrl:{err}", "xpack.actions.disabledActionTypeError": "アクションタイプ \"{actionType}\" は、Kibana 構成 xpack.actions.enabledActionTypes では有効化されません", "xpack.actions.savedObjects.onImportText": "{connectorsWithSecretsLength} {connectorsWithSecretsLength, plural, other {コネクターには}}更新が必要な機密情報があります。", "xpack.actions.serverSideErrors.expirerdLicenseErrorMessage": "{licenseType} ライセンスの期限が切れたのでアクションタイプ {actionTypeId} は無効です。", @@ -6343,60 +6314,89 @@ "xpack.actions.availableConnectorFeatures.cases": "ケース", "xpack.actions.availableConnectorFeatures.securitySolution": "セキュリティソリューション", "xpack.actions.availableConnectorFeatures.uptime": "アップタイム", - "xpack.actions.builtin.case.swimlaneTitle": "スイムレーン", - "xpack.actions.builtin.cases.casesWebhookTitle": "Webフック - ケース管理", - "xpack.actions.builtin.cases.jiraTitle": "Jira", - "xpack.actions.builtin.cases.resilientTitle": "IBM Resilient", - "xpack.actions.builtin.casesWebhook.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります", - "xpack.actions.builtin.configuration.apiBasicAuthCredentialsError": "ユーザーとパスワードの両方を指定する必要があります", - "xpack.actions.builtin.configuration.apiCredentialsError": "基本認証資格情報またはOAuth資格情報を指定する必要があります。", - "xpack.actions.builtin.configuration.apiOAuthCredentialsError": "clientSecretおよびprivateKeyの両方を指定する必要があります", - "xpack.actions.builtin.email.errorSendingErrorMessage": "エラー送信メールアドレス", - "xpack.actions.builtin.email.kibanaFooterLinkText": "Kibana を開く", - "xpack.actions.builtin.email.sentByKibanaMessage": "このメッセージは Kibana によって送信されました。", - "xpack.actions.builtin.emailTitle": "メール", - "xpack.actions.builtin.esIndex.errorIndexingErrorMessage": "エラーインデックス作成ドキュメント", - "xpack.actions.builtin.esIndexTitle": "インデックス", - "xpack.actions.builtin.pagerduty.postingErrorMessage": "pagerduty イベントの投稿エラー", - "xpack.actions.builtin.pagerdutyTitle": "PagerDuty", - "xpack.actions.builtin.serverLog.errorLoggingErrorMessage": "メッセージのロギングエラー", - "xpack.actions.builtin.serverLogTitle": "サーバーログ", - "xpack.actions.builtin.serviceNowITOMTitle": "ServiceNow ITOM", - "xpack.actions.builtin.serviceNowITSMTitle": "ServiceNow ITSM", - "xpack.actions.builtin.serviceNowSIRTitle": "ServiceNow SecOps", - "xpack.actions.builtin.serviceNowTitle": "ServiceNow", - "xpack.actions.builtin.slack.errorPostingErrorMessage": "slack メッセージの投稿エラー", - "xpack.actions.builtin.slack.errorPostingRetryLaterErrorMessage": "slack メッセージの投稿エラー、後ほど再試行", - "xpack.actions.builtin.slack.slackConfigurationErrorNoHostname": "slack アクションの構成エラー:Web フック URL からホスト名をパースできません", - "xpack.actions.builtin.slack.unexpectedNullResponseErrorMessage": "Slack から予期せぬ null 応答", - "xpack.actions.builtin.slackTitle": "Slack", - "xpack.actions.builtin.swimlaneTitle": "スイムレーン", - "xpack.actions.builtin.teams.errorPostingRetryLaterErrorMessage": "Microsoft Teams メッセージの投稿エラーです。しばらくたってから再試行します", - "xpack.actions.builtin.teams.invalidResponseErrorMessage": "Microsoft Teams への投稿エラーです。無効な応答です", - "xpack.actions.builtin.teams.teamsConfigurationErrorNoHostname": "Teams アクションの構成エラー:Web フック URL からホスト名をパースできません", - "xpack.actions.builtin.teams.unreachableErrorMessage": "Microsoft Teams への投稿エラーです。予期しないエラーです", - "xpack.actions.builtin.teamsTitle": "Microsoft Teams", - "xpack.actions.builtin.webhook.invalidResponseErrorMessage": "Webフックの呼び出しエラー、無効な応答", - "xpack.actions.builtin.webhook.invalidResponseRetryLaterErrorMessage": "Webフックの呼び出しエラー、後ほど再試行", - "xpack.actions.builtin.webhook.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります", - "xpack.actions.builtin.webhook.requestFailedErrorMessage": "Webフックの呼び出しエラー。要求が失敗しました", - "xpack.actions.builtin.webhook.unreachableErrorMessage": "webhookの呼び出しエラー、予期せぬエラー", - "xpack.actions.builtin.webhookTitle": "Web フック", - "xpack.actions.builtin.xmatters.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります。", - "xpack.actions.builtin.xmatters.missingConfigUrl": "有効なconfigUrlを指定してください", - "xpack.actions.builtin.xmatters.missingPassword": "有効なパスワードを指定してください", - "xpack.actions.builtin.xmatters.missingSecretsUrl": "有効なsecretsUrlとAPIキーを指定してください", - "xpack.actions.builtin.xmatters.missingUser": "有効なユーザー名を指定してください", - "xpack.actions.builtin.xmatters.noSecretsProvided": "認証するには、secretsUrlリンクまたはユーザー/パスワードを指定してください", - "xpack.actions.builtin.xmatters.noUserPassWhenSecretsUrl": "URL認証ではユーザー/パスワードを使用できません。有効なsecretsUrlを指定するか、基本認証を使用してください。", - "xpack.actions.builtin.xmatters.postingErrorMessage": "xMattersワークフローのトリガーエラー", - "xpack.actions.builtin.xmatters.shouldNotHaveConfigUrl": "usesBasicがfalseのときには、configUrlを指定しないでください", - "xpack.actions.builtin.xmatters.shouldNotHaveSecretsUrl": "usesBasicがtrueのときには、secretsUrlを指定しないでください", - "xpack.actions.builtin.xmatters.shouldNotHaveUsernamePassword": "usesBasicがfalseのときには、ユーザー名とパスワードを指定しないでください", - "xpack.actions.builtin.xmattersTitle": "xMatters", "xpack.actions.featureRegistry.actionsFeatureName": "アクションとコネクター", "xpack.actions.savedObjects.goToConnectorsButtonText": "コネクターに移動", "xpack.actions.serverSideErrors.unavailableLicenseInformationErrorMessage": "グラフを利用できません。現在ライセンス情報が利用できません。", + "xpack.stackConnectors.casesWebhook.configurationError": "ケースWebフックアクションの構成エラー:{err}", + "xpack.stackConnectors.casesWebhook.configurationErrorNoHostname": "ケースWebフックアクションの構成エラー:{url}を解析できません:{err}", + "xpack.stackConnectors.casesWebhook.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", + "xpack.stackConnectors.resilient.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", + "xpack.stackConnectors.serviceNow.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", + "xpack.stackConnectors.serviceNow.configuration.apiValidateMissingOAuthFieldError": "isOAuth = {isOAuth}のときには、{field}を指定する必要があります", + "xpack.stackConnectors.serviceNow.configuration.apiValidateOAuthFieldError": "isOAuth = {isOAuth}のときには、{field}を指定しないでください", + "xpack.stackConnectors.email.customViewInKibanaMessage": "このメッセージは Kibana によって送信されました。[{kibanaFooterLinkText}]({link})。", + "xpack.stackConnectors.jira.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", + "xpack.stackConnectors.pagerduty.invalidTimestampErrorMessage": "タイムスタンプ\"{timestamp}\"の解析エラー", + "xpack.stackConnectors.pagerduty.missingDedupkeyErrorMessage": "eventActionが「{eventAction}」のときにはDedupKeyが必要です", + "xpack.stackConnectors.pagerduty.configurationError": "pagerduty アクションの設定エラー:{message}", + "xpack.stackConnectors.pagerduty.postingRetryErrorMessage": "pagerduty イベントの投稿エラー:http status {status}、後ほど再試行", + "xpack.stackConnectors.pagerduty.postingUnexpectedErrorMessage": "pagerduty イベントの投稿エラー:予期せぬステータス {status}", + "xpack.stackConnectors.pagerduty.timestampParsingFailedErrorMessage": "タイムスタンプの解析エラー \"{timestamp}\":{message}", + "xpack.stackConnectors.slack.errorPostingRetryDateErrorMessage": "slack メッセージの投稿エラー、 {retryString} で再試行", + "xpack.stackConnectors.slack.configurationError": "slack アクションの設定エラー:{message}", + "xpack.stackConnectors.slack.unexpectedHttpResponseErrorMessage": "slack からの予期せぬ http 応答:{httpStatus} {httpStatusText}", + "xpack.stackConnectors.swimlane.configuration.apiAllowedHostsError": "コネクターアクションの構成エラー:{message}", + "xpack.stackConnectors.teams.errorPostingRetryDateErrorMessage": "Microsoft Teams メッセージの投稿エラーです。{retryString} に再試行します", + "xpack.stackConnectors.teams.configurationError": "Teams アクションの設定エラー:{message}", + "xpack.stackConnectors.webhook.invalidResponseRetryDateErrorMessage": "Webフックの呼び出しエラー、{retryString} に再試行", + "xpack.stackConnectors.webhook.configurationError": "Web フックアクションの構成中にエラーが発生:{message}", + "xpack.stackConnectors.webhook.configurationErrorNoHostname": "Webフックアクションの構成エラーです。URLを解析できません。{err}", + "xpack.stackConnectors.xmatters.postingRetryErrorMessage": "xMattersフローのトリガーエラー:HTTPステータス{status}。しばらくたってから再試行してください", + "xpack.stackConnectors.xmatters.unexpectedStatusErrorMessage": "xMattersフローのトリガーエラー:予期しないステータス{status}", + "xpack.stackConnectors.xmatters.configurationError": "xMattersアクションの設定エラー:{message}", + "xpack.stackConnectors.xmatters.configurationErrorNoHostname": "xMattersアクションの構成エラー:URLを解析できません:{err}", + "xpack.stackConnectors.xmatters.hostnameNotAllowed": "{message}", + "xpack.stackConnectors.xmatters.invalidUrlError": "無効なsecretsUrl:{err}", + "xpack.stackConnectors.casesWebhook.title": "Webフック - ケース管理", + "xpack.stackConnectors.jira.title": "Jira", + "xpack.stackConnectors.resilient.title": "IBM Resilient", + "xpack.stackConnectors.casesWebhook.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります", + "xpack.stackConnectors.serviceNow.configuration.apiBasicAuthCredentialsError": "ユーザーとパスワードの両方を指定する必要があります", + "xpack.stackConnectors.serviceNow.configuration.apiCredentialsError": "基本認証資格情報またはOAuth資格情報を指定する必要があります。", + "xpack.stackConnectors.serviceNow.configuration.apiOAuthCredentialsError": "clientSecretおよびprivateKeyの両方を指定する必要があります", + "xpack.stackConnectors.email.errorSendingErrorMessage": "エラー送信メールアドレス", + "xpack.stackConnectors.email.kibanaFooterLinkText": "Kibana を開く", + "xpack.stackConnectors.email.sentByKibanaMessage": "このメッセージは Kibana によって送信されました。", + "xpack.stackConnectors.email.title": "メール", + "xpack.stackConnectors.esIndex.errorIndexingErrorMessage": "エラーインデックス作成ドキュメント", + "xpack.stackConnectors.esIndex.title": "インデックス", + "xpack.stackConnectors.pagerduty.postingErrorMessage": "pagerduty イベントの投稿エラー", + "xpack.stackConnectors.pagerduty.title": "PagerDuty", + "xpack.stackConnectors.serverLog.errorLoggingErrorMessage": "メッセージのロギングエラー", + "xpack.stackConnectors.serverLog.title": "サーバーログ", + "xpack.stackConnectors.serviceNowITOM.title": "ServiceNow ITOM", + "xpack.stackConnectors.serviceNowITSM.title": "ServiceNow ITSM", + "xpack.stackConnectors.serviceNowSIR.title": "ServiceNow SecOps", + "xpack.stackConnectors.serviceNow.title": "ServiceNow", + "xpack.stackConnectors.slack.errorPostingErrorMessage": "slack メッセージの投稿エラー", + "xpack.stackConnectors.slack.errorPostingRetryLaterErrorMessage": "slack メッセージの投稿エラー、後ほど再試行", + "xpack.stackConnectors.slack.configurationErrorNoHostname": "slack アクションの構成エラー:Web フック URL からホスト名をパースできません", + "xpack.stackConnectors.slack.unexpectedNullResponseErrorMessage": "Slack から予期せぬ null 応答", + "xpack.stackConnectors.slack.title": "Slack", + "xpack.stackConnectors.swimlane.title": "スイムレーン", + "xpack.stackConnectors.teams.errorPostingRetryLaterErrorMessage": "Microsoft Teams メッセージの投稿エラーです。しばらくたってから再試行します", + "xpack.stackConnectors.teams.invalidResponseErrorMessage": "Microsoft Teams への投稿エラーです。無効な応答です", + "xpack.stackConnectors.teams.configurationErrorNoHostname": "Teams アクションの構成エラー:Web フック URL からホスト名をパースできません", + "xpack.stackConnectors.teams.unreachableErrorMessage": "Microsoft Teams への投稿エラーです。予期しないエラーです", + "xpack.stackConnectors.teams.title": "Microsoft Teams", + "xpack.stackConnectors.webhook.invalidResponseErrorMessage": "Webフックの呼び出しエラー、無効な応答", + "xpack.stackConnectors.webhook.invalidResponseRetryLaterErrorMessage": "Webフックの呼び出しエラー、後ほど再試行", + "xpack.stackConnectors.webhook.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります", + "xpack.stackConnectors.webhook.requestFailedErrorMessage": "Webフックの呼び出しエラー。要求が失敗しました", + "xpack.stackConnectors.webhook.unreachableErrorMessage": "webhookの呼び出しエラー、予期せぬエラー", + "xpack.stackConnectors.webhook.title": "Web フック", + "xpack.stackConnectors.xmatters.invalidUsernamePassword": "ユーザーとパスワードの両方を指定する必要があります。", + "xpack.stackConnectors.xmatters.missingConfigUrl": "有効なconfigUrlを指定してください", + "xpack.stackConnectors.xmatters.missingPassword": "有効なパスワードを指定してください", + "xpack.stackConnectors.xmatters.missingSecretsUrl": "有効なsecretsUrlとAPIキーを指定してください", + "xpack.stackConnectors.xmatters.missingUser": "有効なユーザー名を指定してください", + "xpack.stackConnectors.xmatters.noSecretsProvided": "認証するには、secretsUrlリンクまたはユーザー/パスワードを指定してください", + "xpack.stackConnectors.xmatters.noUserPassWhenSecretsUrl": "URL認証ではユーザー/パスワードを使用できません。有効なsecretsUrlを指定するか、基本認証を使用してください。", + "xpack.stackConnectors.xmatters.postingErrorMessage": "xMattersワークフローのトリガーエラー", + "xpack.stackConnectors.xmatters.shouldNotHaveConfigUrl": "usesBasicがfalseのときには、configUrlを指定しないでください", + "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "usesBasicがtrueのときには、secretsUrlを指定しないでください", + "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "usesBasicがfalseのときには、ユーザー名とパスワードを指定しないでください", + "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "{fieldCandidatesCount, plural, other {# 個のフィールド候補}}が特定されました。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "{fieldValuePairsCount, plural, other {# 個の重要なフィールド/値のペア}}が特定されました。", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "インデックス {index} のデータの読み込み中にエラーが発生。{message}。リクエストがタイムアウトした可能性があります。小さなサンプルサイズを使うか、時間範囲を狭めてみてください。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index a3791dbadf478..f48178da735a6 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6307,35 +6307,6 @@ "xpack.actions.actionTypeRegistry.register.invalidConnectorFeatureIds": "连接器类型“{connectorTypeId}”的功能 ID“{ids}”无效。", "xpack.actions.actionTypeRegistry.register.missingSupportedFeatureIds": "必须至少为连接器类型“{connectorTypeId}”提供一个“supportedFeatureId”值。", "xpack.actions.apiAllowedHostsError": "配置连接器操作时出错:{message}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationError": "配置案例 Webhook 操作时出错:{err}", - "xpack.actions.builtin.casesWebhook.casesWebhookConfigurationErrorNoHostname": "配置案例 Webhook 操作时出错:无法解析 {url}:{err}", - "xpack.actions.builtin.casesWebhook.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", - "xpack.actions.builtin.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", - "xpack.actions.builtin.configuration.apiValidateMissingOAuthFieldError": "isOAuth = {isOAuth} 时,必须提供 {field}", - "xpack.actions.builtin.configuration.apiValidateOAuthFieldError": "不得与 isOAuth = {isOAuth} 一起提供 {field}", - "xpack.actions.builtin.email.customViewInKibanaMessage": "此消息由 Kibana 发送。[{kibanaFooterLinkText}]({link})。", - "xpack.actions.builtin.jira.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", - "xpack.actions.builtin.pagerduty.invalidTimestampErrorMessage": "解析时间戳“{timestamp}”时出错", - "xpack.actions.builtin.pagerduty.missingDedupkeyErrorMessage": "当 eventAction 是“{eventAction}”时需要 DedupKey", - "xpack.actions.builtin.pagerduty.pagerdutyConfigurationError": "配置 pagerduty 操作时出错:{message}", - "xpack.actions.builtin.pagerduty.postingRetryErrorMessage": "发布 pagerduty 事件时出错:http 状态 {status},请稍后重试", - "xpack.actions.builtin.pagerduty.postingUnexpectedErrorMessage": "发布 pagerduty 事件时出错:非预期状态 {status}", - "xpack.actions.builtin.pagerduty.timestampParsingFailedErrorMessage": "解析时间戳“{timestamp}”出错:{message}", - "xpack.actions.builtin.slack.errorPostingRetryDateErrorMessage": "发布 Slack 消息时出错,在 {retryString} 重试", - "xpack.actions.builtin.slack.slackConfigurationError": "配置 slack 操作时出错:{message}", - "xpack.actions.builtin.slack.unexpectedHttpResponseErrorMessage": "来自 slack 的非预期 http 响应:{httpStatus} {httpStatusText}", - "xpack.actions.builtin.swimlane.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", - "xpack.actions.builtin.teams.errorPostingRetryDateErrorMessage": "发布 Microsoft Teams 消息时出错,请在 {retryString} 重试", - "xpack.actions.builtin.teams.teamsConfigurationError": "配置 Teams 操作时出错:{message}", - "xpack.actions.builtin.webhook.invalidResponseRetryDateErrorMessage": "调用 webhook 时出错,请在 {retryString} 重试", - "xpack.actions.builtin.webhook.webhookConfigurationError": "配置 Webhook 操作时出错:{message}", - "xpack.actions.builtin.webhook.webhookConfigurationErrorNoHostname": "配置 Webhook 操作时出错:无法解析 url:{err}", - "xpack.actions.builtin.xmatters.postingRetryErrorMessage": "触发 xMatters 流时出错:http 状态为 {status},请稍后重试", - "xpack.actions.builtin.xmatters.unexpectedStatusErrorMessage": "触发 xMatters 流时出错:非预期状态 {status}", - "xpack.actions.builtin.xmatters.xmattersConfigurationError": "配置 xMatters 操作时出错:{message}", - "xpack.actions.builtin.xmatters.xmattersConfigurationErrorNoHostname": "配置 xMatters 操作时出错:无法解析 url:{err}", - "xpack.actions.builtin.xmatters.xmattersHostnameNotAllowed": "{message}", - "xpack.actions.builtin.xmatters.xmattersInvalidUrlError": "secretsUrl 无效:{err}", "xpack.actions.disabledActionTypeError": "操作类型“{actionType}”在 Kibana 配置 xpack.actions.enabledActionTypes 中未启用", "xpack.actions.savedObjects.onImportText": "{connectorsWithSecretsLength} 个{connectorsWithSecretsLength, plural, other {连接器具有}}需要更新的敏感信息。", "xpack.actions.serverSideErrors.expirerdLicenseErrorMessage": "操作类型 {actionTypeId} 已禁用,因为您的{licenseType}许可证已过期。", @@ -6350,60 +6321,89 @@ "xpack.actions.availableConnectorFeatures.cases": "案例", "xpack.actions.availableConnectorFeatures.securitySolution": "安全解决方案", "xpack.actions.availableConnectorFeatures.uptime": "运行时间", - "xpack.actions.builtin.case.swimlaneTitle": "泳道", - "xpack.actions.builtin.cases.casesWebhookTitle": "Webhook - 案例管理", - "xpack.actions.builtin.cases.jiraTitle": "Jira", - "xpack.actions.builtin.cases.resilientTitle": "IBM Resilient", - "xpack.actions.builtin.casesWebhook.invalidUsernamePassword": "必须指定用户及密码", - "xpack.actions.builtin.configuration.apiBasicAuthCredentialsError": "必须同时指定用户名和密码", - "xpack.actions.builtin.configuration.apiCredentialsError": "必须指定基本身份验证或 OAuth 凭据", - "xpack.actions.builtin.configuration.apiOAuthCredentialsError": "必须同时指定 clientSecret 和 privateKey", - "xpack.actions.builtin.email.errorSendingErrorMessage": "发送电子邮件时出错", - "xpack.actions.builtin.email.kibanaFooterLinkText": "前往 Kibana", - "xpack.actions.builtin.email.sentByKibanaMessage": "此消息由 Kibana 发送。", - "xpack.actions.builtin.emailTitle": "电子邮件", - "xpack.actions.builtin.esIndex.errorIndexingErrorMessage": "索引文档时出错", - "xpack.actions.builtin.esIndexTitle": "索引", - "xpack.actions.builtin.pagerduty.postingErrorMessage": "发布 pagerduty 事件时出错", - "xpack.actions.builtin.pagerdutyTitle": "PagerDuty", - "xpack.actions.builtin.serverLog.errorLoggingErrorMessage": "记录消息时出错", - "xpack.actions.builtin.serverLogTitle": "服务器日志", - "xpack.actions.builtin.serviceNowITOMTitle": "ServiceNow ITOM", - "xpack.actions.builtin.serviceNowITSMTitle": "ServiceNow ITSM", - "xpack.actions.builtin.serviceNowSIRTitle": "ServiceNow SecOps", - "xpack.actions.builtin.serviceNowTitle": "ServiceNow", - "xpack.actions.builtin.slack.errorPostingErrorMessage": "发布 slack 消息时出错", - "xpack.actions.builtin.slack.errorPostingRetryLaterErrorMessage": "发布 slack 消息时出错,稍后重试", - "xpack.actions.builtin.slack.slackConfigurationErrorNoHostname": "配置 slack 操作时出错:无法解析 webhookUrl 中的主机名", - "xpack.actions.builtin.slack.unexpectedNullResponseErrorMessage": "来自 slack 的异常空响应", - "xpack.actions.builtin.slackTitle": "Slack", - "xpack.actions.builtin.swimlaneTitle": "泳道", - "xpack.actions.builtin.teams.errorPostingRetryLaterErrorMessage": "发布 Microsoft Teams 消息时出错,请稍后重试", - "xpack.actions.builtin.teams.invalidResponseErrorMessage": "向 Microsoft Teams 发布时出错,无效响应", - "xpack.actions.builtin.teams.teamsConfigurationErrorNoHostname": "配置 Teams 操作时出错:无法解析 webhookUrl 中的主机名", - "xpack.actions.builtin.teams.unreachableErrorMessage": "向 Microsoft Teams 发布时出错,意外错误", - "xpack.actions.builtin.teamsTitle": "Microsoft Teams", - "xpack.actions.builtin.webhook.invalidResponseErrorMessage": "调用 webhook 时出错,响应无效", - "xpack.actions.builtin.webhook.invalidResponseRetryLaterErrorMessage": "调用 webhook 时出错,请稍后重试", - "xpack.actions.builtin.webhook.invalidUsernamePassword": "必须指定用户及密码", - "xpack.actions.builtin.webhook.requestFailedErrorMessage": "调用 webhook 时出错,请求失败", - "xpack.actions.builtin.webhook.unreachableErrorMessage": "调用时 webhook 出错,非预期错误", - "xpack.actions.builtin.webhookTitle": "Webhook", - "xpack.actions.builtin.xmatters.invalidUsernamePassword": "必须同时指定用户和密码。", - "xpack.actions.builtin.xmatters.missingConfigUrl": "请提供有效的 configUrl", - "xpack.actions.builtin.xmatters.missingPassword": "请提供有效密码", - "xpack.actions.builtin.xmatters.missingSecretsUrl": "请提供具有 API 密钥的有效 secretsUrl", - "xpack.actions.builtin.xmatters.missingUser": "请提供有效用户名", - "xpack.actions.builtin.xmatters.noSecretsProvided": "请提供 secretsUrl 链接或用户/密码以进行身份验证", - "xpack.actions.builtin.xmatters.noUserPassWhenSecretsUrl": "无法将用户/密码用于 URL 身份验证。请提供有效 secretsUrl 或使用基本身份验证。", - "xpack.actions.builtin.xmatters.postingErrorMessage": "触发 xMatters 工作流时出错", - "xpack.actions.builtin.xmatters.shouldNotHaveConfigUrl": "usesBasic 为 false 时不得提供 configUrl", - "xpack.actions.builtin.xmatters.shouldNotHaveSecretsUrl": "usesBasic 为 true 时不得提供 secretsUrl", - "xpack.actions.builtin.xmatters.shouldNotHaveUsernamePassword": "usesBasic 为 false 时不得提供用户名和密码", - "xpack.actions.builtin.xmattersTitle": "xMatters", "xpack.actions.featureRegistry.actionsFeatureName": "操作和连接器", "xpack.actions.savedObjects.goToConnectorsButtonText": "前往连接器", "xpack.actions.serverSideErrors.unavailableLicenseInformationErrorMessage": "操作不可用 - 许可信息当前不可用。", + "xpack.stackConnectors.casesWebhook.configurationError": "配置案例 Webhook 操作时出错:{err}", + "xpack.stackConnectors.casesWebhook.configurationErrorNoHostname": "配置案例 Webhook 操作时出错:无法解析 {url}:{err}", + "xpack.stackConnectors.casesWebhook.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", + "xpack.stackConnectors.resilient.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", + "xpack.stackConnectors.serviceNow.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", + "xpack.stackConnectors.serviceNow.configuration.apiValidateMissingOAuthFieldError": "isOAuth = {isOAuth} 时,必须提供 {field}", + "xpack.stackConnectors.serviceNow.configuration.apiValidateOAuthFieldError": "不得与 isOAuth = {isOAuth} 一起提供 {field}", + "xpack.stackConnectors.email.customViewInKibanaMessage": "此消息由 Kibana 发送。[{kibanaFooterLinkText}]({link})。", + "xpack.stackConnectors.jira.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", + "xpack.stackConnectors.pagerduty.invalidTimestampErrorMessage": "解析时间戳“{timestamp}”时出错", + "xpack.stackConnectors.pagerduty.missingDedupkeyErrorMessage": "当 eventAction 是“{eventAction}”时需要 DedupKey", + "xpack.stackConnectors.pagerduty.configurationError": "配置 pagerduty 操作时出错:{message}", + "xpack.stackConnectors.pagerduty.postingRetryErrorMessage": "发布 pagerduty 事件时出错:http 状态 {status},请稍后重试", + "xpack.stackConnectors.pagerduty.postingUnexpectedErrorMessage": "发布 pagerduty 事件时出错:非预期状态 {status}", + "xpack.stackConnectors.pagerduty.timestampParsingFailedErrorMessage": "解析时间戳“{timestamp}”出错:{message}", + "xpack.stackConnectors.slack.errorPostingRetryDateErrorMessage": "发布 Slack 消息时出错,在 {retryString} 重试", + "xpack.stackConnectors.slack.configurationError": "配置 slack 操作时出错:{message}", + "xpack.stackConnectors.slack.unexpectedHttpResponseErrorMessage": "来自 slack 的非预期 http 响应:{httpStatus} {httpStatusText}", + "xpack.stackConnectors.swimlane.configuration.apiAllowedHostsError": "配置连接器操作时出错:{message}", + "xpack.stackConnectors.teams.errorPostingRetryDateErrorMessage": "发布 Microsoft Teams 消息时出错,请在 {retryString} 重试", + "xpack.stackConnectors.teams.configurationError": "配置 Teams 操作时出错:{message}", + "xpack.stackConnectors.webhook.invalidResponseRetryDateErrorMessage": "调用 webhook 时出错,请在 {retryString} 重试", + "xpack.stackConnectors.webhook.configurationError": "配置 Webhook 操作时出错:{message}", + "xpack.stackConnectors.webhook.configurationErrorNoHostname": "配置 Webhook 操作时出错:无法解析 url:{err}", + "xpack.stackConnectors.xmatters.postingRetryErrorMessage": "触发 xMatters 流时出错:http 状态为 {status},请稍后重试", + "xpack.stackConnectors.xmatters.unexpectedStatusErrorMessage": "触发 xMatters 流时出错:非预期状态 {status}", + "xpack.stackConnectors.xmatters.configurationError": "配置 xMatters 操作时出错:{message}", + "xpack.stackConnectors.xmatters.configurationErrorNoHostname": "配置 xMatters 操作时出错:无法解析 url:{err}", + "xpack.stackConnectors.xmatters.hostnameNotAllowed": "{message}", + "xpack.stackConnectors.xmatters.invalidUrlError": "secretsUrl 无效:{err}", + "xpack.stackConnectors.casesWebhook.title": "Webhook - 案例管理", + "xpack.stackConnectors.jira.title": "Jira", + "xpack.stackConnectors.resilient.title": "IBM Resilient", + "xpack.stackConnectors.casesWebhook.invalidUsernamePassword": "必须指定用户及密码", + "xpack.stackConnectors.serviceNow.configuration.apiBasicAuthCredentialsError": "必须同时指定用户名和密码", + "xpack.stackConnectors.serviceNow.configuration.apiCredentialsError": "必须指定基本身份验证或 OAuth 凭据", + "xpack.stackConnectors.serviceNow.configuration.apiOAuthCredentialsError": "必须同时指定 clientSecret 和 privateKey", + "xpack.stackConnectors.email.errorSendingErrorMessage": "发送电子邮件时出错", + "xpack.stackConnectors.email.kibanaFooterLinkText": "前往 Kibana", + "xpack.stackConnectors.email.sentByKibanaMessage": "此消息由 Kibana 发送。", + "xpack.stackConnectors.email.title": "电子邮件", + "xpack.stackConnectors.esIndex.errorIndexingErrorMessage": "索引文档时出错", + "xpack.stackConnectors.esIndex.title": "索引", + "xpack.stackConnectors.pagerduty.postingErrorMessage": "发布 pagerduty 事件时出错", + "xpack.stackConnectors.pagerduty.title": "PagerDuty", + "xpack.stackConnectors.serverLog.errorLoggingErrorMessage": "记录消息时出错", + "xpack.stackConnectors.serverLog.title": "服务器日志", + "xpack.stackConnectors.serviceNowITOM.title": "ServiceNow ITOM", + "xpack.stackConnectors.serviceNowITSM.title": "ServiceNow ITSM", + "xpack.stackConnectors.serviceNowSIR.title": "ServiceNow SecOps", + "xpack.stackConnectors.serviceNow.title": "ServiceNow", + "xpack.stackConnectors.slack.errorPostingErrorMessage": "发布 slack 消息时出错", + "xpack.stackConnectors.slack.errorPostingRetryLaterErrorMessage": "发布 slack 消息时出错,稍后重试", + "xpack.stackConnectors.slack.configurationErrorNoHostname": "配置 slack 操作时出错:无法解析 webhookUrl 中的主机名", + "xpack.stackConnectors.slack.unexpectedNullResponseErrorMessage": "来自 slack 的异常空响应", + "xpack.stackConnectors.slack.title": "Slack", + "xpack.stackConnectors.swimlane.title": "泳道", + "xpack.stackConnectors.teams.errorPostingRetryLaterErrorMessage": "发布 Microsoft Teams 消息时出错,请稍后重试", + "xpack.stackConnectors.teams.invalidResponseErrorMessage": "向 Microsoft Teams 发布时出错,无效响应", + "xpack.stackConnectors.teams.configurationErrorNoHostname": "配置 Teams 操作时出错:无法解析 webhookUrl 中的主机名", + "xpack.stackConnectors.teams.unreachableErrorMessage": "向 Microsoft Teams 发布时出错,意外错误", + "xpack.stackConnectors.teams.title": "Microsoft Teams", + "xpack.stackConnectors.webhook.invalidResponseErrorMessage": "调用 webhook 时出错,响应无效", + "xpack.stackConnectors.webhook.invalidResponseRetryLaterErrorMessage": "调用 webhook 时出错,请稍后重试", + "xpack.stackConnectors.webhook.invalidUsernamePassword": "必须指定用户及密码", + "xpack.stackConnectors.webhook.requestFailedErrorMessage": "调用 webhook 时出错,请求失败", + "xpack.stackConnectors.webhook.unreachableErrorMessage": "调用时 webhook 出错,非预期错误", + "xpack.stackConnectors.webhook.title": "Webhook", + "xpack.stackConnectors.xmatters.invalidUsernamePassword": "必须同时指定用户和密码。", + "xpack.stackConnectors.xmatters.missingConfigUrl": "请提供有效的 configUrl", + "xpack.stackConnectors.xmatters.missingPassword": "请提供有效密码", + "xpack.stackConnectors.xmatters.missingSecretsUrl": "请提供具有 API 密钥的有效 secretsUrl", + "xpack.stackConnectors.xmatters.missingUser": "请提供有效用户名", + "xpack.stackConnectors.xmatters.noSecretsProvided": "请提供 secretsUrl 链接或用户/密码以进行身份验证", + "xpack.stackConnectors.xmatters.noUserPassWhenSecretsUrl": "无法将用户/密码用于 URL 身份验证。请提供有效 secretsUrl 或使用基本身份验证。", + "xpack.stackConnectors.xmatters.postingErrorMessage": "触发 xMatters 工作流时出错", + "xpack.stackConnectors.xmatters.shouldNotHaveConfigUrl": "usesBasic 为 false 时不得提供 configUrl", + "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "usesBasic 为 true 时不得提供 secretsUrl", + "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "usesBasic 为 false 时不得提供用户名和密码", + "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "已识别 {fieldCandidatesCount, plural, other {# 个字段候选项}}。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "已识别 {fieldValuePairsCount, plural, other {# 个重要的字段/值对}}。", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "加载索引 {index} 中的数据时出错。{message}。请求可能已超时。请尝试使用较小的样例大小或缩小时间范围。", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts index 197470eea6cca..36e072cc8db44 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts @@ -9,7 +9,7 @@ import type { CasesWebhookPublicConfigurationType, CasesWebhookSecretConfigurationType, ExecutorSubActionPushParams, -} from '@kbn/actions-plugin/server/builtin_action_types/cases_webhook/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/cases_webhook/types'; import { UserConfiguredActionConnector } from '../../../../types'; export interface CasesWebhookActionParams { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts index a799db2702180..913bda49fe53d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts @@ -6,7 +6,7 @@ */ import { HttpSetup } from '@kbn/core/public'; -import { INTERNAL_BASE_ACTION_API_PATH } from '../../../constants'; +import { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../../constants'; import { EmailConfig } from '../types'; export async function getServiceConfig({ @@ -16,5 +16,5 @@ export async function getServiceConfig({ http: HttpSetup; service: string; }): Promise>> { - return await http.get(`${INTERNAL_BASE_ACTION_API_PATH}/connector/_email_config/${service}`); + return await http.get(`${INTERNAL_BASE_STACK_CONNECTORS_API_PATH}/_email_config/${service}`); } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx index c2a27ab8bae23..213d30ff4e5e4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx @@ -10,7 +10,8 @@ import { isEmpty } from 'lodash'; import { EuiFlexItem, EuiFlexGroup, EuiTitle, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiLink } from '@elastic/eui'; -import { AdditionalEmailServices, InvalidEmailReason } from '@kbn/actions-plugin/common'; +import { InvalidEmailReason } from '@kbn/actions-plugin/common'; +import { AdditionalEmailServices } from '@kbn/stack-connectors-plugin/common'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts index f03c869ea5ca4..ee5ba95bf577b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts @@ -28,7 +28,7 @@ describe('useEmailConfig', () => { const { result } = renderUseEmailConfigHook(); await act(async () => { const res = await result.current.getEmailServiceConfig('gmail'); - expect(http.get).toHaveBeenCalledWith('/internal/actions/connector/_email_config/gmail'); + expect(http.get).toHaveBeenCalledWith('/internal/stack_connectors/_email_config/gmail'); expect(res).toEqual({ host: 'smtp.gmail.com', port: 465, @@ -46,7 +46,7 @@ describe('useEmailConfig', () => { const { result } = renderUseEmailConfigHook(); await act(async () => { const res = await result.current.getEmailServiceConfig('gmail'); - expect(http.get).toHaveBeenCalledWith('/internal/actions/connector/_email_config/gmail'); + expect(http.get).toHaveBeenCalledWith('/internal/stack_connectors/_email_config/gmail'); expect(res).toEqual({ host: 'smtp.gmail.com', port: 465, @@ -61,7 +61,7 @@ describe('useEmailConfig', () => { await act(async () => { const res = await result.current.getEmailServiceConfig('foo'); - expect(http.get).toHaveBeenCalledWith('/internal/actions/connector/_email_config/foo'); + expect(http.get).toHaveBeenCalledWith('/internal/stack_connectors/_email_config/foo'); expect(res).toEqual({ host: '', port: 0, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts index c706630f1f6bb..fc0221227783d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts @@ -8,7 +8,7 @@ import { isEmpty } from 'lodash'; import { useCallback, useEffect, useRef, useState } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { AdditionalEmailServices } from '@kbn/actions-plugin/common'; +import { AdditionalEmailServices } from '@kbn/stack-connectors-plugin/common'; import { i18n } from '@kbn/i18n'; import { EmailConfig } from '../types'; import { getServiceConfig } from './api'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts index bb0268795ec0d..85e7be1626b0c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ExecutorSubActionPushParams } from '@kbn/actions-plugin/server/builtin_action_types/jira/types'; +import type { ExecutorSubActionPushParams } from '@kbn/stack-connectors-plugin/server/connector_types/cases/jira/types'; import { UserConfiguredActionConnector } from '../../../../types'; export type JiraActionConnector = UserConfiguredActionConnector; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts index e845590ce2c3d..12c46d2900213 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ExecutorSubActionPushParams } from '@kbn/actions-plugin/server/builtin_action_types/resilient/types'; +import type { ExecutorSubActionPushParams } from '@kbn/stack-connectors-plugin/server/connector_types/cases/resilient/types'; import { UserConfiguredActionConnector } from '../../../../types'; export type ResilientActionConnector = UserConfiguredActionConnector< diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts index 2fc32972c30d3..95fac75cb9f5b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts @@ -10,8 +10,8 @@ import { HttpSetup } from '@kbn/core/public'; import { ActionTypeExecutorResult, INTERNAL_BASE_ACTION_API_PATH, - snExternalServiceConfig, } from '@kbn/actions-plugin/common'; +import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; import { BASE_ACTION_API_PATH } from '../../../constants'; import { API_INFO_ERROR } from './translations'; import { AppInfo, RESTApiError, ServiceNowActionConnector } from './types'; @@ -43,7 +43,7 @@ export async function getChoices({ /** * The app info url should be the same as at: - * x-pack/plugins/actions/server/builtin_action_types/servicenow/service.ts + * x-pack/plugins/stack_connectors/server/connector_types/cases/servicenow/service.ts */ const getAppInfoUrl = (url: string, scope: string) => `${url}/api/${scope}/elastic_api/health`; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx index 54cb052c50212..d9e462ae552de 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { EuiSpacer } from '@elastic/eui'; -import { snExternalServiceConfig } from '@kbn/actions-plugin/common'; +import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; import { useFormContext, useFormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { ActionConnectorFieldsProps } from '../../../../types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts index 61f66b2be1780..e6fbcf6e81939 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts @@ -9,7 +9,7 @@ import type { ExecutorSubActionPushParamsITSM, ExecutorSubActionPushParamsSIR, ExecutorSubActionAddEventParams, -} from '@kbn/actions-plugin/server/builtin_action_types/servicenow/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/servicenow/types'; import { UserConfiguredActionConnector } from '../../../../types'; export type ServiceNowActionConnector = UserConfiguredActionConnector< diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx index 16363cd0b8e43..936e12a564b4a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx @@ -21,7 +21,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { snExternalServiceConfig } from '@kbn/actions-plugin/common'; +import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; import { useForm, Form } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { CredentialsApiUrl } from './credentials_api_url'; import { CredentialsAuth, OAuth } from './auth_types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts index 9c8cf1b852bb9..cf77b094e5a12 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts @@ -8,7 +8,7 @@ import type { ExecutorSubActionPushParams, MappingConfigType, -} from '@kbn/actions-plugin/server/builtin_action_types/swimlane/types'; +} from '@kbn/stack-connectors-plugin/server/connector_types/cases/swimlane/types'; import { UserConfiguredActionConnector } from '../../../../types'; export type SwimlaneActionConnector = UserConfiguredActionConnector< diff --git a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts index 64bd67989cfbf..f23b578d5941c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts @@ -12,6 +12,7 @@ export { INTERNAL_BASE_ALERTING_API_PATH, } from '@kbn/alerting-plugin/common'; export { BASE_ACTION_API_PATH, INTERNAL_BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; +export { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '@kbn/stack-connectors-plugin/common'; export type Section = 'connectors' | 'rules' | 'alerts' | 'logs'; diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 8618be6c9c285..991cbc5b01216 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -16,6 +16,7 @@ "references": [ { "path": "../../../src/core/tsconfig.json" }, { "path": "../alerting/tsconfig.json" }, + { "path": "../stack_connectors/tsconfig.json" }, { "path": "../features/tsconfig.json" }, { "path": "../rule_registry/tsconfig.json" }, { "path": "../../../src/plugins/data/tsconfig.json" }, diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index e7684ba8b7905..7267b31905c95 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -50,6 +50,7 @@ { "path": "../../src/plugins/usage_collection/tsconfig.json" }, { "path": "../plugins/actions/tsconfig.json" }, { "path": "../plugins/alerting/tsconfig.json" }, + { "path": "../plugins/stack_connectors/tsconfig.json" }, { "path": "../plugins/apm/tsconfig.json" }, { "path": "../plugins/banners/tsconfig.json" }, { "path": "../plugins/cases/tsconfig.json" }, From 78f6244109e657f7a79493d6aff15d1e2e71bb07 Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Thu, 15 Sep 2022 22:05:34 +0200 Subject: [PATCH 16/79] [ML] Notifications page (#140613) * init notifications page * useStorage type enhancement * api endpoints * wip notifications page * side nav notifications * search by message * set is loading * track total count * omit empty query keys * from page * fix paging query * support query string * fix refetch effect * filter for spaces * remove storage code * fix i18n strings * job_id query support * sorting results * use in memory table * omit size and from params, add no items found message * fix FormattedMessage ids * fix breadcrumbs * basic functional tests for the notifications page * add apidocs * replace error toast with callout * add mlSavedObjectsService, add tags * update error text and placeholder * replace any * add saved objects warning * run request on submit --- x-pack/plugins/ml/common/constants/locator.ts | 1 + .../ml/common/constants/message_levels.ts | 2 + x-pack/plugins/ml/common/types/locator.ts | 10 + .../plugins/ml/common/types/notifications.ts | 48 +++ x-pack/plugins/ml/common/types/storage.ts | 24 +- .../full_time_range_selector.tsx | 2 +- .../components/job_selector/job_selector.tsx | 4 +- .../ml_page/notifications_indicator.tsx | 28 ++ .../components/ml_page/side_nav.tsx | 12 +- .../application/contexts/ml/use_storage.ts | 25 +- .../analytics_list/analytics_list.tsx | 2 +- .../analytics_list/use_table_settings.ts | 24 +- .../public/application/explorer/explorer.tsx | 13 +- .../components/notifications_list.tsx | 341 ++++++++++++++++++ .../public/application/notifications/page.tsx | 46 +++ .../application/routing/routes/index.ts | 1 + .../routing/routes/notifications.tsx | 62 ++++ .../services/ml_api_service/index.ts | 2 + .../services/ml_api_service/notifications.ts | 41 +++ .../series_controls/series_controls.tsx | 3 +- .../models_management/models_list.tsx | 2 +- .../nodes_overview/nodes_list.tsx | 2 +- .../locator/formatters/notifications.ts | 40 ++ .../plugins/ml/public/locator/ml_locator.ts | 4 + .../models/notifications_service/index.ts | 8 + .../notifications_service_provider.ts | 192 ++++++++++ x-pack/plugins/ml/server/plugin.ts | 2 + x-pack/plugins/ml/server/routes/apidoc.json | 4 + .../plugins/ml/server/routes/notifications.ts | 88 +++++ .../routes/schemas/notifications_schema.ts | 61 ++++ .../ml/server/saved_objects/service.ts | 15 + .../apps/ml/permissions/full_ml_access.ts | 3 + .../apps/ml/permissions/read_ml_access.ts | 3 + .../functional/apps/ml/short_tests/pages.ts | 3 + .../test/functional/services/ml/navigation.ts | 8 + 35 files changed, 1091 insertions(+), 35 deletions(-) create mode 100644 x-pack/plugins/ml/common/types/notifications.ts create mode 100644 x-pack/plugins/ml/public/application/components/ml_page/notifications_indicator.tsx create mode 100644 x-pack/plugins/ml/public/application/notifications/components/notifications_list.tsx create mode 100644 x-pack/plugins/ml/public/application/notifications/page.tsx create mode 100644 x-pack/plugins/ml/public/application/routing/routes/notifications.tsx create mode 100644 x-pack/plugins/ml/public/application/services/ml_api_service/notifications.ts create mode 100644 x-pack/plugins/ml/public/locator/formatters/notifications.ts create mode 100644 x-pack/plugins/ml/server/models/notifications_service/index.ts create mode 100644 x-pack/plugins/ml/server/models/notifications_service/notifications_service_provider.ts create mode 100644 x-pack/plugins/ml/server/routes/notifications.ts create mode 100644 x-pack/plugins/ml/server/routes/schemas/notifications_schema.ts diff --git a/x-pack/plugins/ml/common/constants/locator.ts b/x-pack/plugins/ml/common/constants/locator.ts index 9e9e4b875bf32..a9006aaadcef5 100644 --- a/x-pack/plugins/ml/common/constants/locator.ts +++ b/x-pack/plugins/ml/common/constants/locator.ts @@ -52,6 +52,7 @@ export const ML_PAGES = { FILTER_LISTS_EDIT: 'settings/filter_lists/edit_filter_list', ACCESS_DENIED: 'access-denied', OVERVIEW: 'overview', + NOTIFICATIONS: 'notifications', AIOPS: 'aiops', AIOPS_EXPLAIN_LOG_RATE_SPIKES: 'aiops/explain_log_rate_spikes', AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: 'aiops/explain_log_rate_spikes_index_select', diff --git a/x-pack/plugins/ml/common/constants/message_levels.ts b/x-pack/plugins/ml/common/constants/message_levels.ts index fd6cef75174ae..b4a69aaf29bbf 100644 --- a/x-pack/plugins/ml/common/constants/message_levels.ts +++ b/x-pack/plugins/ml/common/constants/message_levels.ts @@ -11,3 +11,5 @@ export const MESSAGE_LEVEL = { SUCCESS: 'success', WARNING: 'warning', } as const; + +export type MessageLevel = typeof MESSAGE_LEVEL[keyof typeof MESSAGE_LEVEL]; diff --git a/x-pack/plugins/ml/common/types/locator.ts b/x-pack/plugins/ml/common/types/locator.ts index adb873a3d7c6b..11beec3bee2e9 100644 --- a/x-pack/plugins/ml/common/types/locator.ts +++ b/x-pack/plugins/ml/common/types/locator.ts @@ -269,6 +269,7 @@ export type MlLocatorState = | CalendarEditUrlState | FilterEditUrlState | MlGenericUrlState + | NotificationsUrlState | TrainedModelsUrlState | TrainedModelsNodesUrlState; @@ -285,3 +286,12 @@ export type TrainedModelsNodesUrlState = MLPageState< typeof ML_PAGES.TRAINED_MODELS_NODES, TrainedModelsNodesQueryState | undefined >; + +export interface NotificationsQueryState { + level: string; +} + +export type NotificationsUrlState = MLPageState< + typeof ML_PAGES.NOTIFICATIONS, + NotificationsQueryState | undefined +>; diff --git a/x-pack/plugins/ml/common/types/notifications.ts b/x-pack/plugins/ml/common/types/notifications.ts new file mode 100644 index 0000000000000..4fef15b868bf2 --- /dev/null +++ b/x-pack/plugins/ml/common/types/notifications.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { MessageLevel } from '../constants/message_levels'; + +export interface NotificationsQueryParams { + level?: MessageLevel; + type?: string; + size?: number; + from?: number; + sortField?: string; + sortDirection?: string; + queryString?: string; + earliest?: string; + latest?: string; +} + +export interface NotificationSource { + message: string; + job_id: string; + level: MessageLevel; + timestamp: number; + node_name: string; + job_type: string; +} + +export interface NotificationsSearchResponse { + total: number; + results: Array< + NotificationSource & { + id: string; + } + >; +} + +export type NotificationItem = NotificationsSearchResponse['results'][number]; + +export interface NotificationsCountQueryParams { + lastCheckedAt: number; +} + +export type NotificationsCountResponse = { + [key in MessageLevel]: number; +}; diff --git a/x-pack/plugins/ml/common/types/storage.ts b/x-pack/plugins/ml/common/types/storage.ts index d1708ae17776b..b59772fac9151 100644 --- a/x-pack/plugins/ml/common/types/storage.ts +++ b/x-pack/plugins/ml/common/types/storage.ts @@ -7,15 +7,12 @@ import { EntityFieldType } from './anomalies'; -export const ML_ENTITY_FIELDS_CONFIG = 'ml.singleMetricViewer.partitionFields'; - +export const ML_ENTITY_FIELDS_CONFIG = 'ml.singleMetricViewer.partitionFields' as const; export const ML_APPLY_TIME_RANGE_CONFIG = 'ml.jobSelectorFlyout.applyTimeRange'; - export const ML_GETTING_STARTED_CALLOUT_DISMISSED = 'ml.gettingStarted.isDismissed'; - export const ML_FROZEN_TIER_PREFERENCE = 'ml.frozenDataTierPreference'; - export const ML_ANOMALY_EXPLORER_PANELS = 'ml.anomalyExplorerPanels'; +export const ML_NOTIFICATIONS_LAST_CHECKED_AT = 'ml.notificationsLastCheckedAt'; export type PartitionFieldConfig = | { @@ -58,8 +55,23 @@ export type MlStorage = Partial<{ [ML_ENTITY_FIELDS_CONFIG]: PartitionFieldsConfig; [ML_APPLY_TIME_RANGE_CONFIG]: ApplyTimeRangeConfig; [ML_GETTING_STARTED_CALLOUT_DISMISSED]: boolean | undefined; - [ML_FROZEN_TIER_PREFERENCE]: 'exclude_frozen' | 'include_frozen'; + [ML_FROZEN_TIER_PREFERENCE]: 'exclude-frozen' | 'include-frozen'; [ML_ANOMALY_EXPLORER_PANELS]: AnomalyExplorerPanelsState | undefined; + [ML_NOTIFICATIONS_LAST_CHECKED_AT]: number | undefined; }> | null; export type MlStorageKey = keyof Exclude; + +export type TMlStorageMapped = T extends typeof ML_ENTITY_FIELDS_CONFIG + ? PartitionFieldsConfig + : T extends typeof ML_APPLY_TIME_RANGE_CONFIG + ? ApplyTimeRangeConfig + : T extends typeof ML_GETTING_STARTED_CALLOUT_DISMISSED + ? boolean | undefined + : T extends typeof ML_FROZEN_TIER_PREFERENCE + ? 'exclude-frozen' | 'include-frozen' | undefined + : T extends typeof ML_ANOMALY_EXPLORER_PANELS + ? AnomalyExplorerPanelsState | undefined + : T extends typeof ML_NOTIFICATIONS_LAST_CHECKED_AT + ? number | undefined + : null; diff --git a/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector.tsx b/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector.tsx index e87c8c47df5a2..06bb873971ba0 100644 --- a/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector.tsx +++ b/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector.tsx @@ -53,7 +53,7 @@ export const FullTimeRangeSelector: FC = ({ dataView, query, disabled, ca } const [isPopoverOpen, setPopover] = useState(false); - const [frozenDataPreference, setFrozenDataPreference] = useStorage( + const [frozenDataPreference, setFrozenDataPreference] = useStorage( ML_FROZEN_TIER_PREFERENCE, FROZEN_TIER_PREFERENCE.EXCLUDE ); diff --git a/x-pack/plugins/ml/public/application/components/job_selector/job_selector.tsx b/x-pack/plugins/ml/public/application/components/job_selector/job_selector.tsx index a33530551a285..79d33ef9cd2ab 100644 --- a/x-pack/plugins/ml/public/application/components/job_selector/job_selector.tsx +++ b/x-pack/plugins/ml/public/application/components/job_selector/job_selector.tsx @@ -29,7 +29,7 @@ import { } from './job_selector_flyout'; import { MlJobWithTimeRange } from '../../../../common/types/anomaly_detection_jobs'; import { useStorage } from '../../contexts/ml/use_storage'; -import { ApplyTimeRangeConfig, ML_APPLY_TIME_RANGE_CONFIG } from '../../../../common/types/storage'; +import { ML_APPLY_TIME_RANGE_CONFIG } from '../../../../common/types/storage'; interface GroupObj { groupId: string; @@ -89,7 +89,7 @@ export interface JobSelectionMaps { export function JobSelector({ dateFormatTz, singleSelection, timeseriesOnly }: JobSelectorProps) { const [globalState, setGlobalState] = useUrlState('_g'); - const [applyTimeRangeConfig, setApplyTimeRangeConfig] = useStorage( + const [applyTimeRangeConfig, setApplyTimeRangeConfig] = useStorage( ML_APPLY_TIME_RANGE_CONFIG, true ); diff --git a/x-pack/plugins/ml/public/application/components/ml_page/notifications_indicator.tsx b/x-pack/plugins/ml/public/application/components/ml_page/notifications_indicator.tsx new file mode 100644 index 0000000000000..4591222e4ffcd --- /dev/null +++ b/x-pack/plugins/ml/public/application/components/ml_page/notifications_indicator.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 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, EuiNotificationBadge } from '@elastic/eui'; + +export const NotificationsIndicator: FC = () => { + return ( + + + + + {false ? ( + + {0} + + ) : null} + + ); +}; diff --git a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx index b87a128c0c788..c58f8448d9a95 100644 --- a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx +++ b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx @@ -7,8 +7,9 @@ import { i18n } from '@kbn/i18n'; import type { EuiSideNavItemType } from '@elastic/eui'; -import { useCallback, useMemo } from 'react'; +import React, { ReactNode, useCallback, useMemo } from 'react'; import { AIOPS_ENABLED } from '@kbn/aiops-plugin/common'; +import { NotificationsIndicator } from './notifications_indicator'; import type { MlLocatorParams } from '../../../../common/types/locator'; import { useUrlState } from '../../util/url_state'; import { useMlLocator, useNavigateToPath } from '../../contexts/kibana'; @@ -19,7 +20,7 @@ import { checkPermission } from '../../capabilities/check_capabilities'; export interface Tab { id: string; - name: string; + name: ReactNode; disabled?: boolean; items?: Tab[]; testSubj?: string; @@ -80,6 +81,13 @@ export function useSideNavItems(activeRoute: MlRoute | undefined) { disabled: disableLinks, testSubj: 'mlMainTab overview', }, + { + id: 'notifications', + pathId: ML_PAGES.NOTIFICATIONS, + name: , + disabled: disableLinks, + testSubj: 'mlMainTab notifications', + }, ], }, { diff --git a/x-pack/plugins/ml/public/application/contexts/ml/use_storage.ts b/x-pack/plugins/ml/public/application/contexts/ml/use_storage.ts index d41dfedfa32ee..761434a7bb3b4 100644 --- a/x-pack/plugins/ml/public/application/contexts/ml/use_storage.ts +++ b/x-pack/plugins/ml/public/application/contexts/ml/use_storage.ts @@ -6,25 +6,40 @@ */ import { useCallback, useState } from 'react'; +import { isDefined } from '../../../../common/types/guards'; import { useMlKibana } from '../kibana'; import type { MlStorageKey } from '../../../../common/types/storage'; +import { TMlStorageMapped } from '../../../../common/types/storage'; /** * Hook for accessing and changing a value in the storage. * @param key - Storage key * @param initValue */ -export function useStorage(key: MlStorageKey, initValue?: T): [T, (value: T) => void] { +export function useStorage>( + key: K, + initValue?: T +): [ + typeof initValue extends undefined + ? TMlStorageMapped + : Exclude, undefined>, + (value: TMlStorageMapped) => void +] { const { services: { storage }, } = useMlKibana(); - const [val, setVal] = useState(storage.get(key) ?? initValue); + const [val, setVal] = useState(storage.get(key) ?? initValue); - const setStorage = useCallback((value: T): void => { + const setStorage = useCallback((value: TMlStorageMapped): void => { try { - storage.set(key, value); - setVal(value); + if (isDefined(value)) { + storage.set(key, value); + setVal(value); + } else { + storage.remove(key); + setVal(initValue); + } } catch (e) { throw new Error('Unable to update storage with provided value'); } diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx index f9d4f08d649e4..dbcff279def12 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx @@ -187,7 +187,7 @@ export const DataFrameAnalyticsList: FC = ({ ); const { onTableChange, pagination, sorting } = useTableSettings( - filteredAnalytics, + filteredAnalytics.length, pageState, updatePageState ); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts index 993aadd3f810f..457749df67035 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Direction, EuiBasicTableProps, Pagination, PropertySort } from '@elastic/eui'; +import { Direction, EuiBasicTableProps, Pagination } from '@elastic/eui'; import { useCallback, useMemo } from 'react'; import { ListingPageUrlState } from '../../../../../../../common/types/common'; @@ -33,11 +33,16 @@ export interface CriteriaWithPagination extends Criteria { interface UseTableSettingsReturnValue { onTableChange: EuiBasicTableProps['onChange']; pagination: Pagination; - sorting: { sort: PropertySort }; + sorting: { + sort: { + field: keyof T; + direction: 'asc' | 'desc'; + }; + }; } export function useTableSettings( - items: TypeOfItem[], + totalItemCount: number, pageState: ListingPageUrlState, updatePageState: (update: Partial) => void ): UseTableSettingsReturnValue { @@ -45,10 +50,15 @@ export function useTableSettings( const onTableChange: EuiBasicTableProps['onChange'] = useCallback( ({ page, sort }: CriteriaWithPagination) => { + let resultSortField = sort?.field; + if (typeof resultSortField !== 'string') { + resultSortField = pageState.sortField as keyof TypeOfItem; + } + const result = { pageIndex: page?.index ?? pageState.pageIndex, pageSize: page?.size ?? pageState.pageSize, - sortField: (sort?.field as string) ?? pageState.sortField, + sortField: resultSortField as string, sortDirection: sort?.direction ?? pageState.sortDirection, }; updatePageState(result); @@ -60,16 +70,16 @@ export function useTableSettings( () => ({ pageIndex, pageSize, - totalItemCount: items.length, + totalItemCount, pageSizeOptions: PAGE_SIZE_OPTIONS, }), - [items, pageIndex, pageSize] + [totalItemCount, pageIndex, pageSize] ); const sorting = useMemo( () => ({ sort: { - field: sortField as string, + field: sortField as keyof TypeOfItem, direction: sortDirection as Direction, }, }), diff --git a/x-pack/plugins/ml/public/application/explorer/explorer.tsx b/x-pack/plugins/ml/public/application/explorer/explorer.tsx index 32a4f613c22d4..b9feffb1ec116 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer.tsx +++ b/x-pack/plugins/ml/public/application/explorer/explorer.tsx @@ -77,10 +77,7 @@ import { useToastNotificationService } from '../services/toast_notification_serv import { useMlKibana, useMlLocator } from '../contexts/kibana'; import { useMlContext } from '../contexts/ml'; import { useAnomalyExplorerContext } from './anomaly_explorer_context'; -import { - AnomalyExplorerPanelsState, - ML_ANOMALY_EXPLORER_PANELS, -} from '../../../common/types/storage'; +import { ML_ANOMALY_EXPLORER_PANELS } from '../../../common/types/storage'; import { useStorage } from '../contexts/ml/use_storage'; interface ExplorerPageProps { @@ -173,8 +170,9 @@ export const Explorer: FC = ({ }) => { const isMobile = useIsWithinBreakpoints(['xs', 's']); - const [anomalyExplorerPanelState, setAnomalyExplorerPanelState] = - useStorage(ML_ANOMALY_EXPLORER_PANELS, { + const [anomalyExplorerPanelState, setAnomalyExplorerPanelState] = useStorage( + ML_ANOMALY_EXPLORER_PANELS, + { topInfluencers: { isCollapsed: false, size: 20, @@ -182,7 +180,8 @@ export const Explorer: FC = ({ mainPage: { size: 80, }, - }); + } + ); const topInfluencersPanelRef = useRef(null); diff --git a/x-pack/plugins/ml/public/application/notifications/components/notifications_list.tsx b/x-pack/plugins/ml/public/application/notifications/components/notifications_list.tsx new file mode 100644 index 0000000000000..745fc318c3404 --- /dev/null +++ b/x-pack/plugins/ml/public/application/notifications/components/notifications_list.tsx @@ -0,0 +1,341 @@ +/* + * 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, useCallback, useMemo, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiBadge, + EuiCallOut, + EuiInMemoryTable, + EuiSearchBar, + EuiSpacer, + IconColor, + Query, + SearchFilterConfig, +} from '@elastic/eui'; +import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/basic_table'; +import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; +import useDebounce from 'react-use/lib/useDebounce'; +import { SavedObjectsWarning } from '../../components/saved_objects_warning'; +import { useTimeRangeUpdates } from '../../contexts/kibana/use_timefilter'; +import { useToastNotificationService } from '../../services/toast_notification_service'; +import { useFieldFormatter } from '../../contexts/kibana/use_field_formatter'; +import { useRefresh } from '../../routing/use_refresh'; +import { useTableSettings } from '../../data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings'; +import { MESSAGE_LEVEL, MessageLevel } from '../../../../common/constants/message_levels'; +import { ListingPageUrlState } from '../../../../common/types/common'; +import { usePageUrlState } from '../../util/url_state'; +import { ML_PAGES } from '../../../../common/constants/locator'; +import type { NotificationItem } from '../../../../common/types/notifications'; +import { useMlKibana } from '../../contexts/kibana'; + +const levelBadgeMap: Record = { + error: 'danger', + info: 'default', + success: 'subdued', + warning: 'warning', +}; + +export const getDefaultNotificationsListState = (): ListingPageUrlState => ({ + pageIndex: 0, + pageSize: 25, + sortField: 'timestamp', + sortDirection: 'desc', +}); + +export const NotificationsList: FC = () => { + const { + services: { + mlServices: { mlApiServices }, + }, + } = useMlKibana(); + const { displayErrorToast } = useToastNotificationService(); + + const timeRange = useTimeRangeUpdates(); + + const [isLoading, setIsLoading] = useState(false); + const [items, setItems] = useState([]); + const [totalCount, setTotalCount] = useState(0); + const [queryError, setQueryError] = useState(''); + + const dateFormatter = useFieldFormatter(FIELD_FORMAT_IDS.DATE); + + const [pageState, updatePageState] = usePageUrlState( + ML_PAGES.NOTIFICATIONS, + getDefaultNotificationsListState() + ); + + const { onTableChange, pagination, sorting } = useTableSettings( + totalCount, + pageState, + updatePageState + ); + + const refresh = useRefresh(); + + const searchQueryText = pageState.queryText; + + const queryInstance = useMemo(() => { + try { + setQueryError(''); + return EuiSearchBar.Query.parse(searchQueryText ?? ''); + } catch (error) { + setQueryError(error.message); + } + }, [searchQueryText, setQueryError]); + + const fetchNotifications = useCallback(async () => { + if (!queryInstance) return; + + const queryString = EuiSearchBar.Query.toESQueryString(queryInstance); + + try { + setIsLoading(true); + const response = await mlApiServices.notifications.findMessages({ + sortField: sorting.sort!.field, + sortDirection: sorting.sort!.direction, + earliest: timeRange.from, + latest: timeRange.to, + queryString, + }); + setItems(response.results); + setTotalCount(response.total); + } catch (error) { + displayErrorToast( + error, + i18n.translate('xpack.ml.notifications.fetchFailedError', { + defaultMessage: 'Fetch notifications failed', + }) + ); + } + + setIsLoading(false); + }, [sorting, queryInstance, mlApiServices.notifications, displayErrorToast, timeRange]); + + useDebounce( + function refetchNotification() { + fetchNotifications(); + }, + 500, + [sorting, queryInstance, refresh] + ); + + const columns: Array> = [ + { + field: 'timestamp', + name: , + sortable: true, + truncateText: false, + 'data-test-subj': 'mlNotificationTime', + width: '250px', + render: (v: number) => dateFormatter(v), + }, + { + field: 'level', + name: , + sortable: true, + truncateText: false, + 'data-test-subj': 'mlNotificationLabel', + render: (value: MessageLevel) => { + return {value}; + }, + width: '100px', + }, + { + field: 'job_type', + name: , + sortable: true, + truncateText: false, + 'data-test-subj': 'mlNotificationType', + render: (value: MessageLevel) => { + return {value}; + }, + width: '200px', + }, + { + field: 'job_id', + name: , + sortable: true, + truncateText: false, + 'data-test-subj': 'mlNotificationEntity', + width: '200px', + }, + { + field: 'message', + name: , + sortable: false, + truncateText: false, + 'data-test-subj': 'mlNotificationMessage', + }, + ]; + + const filters: SearchFilterConfig[] = useMemo(() => { + return [ + { + type: 'field_value_selection', + field: 'level', + name: i18n.translate('xpack.ml.notifications.filters.level.name', { + defaultMessage: 'Level', + }), + multiSelect: 'or', + options: [ + { + value: MESSAGE_LEVEL.ERROR, + name: i18n.translate('xpack.ml.notifications.filters.level.error', { + defaultMessage: 'Error', + }), + field: 'level', + }, + { + value: MESSAGE_LEVEL.WARNING, + name: i18n.translate('xpack.ml.notifications.filters.level.warning', { + defaultMessage: 'Warning', + }), + field: 'level', + }, + { + value: MESSAGE_LEVEL.INFO, + name: i18n.translate('xpack.ml.notifications.filters.level.info', { + defaultMessage: 'Info', + }), + field: 'level', + }, + ], + }, + { + type: 'field_value_selection', + field: 'job_type', + name: i18n.translate('xpack.ml.notifications.filters.level.type', { + defaultMessage: 'Type', + }), + multiSelect: 'or', + options: [ + { + value: 'anomaly_detector', + name: i18n.translate('xpack.ml.notifications.filters.type.anomalyDetector', { + defaultMessage: 'Anomaly Detection', + }), + }, + { + value: 'data_frame_analytics', + name: i18n.translate('xpack.ml.notifications.filters.type.dfa', { + defaultMessage: 'Data Frame Analytics', + }), + }, + { + value: 'inference', + name: i18n.translate('xpack.ml.notifications.filters.type.inference', { + defaultMessage: 'Inference', + }), + }, + { + value: 'system', + name: i18n.translate('xpack.ml.notifications.filters.type.system', { + defaultMessage: 'System', + }), + }, + ], + }, + ]; + }, []); + + return ( + <> + + + { + updatePageState({ queryText: e.queryText }); + }} + data-test-subj={'mlNotificationsSearchBar'} + /> + + + + {queryError ? ( + <> + + } + color="danger" + iconType="alert" + > +

{queryError}

+
+ + + ) : null} + + + columns={columns} + hasActions={false} + isExpandable={false} + isSelectable={false} + items={items} + itemId={'id'} + loading={isLoading} + rowProps={(item) => ({ + 'data-test-subj': `mlNotificationsTableRow row-${item.id}`, + })} + pagination={pagination} + onChange={onTableChange} + sorting={sorting} + data-test-subj={isLoading ? 'mlNotificationsTable loading' : 'mlNotificationsTable loaded'} + message={ + + } + /> + + ); +}; diff --git a/x-pack/plugins/ml/public/application/notifications/page.tsx b/x-pack/plugins/ml/public/application/notifications/page.tsx new file mode 100644 index 0000000000000..80d052bf818da --- /dev/null +++ b/x-pack/plugins/ml/public/application/notifications/page.tsx @@ -0,0 +1,46 @@ +/* + * 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 { NotificationsList } from './components/notifications_list'; +import { useMlKibana, useTimefilter } from '../contexts/kibana'; +import { MlPageHeader } from '../components/page_header'; +import { NodeAvailableWarning } from '../components/node_available_warning'; +import { UpgradeWarning } from '../components/upgrade'; +import { HelpMenu } from '../components/help_menu'; + +export const NotificationsPage: FC = () => { + const { + services: { docLinks }, + } = useMlKibana(); + const helpLink = docLinks.links.ml.guide; + + useTimefilter({ timeRangeSelector: true, autoRefreshSelector: true }); + + return ( +
+ + + + + + + + + + +
+ ); +}; + +// required for dynamic import using React.lazy() +// eslint-disable-next-line import/no-default-export +export default NotificationsPage; diff --git a/x-pack/plugins/ml/public/application/routing/routes/index.ts b/x-pack/plugins/ml/public/application/routing/routes/index.ts index 12ddc39e0e23e..3b481ab6cde59 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/index.ts +++ b/x-pack/plugins/ml/public/application/routing/routes/index.ts @@ -16,3 +16,4 @@ export { timeSeriesExplorerRouteFactory } from './timeseriesexplorer'; export * from './explorer'; export * from './access_denied'; export * from './trained_models'; +export * from './notifications'; diff --git a/x-pack/plugins/ml/public/application/routing/routes/notifications.tsx b/x-pack/plugins/ml/public/application/routing/routes/notifications.tsx new file mode 100644 index 0000000000000..238aacf86bdc7 --- /dev/null +++ b/x-pack/plugins/ml/public/application/routing/routes/notifications.tsx @@ -0,0 +1,62 @@ +/* + * 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, Suspense } from 'react'; +import { i18n } from '@kbn/i18n'; +import { PageLoader, PageProps } from '../router'; +import { useResolver } from '../use_resolver'; +import { checkFullLicense } from '../../license'; +import { checkGetJobsCapabilitiesResolver } from '../../capabilities/check_capabilities'; +import { getMlNodeCount } from '../../ml_nodes_check'; +import { loadMlServerInfo } from '../../services/ml_server_info'; +import { getBreadcrumbWithUrlForApp } from '../breadcrumbs'; +import type { MlRoute } from '..'; +import { NavigateToPath, useTimefilter } from '../../contexts/kibana'; + +const NotificationsPage = React.lazy(() => import('../../notifications/page')); + +export const notificationsRouteFactory = ( + navigateToPath: NavigateToPath, + basePath: string +): MlRoute => ({ + id: 'notifications', + path: '/notifications', + title: i18n.translate('xpack.ml.notifications.notificationsLabel', { + defaultMessage: 'Notifications', + }), + enableDatePicker: true, + render: (props, deps) => , + breadcrumbs: [ + getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), + { + text: i18n.translate('xpack.ml.overview.notificationsLabel', { + defaultMessage: 'Notifications', + }), + }, + ], + 'data-test-subj': 'mlPageNotifications', +}); + +const PageWrapper: FC = ({ deps }) => { + const { redirectToMlAccessDeniedPage } = deps; + + const { context } = useResolver(undefined, undefined, deps.config, deps.dataViewsContract, { + checkFullLicense, + checkGetJobsCapabilities: () => checkGetJobsCapabilitiesResolver(redirectToMlAccessDeniedPage), + getMlNodeCount, + loadMlServerInfo, + }); + useTimefilter({ timeRangeSelector: false, autoRefreshSelector: false }); + + return ( + + + + + + ); +}; 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 9f3c3a4350a79..dbe41669485fc 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 @@ -44,6 +44,7 @@ import type { DataRecognizerConfigResponse, Module } from '../../../../common/ty import { getHttp } from '../../util/dependency_cache'; import type { RuntimeMappings } from '../../../../common/types/fields'; import type { DatafeedValidationResponse } from '../../../../common/types/job_validation'; +import { notificationsProvider } from './notifications'; export interface MlInfoResponse { defaults: MlServerDefaults; @@ -729,5 +730,6 @@ export function mlApiServicesProvider(httpService: HttpService) { jobs: jobsApiProvider(httpService), savedObjects: savedObjectsApiProvider(httpService), trainedModels: trainedModelsApiProvider(httpService), + notifications: notificationsProvider(httpService), }; } diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/notifications.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/notifications.ts new file mode 100644 index 0000000000000..653ceebc52cda --- /dev/null +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/notifications.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omitBy } from 'lodash'; +import { isDefined } from '../../../../common/types/guards'; +import type { + NotificationsQueryParams, + NotificationsSearchResponse, +} from '../../../../common/types/notifications'; +import { basePath } from '.'; +import type { HttpService } from '../http_service'; +import type { + NotificationsCountQueryParams, + NotificationsCountResponse, +} from '../../../../common/types/notifications'; + +export function notificationsProvider(httpService: HttpService) { + const apiBasePath = basePath(); + + return { + findMessages(params: NotificationsQueryParams) { + return httpService.http({ + path: `${apiBasePath}/notifications`, + method: 'GET', + query: omitBy(params, (v) => !isDefined(v)), + }); + }, + + countMessages$(params: NotificationsCountQueryParams) { + return httpService.http$({ + path: `${apiBasePath}/notifications/count`, + method: 'GET', + query: omitBy(params, (v) => !isDefined(v)), + }); + }, + }; +} diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/series_controls/series_controls.tsx b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/series_controls/series_controls.tsx index e5f3e097b5f54..0df10505e73cc 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/series_controls/series_controls.tsx +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/series_controls/series_controls.tsx @@ -113,8 +113,7 @@ export const SeriesControls: FC = ({ return getControlsForDetector(selectedDetectorIndex, selectedEntities, selectedJobId); }, [selectedDetectorIndex, selectedEntities, selectedJobId]); - const [storageFieldsConfig, setStorageFieldsConfig] = - useStorage(ML_ENTITY_FIELDS_CONFIG); + const [storageFieldsConfig, setStorageFieldsConfig] = useStorage(ML_ENTITY_FIELDS_CONFIG); // Merge the default config with the one from the local storage const resultFieldsConfig = useMemo(() => { diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx index 8073940aef438..a216436e6c90a 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx @@ -697,7 +697,7 @@ export const ModelsList: FC = ({ : undefined; const { onTableChange, pagination, sorting } = useTableSettings( - items, + items.length, pageState, updatePageState ); diff --git a/x-pack/plugins/ml/public/application/trained_models/nodes_overview/nodes_list.tsx b/x-pack/plugins/ml/public/application/trained_models/nodes_overview/nodes_list.tsx index 9e2480f265dd4..4775642006c20 100644 --- a/x-pack/plugins/ml/public/application/trained_models/nodes_overview/nodes_list.tsx +++ b/x-pack/plugins/ml/public/application/trained_models/nodes_overview/nodes_list.tsx @@ -165,7 +165,7 @@ export const NodesList: FC = ({ compactView = false }) => { }; }, [items]); - let tableSettings: object = useTableSettings(items, pageState, updatePageState); + let tableSettings: object = useTableSettings(items.length, pageState, updatePageState); const search: EuiSearchBarProps = { query: searchQueryText, diff --git a/x-pack/plugins/ml/public/locator/formatters/notifications.ts b/x-pack/plugins/ml/public/locator/formatters/notifications.ts new file mode 100644 index 0000000000000..47103bba91b29 --- /dev/null +++ b/x-pack/plugins/ml/public/locator/formatters/notifications.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { ML_PAGES } from '../../../common/constants/locator'; +import { NotificationsUrlState } from '../../../common/types/locator'; + +export interface NotificationsAppState { + level?: string; +} + +export function formatNotificationsUrl( + appBasePath: string, + pageState: NotificationsUrlState['pageState'] +): string { + let url = `${appBasePath}/${ML_PAGES.NOTIFICATIONS}`; + + if (pageState) { + const appState: NotificationsAppState = {}; + const globalState = {}; + + const { level } = pageState; + if (!!level) { + appState.level = level; + } + + if (isPopulatedObject(globalState)) { + url = setStateToKbnUrl('_g', globalState, { useHash: false, storeInHashQuery: false }, url); + } + if (isPopulatedObject(appState)) { + url = setStateToKbnUrl('_a', appState, { useHash: false, storeInHashQuery: false }, url); + } + } + + return url; +} diff --git a/x-pack/plugins/ml/public/locator/ml_locator.ts b/x-pack/plugins/ml/public/locator/ml_locator.ts index 8281831cb4610..ed80e50d75132 100644 --- a/x-pack/plugins/ml/public/locator/ml_locator.ts +++ b/x-pack/plugins/ml/public/locator/ml_locator.ts @@ -6,6 +6,7 @@ */ import type { LocatorDefinition, KibanaLocation } from '@kbn/share-plugin/public'; +import { formatNotificationsUrl } from './formatters/notifications'; import { DataFrameAnalyticsExplorationUrlState, MlLocatorParams, @@ -102,6 +103,9 @@ export class MlLocatorDefinition implements LocatorDefinition { case ML_PAGES.CALENDARS_EDIT: path = formatEditCalendarUrl('', params.pageState); break; + case ML_PAGES.NOTIFICATIONS: + path = formatNotificationsUrl('', params.pageState); + break; default: throw new Error('Page type is not provided or unknown'); diff --git a/x-pack/plugins/ml/server/models/notifications_service/index.ts b/x-pack/plugins/ml/server/models/notifications_service/index.ts new file mode 100644 index 0000000000000..ef47f433da480 --- /dev/null +++ b/x-pack/plugins/ml/server/models/notifications_service/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { NotificationsService } from './notifications_service_provider'; diff --git a/x-pack/plugins/ml/server/models/notifications_service/notifications_service_provider.ts b/x-pack/plugins/ml/server/models/notifications_service/notifications_service_provider.ts new file mode 100644 index 0000000000000..3a28b86a60b8b --- /dev/null +++ b/x-pack/plugins/ml/server/models/notifications_service/notifications_service_provider.ts @@ -0,0 +1,192 @@ +/* + * 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 { IScopedClusterClient } from '@kbn/core/server'; +import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { MLSavedObjectService } from '../../saved_objects'; +import type { NotificationItem, NotificationSource } from '../../../common/types/notifications'; +import { ML_NOTIFICATION_INDEX_PATTERN } from '../../../common/constants/index_patterns'; +import type { + MessagesSearchParams, + NotificationsCountParams, +} from '../../routes/schemas/notifications_schema'; +import { NotificationsSearchResponse } from '../../../common/types/notifications'; + +const MAX_NOTIFICATIONS_SIZE = 10000; + +export class NotificationsService { + constructor( + private readonly scopedClusterClient: IScopedClusterClient, + private readonly mlSavedObjectService: MLSavedObjectService + ) {} + + /** + * Searches notifications based on the criteria. + * + * {@link ML_NOTIFICATION_INDEX_PATTERN} uses job_id field for all types of entities, + * e.g. anomaly_detector, data_frame_analytics jobs and inference models, hence + * to make sure the results are space aware, we have to perform separate requests + * for each type of entities. + * + */ + async searchMessages(params: MessagesSearchParams) { + const [adJobIds, dfaJobIds, modelIds] = await Promise.all([ + this.mlSavedObjectService.getAnomalyDetectionJobIds(), + this.mlSavedObjectService.getDataFrameAnalyticsJobIds(), + this.mlSavedObjectService.getTrainedModelsIds(), + ]); + + const results = await Promise.all( + [ + { type: 'anomaly_detector', ids: adJobIds }, + { type: 'data_frame_analytics', ids: dfaJobIds }, + { type: 'inference', ids: modelIds }, + { type: 'system' }, + ] + .filter((v) => v.ids === undefined || v.ids.length > 0) + .map(async (v) => { + const responseBody = + await this.scopedClusterClient.asInternalUser.search( + { + index: ML_NOTIFICATION_INDEX_PATTERN, + ignore_unavailable: true, + from: 0, + size: MAX_NOTIFICATIONS_SIZE, + body: { + sort: [{ [params.sortField]: { order: params.sortDirection } }], + query: { + bool: { + ...(params.queryString + ? { + must: [ + { + query_string: { + query: params.queryString, + default_field: 'message', + }, + }, + ], + } + : {}), + filter: [ + ...(v.ids + ? [ + { + terms: { + job_id: v.ids as string[], + }, + }, + ] + : []), + { + term: { + job_type: { + value: v.type, + }, + }, + }, + ...(params.earliest || params.latest + ? [ + { + range: { + timestamp: { + ...(params.earliest ? { gt: params.earliest } : {}), + ...(params.latest ? { lte: params.latest } : {}), + }, + }, + }, + ] + : []), + ], + }, + }, + }, + }, + { maxRetries: 0 } + ); + + return { + total: (responseBody.hits.total as SearchTotalHits).value, + results: responseBody.hits.hits.map((result) => { + return { + ...result._source, + id: result._id, + }; + }), + } as NotificationsSearchResponse; + }) + ); + + const response = results.reduce( + (acc, curr) => { + acc.total += curr.total; + acc.results = acc.results.concat(curr.results); + return acc; + }, + { total: 0, results: [] } + ); + + function getSortCallback( + sortField: keyof NotificationItem, + sortDirection: 'asc' | 'desc' + ): (a: NotificationItem, b: NotificationItem) => number { + if (sortField === 'timestamp') { + if (sortDirection === 'asc') { + return (a, b) => a.timestamp - b.timestamp; + } else { + return (a, b) => b.timestamp - a.timestamp; + } + } else { + if (sortDirection === 'asc') { + return (a, b) => (a[sortField] ?? '').localeCompare(b[sortField]); + } else { + return (a, b) => (b[sortField] ?? '').localeCompare(a[sortField]); + } + } + } + + response.results = response.results.sort( + getSortCallback(params.sortField, params.sortDirection) + ); + + return response; + } + + /** + * Provides a number of messages by level. + */ + async countMessages(params: NotificationsCountParams) { + const responseBody = await this.scopedClusterClient.asInternalUser.search({ + size: 0, + index: ML_NOTIFICATION_INDEX_PATTERN, + body: { + query: { + bool: { + filter: { + range: { + timestamp: { + gt: params.lastCheckedAt, + }, + }, + }, + }, + }, + aggs: { + by_level: { + terms: { field: 'level' }, + }, + }, + }, + }); + + // @ts-ignore + return responseBody.aggregations.by_level.buckets.reduce((acc, curr) => { + acc[curr.key] = curr.doc_count; + return acc; + }, {}); + } +} diff --git a/x-pack/plugins/ml/server/plugin.ts b/x-pack/plugins/ml/server/plugin.ts index cf8b2717522ab..4b03c3beb34e5 100644 --- a/x-pack/plugins/ml/server/plugin.ts +++ b/x-pack/plugins/ml/server/plugin.ts @@ -23,6 +23,7 @@ import { DEFAULT_APP_CATEGORIES } from '@kbn/core/server'; import type { PluginStart as DataViewsPluginStart } from '@kbn/data-views-plugin/server'; import type { SpacesPluginSetup } from '@kbn/spaces-plugin/server'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/server'; +import { notificationsRoutes } from './routes/notifications'; import type { PluginsSetup, PluginsStart, RouteInitialization } from './types'; import { PLUGIN_ID } from '../common/constants/app'; import type { MlCapabilities } from '../common/types/capabilities'; @@ -228,6 +229,7 @@ export class MlServerPlugin resolveMlCapabilities, }); trainedModelsRoutes(routeInit); + notificationsRoutes(routeInit); alertingRoutes(routeInit, sharedServicesProviders); initMlServerLog({ log: this.log }); diff --git a/x-pack/plugins/ml/server/routes/apidoc.json b/x-pack/plugins/ml/server/routes/apidoc.json index 0cbc716399545..893f541e6c9f6 100644 --- a/x-pack/plugins/ml/server/routes/apidoc.json +++ b/x-pack/plugins/ml/server/routes/apidoc.json @@ -65,6 +65,10 @@ "SetupModule", "CheckExistingModuleJobs", + "Notifications", + "GetNotifications", + "GetNotificationCounts", + "Annotations", "GetAnnotations", "IndexAnnotations", diff --git a/x-pack/plugins/ml/server/routes/notifications.ts b/x-pack/plugins/ml/server/routes/notifications.ts new file mode 100644 index 0000000000000..5b267e2d39079 --- /dev/null +++ b/x-pack/plugins/ml/server/routes/notifications.ts @@ -0,0 +1,88 @@ +/* + * 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 { NotificationsService } from '../models/notifications_service'; +import { + getNotificationsCountQuerySchema, + getNotificationsQuerySchema, +} from './schemas/notifications_schema'; +import { wrapError } from '../client/error_wrapper'; +import { RouteInitialization } from '../types'; + +export function notificationsRoutes({ router, routeGuard }: RouteInitialization) { + /** + * @apiGroup Notifications + * + * @api {get} /api/ml/notifications Get notifications + * @apiName GetNotifications + * @apiDescription Retrieves notifications based on provided criteria. + */ + router.get( + { + path: '/api/ml/notifications', + validate: { + query: getNotificationsQuerySchema, + }, + options: { + tags: [ + 'access:ml:canGetJobs', + 'access:ml:canGetDataFrameAnalytics', + 'access:ml:canGetTrainedModels', + ], + }, + }, + routeGuard.fullLicenseAPIGuard(async ({ client, request, response, mlSavedObjectService }) => { + try { + const notificationsService = new NotificationsService(client, mlSavedObjectService); + + const results = await notificationsService.searchMessages(request.query); + + return response.ok({ + body: results, + }); + } catch (e) { + return response.customError(wrapError(e)); + } + }) + ); + + /** + * @apiGroup Notifications + * + * @api {get} /api/ml/notifications/count Get notification counts + * @apiName GetNotificationCounts + * @apiDescription Counts notifications by level. + */ + router.get( + { + path: '/api/ml/notifications/count', + validate: { + query: getNotificationsCountQuerySchema, + }, + options: { + tags: [ + 'access:ml:canGetJobs', + 'access:ml:canGetDataFrameAnalytics', + 'access:ml:canGetTrainedModels', + ], + }, + }, + routeGuard.fullLicenseAPIGuard(async ({ client, mlSavedObjectService, request, response }) => { + try { + const notificationsService = new NotificationsService(client, mlSavedObjectService); + + const results = await notificationsService.countMessages(request.query); + + return response.ok({ + body: results, + }); + } catch (e) { + return response.customError(wrapError(e)); + } + }) + ); +} diff --git a/x-pack/plugins/ml/server/routes/schemas/notifications_schema.ts b/x-pack/plugins/ml/server/routes/schemas/notifications_schema.ts new file mode 100644 index 0000000000000..a82691ee52813 --- /dev/null +++ b/x-pack/plugins/ml/server/routes/schemas/notifications_schema.ts @@ -0,0 +1,61 @@ +/* + * 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 { schema, TypeOf } from '@kbn/config-schema'; + +export const getNotificationsQuerySchema = schema.object({ + /** + * Message level, e.g. info, error + */ + level: schema.maybe(schema.string()), + /** + * Message type, e.g. anomaly_detector + */ + type: schema.maybe(schema.string()), + /** + * Search string for the message content + */ + queryString: schema.maybe(schema.string()), + /** + * Page numer, zero-indexed + */ + from: schema.number({ defaultValue: 0 }), + /** + * Number of messages to return + */ + size: schema.number({ defaultValue: 10 }), + /** + * Sort field + */ + sortField: schema.oneOf( + [ + schema.literal('timestamp'), + schema.literal('level'), + schema.literal('job_type'), + schema.literal('job_id'), + ], + { + defaultValue: 'timestamp', + } + ), + /** + * Sort direction + */ + sortDirection: schema.oneOf([schema.literal('asc'), schema.literal('desc')], { + defaultValue: 'desc', + }), + earliest: schema.maybe(schema.string()), + latest: schema.maybe(schema.string()), +}); + +export const getNotificationsCountQuerySchema = schema.object({ + lastCheckedAt: schema.number(), +}); + +export type MessagesSearchParams = TypeOf; + +export type NotificationsCountParams = TypeOf; diff --git a/x-pack/plugins/ml/server/saved_objects/service.ts b/x-pack/plugins/ml/server/saved_objects/service.ts index f473397be9079..d660207e16b89 100644 --- a/x-pack/plugins/ml/server/saved_objects/service.ts +++ b/x-pack/plugins/ml/server/saved_objects/service.ts @@ -637,6 +637,18 @@ export function mlSavedObjectServiceFactory( return models.map((o) => o.attributes[idType]); } + async function getAnomalyDetectionJobIds() { + return _getIds('anomaly-detector', 'job_id'); + } + + async function getDataFrameAnalyticsJobIds() { + return _getIds('data-frame-analytics', 'job_id'); + } + + async function getTrainedModelsIds() { + return _getModelIds('model_id'); + } + async function findTrainedModelsObjectForJobs( jobIds: string[], currentSpaceOnly: boolean = true @@ -744,6 +756,9 @@ export function mlSavedObjectServiceFactory( } return { + getAnomalyDetectionJobIds, + getDataFrameAnalyticsJobIds, + getTrainedModelsIds, getAllJobObjects, getJobObject, createAnomalyDetectionJob, diff --git a/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts b/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts index b7e292e945a4f..1745694e30831 100644 --- a/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts +++ b/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts @@ -50,6 +50,9 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('should display the enabled "Overview" tab'); await ml.navigation.assertOverviewTabEnabled(true); + await ml.testExecution.logTestStep('should display the enabled "Notifications" tab'); + await ml.navigation.assertNotificationsTabEnabled(true); + await ml.testExecution.logTestStep( 'should display the enabled "Anomaly Detection" section correctly' ); diff --git a/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts b/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts index bc4c81ccf7f2d..10477c5a4797a 100644 --- a/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts +++ b/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts @@ -50,6 +50,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await ml.testExecution.logTestStep('should display the enabled "Overview" tab'); await ml.navigation.assertOverviewTabEnabled(true); + await ml.testExecution.logTestStep('should display the enabled "Notifications" tab'); + await ml.navigation.assertNotificationsTabEnabled(true); + await ml.testExecution.logTestStep( 'should display the enabled "Anomaly Detection" section correctly' ); diff --git a/x-pack/test/functional/apps/ml/short_tests/pages.ts b/x-pack/test/functional/apps/ml/short_tests/pages.ts index d81b5933d77df..e17454d0fa222 100644 --- a/x-pack/test/functional/apps/ml/short_tests/pages.ts +++ b/x-pack/test/functional/apps/ml/short_tests/pages.ts @@ -24,6 +24,9 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('loads the overview page'); await ml.navigation.navigateToOverview(); + await ml.testExecution.logTestStep('loads the notifications page'); + await ml.navigation.navigateToNotifications(); + await ml.testExecution.logTestStep('loads the anomaly detection area'); await ml.navigation.navigateToAnomalyDetection(); diff --git a/x-pack/test/functional/services/ml/navigation.ts b/x-pack/test/functional/services/ml/navigation.ts index 8261c3954b068..bc05cfd6a9bc3 100644 --- a/x-pack/test/functional/services/ml/navigation.ts +++ b/x-pack/test/functional/services/ml/navigation.ts @@ -102,6 +102,10 @@ export function MachineLearningNavigationProvider({ await this.assertTabEnabled('~mlMainTab & ~overview', expectedValue); }, + async assertNotificationsTabEnabled(expectedValue: boolean) { + await this.assertTabEnabled('~mlMainTab & ~notifications', expectedValue); + }, + async assertAnomalyDetectionTabEnabled(expectedValue: boolean) { await this.assertTabEnabled('~mlMainTab & ~anomalyDetection', expectedValue); }, @@ -146,6 +150,10 @@ export function MachineLearningNavigationProvider({ await this.navigateToArea('~mlMainTab & ~overview', 'mlPageOverview'); }, + async navigateToNotifications() { + await this.navigateToArea('~mlMainTab & ~notifications', 'mlPageNotifications'); + }, + async navigateToAnomalyDetection() { await this.navigateToArea('~mlMainTab & ~anomalyDetection', 'mlPageJobManagement'); }, From ed6411e8139165847f1c5e7cc67b69f06b11211c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Thu, 15 Sep 2022 16:28:45 -0400 Subject: [PATCH 17/79] [APM] Add Experimental Mode for APM UI (#139553) * experimental tab * moving apm specific settings * reverting and addin LazyField * one setting to rule them all * renaming tab * new setting option and flyout * flyout footer * refactoring * creating hook * removing utils * saving on kbn adv settings * saved object * refactoring * extracting apm experimental features * auto subs * removing auto-subscribe feature * fixing ci * removing common settings * new api to fetch labs items * renaming * renaming labs settings * fixing ci * handling exception * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * fixing ci * addressing pr comments Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- src/plugins/advanced_settings/public/index.ts | 4 + .../server/collectors/management/schema.ts | 4 + .../server/collectors/management/types.ts | 1 + src/plugins/telemetry/schema/oss_plugins.json | 8 +- x-pack/plugins/apm/kibana.json | 5 +- .../app/settings/general_settings/index.tsx | 91 +++++++++++ .../components/routing/settings/index.tsx | 11 +- .../routing/templates/settings_template.tsx | 57 +++---- .../shared/apm_header_action_menu/index.tsx | 8 + .../apm_header_action_menu/labs/index.tsx | 28 ++++ .../labs/labs_flyout.tsx | 147 ++++++++++++++++++ .../hooks/use_apm_editable_settings.tsx | 104 +++++++++++++ .../get_global_apm_server_route_repository.ts | 2 + .../apm/server/routes/settings/labs/route.ts | 22 +++ x-pack/plugins/observability/common/index.ts | 5 +- .../observability/common/ui_settings_keys.ts | 1 + x-pack/plugins/observability/server/index.ts | 2 + .../observability/server/ui_settings.ts | 24 ++- 18 files changed, 482 insertions(+), 42 deletions(-) create mode 100644 x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx create mode 100644 x-pack/plugins/apm/public/components/shared/apm_header_action_menu/labs/index.tsx create mode 100644 x-pack/plugins/apm/public/components/shared/apm_header_action_menu/labs/labs_flyout.tsx create mode 100644 x-pack/plugins/apm/public/hooks/use_apm_editable_settings.tsx create mode 100644 x-pack/plugins/apm/server/routes/settings/labs/route.ts diff --git a/src/plugins/advanced_settings/public/index.ts b/src/plugins/advanced_settings/public/index.ts index 58222c19a5172..6d6bf6f055f41 100644 --- a/src/plugins/advanced_settings/public/index.ts +++ b/src/plugins/advanced_settings/public/index.ts @@ -20,6 +20,10 @@ export { ComponentRegistry } from './component_registry'; const LazyField = React.lazy(() => import('./management_app/components/field')); export { LazyField }; +export { toEditableConfig } from './management_app/lib/to_editable_config'; + export function plugin(initializerContext: PluginInitializerContext) { return new AdvancedSettingsPlugin(); } + +export type { FieldState } from './management_app/types'; diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts index e8a9aff9079e8..fe378c655ff81 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts @@ -518,6 +518,10 @@ export const stackManagementSchema: MakeSchemaFrom = { type: 'boolean', _meta: { description: 'Non-default value of setting.' }, }, + 'observability:apmLabsButton': { + type: 'boolean', + _meta: { description: 'Non-default value of setting.' }, + }, 'observability:apmProgressiveLoading': { type: 'keyword', _meta: { description: 'Non-default value of setting.' }, diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts index 5c1b55acfae72..b94f55eb6d20a 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts @@ -139,6 +139,7 @@ export interface UsageStats { 'lens:useFieldExistenceSampling': boolean; 'metrics:allowCheckingForFailedShards': boolean; 'observability:apmOperationsTab': boolean; + 'observability:apmLabsButton': boolean; 'observability:apmProgressiveLoading': string; 'observability:apmServiceGroupMaxNumberOfServices': number; 'observability:apmServiceInventoryOptimizedSorting': boolean; diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index c5d90ba52c1cb..645fc2f4251e1 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -8622,6 +8622,12 @@ "description": "Non-default value of setting." } }, + "observability:apmLabsButton": { + "type": "boolean", + "_meta": { + "description": "Non-default value of setting." + } + }, "observability:apmProgressiveLoading": { "type": "keyword", "_meta": { @@ -10257,4 +10263,4 @@ } } } -} +} \ No newline at end of file diff --git a/x-pack/plugins/apm/kibana.json b/x-pack/plugins/apm/kibana.json index d8ff2086fd291..95bbeb7b0b19d 100644 --- a/x-pack/plugins/apm/kibana.json +++ b/x-pack/plugins/apm/kibana.json @@ -19,7 +19,8 @@ "triggersActionsUi", "share", "unifiedSearch", - "dataViews" + "dataViews", + "advancedSettings" ], "optionalPlugins": [ "actions", @@ -48,4 +49,4 @@ "observability", "esUiShared" ] -} +} \ No newline at end of file diff --git a/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx b/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx new file mode 100644 index 0000000000000..ef41b75aedeaf --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiButton } from '@elastic/eui'; +import { LazyField } from '@kbn/advanced-settings-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { + apmLabsButton, + apmProgressiveLoading, + apmServiceGroupMaxNumberOfServices, + defaultApmServiceEnvironment, + enableComparisonByDefault, + enableInspectEsQueries, +} from '@kbn/observability-plugin/common'; +import { isEmpty } from 'lodash'; +import React from 'react'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; +import { useApmEditableSettings } from '../../../../hooks/use_apm_editable_settings'; + +const apmSettingsKeys = [ + enableComparisonByDefault, + defaultApmServiceEnvironment, + apmProgressiveLoading, + apmServiceGroupMaxNumberOfServices, + enableInspectEsQueries, + apmLabsButton, +]; + +export function GeneralSettings() { + const { docLinks, notifications } = useApmPluginContext().core; + const { + handleFieldChange, + settingsEditableConfig, + unsavedChanges, + saveAll, + isSaving, + } = useApmEditableSettings(apmSettingsKeys); + + async function handleSave() { + try { + const reloadPage = Object.keys(unsavedChanges).some((key) => { + return settingsEditableConfig[key].requiresPageReload; + }); + await saveAll(); + if (reloadPage) { + window.location.reload(); + } + } catch (e) { + const error = e as Error; + notifications.toasts.addDanger({ + title: i18n.translate('xpack.apm.apmSettings.save.error', { + defaultMessage: 'An error occurred while saving the settings', + }), + text: error.message, + }); + } + } + + return ( + <> + {apmSettingsKeys.map((settingKey) => { + const editableConfig = settingsEditableConfig[settingKey]; + return ( + + ); + })} + + {i18n.translate('xpack.apm.labs.reload', { + defaultMessage: 'Reload to apply changes', + })} + + + ); +} diff --git a/x-pack/plugins/apm/public/components/routing/settings/index.tsx b/x-pack/plugins/apm/public/components/routing/settings/index.tsx index ac93c31581e61..161afd2706b68 100644 --- a/x-pack/plugins/apm/public/components/routing/settings/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/settings/index.tsx @@ -20,6 +20,7 @@ import { CustomLinkOverview } from '../../app/settings/custom_link'; import { Schema } from '../../app/settings/schema'; import { AnomalyDetection } from '../../app/settings/anomaly_detection'; import { AgentKeys } from '../../app/settings/agent_keys'; +import { GeneralSettings } from '../../app/settings/general_settings'; function page({ title, @@ -54,6 +55,14 @@ export const settings = { ), children: { + '/settings/general-settings': page({ + title: i18n.translate( + 'xpack.apm.views.settings.generalSettings.title', + { defaultMessage: 'General settings' } + ), + element: , + tab: 'general-settings', + }), '/settings/agent-configuration': page({ tab: 'agent-configuration', title: i18n.translate( @@ -133,7 +142,7 @@ export const settings = { tab: 'agent-keys', }), '/settings': { - element: , + element: , }, }, }, diff --git a/x-pack/plugins/apm/public/components/routing/templates/settings_template.tsx b/x-pack/plugins/apm/public/components/routing/templates/settings_template.tsx index aaec73e11ed68..04145002cc1b8 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/settings_template.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/settings_template.tsx @@ -8,12 +8,11 @@ import { EuiPageHeaderProps } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { History } from 'history'; -import { useHistory } from 'react-router-dom'; import { CoreStart } from '@kbn/core/public'; import { ApmMainTemplate } from './apm_main_template'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; -import { getLegacyApmHref } from '../../shared/links/apm/apm_link'; +import { useApmRouter } from '../../../hooks/use_apm_router'; +import { ApmRouter } from '../apm_route_config'; type Tab = NonNullable[0] & { key: @@ -22,7 +21,8 @@ type Tab = NonNullable[0] & { | 'anomaly-detection' | 'apm-indices' | 'custom-links' - | 'schema'; + | 'schema' + | 'general-settings'; hidden?: boolean; }; @@ -33,8 +33,8 @@ interface Props { export function SettingsTemplate({ children, selectedTab }: Props) { const { core } = useApmPluginContext(); - const history = useHistory(); - const tabs = getTabs({ history, core, selectedTab }); + const router = useApmRouter(); + const tabs = getTabs({ core, selectedTab, router }); return ( ( + apmLabsButton, + false + ); + return ( + {isLabsButtonEnabled && } !state); + } + + return ( + <> + + {i18n.translate('xpack.apm.labs', { defaultMessage: 'Labs' })} + + {isOpen && } + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/labs/labs_flyout.tsx b/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/labs/labs_flyout.tsx new file mode 100644 index 0000000000000..408070ab88900 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/apm_header_action_menu/labs/labs_flyout.tsx @@ -0,0 +1,147 @@ +/* + * 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 { + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiHorizontalRule, + EuiIcon, + EuiLoadingContent, + EuiTitle, +} from '@elastic/eui'; +import { LazyField } from '@kbn/advanced-settings-plugin/public'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; +import { useApmEditableSettings } from '../../../../hooks/use_apm_editable_settings'; +import { useFetcher, FETCH_STATUS } from '../../../../hooks/use_fetcher'; + +interface Props { + onClose: () => void; +} + +export function LabsFlyout({ onClose }: Props) { + const { docLinks, notifications } = useApmPluginContext().core; + + const { data, status } = useFetcher( + (callApmApi) => callApmApi('GET /internal/apm/settings/labs'), + [] + ); + const labsItems = data?.labsItems || []; + + const { + handleFieldChange, + settingsEditableConfig, + unsavedChanges, + saveAll, + isSaving, + cleanUnsavedChanges, + } = useApmEditableSettings(labsItems); + + async function handleSave() { + try { + const reloadPage = Object.keys(unsavedChanges).some((key) => { + return settingsEditableConfig[key].requiresPageReload; + }); + + await saveAll(); + + if (reloadPage) { + window.location.reload(); + } else { + onClose(); + } + } catch (e) { + const error = e as Error; + notifications.toasts.addDanger({ + title: i18n.translate('xpack.apm.apmSettings.save.error', { + defaultMessage: 'An error occurred while saving the settings', + }), + text: error.message, + }); + } + } + + function handelCancel() { + cleanUnsavedChanges(); + onClose(); + } + + const isLoading = + status === FETCH_STATUS.NOT_INITIATED || status === FETCH_STATUS.LOADING; + + return ( + + + + + + + + +

+ {i18n.translate('xpack.apm.labs', { + defaultMessage: 'Labs', + })} +

+
+
+
+
+ + {isLoading ? ( + + ) : ( + <> + + {labsItems.map((settingKey, i) => { + const editableConfig = settingsEditableConfig[settingKey]; + return ( + <> + + + + ); + })} + + + + + + {i18n.translate('xpack.apm.labs.cancel', { + defaultMessage: 'Cancel', + })} + + + + + {i18n.translate('xpack.apm.labs.reload', { + defaultMessage: 'Reload to apply changes', + })} + + + + + + )} +
+ ); +} diff --git a/x-pack/plugins/apm/public/hooks/use_apm_editable_settings.tsx b/x-pack/plugins/apm/public/hooks/use_apm_editable_settings.tsx new file mode 100644 index 0000000000000..05f5edeaec505 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_apm_editable_settings.tsx @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 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 { useMemo, useState } from 'react'; +import { FieldState } from '@kbn/advanced-settings-plugin/public'; +import { toEditableConfig } from '@kbn/advanced-settings-plugin/public'; +import { IUiSettingsClient } from '@kbn/core/public'; +import { isEmpty } from 'lodash'; + +function getEditableConfig({ + settingsKeys, + uiSettings, +}: { + settingsKeys: string[]; + uiSettings?: IUiSettingsClient; +}) { + if (!uiSettings) { + return {}; + } + const uiSettingsDefinition = uiSettings.getAll(); + const config: Record> = {}; + + settingsKeys.forEach((key) => { + const settingDef = uiSettingsDefinition?.[key]; + if (settingDef) { + const editableConfig = toEditableConfig({ + def: settingDef, + name: key, + value: settingDef.userValue, + isCustom: uiSettings.isCustom(key), + isOverridden: uiSettings.isOverridden(key), + }); + config[key] = editableConfig; + } + }); + return config; +} + +export function useApmEditableSettings(settingsKeys: string[]) { + const { services } = useKibana(); + const { uiSettings } = services; + const [isSaving, setIsSaving] = useState(false); + const [forceReloadSettings, setForceReloadSettings] = useState(0); + const [unsavedChanges, setUnsavedChanges] = useState< + Record + >({}); + + const settingsEditableConfig = useMemo( + () => { + return getEditableConfig({ settingsKeys, uiSettings }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [uiSettings, settingsKeys, forceReloadSettings] + ); + + function handleFieldChange(key: string, fieldState: FieldState) { + setUnsavedChanges((state) => { + const newState = { ...state }; + const { value, defVal } = settingsEditableConfig[key]; + const currentValue = value === undefined ? defVal : value; + if (currentValue === fieldState.value) { + // Delete property from unsaved object if user changes it to the value that was already saved + delete newState[key]; + } else { + newState[key] = fieldState; + } + return newState; + }); + } + + function cleanUnsavedChanges() { + setUnsavedChanges({}); + } + + async function saveAll() { + if (uiSettings && !isEmpty(unsavedChanges)) { + try { + setIsSaving(true); + const arr = Object.entries(unsavedChanges).map(([key, fieldState]) => + uiSettings.set(key, fieldState.value) + ); + + await Promise.all(arr); + setForceReloadSettings((state) => ++state); + cleanUnsavedChanges(); + } finally { + setIsSaving(false); + } + } + } + + return { + settingsEditableConfig, + unsavedChanges, + handleFieldChange, + saveAll, + isSaving, + cleanUnsavedChanges, + }; +} diff --git a/x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts b/x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts index 273c3952c080c..0a6beb7f992d6 100644 --- a/x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts +++ b/x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts @@ -41,6 +41,7 @@ import { timeRangeMetadataRoute } from '../time_range_metadata/route'; import { traceRouteRepository } from '../traces/route'; import { transactionRouteRepository } from '../transactions/route'; import { storageExplorerRouteRepository } from '../storage_explorer/route'; +import { labsRouteRepository } from '../settings/labs/route'; function getTypedGlobalApmServerRouteRepository() { const repository = { @@ -75,6 +76,7 @@ function getTypedGlobalApmServerRouteRepository() { ...infrastructureRouteRepository, ...debugTelemetryRoute, ...timeRangeMetadataRoute, + ...labsRouteRepository, }; return repository; diff --git a/x-pack/plugins/apm/server/routes/settings/labs/route.ts b/x-pack/plugins/apm/server/routes/settings/labs/route.ts new file mode 100644 index 0000000000000..608fe27106cac --- /dev/null +++ b/x-pack/plugins/apm/server/routes/settings/labs/route.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { uiSettings } from '@kbn/observability-plugin/server'; +import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; + +const getLabsRoute = createApmServerRoute({ + endpoint: 'GET /internal/apm/settings/labs', + options: { tags: ['access:apm'] }, + handler: async (): Promise<{ labsItems: string[] }> => { + const labsItems = Object.entries(uiSettings) + .filter(([key, value]): boolean | undefined => value.showInLabs) + .map(([key]): string => key); + return { labsItems }; + }, +}); + +export const labsRouteRepository = getLabsRoute; diff --git a/x-pack/plugins/observability/common/index.ts b/x-pack/plugins/observability/common/index.ts index 379404c3a48a1..6bbc6006f7c0c 100644 --- a/x-pack/plugins/observability/common/index.ts +++ b/x-pack/plugins/observability/common/index.ts @@ -12,15 +12,18 @@ export { formatDurationFromTimeUnitChar } from './utils/formatters'; export { ProcessorEvent } from './processor_event'; export { + enableNewSyntheticsView, enableInspectEsQueries, maxSuggestions, enableComparisonByDefault, defaultApmServiceEnvironment, - apmServiceInventoryOptimizedSorting, apmProgressiveLoading, + enableServiceGroups, + apmServiceInventoryOptimizedSorting, apmServiceGroupMaxNumberOfServices, apmTraceExplorerTab, apmOperationsTab, + apmLabsButton, } from './ui_settings_keys'; export { diff --git a/x-pack/plugins/observability/common/ui_settings_keys.ts b/x-pack/plugins/observability/common/ui_settings_keys.ts index f3c77c76d4186..e8550cb39a1aa 100644 --- a/x-pack/plugins/observability/common/ui_settings_keys.ts +++ b/x-pack/plugins/observability/common/ui_settings_keys.ts @@ -18,3 +18,4 @@ export const apmServiceGroupMaxNumberOfServices = 'observability:apmServiceGroupMaxNumberOfServices'; export const apmTraceExplorerTab = 'observability:apmTraceExplorerTab'; export const apmOperationsTab = 'observability:apmOperationsTab'; +export const apmLabsButton = 'observability:apmLabsButton'; diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts index c8c249426bca5..dad8d5a36bd33 100644 --- a/x-pack/plugins/observability/server/index.ts +++ b/x-pack/plugins/observability/server/index.ts @@ -51,3 +51,5 @@ export const plugin = (initContext: PluginInitializerContext) => export type { Mappings, ObservabilityPluginSetup, ScopedAnnotationsClient }; export { createOrUpdateIndex, unwrapEsResponse, WrappedElasticsearchClientError }; + +export { uiSettings } from './ui_settings'; diff --git a/x-pack/plugins/observability/server/ui_settings.ts b/x-pack/plugins/observability/server/ui_settings.ts index f22da4b96e6b9..e5c58753e244c 100644 --- a/x-pack/plugins/observability/server/ui_settings.ts +++ b/x-pack/plugins/observability/server/ui_settings.ts @@ -21,6 +21,7 @@ import { apmServiceGroupMaxNumberOfServices, apmTraceExplorerTab, apmOperationsTab, + apmLabsButton, } from '../common/ui_settings_keys'; const technicalPreviewLabel = i18n.translate( @@ -30,10 +31,12 @@ const technicalPreviewLabel = i18n.translate( } ); +type UiSettings = UiSettingsParams & { showInLabs?: boolean }; + /** * uiSettings definitions for Observability. */ -export const uiSettings: Record> = { +export const uiSettings: Record = { [enableNewSyntheticsView]: { category: [observabilityFeatureId], name: i18n.translate('xpack.observability.enableNewSyntheticsViewExperimentName', { @@ -60,6 +63,7 @@ export const uiSettings: Record Date: Thu, 15 Sep 2022 22:33:54 +0200 Subject: [PATCH 18/79] [Security Solution][Endpoint][Response Actions] Add hosts filter to actions log page (#140259) * Remove restriction on max number of agentIds We agreed on not having a restriction of 50 agent ids that a user can filter/request action log with. fixes elastic/security-team/issues/4721 * add a react query hook for fetching host names fixes elastic/security-team/issues/4721 * Add hosts filter to actions log fixes elastic/security-team/issues/4721 * Pin selected hosts to the top of the list When ever the hosts filter popover is closed and opened again, pin the already selected hosts at the top of the list. Also do not pin new selected hosts while pinned hosts are being shown. Ensure hosts are pinned to the top when page is loaded via agentIds on URL Ensure active filter count is correcly updated even when agents are selected via search fixes elastic/security-team/issues/4721 * Show 10 more items if user has selected all 50 fixes elastic/security-team/issues/4721 * use the const values review changes (@dasansol92) * use lodash utility review change (@dasansol92) * remove unnecessary dependency review changes (@gergoabraham) * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/endpoint/schema/actions.test.ts | 6 +- .../common/endpoint/schema/actions.ts | 2 +- .../components/actions_log_filter.tsx | 80 ++++++++++++- .../components/actions_log_filter_popover.tsx | 16 +-- .../components/actions_log_filters.tsx | 20 +++- .../components/hooks.tsx | 69 +++++++++-- .../response_actions_log.tsx | 15 ++- .../translations.tsx | 8 ++ .../endpoint/use_get_endpoints_list.test.ts | 110 ++++++++++++++++++ .../hooks/endpoint/use_get_endpoints_list.ts | 109 +++++++++++++++++ 10 files changed, 406 insertions(+), 29 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts create mode 100644 x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts b/x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts index 57603fb3576f4..1d7943bdefa1b 100644 --- a/x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts +++ b/x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts @@ -47,14 +47,14 @@ describe('actions schemas', () => { }).not.toThrow(); }); - it('should limit multiple agent IDs in an array to 50', () => { + it('should not limit multiple agent IDs', () => { expect(() => { EndpointActionListRequestSchema.query.validate({ - agentIds: Array(51) + agentIds: Array(255) .fill(1) .map(() => uuid.v4()), }); - }).toThrow(); + }).not.toThrow(); }); it('should work with all required query params', () => { diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts b/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts index d147d78a421f1..08adac7c9ede0 100644 --- a/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts +++ b/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts @@ -87,7 +87,7 @@ export const EndpointActionListRequestSchema = { query: schema.object({ agentIds: schema.maybe( schema.oneOf([ - schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1, maxSize: 50 }), + schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1 }), schema.string({ minLength: 1 }), ]) ), diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx index e26f1375984b5..e4f03aec7953a 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx @@ -5,7 +5,8 @@ * 2.0. */ -import React, { memo, useMemo, useCallback } from 'react'; +import { orderBy } from 'lodash/fp'; +import React, { memo, useEffect, useMemo, useState, useCallback, useRef } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiSelectable, EuiPopoverTitle } from '@elastic/eui'; import type { ResponseActions } from '../../../../../common/endpoint/service/response_actions/constants'; import { ActionsLogFilterPopover } from './actions_log_filter_popover'; @@ -25,19 +26,69 @@ export const ActionsLogFilter = memo( onChangeFilterOptions: (selectedOptions: string[]) => void; }) => { const getTestId = useTestIdGenerator('response-actions-list'); + + // popover states and handlers + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const onPopoverButtonClick = useCallback(() => { + setIsPopoverOpen(!isPopoverOpen); + }, [setIsPopoverOpen, isPopoverOpen]); + const onClosePopover = useCallback(() => { + setIsPopoverOpen(false); + }, [setIsPopoverOpen]); + + // search string state + const [searchString, setSearchString] = useState(''); const { + areHostsSelectedOnMount, + isLoading, items, setItems, hasActiveFilters, numActiveFilters, numFilters, + setAreHostsSelectedOnMount, setUrlActionsFilters, + setUrlHostsFilters, setUrlStatusesFilters, - } = useActionsLogFilter(filterName, isFlyout); + } = useActionsLogFilter({ + filterName, + isFlyout, + isPopoverOpen, + searchString, + }); + + // track popover state to pin selected options + const wasPopoverOpen = useRef(isPopoverOpen); + useEffect(() => { + return () => { + wasPopoverOpen.current = isPopoverOpen; + }; + }, [isPopoverOpen, wasPopoverOpen]); + + // compute if selected hosts should be pinned + const shouldPinSelectedHosts = useCallback( + (isNotChangingOptions: boolean = true) => { + // case 1: when no hosts are selected initially + return ( + isNotChangingOptions && wasPopoverOpen.current && isPopoverOpen && filterName === 'hosts' + ); + }, + [filterName, isPopoverOpen] + ); + + // augmented options based on hosts filter + const sortedHostsFilterOptions = useMemo(() => { + if (shouldPinSelectedHosts() || areHostsSelectedOnMount) { + // pin checked items to the top + return orderBy('checked', 'asc', items); + } + // return options as is for other filters + return items; + }, [areHostsSelectedOnMount, shouldPinSelectedHosts, items]); const isSearchable = useMemo(() => filterName !== 'statuses', [filterName]); - const onChange = useCallback( + const onOptionsChange = useCallback( (newOptions: FilterItems) => { // update filter UI options state setItems(newOptions.map((option) => option)); @@ -56,20 +107,28 @@ export const ActionsLogFilter = memo( setUrlActionsFilters( selectedItems.map((item) => getUiCommand(item as ResponseActions)).join() ); + } else if (filterName === 'hosts') { + setUrlHostsFilters(selectedItems.join()); } else if (filterName === 'statuses') { setUrlStatusesFilters(selectedItems.join()); } + // reset shouldPinSelectedHosts, setAreHostsSelectedOnMount + shouldPinSelectedHosts(false); + setAreHostsSelectedOnMount(false); } // update query state onChangeFilterOptions(selectedItems); }, [ + shouldPinSelectedHosts, filterName, isFlyout, setItems, onChangeFilterOptions, + setAreHostsSelectedOnMount, setUrlActionsFilters, + setUrlHostsFilters, setUrlStatusesFilters, ] ); @@ -85,9 +144,11 @@ export const ActionsLogFilter = memo( ); if (!isFlyout) { - // update URL params + // update URL params based on filter if (filterName === 'actions') { setUrlActionsFilters(''); + } else if (filterName === 'hosts') { + setUrlHostsFilters(''); } else if (filterName === 'statuses') { setUrlStatusesFilters(''); } @@ -101,24 +162,31 @@ export const ActionsLogFilter = memo( setItems, onChangeFilterOptions, setUrlActionsFilters, + setUrlHostsFilters, setUrlStatusesFilters, ]); return ( setSearchString(searchValue.trim()), }} > {(list, search) => { diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx index 9d2aada871707..2ee4ce50ac033 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { memo, useState, useCallback, useMemo } from 'react'; +import React, { memo, useMemo } from 'react'; import { EuiPopover, EuiFilterButton, useGeneratedHtmlId } from '@elastic/eui'; import { FILTER_NAMES } from '../translations'; import type { FilterName } from './hooks'; @@ -14,25 +14,25 @@ import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; export const ActionsLogFilterPopover = memo( ({ children, + closePopover, filterName, hasActiveFilters, + isPopoverOpen, numActiveFilters, numFilters, + onButtonClick, }: { children: React.ReactNode; + closePopover: () => void; filterName: FilterName; hasActiveFilters: boolean; + isPopoverOpen: boolean; numActiveFilters: number; numFilters: number; + onButtonClick: () => void; }) => { const getTestId = useTestIdGenerator('response-actions-list'); - const [isPopoverOpen, setIsPopoverOpen] = useState(false); - const onButtonClick = useCallback(() => { - setIsPopoverOpen(!isPopoverOpen); - }, [setIsPopoverOpen, isPopoverOpen]); - const closePopover = useCallback(() => { - setIsPopoverOpen(false); - }, [setIsPopoverOpen]); + const filterGroupPopoverId = useGeneratedHtmlId({ prefix: 'filterGroupPopover', }); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx index 9b65a2b33f752..564a8f0d8e084 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx @@ -24,27 +24,37 @@ export const ActionsLogFilters = memo( isDataLoading, isFlyout, onClick, + onChangeHostsFilter, onChangeCommandsFilter, onChangeStatusesFilter, onRefresh, onRefreshChange, onTimeChange, + showHostsFilter, }: { dateRangePickerState: DateRangePickerValues; isDataLoading: boolean; isFlyout: boolean; + onChangeHostsFilter: (selectedCommands: string[]) => void; onChangeCommandsFilter: (selectedCommands: string[]) => void; onChangeStatusesFilter: (selectedStatuses: string[]) => void; onRefresh: () => void; onRefreshChange: (evt: OnRefreshChangeProps) => void; onTimeChange: ({ start, end }: DurationRange) => void; onClick: ReturnType['refetch']; + showHostsFilter: boolean; }) => { const getTestId = useTestIdGenerator('response-actions-list'); const filters = useMemo(() => { - // TODO: add more filter names here (users, hosts, statuses) return ( <> + {showHostsFilter && ( + + )} ); - }, [isFlyout, onChangeCommandsFilter, onChangeStatusesFilter]); + }, [ + isFlyout, + onChangeCommandsFilter, + onChangeHostsFilter, + onChangeStatusesFilter, + showHostsFilter, + ]); const onClickRefreshButton = useCallback(() => onClick(), [onClick]); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx index 4552d3912f842..bb2c1b7761d5a 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useMemo, useState, useEffect } from 'react'; import type { DurationRange, OnRefreshChangeProps, @@ -23,6 +23,7 @@ import type { FILTER_NAMES } from '../translations'; import { UX_MESSAGES } from '../translations'; import { StatusBadge } from './status_badge'; import { useActionHistoryUrlParams } from './use_action_history_url_params'; +import { useGetEndpointsList } from '../../../hooks/endpoint/use_get_endpoints_list'; const defaultDateRangeOptions = Object.freeze({ autoRefreshOptions: { @@ -160,21 +161,56 @@ export const getCommandKey = ( // TODO: add more filter names here export type FilterName = keyof typeof FILTER_NAMES; -export const useActionsLogFilter = ( - filterName: FilterName, - isFlyout: boolean -): { +export const useActionsLogFilter = ({ + filterName, + isFlyout, + isPopoverOpen, + searchString, +}: { + filterName: FilterName; + isFlyout: boolean; + isPopoverOpen: boolean; + searchString: string; +}): { + areHostsSelectedOnMount: boolean; + isLoading: boolean; items: FilterItems; setItems: React.Dispatch>; hasActiveFilters: boolean; numActiveFilters: number; numFilters: number; + setAreHostsSelectedOnMount: (value: React.SetStateAction) => void; setUrlActionsFilters: ReturnType['setUrlActionsFilters']; + setUrlHostsFilters: ReturnType['setUrlHostsFilters']; setUrlStatusesFilters: ReturnType['setUrlStatusesFilters']; } => { - const { commands, statuses, setUrlActionsFilters, setUrlStatusesFilters } = - useActionHistoryUrlParams(); + const { + commands, + statuses, + hosts: selectedAgentIdsFromUrl, + setUrlActionsFilters, + setUrlHostsFilters, + setUrlStatusesFilters, + } = useActionHistoryUrlParams(); const isStatusesFilter = filterName === 'statuses'; + const isHostsFilter = filterName === 'hosts'; + const { data: endpointsList, isFetching } = useGetEndpointsList({ + searchString, + selectedAgentIds: selectedAgentIdsFromUrl, + }); + + // track state of selected hosts via URL + // when page is loaded via selected hosts on URL + const [areHostsSelectedOnMount, setAreHostsSelectedOnMount] = useState(false); + useEffect(() => { + if (selectedAgentIdsFromUrl && selectedAgentIdsFromUrl.length > 0) { + setAreHostsSelectedOnMount(true); + } + // don't sync with changes to further selectedAgentIdsFromUrl + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + // filter options const [items, setItems] = useState( isStatusesFilter ? RESPONSE_ACTION_STATUS.map((statusName) => ({ @@ -194,6 +230,8 @@ export const useActionsLogFilter = ( checked: !isFlyout && statuses?.includes(statusName) ? 'on' : undefined, 'data-test-subj': `${filterName}-filter-option`, })) + : isHostsFilter + ? [] : RESPONSE_ACTION_COMMANDS.map((commandName) => ({ key: commandName, label: getUiCommand(commandName), @@ -205,6 +243,19 @@ export const useActionsLogFilter = ( })) ); + useEffect(() => { + if (isHostsFilter && endpointsList) { + setItems( + endpointsList?.map((list) => ({ + key: list.id, + label: list.name, + checked: !isFlyout && list.selected ? 'on' : undefined, + 'data-test-subj': `${filterName}-filter-option`, + })) + ); + } + }, [endpointsList, filterName, isFlyout, isHostsFilter, setItems]); + const hasActiveFilters = useMemo(() => !!items.find((item) => item.checked === 'on'), [items]); const numActiveFilters = useMemo( () => items.filter((item) => item.checked === 'on').length, @@ -213,12 +264,16 @@ export const useActionsLogFilter = ( const numFilters = useMemo(() => items.filter((item) => item.checked !== 'on').length, [items]); return { + areHostsSelectedOnMount, + isLoading: isHostsFilter && isFetching, items, setItems, hasActiveFilters, numActiveFilters, numFilters, + setAreHostsSelectedOnMount, setUrlActionsFilters, + setUrlHostsFilters, setUrlStatusesFilters, }; }; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx index 79c99d62e2ff6..03ef9172fd469 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx @@ -117,6 +117,7 @@ export const ResponseActionsLog = memo< useUrlPagination(); const { commands: commandsFromUrl, + hosts: agentIdsFromUrl, statuses: statusesFromUrl, startDate: startDateFromUrl, endDate: endDateFromUrl, @@ -130,7 +131,7 @@ export const ResponseActionsLog = memo< const [queryParams, setQueryParams] = useState({ page: isFlyout ? 1 : paginationFromUrlParams.page, pageSize: isFlyout ? 10 : paginationFromUrlParams.pageSize, - agentIds, + agentIds: isFlyout ? agentIds : agentIdsFromUrl?.length ? agentIdsFromUrl : agentIds, commands: [], statuses: [], userIds: [], @@ -144,12 +145,13 @@ export const ResponseActionsLog = memo< commands: commandsFromUrl?.length ? commandsFromUrl.map((commandFromUrl) => getCommandKey(commandFromUrl)) : prevState.commands, + hosts: agentIdsFromUrl?.length ? agentIdsFromUrl : prevState.agentIds, statuses: statusesFromUrl?.length ? (statusesFromUrl as ResponseActionStatus[]) : prevState.statuses, })); } - }, [commandsFromUrl, isFlyout, statusesFromUrl, setQueryParams]); + }, [commandsFromUrl, agentIdsFromUrl, isFlyout, statusesFromUrl, setQueryParams]); // date range picker state and handlers const { dateRangePickerState, onRefreshChange, onTimeChange } = useDateRangePicker(isFlyout); @@ -196,6 +198,13 @@ export const ResponseActionsLog = memo< [setQueryParams] ); + // handle on change hosts filter + const onChangeHostsFilter = useCallback( + (selectedAgentIds: string[]) => { + setQueryParams((prevState) => ({ ...prevState, agentIds: selectedAgentIds })); + }, + [setQueryParams] + ); // total actions const totalItemCount = useMemo(() => actionList?.total ?? 0, [actionList]); @@ -573,11 +582,13 @@ export const ResponseActionsLog = memo< dateRangePickerState={dateRangePickerState} isDataLoading={isFetching} onClick={reFetchEndpointActionList} + onChangeHostsFilter={onChangeHostsFilter} onChangeCommandsFilter={onChangeCommandsFilter} onChangeStatusesFilter={onChangeStatusesFilter} onRefresh={onRefresh} onRefreshChange={onRefreshChange} onTimeChange={onTimeChange} + showHostsFilter={showHostNames} /> {isFetched && !totalItemCount ? ( diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx index f16feaeb94455..9efc4356c21a2 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx @@ -112,6 +112,11 @@ export const UX_MESSAGES = Object.freeze({ defaultMessage: 'Search {filterName}', values: { filterName }, }), + filterEmptyMessage: (filterName: string) => + i18n.translate('xpack.securitySolution.responseActionsList.list.filter.emptyMessage', { + defaultMessage: 'No {filterName} available', + values: { filterName }, + }), badge: { successful: i18n.translate( 'xpack.securitySolution.responseActionsList.list.item.badge.successful', @@ -160,6 +165,9 @@ export const FILTER_NAMES = Object.freeze({ actions: i18n.translate('xpack.securitySolution.responseActionsList.list.filter.actions', { defaultMessage: 'Actions', }), + hosts: i18n.translate('xpack.securitySolution.responseActionsList.list.filter.Hosts', { + defaultMessage: 'Hosts', + }), statuses: i18n.translate('xpack.securitySolution.responseActionsList.list.filter.statuses', { defaultMessage: 'Statuses', }), diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts new file mode 100644 index 0000000000000..0804bef55b3e7 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts @@ -0,0 +1,110 @@ +/* + * 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 { AppContextTestRender, ReactQueryHookRenderer } from '../../../common/mock/endpoint'; +import { createAppRootMockRenderer } from '../../../common/mock/endpoint'; +import { useGetEndpointsList } from './use_get_endpoints_list'; +import { HOST_METADATA_LIST_ROUTE } from '../../../../common/endpoint/constants'; +import { useQuery as _useQuery } from '@tanstack/react-query'; +import { endpointMetadataHttpMocks } from '../../pages/endpoint_hosts/mocks'; + +const useQueryMock = _useQuery as jest.Mock; + +jest.mock('@tanstack/react-query', () => { + const actualReactQueryModule = jest.requireActual('@tanstack/react-query'); + + return { + ...actualReactQueryModule, + useQuery: jest.fn((...args) => actualReactQueryModule.useQuery(...args)), + }; +}); + +describe('useGetEndpointsList hook', () => { + let renderReactQueryHook: ReactQueryHookRenderer< + Parameters, + ReturnType + >; + let http: AppContextTestRender['coreStart']['http']; + let apiMocks: ReturnType; + + beforeEach(() => { + const testContext = createAppRootMockRenderer(); + + renderReactQueryHook = testContext.renderReactQueryHook as typeof renderReactQueryHook; + http = testContext.coreStart.http; + + apiMocks = endpointMetadataHttpMocks(http); + }); + + it('should call the API with kuery set to look for all hostnames when no search string given', async () => { + await renderReactQueryHook(() => useGetEndpointsList({ searchString: '' })); + + expect(apiMocks.responseProvider.metadataList).toHaveBeenCalledWith({ + path: HOST_METADATA_LIST_ROUTE, + query: { page: 0, pageSize: 50, kuery: 'united.endpoint.host.hostname:*' }, + }); + }); + + it('should call the API with kuery set to look for all matching hostnames', async () => { + await renderReactQueryHook(() => useGetEndpointsList({ searchString: 'xyz' })); + + expect(apiMocks.responseProvider.metadataList).toHaveBeenCalledWith({ + path: HOST_METADATA_LIST_ROUTE, + query: { page: 0, pageSize: 50, kuery: 'united.endpoint.host.hostname:*xyz*' }, + }); + }); + + it('should call the API with kuery set to look for all matching agentIds if present', async () => { + await renderReactQueryHook(() => + useGetEndpointsList({ searchString: '', selectedAgentIds: ['agent-a', 'agent-b'] }) + ); + + expect(apiMocks.responseProvider.metadataList).toHaveBeenCalledWith({ + path: HOST_METADATA_LIST_ROUTE, + query: { + page: 0, + pageSize: 10000, + kuery: + 'united.endpoint.agent.id:"agent-a" or united.endpoint.agent.id:"agent-b" or united.endpoint.host.hostname:*', + }, + }); + }); + + it('should call the API with kuery set to look for all matching agentIds and hostnames', async () => { + await renderReactQueryHook(() => + useGetEndpointsList({ searchString: 'xyz', selectedAgentIds: ['agent-a', 'agent-b'] }) + ); + + expect(apiMocks.responseProvider.metadataList).toHaveBeenCalledWith({ + path: HOST_METADATA_LIST_ROUTE, + query: { + page: 0, + pageSize: 10000, + kuery: + 'united.endpoint.agent.id:"agent-a" or united.endpoint.agent.id:"agent-b" or united.endpoint.host.hostname:*xyz*', + }, + }); + }); + + it('should allow custom options to be used', async () => { + await renderReactQueryHook( + () => + useGetEndpointsList({ + searchString: 'pqr', + options: { queryKey: ['m', 'n'], enabled: false }, + }), + false + ); + + expect(useQueryMock).toHaveBeenCalledWith( + expect.objectContaining({ + queryKey: ['m', 'n'], + enabled: false, + }) + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts new file mode 100644 index 0000000000000..c0630ff7e04c3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts @@ -0,0 +1,109 @@ +/* + * 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 { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import { useHttp } from '../../../common/lib/kibana'; +import type { HostInfo, MetadataListResponse } from '../../../../common/endpoint/types'; +import { HOST_METADATA_LIST_ROUTE } from '../../../../common/endpoint/constants'; + +type GetEndpointsListResponse = Array<{ + id: HostInfo['metadata']['agent']['id']; + name: HostInfo['metadata']['host']['hostname']; + selected: boolean; +}>; + +const PAGING_PARAMS = Object.freeze({ + default: 50, + all: 10000, +}); +/** + * Get info for a security solution endpoint host using hostnames via kuery param + * page and pageSize are fixed for showing 50 hosts at most on the 1st page + * @param query + * @param options + */ +export const useGetEndpointsList = ({ + searchString, + selectedAgentIds, + options = {}, +}: { + searchString: string; + selectedAgentIds?: string[]; + options?: UseQueryOptions; +}): UseQueryResult => { + const http = useHttp(); + const kuery = `united.endpoint.host.hostname:${searchString.length ? `*${searchString}` : ''}*`; + let agentIdsKuery: string[] = []; + if (selectedAgentIds) { + agentIdsKuery = selectedAgentIds.map((id) => `united.endpoint.agent.id:"${id}"`); + } + + return useQuery({ + queryKey: ['get-endpoints-list', kuery], + ...options, + queryFn: async () => { + const metadataListResponse = await http.get(HOST_METADATA_LIST_ROUTE, { + query: { + page: 0, + pageSize: + // if the user has selected agents then search the whole index. + // as selected host could be somewhere after the 50 that are shown + // otherwise, limit the search to 50 hosts + selectedAgentIds && selectedAgentIds.length > 0 + ? PAGING_PARAMS.all + : PAGING_PARAMS.default, + kuery: [...agentIdsKuery, kuery].join(' or '), + }, + }); + + // pick out the selected agents and push them to the top of the list + const augmentedDataBasedOnSelectedAgents = metadataListResponse.data.reduce<{ + selected: GetEndpointsListResponse; + rest: GetEndpointsListResponse; + }>( + (acc, list) => { + const item = { + id: list.metadata.agent.id, + name: list.metadata.host.hostname, + }; + if (selectedAgentIds?.includes(list.metadata.agent.id)) { + acc.selected.push({ + ...item, + selected: true, + }); + } else { + acc.rest.push({ + ...item, + selected: false, + }); + } + return acc; + }, + { selected: [], rest: [] } + ); + + let selectedAgentIdsCount = 0; + if (selectedAgentIds) { + selectedAgentIdsCount = selectedAgentIds.length; + } + + // return 50 items max including the selected items + // unless all 50 items are selected then increase the list length by 10 + return [ + ...augmentedDataBasedOnSelectedAgents.selected, + ...augmentedDataBasedOnSelectedAgents.rest, + ].slice( + 0, + selectedAgentIdsCount >= PAGING_PARAMS.default + ? selectedAgentIdsCount + 10 + : PAGING_PARAMS.default + ); + }, + }); +}; From be13d436fd336cb5859b0465dacd3ab3d433d788 Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Thu, 15 Sep 2022 16:08:53 -0500 Subject: [PATCH 19/79] [Enterprise Search] fetch ml processors for pipelines page (#140771) * [Enterprise Search] fetch ml processors for pipelines page Added logics to fetch the ML Inference Pipeline Processors from the backend and replaced the mocked data with the fetched data instead. * [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> --- .../fetch_ml_inference_pipeline_processors.ts | 21 +++++++++ .../ml_inference_pipeline_processors_card.tsx | 45 +++++++++++++++++++ .../search_index/pipelines/pipelines.tsx | 41 +---------------- .../search_index/pipelines/pipelines_logic.ts | 13 ++++++ 4 files changed, 81 insertions(+), 39 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_ml_inference_pipeline_processors.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference_pipeline_processors_card.tsx diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_ml_inference_pipeline_processors.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_ml_inference_pipeline_processors.ts new file mode 100644 index 0000000000000..85f481b513525 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_ml_inference_pipeline_processors.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferencePipeline } from '../../../../../common/types/pipelines'; +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export const fetchMlInferencePipelineProcessors = async ({ indexName }: { indexName: string }) => { + const route = `/internal/enterprise_search/indices/${indexName}/ml_inference/pipeline_processors`; + + return await HttpLogic.values.http.get(route); +}; + +export const FetchMlInferencePipelineProcessorsApiLogic = createApiLogic( + ['fetch_ml_inference_pipeline_processors_api_logic'], + fetchMlInferencePipelineProcessors +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference_pipeline_processors_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference_pipeline_processors_card.tsx new file mode 100644 index 0000000000000..0b8d7ec671753 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference_pipeline_processors_card.tsx @@ -0,0 +1,45 @@ +/* + * 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, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; + +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; + +import { InferencePipeline } from '../../../../../../common/types/pipelines'; +import { IndexNameLogic } from '../index_name_logic'; + +import { InferencePipelineCard } from './inference_pipeline_card'; +import { PipelinesLogic } from './pipelines_logic'; + +export const MlInferencePipelineProcessorsCard: React.FC = () => { + const { indexName } = useValues(IndexNameLogic); + const { mlInferencePipelineProcessors: inferencePipelines } = useValues(PipelinesLogic); + const { fetchMlInferenceProcessors } = useActions(PipelinesLogic); + useEffect(() => { + fetchMlInferenceProcessors({ indexName }); + }, [indexName]); + + if (inferencePipelines === undefined) return null; + if (inferencePipelines.length === 0) return null; + + return ( + + {inferencePipelines.map((item: InferencePipeline, index: number) => ( + + + + ))} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx index 78b47fc69cebe..e50805b0f0e16 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx @@ -11,36 +11,12 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer } from '@elast import { i18n } from '@kbn/i18n'; -import { InferencePipeline } from '../../../../../../common/types/pipelines'; import { DataPanel } from '../../../../shared/data_panel/data_panel'; -import { InferencePipelineCard } from './inference_pipeline_card'; import { IngestPipelinesCard } from './ingest_pipelines_card'; +import { MlInferencePipelineProcessorsCard } from './ml_inference_pipeline_processors_card'; export const SearchIndexPipelines: React.FC = () => { - // TODO: REPLACE THIS DATA WITH REAL DATA - - const inferencePipelines: InferencePipeline[] = [ - { - pipelineName: 'NER Processor', - trainedModelName: 'elastic_dslim_bert_base_ner', - isDeployed: true, - modelType: 'pytorch', - }, - { - pipelineName: 'Sentiment Analysis', - trainedModelName: 'elastic_dslim_bert_base_ner', - isDeployed: false, - modelType: 'pytorch', - }, - { - pipelineName: 'Sentiment Analysis', - trainedModelName: 'elastic_dslim_bert_base_ner', - isDeployed: false, - modelType: 'pytorch', - }, - ]; - return ( <> @@ -121,20 +97,7 @@ export const SearchIndexPipelines: React.FC = () => { } > - {inferencePipelines.length > 0 && ( - - {inferencePipelines.map((item: InferencePipeline, index: number) => ( - - - - ))} - - )} +
diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts index a6e61acd071eb..575ce3acbbe38 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts @@ -11,8 +11,10 @@ import { i18n } from '@kbn/i18n'; import { DEFAULT_PIPELINE_VALUES } from '../../../../../../common/constants'; +import { HttpError } from '../../../../../../common/types/api'; import { IngestPipelineParams } from '../../../../../../common/types/connectors'; import { ElasticsearchIndexWithIngestion } from '../../../../../../common/types/indices'; +import { InferencePipeline } from '../../../../../../common/types/pipelines'; import { Actions } from '../../../../shared/api_logic/create_api_logic'; import { clearFlashMessages, @@ -44,6 +46,7 @@ import { FetchIndexApiParams, FetchIndexApiResponse, } from '../../../api/index/fetch_index_api_logic'; +import { FetchMlInferencePipelineProcessorsApiLogic } from '../../../api/pipelines/fetch_ml_inference_pipeline_processors'; import { isApiIndex, isConnectorIndex, isCrawlerIndex } from '../../../utils/indices'; type PipelinesActions = Pick< @@ -70,6 +73,8 @@ type PipelinesActions = Pick< fetchDefaultPipeline: Actions['makeRequest']; fetchDefaultPipelineSuccess: Actions['apiSuccess']; fetchIndexApiSuccess: Actions['apiSuccess']; + fetchMlInferenceProcessors: typeof FetchMlInferencePipelineProcessorsApiLogic.actions.makeRequest; + fetchMlInferenceProcessorsApiError: (error: HttpError) => HttpError; openModal: () => void; savePipeline: () => void; setPipelineState(pipeline: IngestPipelineParams): { @@ -82,6 +87,7 @@ interface PipelinesValues { defaultPipelineValues: IngestPipelineParams; defaultPipelineValuesData: IngestPipelineParams | null; index: FetchIndexApiResponse; + mlInferencePipelineProcessors: InferencePipeline[]; pipelineState: IngestPipelineParams; showModal: boolean; } @@ -109,12 +115,19 @@ export const PipelinesLogic = kea ({ From b7a61d77564518ca207a6851f569e594c8c8b5ca Mon Sep 17 00:00:00 2001 From: JD Kurma Date: Thu, 15 Sep 2022 17:27:01 -0400 Subject: [PATCH 20/79] [Security Solution]Telemetry Cloud Logs (#140302) * cloud logging * cloud logger tests * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * condense cloud logger to tlog * tlog test * revert adding to security func * remove comments * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/security_solution/kibana.json | 1 + .../server/lib/telemetry/helpers.test.ts | 24 ++++++++++++ .../server/lib/telemetry/helpers.ts | 14 +++++++ .../server/lib/telemetry/preview_sender.ts | 4 +- .../server/lib/telemetry/receiver.ts | 5 ++- .../server/lib/telemetry/sender.ts | 39 ++++++++++--------- .../server/lib/telemetry/task.ts | 13 ++++--- .../lib/telemetry/tasks/detection_rule.ts | 7 ++-- .../server/lib/telemetry/tasks/diagnostic.ts | 7 ++-- .../server/lib/telemetry/tasks/endpoint.ts | 27 +++++++++---- .../telemetry/tasks/prebuilt_rule_alerts.ts | 8 ++-- .../lib/telemetry/tasks/security_lists.ts | 9 +++-- .../server/lib/telemetry/tasks/timelines.ts | 12 +++--- .../security_solution/server/plugin.ts | 3 ++ .../server/plugin_contract.ts | 2 + 15 files changed, 120 insertions(+), 55 deletions(-) diff --git a/x-pack/plugins/security_solution/kibana.json b/x-pack/plugins/security_solution/kibana.json index a0061bfe195ad..5e9557dbe2c0b 100644 --- a/x-pack/plugins/security_solution/kibana.json +++ b/x-pack/plugins/security_solution/kibana.json @@ -12,6 +12,7 @@ "actions", "alerting", "cases", + "cloud", "cloudSecurityPosture", "dashboard", "data", diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts index cab2014861844..a07995029cd76 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts @@ -22,10 +22,13 @@ import { templateExceptionList, addDefaultAdvancedPolicyConfigSettings, metricsResponseToValueListMetaData, + tlog, + setIsElasticCloudDeployment, } from './helpers'; import type { ESClusterInfo, ESLicense, ExceptionListItem } from './types'; import type { PolicyConfig, PolicyData } from '../../../common/endpoint/types'; import { cloneDeep, set } from 'lodash'; +import { loggingSystemMock } from '@kbn/core/server/mocks'; describe('test diagnostic telemetry scheduled task timing helper', () => { test('test -5 mins is returned when there is no previous task run', async () => { @@ -907,3 +910,24 @@ describe('test metrics response to value list meta data', () => { }); }); }); + +describe('test tlog', () => { + let logger: ReturnType; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + }); + + test('should log when cloud', () => { + setIsElasticCloudDeployment(true); + tlog(logger, 'test'); + expect(logger.info).toHaveBeenCalled(); + setIsElasticCloudDeployment(false); + }); + + test('should NOT log when on prem', () => { + tlog(logger, 'test'); + expect(logger.info).toHaveBeenCalledTimes(0); + expect(logger.debug).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts index 1a78ea3352aa7..0c42a35a317e7 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts @@ -9,6 +9,7 @@ import moment from 'moment'; import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import type { PackagePolicy } from '@kbn/fleet-plugin/common/types/models/package_policy'; import { merge } from 'lodash'; +import type { Logger } from '@kbn/core/server'; import { copyAllowlistedFields, exceptionListAllowlistFields } from './filterlists'; import type { PolicyConfig, PolicyData } from '../../../common/endpoint/types'; import type { @@ -266,3 +267,16 @@ export const metricsResponseToValueListMetaData = ({ used_in_indicator_match_rule_count: indicatorMatchMetricsResponse?.aggregations?.vl_used_in_indicator_match_rule_count?.value ?? 0, }); + +export let isElasticCloudDeployment = false; +export const setIsElasticCloudDeployment = (value: boolean) => { + isElasticCloudDeployment = value; +}; + +export const tlog = (logger: Logger, message: string) => { + if (isElasticCloudDeployment) { + logger.info(message); + } else { + logger.debug(message); + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts index 08aee614a3cfc..2c6a55900a14d 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts @@ -18,6 +18,7 @@ import type { import type { ITelemetryEventsSender } from './sender'; import type { TelemetryEvent } from './types'; import type { ITelemetryReceiver } from './receiver'; +import { tlog } from './helpers'; /** * Preview telemetry events sender for the telemetry route. @@ -45,7 +46,8 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { * Reject the request intentionally to stop from sending to the server */ this.axiosInstance.interceptors.request.use((config) => { - this.logger.debug( + tlog( + this.logger, `Intercepting telemetry', ${JSON.stringify( config.data )} and not sending data to the telemetry server` diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts b/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts index 0024228b23417..b517c7104bc26 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts @@ -39,6 +39,7 @@ import { trustedApplicationToTelemetryEntry, ruleExceptionListItemToTelemetryEvent, metricsResponseToValueListMetaData, + tlog, } from './helpers'; import { Fetcher } from '../../endpoint/routes/resolver/tree/utils/fetch'; import type { TreeOptions, TreeResponse } from '../../endpoint/routes/resolver/tree/utils/fetch'; @@ -667,7 +668,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { }; const response = await this.esClient.search(query, { meta: true }); - this.logger.debug(`received prebuilt alerts: (${response.body.hits.hits.length})`); + tlog(this.logger, `received prebuilt alerts: (${response.body.hits.hits.length})`); const telemetryEvents: TelemetryEvent[] = response.body.hits.hits.flatMap((h) => h._source != null ? ([h._source] as TelemetryEvent[]) : [] @@ -939,7 +940,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { return ret.license; } catch (err) { - this.logger.debug(`failed retrieving license: ${err}`); + tlog(this.logger, `failed retrieving license: ${err}`); return undefined; } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts index 10ebe5f8679d6..52b91664a05a3 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts @@ -21,7 +21,7 @@ import type { import type { ITelemetryReceiver } from './receiver'; import { copyAllowlistedFields, endpointAllowlistFields } from './filterlists'; import { createTelemetryTaskConfigs } from './tasks'; -import { createUsageCounterLabel } from './helpers'; +import { createUsageCounterLabel, tlog } from './helpers'; import type { TelemetryEvent } from './types'; import { TELEMETRY_MAX_BUFFER_SIZE } from './constants'; import type { SecurityTelemetryTaskConfig } from './task'; @@ -87,7 +87,6 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { ) { this.telemetrySetup = telemetrySetup; this.telemetryUsageCounter = telemetryUsageCounter; - if (taskManager) { this.telemetryTasks = createTelemetryTaskConfigs().map( (config: SecurityTelemetryTaskConfig) => { @@ -114,13 +113,12 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { ) { this.telemetryStart = telemetryStart; this.receiver = receiver; - if (taskManager && this.telemetryTasks) { - this.logger.debug(`Starting security telemetry tasks`); + tlog(this.logger, `Starting security telemetry tasks`); this.telemetryTasks.forEach((task) => task.start(taskManager)); } - this.logger.debug(`Starting local task`); + tlog(this.logger, `Starting local task`); setTimeout(() => { this.sendIfDue(); this.intervalId = setInterval(() => this.sendIfDue(), this.checkIntervalMs); @@ -135,19 +133,21 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { public queueTelemetryEvents(events: TelemetryEvent[]) { const qlength = this.queue.length; - + tlog(this.logger, `Queue length is ${qlength}`); if (events.length === 0) { + tlog(this.logger, `No events to queue`); return; } - this.logger.debug(`Queue events`); + tlog(this.logger, `Queue ${events.length} events`); if (qlength >= this.maxQueueSize) { // we're full already + tlog(this.logger, `Queue length is greater than max queue size`); return; } - if (events.length > this.maxQueueSize - qlength) { + tlog(this.logger, `Events exceed remaining queue size ${this.maxQueueSize - qlength}`); this.telemetryUsageCounter?.incrementCounter({ counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), counterType: 'docs_lost', @@ -160,6 +160,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { }); this.queue.push(...this.processEvents(events.slice(0, this.maxQueueSize - qlength))); } else { + tlog(this.logger, `Events fit within queue size`); this.queue.push(...this.processEvents(events)); } } @@ -220,7 +221,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { const telemetryUrl = await this.fetchTelemetryPingUrl(); const resp = await axios.get(telemetryUrl, { timeout: 3000 }); if (resp.status === 200) { - this.logger.debug('[Security Telemetry] elastic telemetry services are reachable'); + tlog(this.logger, '[Security Telemetry] elastic telemetry services are reachable'); return true; } @@ -244,7 +245,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { this.isOptedIn = await this.isTelemetryOptedIn(); if (!this.isOptedIn) { - this.logger.debug(`Telemetry is not opted-in.`); + tlog(this.logger, `Telemetry is not opted-in.`); this.queue = []; this.isSending = false; return; @@ -252,7 +253,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { this.isElasticTelemetryReachable = await this.isTelemetryServicesReachable(); if (!this.isElasticTelemetryReachable) { - this.logger.debug(`Telemetry Services are not reachable.`); + tlog(this.logger, `Telemetry Services are not reachable.`); this.queue = []; this.isSending = false; return; @@ -265,8 +266,9 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { this.receiver?.fetchLicenseInfo(), ]); - this.logger.debug(`Telemetry URL: ${telemetryUrl}`); - this.logger.debug( + tlog(this.logger, `Telemetry URL: ${telemetryUrl}`); + tlog( + this.logger, `cluster_uuid: ${clusterInfo?.cluster_uuid} cluster_name: ${clusterInfo?.cluster_name}` ); @@ -321,8 +323,9 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { this.receiver?.fetchLicenseInfo(), ]); - this.logger.debug(`Telemetry URL: ${telemetryUrl}`); - this.logger.debug( + tlog(this.logger, `Telemetry URL: ${telemetryUrl}`); + tlog( + this.logger, `cluster_uuid: ${clusterInfo?.cluster_uuid} cluster_name: ${clusterInfo?.cluster_name}` ); @@ -385,7 +388,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { const ndjson = transformDataToNdjson(events); try { - this.logger.debug(`Sending ${events.length} telemetry events to ${channel}`); + tlog(this.logger, `Sending ${events.length} telemetry events to ${channel}`); const resp = await axiosInstance.post(telemetryUrl, ndjson, { headers: { 'Content-Type': 'application/x-ndjson', @@ -406,9 +409,9 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { counterType: 'docs_sent', incrementBy: events.length, }); - this.logger.debug(`Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}`); + tlog(this.logger, `Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}`); } catch (err) { - this.logger.debug(`Error sending events: ${err}`); + tlog(this.logger, `Error sending events: ${err}`); const errorStatus = err?.response?.status; if (errorStatus !== undefined && errorStatus !== null) { this.telemetryUsageCounter?.incrementCounter({ diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/task.ts index 11b9e5a28791c..e64f860125c7d 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/task.ts @@ -14,6 +14,7 @@ import type { } from '@kbn/task-manager-plugin/server'; import type { ITelemetryReceiver } from './receiver'; import type { ITelemetryEventsSender } from './sender'; +import { tlog } from './helpers'; export interface SecurityTelemetryTaskConfig { type: string; @@ -112,7 +113,7 @@ export class SecurityTelemetryTask { public start = async (taskManager: TaskManagerStartContract) => { const taskId = this.getTaskId(); - this.logger.debug(`[task ${taskId}]: attempting to schedule`); + tlog(this.logger, `[task ${taskId}]: attempting to schedule`); try { await taskManager.ensureScheduled({ id: taskId, @@ -130,25 +131,25 @@ export class SecurityTelemetryTask { }; public runTask = async (taskId: string, executionPeriod: TaskExecutionPeriod) => { - this.logger.debug(`[task ${taskId}]: attempting to run`); + tlog(this.logger, `[task ${taskId}]: attempting to run`); if (taskId !== this.getTaskId()) { - this.logger.debug(`[task ${taskId}]: outdated task`); + tlog(this.logger, `[task ${taskId}]: outdated task`); return 0; } const isOptedIn = await this.sender.isTelemetryOptedIn(); if (!isOptedIn) { - this.logger.debug(`[task ${taskId}]: telemetry is not opted-in`); + tlog(this.logger, `[task ${taskId}]: telemetry is not opted-in`); return 0; } const isTelemetryServicesReachable = await this.sender.isTelemetryServicesReachable(); if (!isTelemetryServicesReachable) { - this.logger.debug(`[task ${taskId}]: cannot reach telemetry services`); + tlog(this.logger, `[task ${taskId}]: cannot reach telemetry services`); return 0; } - this.logger.debug(`[task ${taskId}]: running task`); + tlog(this.logger, `[task ${taskId}]: running task`); return this.config.runTask(taskId, this.logger, this.receiver, this.sender, executionPeriod); }; } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts index 3ef093c86b082..1f22a4c97327d 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts @@ -7,7 +7,7 @@ import type { Logger } from '@kbn/core/server'; import { LIST_DETECTION_RULE_EXCEPTION, TELEMETRY_CHANNEL_LISTS } from '../constants'; -import { batchTelemetryRecords, templateExceptionList } from '../helpers'; +import { batchTelemetryRecords, templateExceptionList, tlog } from '../helpers'; import type { ITelemetryEventsSender } from '../sender'; import type { ITelemetryReceiver } from '../receiver'; import type { ExceptionListItem, ESClusterInfo, ESLicense, RuleSearchResult } from '../types'; @@ -27,6 +27,7 @@ export function createTelemetryDetectionRuleListsTaskConfig(maxTelemetryBatch: n sender: ITelemetryEventsSender, taskExecutionPeriod: TaskExecutionPeriod ) => { + tlog(logger, 'test'); const [clusterInfoPromise, licenseInfoPromise] = await Promise.allSettled([ receiver.fetchClusterInfo(), receiver.fetchLicenseInfo(), @@ -46,7 +47,7 @@ export function createTelemetryDetectionRuleListsTaskConfig(maxTelemetryBatch: n const { body: prebuiltRules } = await receiver.fetchDetectionRules(); if (!prebuiltRules) { - logger.debug('no prebuilt rules found'); + tlog(logger, 'no prebuilt rules found'); return 0; } @@ -87,7 +88,7 @@ export function createTelemetryDetectionRuleListsTaskConfig(maxTelemetryBatch: n licenseInfo, LIST_DETECTION_RULE_EXCEPTION ); - + tlog(logger, `Detection rule exception json length ${detectionRuleExceptionsJson.length}`); const batches = batchTelemetryRecords(detectionRuleExceptionsJson, maxTelemetryBatch); for (const batch of batches) { await sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, batch); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts index b66f502d08531..579e0e6cf9675 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts @@ -6,7 +6,7 @@ */ import type { Logger } from '@kbn/core/server'; -import { getPreviousDiagTaskTimestamp } from '../helpers'; +import { tlog, getPreviousDiagTaskTimestamp } from '../helpers'; import type { ITelemetryEventsSender } from '../sender'; import type { TelemetryEvent } from '../types'; import type { ITelemetryReceiver } from '../receiver'; @@ -38,11 +38,10 @@ export function createTelemetryDiagnosticsTaskConfig() { const hits = response.hits?.hits || []; if (!Array.isArray(hits) || !hits.length) { - logger.debug('no diagnostic alerts retrieved'); + tlog(logger, 'no diagnostic alerts retrieved'); return 0; } - logger.debug(`Received ${hits.length} diagnostic alerts`); - + tlog(logger, `Received ${hits.length} diagnostic alerts`); const diagAlerts: TelemetryEvent[] = hits.flatMap((h) => h._source != null ? [h._source] : [] ); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts index 2ad99d6656678..c3c1cdf54e4d9 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts @@ -26,6 +26,7 @@ import { extractEndpointPolicyConfig, getPreviousDailyTaskTimestamp, isPackagePolicyList, + tlog, } from '../helpers'; import type { PolicyData } from '../../../../common/endpoint/types'; import { TELEMETRY_CHANNEL_ENDPOINT_META } from '../constants'; @@ -57,10 +58,10 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { sender: ITelemetryEventsSender, taskExecutionPeriod: TaskExecutionPeriod ) => { + tlog(logger, 'test'); if (!taskExecutionPeriod.last) { throw new Error('last execution timestamp is required'); } - const [clusterInfoPromise, licenseInfoPromise] = await Promise.allSettled([ receiver.fetchClusterInfo(), receiver.fetchLicenseInfo(), @@ -89,7 +90,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { * a metric document(s) exists for an EP agent we map to fleet agent and policy */ if (endpointData.endpointMetrics === undefined) { - logger.debug(`no endpoint metrics to report`); + tlog(logger, `no endpoint metrics to report`); return 0; } @@ -98,7 +99,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { }; if (endpointMetricsResponse.aggregations === undefined) { - logger.debug(`no endpoint metrics to report`); + tlog(logger, `no endpoint metrics to report`); return 0; } @@ -131,7 +132,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { const agentsResponse = endpointData.fleetAgentsResponse; if (agentsResponse === undefined) { - logger.debug('no fleet agent information available'); + tlog(logger, 'no fleet agent information available'); return 0; } @@ -154,10 +155,12 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { policyInfo !== undefined && !endpointPolicyCache.has(policyInfo) ) { + tlog(logger, `policy info exists as ${policyInfo}`); const agentPolicy = await receiver.fetchPolicyConfigs(policyInfo); const packagePolicies = agentPolicy?.package_policies; if (packagePolicies !== undefined && isPackagePolicyList(packagePolicies)) { + tlog(logger, `package policy exists as ${JSON.stringify(packagePolicies)}`); packagePolicies .map((pPolicy) => pPolicy as PolicyData) .forEach((pPolicy) => { @@ -203,6 +206,11 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { ) : new Map(); + tlog( + logger, + `policy responses exists as ${JSON.stringify(Object.fromEntries(policyResponses))}` + ); + /** STAGE 4 - Fetch Endpoint Agent Metadata * * Reads Endpoint Agent metadata out of the `.ds-metrics-endpoint.metadata` data stream @@ -211,7 +219,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { * a metadata document(s) exists for an EP agent we map to fleet agent and policy */ if (endpointData.endpointMetadata === undefined) { - logger.debug(`no endpoint metadata to report`); + tlog(logger, `no endpoint metadata to report`); } const { body: endpointMetadataResponse } = endpointData.endpointMetadata as unknown as { @@ -219,7 +227,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { }; if (endpointMetadataResponse.aggregations === undefined) { - logger.debug(`no endpoint metadata to report`); + tlog(logger, `no endpoint metadata to report`); } const endpointMetadata = @@ -231,7 +239,10 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { }, new Map() ); - + tlog( + logger, + `endpoint metadata exists as ${JSON.stringify(Object.fromEntries(endpointMetadata))}` + ); /** STAGE 5 - Create the telemetry log records * * Iterates through the endpoint metrics documents at STAGE 1 and joins them together @@ -334,7 +345,7 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) { } return telemetryPayloads.length; } catch (err) { - logger.warn('could not complete endpoint alert telemetry task'); + logger.warn(`could not complete endpoint alert telemetry task due to ${err?.message}`); return 0; } }, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts index 081bf82a944e3..44a6b3cf644f4 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts @@ -11,7 +11,7 @@ import type { ITelemetryReceiver } from '../receiver'; import type { ESClusterInfo, ESLicense, TelemetryEvent } from '../types'; import type { TaskExecutionPeriod } from '../task'; import { TELEMETRY_CHANNEL_DETECTION_ALERTS } from '../constants'; -import { batchTelemetryRecords } from '../helpers'; +import { batchTelemetryRecords, tlog } from '../helpers'; import { copyAllowlistedFields, prebuiltRuleAllowlistFields } from '../filterlists'; export function createTelemetryPrebuiltRuleAlertsTaskConfig(maxTelemetryBatch: number) { @@ -53,7 +53,7 @@ export function createTelemetryPrebuiltRuleAlertsTaskConfig(maxTelemetryBatch: n }); if (telemetryEvents.length === 0) { - logger.debug('no prebuilt rule alerts retrieved'); + tlog(logger, 'no prebuilt rule alerts retrieved'); return 0; } @@ -71,7 +71,7 @@ export function createTelemetryPrebuiltRuleAlertsTaskConfig(maxTelemetryBatch: n }) ); - logger.debug(`sending ${enrichedAlerts.length} elastic prebuilt alerts`); + tlog(logger, `sending ${enrichedAlerts.length} elastic prebuilt alerts`); const batches = batchTelemetryRecords(enrichedAlerts, maxTelemetryBatch); for (const batch of batches) { await sender.sendOnDemand(TELEMETRY_CHANNEL_DETECTION_ALERTS, batch); @@ -79,7 +79,7 @@ export function createTelemetryPrebuiltRuleAlertsTaskConfig(maxTelemetryBatch: n return enrichedAlerts.length; } catch (err) { - logger.debug('could not complete prebuilt alerts telemetry task'); + logger.error('could not complete prebuilt alerts telemetry task'); return 0; } }, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts index 1788eba66e15a..a6023d809c6b0 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts @@ -17,7 +17,7 @@ import { TELEMETRY_CHANNEL_LISTS, } from '../constants'; import type { ESClusterInfo, ESLicense } from '../types'; -import { batchTelemetryRecords, templateExceptionList } from '../helpers'; +import { batchTelemetryRecords, templateExceptionList, tlog } from '../helpers'; import type { ITelemetryEventsSender } from '../sender'; import type { ITelemetryReceiver } from '../receiver'; import type { TaskExecutionPeriod } from '../task'; @@ -62,7 +62,7 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number) licenseInfo, LIST_TRUSTED_APPLICATION ); - logger.debug(`Trusted Apps: ${trustedAppsJson}`); + tlog(logger, `Trusted Apps: ${trustedAppsJson}`); count += trustedAppsJson.length; const batches = batchTelemetryRecords(trustedAppsJson, maxTelemetryBatch); @@ -81,7 +81,7 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number) licenseInfo, LIST_ENDPOINT_EXCEPTION ); - logger.debug(`EP Exceptions: ${epExceptionsJson}`); + tlog(logger, `EP Exceptions: ${epExceptionsJson}`); count += epExceptionsJson.length; const batches = batchTelemetryRecords(epExceptionsJson, maxTelemetryBatch); @@ -100,7 +100,7 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number) licenseInfo, LIST_ENDPOINT_EVENT_FILTER ); - logger.debug(`EP Event Filters: ${epFiltersJson}`); + tlog(logger, `EP Event Filters: ${epFiltersJson}`); count += epFiltersJson.length; const batches = batchTelemetryRecords(epFiltersJson, maxTelemetryBatch); @@ -113,6 +113,7 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number) const valueListMetaData = await receiver.fetchValueListMetaData( FETCH_VALUE_LIST_META_DATA_INTERVAL_IN_HOURS ); + tlog(logger, `Value List Meta Data: ${JSON.stringify(valueListMetaData)}`); if (valueListMetaData?.total_list_count) { await sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, [valueListMetaData]); } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts index c514eb6428de4..8403bbd7f30fd 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts @@ -19,6 +19,7 @@ import type { } from '../types'; import { TELEMETRY_CHANNEL_TIMELINE } from '../constants'; import { resolverEntity } from '../../../endpoint/routes/resolver/entity/utils/build_resolver_entity'; +import { tlog } from '../helpers'; export function createTelemetryTimelineTaskConfig() { return { @@ -36,7 +37,7 @@ export function createTelemetryTimelineTaskConfig() { ) => { let counter = 0; - logger.debug(`Running task: ${taskId}`); + tlog(logger, `Running task: ${taskId}`); const [clusterInfoPromise, licenseInfoPromise] = await Promise.allSettled([ receiver.fetchClusterInfo(), @@ -71,6 +72,7 @@ export function createTelemetryTimelineTaskConfig() { const aggregations = endpointAlerts?.aggregations as unknown as { endpoint_alert_count: { value: number }; }; + tlog(logger, `Endpoint alert count: ${aggregations?.endpoint_alert_count}`); sender.getTelemetryUsageCluster()?.incrementCounter({ counterName: 'telemetry_endpoint_alert', counterType: 'endpoint_alert_count', @@ -82,7 +84,7 @@ export function createTelemetryTimelineTaskConfig() { endpointAlerts.hits.hits?.length === 0 || endpointAlerts.hits.hits?.length === undefined ) { - logger.debug('no endpoint alerts received. exiting telemetry task.'); + tlog(logger, 'no endpoint alerts received. exiting telemetry task.'); return counter; } @@ -120,7 +122,7 @@ export function createTelemetryTimelineTaskConfig() { // Fetch event lineage const timelineEvents = await receiver.fetchTimelineEvents(nodeIds); - + tlog(logger, `Timeline Events: ${JSON.stringify(timelineEvents)}`); const eventsStore = new Map(); for (const event of timelineEvents.hits.hits) { const doc = event._source; @@ -166,11 +168,11 @@ export function createTelemetryTimelineTaskConfig() { sender.sendOnDemand(TELEMETRY_CHANNEL_TIMELINE, [record]); counter += 1; } else { - logger.debug('no events in timeline'); + tlog(logger, 'no events in timeline'); } } - logger.debug(`sent ${counter} timelines. concluding timeline task.`); + tlog(logger, `sent ${counter} timelines. concluding timeline task.`); return counter; }, }; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 5360de15d715c..1fa0a3ae603ee 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -97,6 +97,7 @@ import type { import { alertsFieldMap, rulesFieldMap } from '../common/field_maps'; import { EndpointFleetServicesFactory } from './endpoint/services/fleet'; import { featureUsageService } from './endpoint/services/feature_usage'; +import { setIsElasticCloudDeployment } from './lib/telemetry/helpers'; export type { SetupPlugins, StartPlugins, PluginSetup, PluginStart } from './plugin_contract'; @@ -331,6 +332,8 @@ export class Plugin implements ISecuritySolutionPlugin { ); }); + setIsElasticCloudDeployment(plugins.cloud.isCloudEnabled ?? false); + this.telemetryEventsSender.setup( this.telemetryReceiver, plugins.telemetry, diff --git a/x-pack/plugins/security_solution/server/plugin_contract.ts b/x-pack/plugins/security_solution/server/plugin_contract.ts index 4abf6516696aa..87c374de92763 100644 --- a/x-pack/plugins/security_solution/server/plugin_contract.ts +++ b/x-pack/plugins/security_solution/server/plugin_contract.ts @@ -34,9 +34,11 @@ import type { TaskManagerStartContract as TaskManagerPluginStart, } from '@kbn/task-manager-plugin/server'; import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; +import type { CloudSetup } from '@kbn/cloud-plugin/server'; export interface SecuritySolutionPluginSetupDependencies { alerting: AlertingPluginSetup; + cloud: CloudSetup; data: DataPluginSetup; encryptedSavedObjects?: EncryptedSavedObjectsPluginSetup; eventLog: IEventLogService; From 0d7e16db33d59066420c43649a957587516214de Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 15 Sep 2022 15:45:26 -0600 Subject: [PATCH 21/79] skip failing test suite (#139781) --- .../test/functional/apps/transform/creation_index_pattern.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/transform/creation_index_pattern.ts b/x-pack/test/functional/apps/transform/creation_index_pattern.ts index 4dee8e3af8262..f23ebdde93d9b 100644 --- a/x-pack/test/functional/apps/transform/creation_index_pattern.ts +++ b/x-pack/test/functional/apps/transform/creation_index_pattern.ts @@ -21,7 +21,8 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const transform = getService('transform'); - describe('creation_index_pattern', function () { + // Failing: See https://github.com/elastic/kibana/issues/139781 + describe.skip('creation_index_pattern', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/ecommerce'); await transform.testResources.createIndexPatternIfNeeded('ft_ecommerce', 'order_date'); From fa0ae4d4048f5fda5d7911f62465006e51ac1a14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Sep 2022 07:28:22 +0930 Subject: [PATCH 22/79] Update dependency core-js to ^3.25.1 (main) (#140776) * Update dependency core-js to ^3.25.1 * dedupe 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 a12c4494d7eb4..9001b3a56faca 100644 --- a/package.json +++ b/package.json @@ -433,7 +433,7 @@ "constate": "^3.3.2", "content-disposition": "^0.5.4", "copy-to-clipboard": "^3.0.8", - "core-js": "^3.25.0", + "core-js": "^3.25.1", "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 5b50e91354988..caf5f7dce419e 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.25.0', + corejs: '3.25.1', 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 e3b52cc1e5e11..5d2fa5a627fb6 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.25.0', + corejs: '3.25.1', bugfixes: true, }, ], diff --git a/yarn.lock b/yarn.lock index 325401de94061..73049486ff1fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11779,10 +11779,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.25.0, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: - version "3.25.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb" - integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA== +core-js@^3.0.4, core-js@^3.25.1, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: + version "3.25.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c" + integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ== core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" From 09d6464223f41ed7261e4a2ba9cdd1c60723a113 Mon Sep 17 00:00:00 2001 From: Steph Milovic Date: Thu, 15 Sep 2022 17:20:14 -0500 Subject: [PATCH 23/79] [Security Solution] Deprecated Risk Score Index, show upgrade button (#140143) --- .../security_solution/common/constants.ts | 1 + .../risk_score_deprecated/index.tsx | 57 ++++++ .../risk_score_deprecated/translations.ts | 45 +++++ .../common/hooks/use_fetch/request_names.ts | 1 + .../navigation/host_risk_score_tab_body.tsx | 27 ++- .../pages/navigation/host_risk_tab_body.tsx | 8 +- .../host_risk_score/index.tsx | 29 ++- .../user_risk_score/index.tsx | 29 ++- .../components/host_overview/index.tsx | 3 + .../components/user_overview/index.tsx | 5 + .../risk_score/containers/all/index.test.tsx | 177 ++++++++---------- .../risk_score/containers/all/index.tsx | 57 ++++-- .../containers/feature_status/api.ts | 37 ++++ .../containers/feature_status/index.test.ts | 103 ++++++++++ .../containers/feature_status/index.ts | 73 ++++++++ .../navigation/user_risk_score_tab_body.tsx | 22 ++- .../pages/navigation/user_risk_tab_body.tsx | 8 +- .../server/lib/risk_score/readme.md | 22 +++ .../lib/risk_score/routes/index.test.ts | 85 +++++++++ .../server/lib/risk_score/routes/index.ts | 59 ++++++ .../server/lib/risk_score/routes/schema.ts | 13 ++ .../security_solution/server/routes/index.ts | 3 + .../factory/hosts/all/index.ts | 3 +- 23 files changed, 712 insertions(+), 155 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/index.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/translations.ts create mode 100644 x-pack/plugins/security_solution/public/risk_score/containers/feature_status/api.ts create mode 100644 x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.test.ts create mode 100644 x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_score/readme.md create mode 100644 x-pack/plugins/security_solution/server/lib/risk_score/routes/index.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_score/routes/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_score/routes/schema.ts diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 622c74efd8281..7a19089905608 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -317,6 +317,7 @@ export const TIMELINE_PREPACKAGED_URL = `${TIMELINE_URL}/_prepackaged` as const; export const NOTE_URL = '/api/note' as const; export const PINNED_EVENT_URL = '/api/pinned_event' as const; export const SOURCERER_API_URL = '/internal/security_solution/sourcerer' as const; +export const RISK_SCORE_INDEX_STATUS_API_URL = '/internal/risk_score/index_status' as const; /** * Default signals index key for kibana.dev.yml diff --git a/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/index.tsx b/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/index.tsx new file mode 100644 index 0000000000000..745e95a361342 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/index.tsx @@ -0,0 +1,57 @@ +/* + * 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 { EuiButton, EuiEmptyPrompt, EuiPanel, EuiToolTip } from '@elastic/eui'; +import React, { useMemo } from 'react'; +import { RiskEntity } from '../../../risk_score/containers/feature_status/api'; +import { useCheckSignalIndex } from '../../../detections/containers/detection_engine/alerts/use_check_signal_index'; +import { HeaderSection } from '../header_section'; +import * as i18n from './translations'; + +export const RiskScoresDeprecated = ({ entityType }: { entityType: RiskEntity }) => { + const { signalIndexExists } = useCheckSignalIndex(); + + const translations = useMemo( + () => ({ + body: i18n.UPGRADE_RISK_SCORE_DESCRIPTION, + signal: !signalIndexExists ? i18n.ENABLE_RISK_SCORE_POPOVER : null, + ...(entityType === RiskEntity.host + ? { + header: i18n.HOST_RISK_TITLE, + cta: i18n.UPGRADE_HOST_RISK_SCORE, + } + : { + header: i18n.USER_RISK_TITLE, + cta: i18n.UPGRADE_USER_RISK_SCORE, + }), + }), + [entityType, signalIndexExists] + ); + + return ( + + {translations.header}

} titleSize="s" /> + {translations.cta}} + body={translations.body} + actions={ + + alert('Angela do the upgrade')} + isDisabled={!signalIndexExists} + data-test-subj={`upgrade_${entityType}_risk_score`} + > + {translations.cta} + + + } + /> + + ); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/translations.ts b/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/translations.ts new file mode 100644 index 0000000000000..6c0f6eb199530 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/risk_score_deprecated/translations.ts @@ -0,0 +1,45 @@ +/* + * 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'; + +export const HOST_RISK_TITLE = i18n.translate('xpack.securitySolution.riskDeprecated.hosts.title', { + defaultMessage: 'Host Risk Score', +}); + +export const USER_RISK_TITLE = i18n.translate('xpack.securitySolution.riskDeprecated.users.title', { + defaultMessage: 'User Risk Scores', +}); + +export const UPGRADE_HOST_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskDeprecated.hosts.upgradeHostRiskScore', + { + defaultMessage: 'Upgrade Host Risk Score', + } +); + +export const UPGRADE_USER_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskDeprecated.users.upgradeUserRiskScore', + { + defaultMessage: 'Upgrade User Risk Score', + } +); + +export const UPGRADE_RISK_SCORE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.riskDeprecated.entity.upgradeHostRiskScoreDescription', + { + defaultMessage: + 'Current data is no longer supported. Please migrate your data and upgrade the module.', + } +); + +export const ENABLE_RISK_SCORE_POPOVER = i18n.translate( + 'xpack.securitySolution.riskDeprecated.entity.enableRiskScorePopoverTitle', + { + defaultMessage: 'Alerts need to be available before upgrading module.', + } +); diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts b/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts index cadfd2a68fa32..efaa367884f86 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts @@ -9,6 +9,7 @@ import { APP_UI_ID } from '../../../../common/constants'; export const REQUEST_NAMES = { SECURITY_DASHBOARDS: `${APP_UI_ID} fetch security dashboards`, ANOMALIES_TABLE: `${APP_UI_ID} fetch anomalies table data`, + GET_RISK_SCORE_DEPRECATED: `${APP_UI_ID} fetch is risk score deprecated`, } as const; export type RequestName = typeof REQUEST_NAMES[keyof typeof REQUEST_NAMES]; diff --git a/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_score_tab_body.tsx b/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_score_tab_body.tsx index c790b3c7df186..40480aafc1a68 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_score_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_score_tab_body.tsx @@ -7,6 +7,9 @@ import React, { useEffect, useMemo, useState } from 'react'; import { noop } from 'lodash/fp'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; +import { RiskEntity } from '../../../risk_score/containers/feature_status/api'; +import { RiskScoresDeprecated } from '../../../common/components/risk_score_deprecated'; import type { HostsComponentsQueryProps } from './types'; import { manageQuery } from '../../../common/components/page/manage_query'; import { HostRiskScoreTable } from '../../components/host_risk_score_table'; @@ -31,9 +34,9 @@ export const HostRiskScoreQueryTabBody = ({ startDate, type, }: HostsComponentsQueryProps) => { - const getHosRiskScoreSelector = useMemo(() => hostsSelectors.hostRiskScoreSelector(), []); + const getHostRiskScoreSelector = useMemo(() => hostsSelectors.hostRiskScoreSelector(), []); const { activePage, limit, sort } = useDeepEqualSelector((state: State) => - getHosRiskScoreSelector(state, hostsModel.HostsType.page) + getHostRiskScoreSelector(state, hostsModel.HostsType.page) ); const pagination = useMemo( @@ -49,19 +52,25 @@ export const HostRiskScoreQueryTabBody = ({ useEffect(() => { setQuerySkip(!toggleStatus); }, [toggleStatus]); - - const [loading, { data, totalCount, inspect, isInspected, refetch }] = useHostRiskScore({ - filterQuery, - skip: querySkip, - pagination, - sort, - }); + const { from, to } = useGlobalTime(); + const [loading, { data, totalCount, inspect, isInspected, isDeprecated, refetch }] = + useHostRiskScore({ + filterQuery, + skip: querySkip, + pagination, + sort, + timerange: { from, to }, + }); const { severityCount, loading: isKpiLoading } = useHostRiskScoreKpi({ filterQuery, skip: querySkip, }); + if (isDeprecated) { + return ; + } + return ( ; + } + return ( <> diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx index 69881a1287155..0825c7542ab67 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/host_risk_score/index.tsx @@ -17,6 +17,8 @@ import { import { useDispatch } from 'react-redux'; import styled from 'styled-components'; +import { RiskEntity } from '../../../../risk_score/containers/feature_status/api'; +import { RiskScoresDeprecated } from '../../../../common/components/risk_score_deprecated'; import { SeverityFilterGroup } from '../../../../common/components/severity/severity_filter_group'; import { LinkButton, useGetSecuritySolutionLinkProps } from '../../../../common/components/links'; import { getTabsOnHostsUrl } from '../../../../common/components/link_to/redirect_to_hosts'; @@ -48,7 +50,7 @@ const IconWrapper = styled.span` `; export const EntityAnalyticsHostRiskScores = () => { - const { deleteQuery, setQuery } = useGlobalTime(); + const { deleteQuery, setQuery, to, from } = useGlobalTime(); const [updatedAt, setUpdatedAt] = useState(Date.now()); const { toggleStatus, setToggleStatus } = useQueryToggle(TABLE_QUERY_ID); const columns = useMemo(() => getHostRiskScoreColumns(), []); @@ -67,15 +69,18 @@ export const EntityAnalyticsHostRiskScores = () => { skip: !toggleStatus, }); - const [isTableLoading, { data, inspect, refetch, isLicenseValid, isModuleEnabled }] = - useHostRiskScore({ - filterQuery: severityFilter, - skip: !toggleStatus, - pagination: { - cursorStart: 0, - querySize: 5, - }, - }); + const [ + isTableLoading, + { data, inspect, refetch, isDeprecated, isLicenseValid, isModuleEnabled }, + ] = useHostRiskScore({ + filterQuery: severityFilter, + skip: !toggleStatus, + pagination: { + cursorStart: 0, + querySize: 5, + }, + timerange: { to, from }, + }); useQueryInspector({ queryId: TABLE_QUERY_ID, @@ -131,6 +136,10 @@ export const EntityAnalyticsHostRiskScores = () => { return ; } + if (isDeprecated) { + return ; + } + return ( diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx index e37235b9b1dfd..097bba39efbfb 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/user_risk_score/index.tsx @@ -15,6 +15,8 @@ import { } from '@elastic/eui'; import { useDispatch } from 'react-redux'; import styled from 'styled-components'; +import { RiskEntity } from '../../../../risk_score/containers/feature_status/api'; +import { RiskScoresDeprecated } from '../../../../common/components/risk_score_deprecated'; import { SeverityFilterGroup } from '../../../../common/components/severity/severity_filter_group'; import { LinkButton, useGetSecuritySolutionLinkProps } from '../../../../common/components/links'; import { LastUpdatedAt } from '../../detection_response/utils'; @@ -45,7 +47,7 @@ const IconWrapper = styled.span` `; export const EntityAnalyticsUserRiskScores = () => { - const { deleteQuery, setQuery } = useGlobalTime(); + const { deleteQuery, setQuery, from, to } = useGlobalTime(); const [updatedAt, setUpdatedAt] = useState(Date.now()); const { toggleStatus, setToggleStatus } = useQueryToggle(TABLE_QUERY_ID); const columns = useMemo(() => getUserRiskScoreColumns(), []); @@ -64,15 +66,18 @@ export const EntityAnalyticsUserRiskScores = () => { skip: !toggleStatus, }); - const [isTableLoading, { data, inspect, refetch, isLicenseValid, isModuleEnabled }] = - useUserRiskScore({ - filterQuery: severityFilter, - skip: !toggleStatus, - pagination: { - cursorStart: 0, - querySize: 5, - }, - }); + const [ + isTableLoading, + { data, inspect, refetch, isLicenseValid, isDeprecated, isModuleEnabled }, + ] = useUserRiskScore({ + filterQuery: severityFilter, + skip: !toggleStatus, + pagination: { + cursorStart: 0, + querySize: 5, + }, + timerange: { to, from }, + }); useQueryInspector({ queryId: TABLE_QUERY_ID, @@ -127,6 +132,10 @@ export const EntityAnalyticsUserRiskScores = () => { return ; } + if (isDeprecated) { + return ; + } + return ( diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx index 83b6243c4e04d..327d581b6d24a 100644 --- a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx @@ -10,6 +10,7 @@ import { euiLightVars as lightTheme, euiDarkVars as darkTheme } from '@kbn/ui-th import { getOr } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import type { HostItem } from '../../../../common/search_strategy'; import { buildHostNamesFilter } from '../../../../common/search_strategy'; import { DEFAULT_DARK_MODE } from '../../../../common/constants'; @@ -82,10 +83,12 @@ export const HostOverview = React.memo( () => (hostName ? buildHostNamesFilter([hostName]) : undefined), [hostName] ); + const { from, to } = useGlobalTime(); const [_, { data: hostRisk, isLicenseValid }] = useHostRiskScore({ filterQuery, skip: hostName == null, + timerange: { to, from }, }); const getDefaultRenderer = useCallback( diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx index 32a488f896ab9..f0a639e92230a 100644 --- a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx @@ -10,6 +10,7 @@ import { euiLightVars as lightTheme, euiDarkVars as darkTheme } from '@kbn/ui-th import { getOr } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import { buildUserNamesFilter } from '../../../../common/search_strategy'; import { DEFAULT_DARK_MODE } from '../../../../common/constants'; import type { DescriptionList } from '../../../../common/utility_types'; @@ -80,9 +81,13 @@ export const UserOverview = React.memo( () => (userName ? buildUserNamesFilter([userName]) : undefined), [userName] ); + + const { from, to } = useGlobalTime(); + const [_, { data: userRisk, isLicenseValid }] = useUserRiskScore({ filterQuery, skip: userName == null, + timerange: { to, from }, }); const getDefaultRenderer = useCallback( diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.test.tsx b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.test.tsx index 6777db9e13996..b6ed0c872a1ce 100644 --- a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.test.tsx +++ b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.test.tsx @@ -11,6 +11,7 @@ import { TestProviders } from '../../../common/mock'; import { useSearchStrategy } from '../../../common/containers/use_search_strategy'; import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import { useAppToastsMock } from '../../../common/hooks/use_app_toasts.mock'; +import { useRiskScoreFeatureStatus } from '../feature_status'; jest.mock('../../../common/containers/use_search_strategy', () => ({ useSearchStrategy: jest.fn(), @@ -21,38 +22,56 @@ jest.mock('../../../common/hooks/use_space_id', () => ({ })); jest.mock('../../../common/hooks/use_app_toasts'); +jest.mock('../feature_status'); -const mockUseMlCapabilities = jest.fn(); -jest.mock('../../../common/components/ml/hooks/use_ml_capabilities', () => ({ - useMlCapabilities: () => mockUseMlCapabilities(), -})); - +const mockUseRiskScoreFeatureStatus = useRiskScoreFeatureStatus as jest.Mock; const mockUseSearchStrategy = useSearchStrategy as jest.Mock; const mockSearch = jest.fn(); -const mockRefetch = jest.fn(); let appToastsMock: jest.Mocked>; [useHostRiskScore, useUserRiskScore].forEach((fn) => { const riskEntity = fn.name === 'useHostRiskScore' ? 'host' : 'user'; + const defaultFeatureStatus = { + isLoading: false, + isDeprecated: false, + isLicenseValid: true, + isEnabled: true, + refetch: () => {}, + }; + const defaultRisk = { + data: undefined, + inspect: {}, + isInspected: false, + isLicenseValid: true, + isModuleEnabled: true, + isDeprecated: false, + totalCount: 0, + }; + const defaultSearchResponse = { + loading: false, + result: { + data: undefined, + totalCount: 0, + }, + search: mockSearch, + refetch: () => {}, + inspect: {}, + error: undefined, + }; describe(`${fn.name}`, () => { beforeEach(() => { jest.clearAllMocks(); appToastsMock = useAppToastsMock.create(); (useAppToasts as jest.Mock).mockReturnValue(appToastsMock); + mockUseRiskScoreFeatureStatus.mockReturnValue(defaultFeatureStatus); + mockUseSearchStrategy.mockReturnValue(defaultSearchResponse); }); - test('does not search if feature is not enabled', () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: false }); - mockUseSearchStrategy.mockReturnValue({ - loading: false, - result: { - data: undefined, - totalCount: 0, - }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, - error: undefined, + + test('does not search if license is not valid', () => { + mockUseRiskScoreFeatureStatus.mockReturnValue({ + ...defaultFeatureStatus, + isLicenseValid: false, }); const { result } = renderHook(() => fn(), { wrapper: TestProviders, @@ -61,59 +80,59 @@ let appToastsMock: jest.Mocked>; expect(result.current).toEqual([ false, { - data: undefined, - inspect: {}, - isInspected: false, + ...defaultRisk, isLicenseValid: false, - isModuleEnabled: false, - refetch: mockRefetch, - totalCount: 0, + refetch: result.current[1].refetch, }, ]); }); + test('does not search if feature is not enabled', () => { + mockUseRiskScoreFeatureStatus.mockReturnValue({ + ...defaultFeatureStatus, + isEnabled: false, + }); - test('if query skipped and feature is enabled, isModuleEnabled should be true', () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); - mockUseSearchStrategy.mockReturnValue({ - loading: false, - result: { - data: undefined, - totalCount: 0, + const { result } = renderHook(() => fn(), { + wrapper: TestProviders, + }); + expect(mockSearch).not.toHaveBeenCalled(); + expect(result.current).toEqual([ + false, + { + ...defaultRisk, + isModuleEnabled: false, + refetch: result.current[1].refetch, }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, - error: undefined, + ]); + }); + + test('does not search if index is deprecated ', () => { + mockUseRiskScoreFeatureStatus.mockReturnValue({ + ...defaultFeatureStatus, + isDeprecated: true, }); const { result } = renderHook(() => fn({ skip: true }), { wrapper: TestProviders, }); + expect(mockSearch).not.toHaveBeenCalled(); expect(result.current).toEqual([ false, { - data: undefined, - inspect: {}, - isInspected: false, - isLicenseValid: true, - isModuleEnabled: true, - refetch: mockRefetch, - totalCount: 0, + ...defaultRisk, + isDeprecated: true, + refetch: result.current[1].refetch, }, ]); }); test('handle index not found error', () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); - + mockUseRiskScoreFeatureStatus.mockReturnValue({ + ...defaultFeatureStatus, + isDeprecated: false, + isEnabled: false, + }); mockUseSearchStrategy.mockReturnValue({ - loading: false, - result: { - data: undefined, - totalCount: 0, - }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, + ...defaultSearchResponse, error: { attributes: { caused_by: { @@ -127,31 +146,14 @@ let appToastsMock: jest.Mocked>; }); expect(result.current).toEqual([ false, - { - data: undefined, - inspect: {}, - isInspected: false, - isLicenseValid: true, - isModuleEnabled: false, - refetch: mockRefetch, - totalCount: 0, - }, + { ...defaultRisk, isModuleEnabled: false, refetch: result.current[1].refetch }, ]); }); test('show error toast', () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); - const error = new Error(); mockUseSearchStrategy.mockReturnValue({ - loading: false, - result: { - data: undefined, - totalCount: 0, - }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, + ...defaultSearchResponse, error, }); renderHook(() => fn(), { @@ -162,44 +164,23 @@ let appToastsMock: jest.Mocked>; }); }); - test('runs search if feature is enabled', () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); - mockUseSearchStrategy.mockReturnValue({ - loading: false, - result: { - data: [], - totalCount: 0, - }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, - error: undefined, - }); + test('runs search if feature is enabled and not deprecated', () => { renderHook(() => fn(), { wrapper: TestProviders, }); expect(mockSearch).toHaveBeenCalledWith({ defaultIndex: [`ml_${riskEntity}_risk_score_latest_default`], factoryQueryType: `${riskEntity}sRiskScore`, - filterQuery: undefined, - pagination: undefined, - timerange: undefined, - sort: undefined, }); }); test('return result', async () => { - mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); mockUseSearchStrategy.mockReturnValue({ - loading: false, + ...defaultSearchResponse, result: { data: [], totalCount: 0, }, - search: mockSearch, - refetch: mockRefetch, - inspect: {}, - error: undefined, }); const { result, waitFor } = renderHook(() => fn(), { wrapper: TestProviders, @@ -208,13 +189,9 @@ let appToastsMock: jest.Mocked>; expect(result.current).toEqual([ false, { + ...defaultRisk, data: [], - inspect: {}, - isInspected: false, - isLicenseValid: true, - isModuleEnabled: true, - refetch: mockRefetch, - totalCount: 0, + refetch: result.current[1].refetch, }, ]); }); diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx index 49605e5c227d4..e1f1b7ecd13ba 100644 --- a/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx +++ b/x-pack/plugins/security_solution/public/risk_score/containers/all/index.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import { useEffect, useMemo } from 'react'; +import { useCallback, useEffect, useMemo } from 'react'; +import { useRiskScoreFeatureStatus } from '../feature_status'; import { createFilter } from '../../../common/containers/helpers'; import type { RiskScoreSortField, StrategyResponseType } from '../../../../common/search_strategy'; import { @@ -23,7 +24,6 @@ import { isIndexNotFoundError } from '../../../common/utils/exceptions'; import type { inputsModel } from '../../../common/store'; import { useSpaceId } from '../../../common/hooks/use_space_id'; import { useSearchStrategy } from '../../../common/containers/use_search_strategy'; -import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; export interface RiskScoreState { data: undefined | StrategyResponseType['data']; @@ -33,6 +33,7 @@ export interface RiskScoreState { + if (defaultIndex) { + refetchDeprecated(defaultIndex); + refetch(); + } + }, [defaultIndex, refetch, refetchDeprecated]); + + // since query does not take timerange arg, we need to manually refetch when time range updates + // the results can be different if the user has run the ML for the first time since pressing refresh + useEffect(() => { + refetchAll(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [timerange?.to, timerange?.from]); const riskScoreResponse = useMemo( () => ({ data: response.data, inspect, - refetch, + refetch: refetchAll, totalCount: response.totalCount, - isLicenseValid: isPlatinumOrTrialLicense, - isModuleEnabled: skip - ? isPlatinumOrTrialLicense - : isPlatinumOrTrialLicense && response.data != null, + isLicenseValid, + isDeprecated, + isModuleEnabled: isEnabled, isInspected: false, }), - [isPlatinumOrTrialLicense, inspect, refetch, response.data, response.totalCount, skip] + [ + inspect, + isDeprecated, + isEnabled, + isLicenseValid, + refetchAll, + response.data, + response.totalCount, + ] ); const riskScoreRequest = useMemo( @@ -153,13 +181,10 @@ const useRiskScore = { @@ -171,10 +196,10 @@ const useRiskScore = { - if (!skip && riskScoreRequest != null && isPlatinumOrTrialLicense) { + if (!skip && riskScoreRequest != null && isLicenseValid && isEnabled && !isDeprecated) { search(riskScoreRequest); } - }, [isPlatinumOrTrialLicense, riskScoreRequest, search, skip]); + }, [isEnabled, isDeprecated, isLicenseValid, riskScoreRequest, search, skip]); - return [loading, riskScoreResponse]; + return [loading || isDeprecatedLoading, riskScoreResponse]; }; diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/api.ts b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/api.ts new file mode 100644 index 0000000000000..1f4c236eb44b6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/api.ts @@ -0,0 +1,37 @@ +/* + * 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 { KibanaServices } from '../../../common/lib/kibana'; +import { RISK_SCORE_INDEX_STATUS_API_URL } from '../../../../common/constants'; + +// TODO: Future PR, make this a hard type everywhere relevant +export const enum RiskEntity { + 'user' = 'user', + 'host' = 'host', +} + +export const getRiskScoreIndexStatus = async (params: { + query: { + indexName: string; + entity: RiskEntity; + }; + signal?: AbortSignal; +}): Promise<{ + isDeprecated: boolean; + isEnabled: boolean; +}> => { + const { indexName, entity } = params.query; + return KibanaServices.get().http.fetch<{ isDeprecated: boolean; isEnabled: boolean }>( + RISK_SCORE_INDEX_STATUS_API_URL, + { + method: 'GET', + query: { indexName, entity }, + asSystemRequest: true, + signal: params.signal, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.test.ts b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.test.ts new file mode 100644 index 0000000000000..1d62375e9769e --- /dev/null +++ b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.test.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { act, renderHook } from '@testing-library/react-hooks'; +import { TestProviders } from '../../../common/mock'; + +import { useRiskScoreFeatureStatus } from '.'; +import { RiskQueries } from '../../../../common/search_strategy'; +import { useFetch } from '../../../common/hooks/use_fetch'; +import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; +import { RiskEntity } from './api'; +jest.mock('../../../common/hooks/use_fetch'); +jest.mock('../../../common/components/ml/hooks/use_ml_capabilities'); + +const mockFetch = jest.fn(); +const mockUseMlCapabilities = useMlCapabilities as jest.Mock; +const mockUseFetch = useFetch as jest.Mock; + +describe(`risk score feature status`, () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: true }); + mockUseFetch.mockReturnValue(defaultFetch); + }); + + const defaultFetch = { + data: undefined, + error: undefined, + fetch: mockFetch, + isLoading: false, + refetch: () => {}, + }; + const defaultResult = { + error: undefined, + isDeprecated: true, + isLicenseValid: true, + isEnabled: true, + isLoading: false, + }; + + test('does not search if license is not valid, and initial isDeprecated state is false', () => { + mockUseMlCapabilities.mockReturnValue({ isPlatinumOrTrialLicense: false }); + const { result } = renderHook( + () => useRiskScoreFeatureStatus(RiskQueries.hostsRiskScore, 'the_right_one'), + { + wrapper: TestProviders, + } + ); + expect(mockFetch).not.toHaveBeenCalled(); + expect(result.current).toEqual({ + ...defaultResult, + isLicenseValid: false, + isDeprecated: false, + isEnabled: false, + refetch: result.current.refetch, + }); + }); + + test('runs search if feature is enabled, and initial isDeprecated state is true', () => { + const { result } = renderHook( + () => useRiskScoreFeatureStatus(RiskQueries.hostsRiskScore, 'the_right_one'), + { + wrapper: TestProviders, + } + ); + expect(mockFetch).toHaveBeenCalledWith({ + query: { entity: RiskEntity.host, indexName: 'the_right_one' }, + }); + expect(result.current).toEqual({ + ...defaultResult, + refetch: result.current.refetch, + }); + }); + + test('updates state after search returns isDeprecated = false', () => { + const { result, rerender } = renderHook( + () => useRiskScoreFeatureStatus(RiskQueries.hostsRiskScore, 'the_right_one'), + { + wrapper: TestProviders, + } + ); + expect(result.current).toEqual({ + ...defaultResult, + refetch: result.current.refetch, + }); + mockUseFetch.mockReturnValue({ + ...defaultFetch, + data: { + isDeprecated: false, + isEnabled: true, + }, + }); + act(() => rerender()); + expect(result.current).toEqual({ + ...defaultResult, + isDeprecated: false, + refetch: result.current.refetch, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.ts b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.ts new file mode 100644 index 0000000000000..c437d554b95e6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/risk_score/containers/feature_status/index.ts @@ -0,0 +1,73 @@ +/* + * 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, useEffect, useMemo } from 'react'; +import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; +import { REQUEST_NAMES, useFetch } from '../../../common/hooks/use_fetch'; +import { RiskQueries } from '../../../../common/search_strategy'; +import { getRiskScoreIndexStatus, RiskEntity } from './api'; + +interface RiskScoresFeatureStatus { + error: unknown; + // Is transform index an old version? + isDeprecated: boolean; + // does the transform index exist? + isEnabled: boolean; + // is the user's license platinum? + isLicenseValid: boolean; + isLoading: boolean; + refetch: (indexName: string) => void; +} + +export const useRiskScoreFeatureStatus = ( + factoryQueryType: RiskQueries.hostsRiskScore | RiskQueries.usersRiskScore, + defaultIndex?: string +): RiskScoresFeatureStatus => { + const isPlatinumOrTrialLicense = useMlCapabilities().isPlatinumOrTrialLicense; + const entity = useMemo( + () => (factoryQueryType === RiskQueries.hostsRiskScore ? RiskEntity.host : RiskEntity.user), + [factoryQueryType] + ); + + const { fetch, data, isLoading, error } = useFetch( + REQUEST_NAMES.GET_RISK_SCORE_DEPRECATED, + getRiskScoreIndexStatus + ); + + const response = useMemo( + // if license is enabled, let isDeprecated = true so the actual + // risk score fetch is not called until this check is complete + () => + data ? data : { isDeprecated: isPlatinumOrTrialLicense, isEnabled: isPlatinumOrTrialLicense }, + // isPlatinumOrTrialLicense is initial state, not update requirement + // eslint-disable-next-line react-hooks/exhaustive-deps + [data] + ); + + const searchIndexStatus = useCallback( + (indexName: string) => { + fetch({ + query: { indexName, entity }, + }); + }, + [entity, fetch] + ); + + useEffect(() => { + if (isPlatinumOrTrialLicense && defaultIndex != null) { + searchIndexStatus(defaultIndex); + } + }, [isPlatinumOrTrialLicense, defaultIndex, searchIndexStatus]); + + return { + error, + isLoading, + refetch: searchIndexStatus, + isLicenseValid: isPlatinumOrTrialLicense, + ...response, + }; +}; diff --git a/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_score_tab_body.tsx b/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_score_tab_body.tsx index 52b8c60f605e7..c39e614c5fbb1 100644 --- a/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_score_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_score_tab_body.tsx @@ -8,6 +8,9 @@ import React, { useEffect, useMemo, useState } from 'react'; import { noop } from 'lodash/fp'; +import { RiskEntity } from '../../../risk_score/containers/feature_status/api'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; +import { RiskScoresDeprecated } from '../../../common/components/risk_score_deprecated'; import type { UsersComponentsQueryProps } from './types'; import { manageQuery } from '../../../common/components/page/manage_query'; import { useDeepEqualSelector } from '../../../common/hooks/use_selector'; @@ -43,6 +46,7 @@ export const UserRiskScoreQueryTabBody = ({ }), [activePage, limit] ); + const { from, to } = useGlobalTime(); const { toggleStatus } = useQueryToggle(UserRiskScoreQueryId.USERS_BY_RISK); const [querySkip, setQuerySkip] = useState(skip || !toggleStatus); @@ -50,18 +54,24 @@ export const UserRiskScoreQueryTabBody = ({ setQuerySkip(skip || !toggleStatus); }, [skip, toggleStatus]); - const [loading, { data, totalCount, inspect, isInspected, refetch }] = useUserRiskScore({ - filterQuery, - skip: querySkip, - pagination, - sort, - }); + const [loading, { data, totalCount, inspect, isInspected, isDeprecated, refetch }] = + useUserRiskScore({ + filterQuery, + skip: querySkip, + pagination, + sort, + timerange: { to, from }, + }); const { severityCount, loading: isKpiLoading } = useUserRiskScoreKpi({ filterQuery, skip: querySkip, }); + if (isDeprecated) { + return ; + } + return ( (userName ? buildUserNamesFilter([userName]) : undefined), [userName] ); - const [loading, { data, refetch, inspect }] = useUserRiskScore({ + const [loading, { data, refetch, inspect, isDeprecated }] = useUserRiskScore({ filterQuery, onlyLatest: false, skip: !overTimeToggleStatus && !contributorsToggleStatus, @@ -87,6 +89,10 @@ const UserRiskTabBodyComponent: React.FC< [setOverTimeToggleStatus] ); + if (isDeprecated) { + return ; + } + const lastUsertRiskItem: UserRiskScore | null = data && data.length > 0 ? data[data.length - 1] : null; const rules = lastUsertRiskItem ? lastUsertRiskItem.user.risk.rule_risks : []; diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/readme.md b/x-pack/plugins/security_solution/server/lib/risk_score/readme.md new file mode 100644 index 0000000000000..e6f452cefdc95 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_score/readme.md @@ -0,0 +1,22 @@ +# Risk Score API + +### API usage + +The risk score API has one route with one method + +1. GET - `getRiskScoreIndexStatusRoute` +2. REQUEST: + ```typescript + GET /internal/risk_score/index_status + { + indexName: 'ml_host_risk_score_latest' + } + ``` +3. RESPONSE: + ```typescript + { + isDeprecated: boolean; + isEnabled: boolean; + } + ``` +4. This route is called from `useRiskScore` hook. \ No newline at end of file diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.test.ts b/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.test.ts new file mode 100644 index 0000000000000..77adf7e0efef6 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.test.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getRiskScoreIndexStatusRoute } from '.'; +import { + requestMock, + serverMock, + requestContextMock, +} from '../../detection_engine/routes/__mocks__'; + +import { RISK_SCORE_INDEX_STATUS_API_URL } from '../../../../common/constants'; + +const fieldCaps = { + indices: ['not_important'], + fields: { + 'host.risk.calculated_level': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + }, +}; +describe('risk score index status route', () => { + let server: ReturnType; + let { clients, context } = requestContextMock.createTools(); + const getRequest = (entity: string) => + requestMock.create({ + method: 'get', + path: RISK_SCORE_INDEX_STATUS_API_URL, + query: { indexName: 'hi', entity }, + }); + + beforeEach(() => { + server = serverMock.create(); + ({ clients, context } = requestContextMock.createTools()); + }); + + test('If new fields are not available, isDeprecated = true', async () => { + clients.clusterClient.asCurrentUser.fieldCaps.mockResolvedValue(fieldCaps); + getRiskScoreIndexStatusRoute(server.router); + const response = await server.inject( + getRequest('user'), + requestContextMock.convertContext(context) + ); + expect(response.body).toEqual({ isDeprecated: true, isEnabled: true }); + }); + test('If new fields are available, isDeprecated = false', async () => { + clients.clusterClient.asCurrentUser.fieldCaps.mockResolvedValue(fieldCaps); + getRiskScoreIndexStatusRoute(server.router); + const response = await server.inject( + getRequest('host'), + requestContextMock.convertContext(context) + ); + expect(response.body).toEqual({ isDeprecated: false, isEnabled: true }); + }); + + test('404 error does not throw, returns isEnabled = false', async () => { + const notFoundError: Error & { statusCode?: number } = new Error('not found'); + notFoundError.statusCode = 404; + clients.clusterClient.asCurrentUser.fieldCaps.mockRejectedValue(notFoundError); + getRiskScoreIndexStatusRoute(server.router); + const response = await server.inject( + getRequest('host'), + requestContextMock.convertContext(context) + ); + expect(response.body).toEqual({ isDeprecated: false, isEnabled: false }); + }); + + test('any other error throws', async () => { + clients.clusterClient.asCurrentUser.fieldCaps.mockRejectedValue(new Error('any other error')); + getRiskScoreIndexStatusRoute(server.router); + const response = await server.inject( + getRequest('host'), + requestContextMock.convertContext(context) + ); + expect(response.body).toEqual({ message: 'any other error', status_code: 500 }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.ts b/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.ts new file mode 100644 index 0000000000000..3036ce8db94db --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { transformError } from '@kbn/securitysolution-es-utils'; + +import { RISK_SCORE_INDEX_STATUS_API_URL } from '../../../../common/constants'; +import type { SecuritySolutionPluginRouter } from '../../../types'; +import { buildRouteValidation } from '../../../utils/build_validation/route_validation'; +import { buildSiemResponse } from '../../detection_engine/routes/utils'; +import { indexStatusSchema } from './schema'; + +export const getRiskScoreIndexStatusRoute = (router: SecuritySolutionPluginRouter) => { + router.get( + { + path: RISK_SCORE_INDEX_STATUS_API_URL, + validate: { + query: buildRouteValidation(indexStatusSchema), + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + const coreContext = await context.core; + const { indexName, entity } = request.query; + try { + const newFieldName = `${entity}.risk.calculated_level`; + const res = await coreContext.elasticsearch.client.asCurrentUser.fieldCaps({ + index: indexName, + fields: newFieldName, + ignore_unavailable: true, + allow_no_indices: false, + }); + const isDeprecated = !Object.keys(res.fields).includes(newFieldName); + + return response.ok({ + body: { isDeprecated, isEnabled: true }, + }); + } catch (err) { + const error = transformError(err); + if (error.statusCode === 404) { + // index does not exist, therefore cannot be deprecated + return response.ok({ + body: { isDeprecated: false, isEnabled: false }, + }); + } + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/routes/schema.ts b/x-pack/plugins/security_solution/server/lib/risk_score/routes/schema.ts new file mode 100644 index 0000000000000..7cff67daaa647 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_score/routes/schema.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; + +export const indexStatusSchema = t.type({ + indexName: t.string, + entity: t.string, +}); diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/plugins/security_solution/server/routes/index.ts index af14b3c01226d..5462da4f07710 100644 --- a/x-pack/plugins/security_solution/server/routes/index.ts +++ b/x-pack/plugins/security_solution/server/routes/index.ts @@ -8,6 +8,7 @@ import type { StartServicesAccessor, Logger } from '@kbn/core/server'; import type { IRuleDataClient, RuleDataPluginService } from '@kbn/rule-registry-plugin/server'; +import { getRiskScoreIndexStatusRoute } from '../lib/risk_score/routes'; import type { SecuritySolutionPluginRouter } from '../types'; import { createRulesRoute } from '../lib/detection_engine/routes/rules/create_rules_route'; @@ -184,4 +185,6 @@ export const initRoutes = ( // telemetry preview endpoint for e2e integration tests only at the moment. telemetryDetectionRulesPreviewRoute(router, logger, previewTelemetryReceiver, telemetrySender); } + + getRiskScoreIndexStatusRoute(router); }; diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts index c84717b6e1a8e..fb4a4aa27353b 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts @@ -87,11 +87,10 @@ async function enhanceEdges( esClient: IScopedClusterClient ): Promise { const hostRiskData = await getHostRiskData(esClient, spaceId, hostNames); - const hostsRiskByHostName: Record | undefined = hostRiskData?.hits.hits.reduce( (acc, hit) => ({ ...acc, - [hit._source?.host.name ?? '']: hit._source?.host.risk.calculated_level, + [hit._source?.host.name ?? '']: hit._source?.host?.risk?.calculated_level, }), {} ); From 40ae97d56b70324b67ba030c619b1d51b7d4469d Mon Sep 17 00:00:00 2001 From: Davey Holler Date: Thu, 15 Sep 2022 15:41:17 -0700 Subject: [PATCH 24/79] Minor layout adjustments to the ingest PL modal (#140862) --- .../search_index/pipelines/ingest_pipeline_modal.tsx | 9 +++++---- .../search_index/pipelines/pipeline_settings_form.tsx | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx index f97fe9a2e16e4..b60da157ebf1f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipeline_modal.tsx @@ -65,7 +65,7 @@ export const IngestPipelineModal: React.FC = ({ const canCustomize = name === DEFAULT_PIPELINE_NAME; return showModal ? ( - + @@ -90,7 +90,7 @@ export const IngestPipelineModal: React.FC = ({ - + {displayOnly ? i18n.translate( 'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalBodyAPIText', @@ -124,7 +124,7 @@ export const IngestPipelineModal: React.FC = ({ - + {i18n.translate( @@ -136,10 +136,11 @@ export const IngestPipelineModal: React.FC = ({ - + + {displayOnly && ( <> diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx index 99f52d1e19373..c01ca3d11a45a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipeline_settings_form.tsx @@ -28,7 +28,7 @@ export const PipelineSettingsForm: React.FC = ({ run_ml_inference: runMLInference, } = pipeline; return ( - + Date: Thu, 15 Sep 2022 21:40:00 -0500 Subject: [PATCH 25/79] configure ml inference pipeline (#140138) Added modal with first step to configure an ML inference pipeline for an index. This is the first of 3 steps. --- .../__mocks__/kea_logic/kibana_logic.mock.ts | 2 + .../create_ml_inference_pipeline.test.ts | 45 ++++ .../ml_models/create_ml_inference_pipeline.ts | 40 ++++ .../api/ml_models/ml_models_logic.test.ts | 71 ++++++ .../api/ml_models/ml_models_logic.ts | 18 ++ .../ml_inference/add_ml_inference_button.tsx | 66 ++++++ .../add_ml_inference_pipeline_modal.tsx | 139 ++++++++++++ .../ml_inference/configure_pipeline.tsx | 207 +++++++++++++++++ .../ml_inference/ml_inference_logic.ts | 211 ++++++++++++++++++ .../pipelines/ml_inference/no_models.tsx | 58 +++++ .../pipelines/ml_inference/types.ts | 18 ++ .../pipelines/ml_inference/utils.test.ts | 96 ++++++++ .../pipelines/ml_inference/utils.ts | 56 +++++ .../search_index/pipelines/pipelines.tsx | 19 +- .../pipelines/pipelines_logic.test.ts | 3 + .../search_index/pipelines/pipelines_logic.ts | 6 + .../public/applications/index.tsx | 1 + .../shared/kibana/kibana_logic.ts | 4 +- .../assets/images/no_ml_models_dark.svg | 14 ++ .../assets/images/no_ml_models_light.svg | 14 ++ 20 files changed, 1078 insertions(+), 10 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_button.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_pipeline_modal.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_pipeline.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/no_models.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_dark.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_light.svg diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts index 8d3ff402c41f8..1d480fc791cc8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts @@ -6,12 +6,14 @@ */ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; +import { Capabilities } from '@kbn/core/public'; import { securityMock } from '@kbn/security-plugin/public/mocks'; import { mockHistory } from '../react_router/state.mock'; export const mockKibanaValues = { + capabilities: {} as Capabilities, config: { host: 'http://localhost:3002' }, charts: chartPluginMock.createStartContract(), cloud: { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.test.ts new file mode 100644 index 0000000000000..9750be9166647 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.test.ts @@ -0,0 +1,45 @@ +/* + * 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 { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { + createMlInferencePipeline, + CreateMlInferencePipelineApiLogicArgs, + CreateMlInferencePipelineResponse, +} from './create_ml_inference_pipeline'; + +describe('CreateMlInferencePipelineApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('createMlInferencePipeline', () => { + it('calls the api', async () => { + const response: Promise = Promise.resolve({ + created: 'ml-inference-unit-test', + }); + http.post.mockReturnValue(response); + + const args: CreateMlInferencePipelineApiLogicArgs = { + indexName: 'unit-test-index', + modelId: 'test-model', + pipelineName: 'unit-test', + sourceField: 'body', + }; + const result = await createMlInferencePipeline(args); + expect(http.post).toHaveBeenCalledWith( + '/internal/enterprise_search/indices/unit-test-index/ml_inference/pipeline_processors', + { + body: '{"pipeline_name":"unit-test","model_id":"test-model","source_field":"body"}', + } + ); + expect(result).toEqual({ + created: 'ml-inference-unit-test', + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.ts new file mode 100644 index 0000000000000..3935cfa30e9f8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/create_ml_inference_pipeline.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface CreateMlInferencePipelineApiLogicArgs { + indexName: string; + pipelineName: string; + modelId: string; + sourceField: string; + destinationField?: string; +} + +export interface CreateMlInferencePipelineResponse { + created: string; +} + +export const createMlInferencePipeline = async ( + args: CreateMlInferencePipelineApiLogicArgs +): Promise => { + const route = `/internal/enterprise_search/indices/${args.indexName}/ml_inference/pipeline_processors`; + const params = { + pipeline_name: args.pipelineName, + model_id: args.modelId, + source_field: args.sourceField, + destination_field: args.destinationField, + }; + return await HttpLogic.values.http.post(route, { + body: JSON.stringify(params), + }); +}; + +export const CreateMlInferencePipelineApiLogic = createApiLogic( + ['create_ml_inference_pipeline_api_logic'], + createMlInferencePipeline +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.test.ts new file mode 100644 index 0000000000000..5ba9ef36197a9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.test.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { TrainedModelConfigResponse } from '@kbn/ml-plugin/common/types/trained_models'; + +import { getMLModels } from './ml_models_logic'; + +describe('MLModelsApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('getMLModels', () => { + it('calls the ml api', async () => { + const response: Promise = Promise.resolve([ + { + inference_config: {}, + input: { + field_names: [], + }, + model_id: 'a-model-001', + model_type: 'pytorch', + tags: ['pytorch', 'ner'], + version: '1', + }, + { + inference_config: {}, + input: { + field_names: [], + }, + model_id: 'a-model-002', + model_type: 'lang_ident', + tags: [], + version: '2', + }, + ]); + http.get.mockReturnValue(response); + const result = await getMLModels(); + expect(http.get).toHaveBeenCalledWith('/api/ml/trained_models', { + query: { size: 1000, with_pipelines: true }, + }); + expect(result).toEqual([ + { + inference_config: {}, + input: { + field_names: [], + }, + model_id: 'a-model-001', + model_type: 'pytorch', + tags: ['pytorch', 'ner'], + version: '1', + }, + { + inference_config: {}, + input: { + field_names: [], + }, + model_id: 'a-model-002', + model_type: 'lang_ident', + tags: [], + version: '2', + }, + ]); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.ts new file mode 100644 index 0000000000000..0f0ead7bb0642 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/ml_models/ml_models_logic.ts @@ -0,0 +1,18 @@ +/* + * 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 { TrainedModelConfigResponse } from '@kbn/ml-plugin/common/types/trained_models'; + +import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export const getMLModels = async (size: number = 1000) => { + return await HttpLogic.values.http.get('/api/ml/trained_models', { + query: { size, with_pipelines: true }, + }); +}; + +export const MLModelsApiLogic = createApiLogic(['ml_models_api_logic'], getMLModels); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_button.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_button.tsx new file mode 100644 index 0000000000000..6a11c17e878aa --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_button.tsx @@ -0,0 +1,66 @@ +/* + * 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 { useValues } from 'kea'; + +import { EuiButton, EuiToolTip } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { KibanaLogic } from '../../../../../shared/kibana/kibana_logic'; +import { PipelinesLogic } from '../pipelines_logic'; + +export interface AddMLInferencePipelineButtonProps { + onClick: () => void; +} +export const AddMLInferencePipelineButton: React.FC = ({ + onClick, +}) => { + const { capabilities } = useValues(KibanaLogic); + const { canUseMlInferencePipeline } = useValues(PipelinesLogic); + const hasMLPermissions = capabilities?.ml?.canAccessML ?? false; + if (!hasMLPermissions) { + return ( + + + + ); + } + if (!canUseMlInferencePipeline) { + return ( + + + + ); + } + return ; +}; + +const AddButton: React.FC<{ disabled?: boolean; onClick?: () => void }> = ({ + disabled, + onClick, +}) => ( + + {i18n.translate('xpack.enterpriseSearch.content.indices.pipelines.mlInference.addButtonLabel', { + defaultMessage: 'Add inference pipeline', + })} + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_pipeline_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_pipeline_modal.tsx new file mode 100644 index 0000000000000..8b2cfb1d4b5d8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_ml_inference_pipeline_modal.tsx @@ -0,0 +1,139 @@ +/* + * 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, { useEffect } from 'react'; + +import { useValues, useActions } from 'kea'; + +import { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiLoadingSpinner, + EuiSpacer, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { IndexNameLogic } from '../../index_name_logic'; + +import { ConfigurePipeline } from './configure_pipeline'; +import { MLInferenceLogic, AddInferencePipelineModal } from './ml_inference_logic'; +import { NoModelsPanel } from './no_models'; + +interface AddMLInferencePipelineModalProps { + onClose: () => void; +} + +export const AddMLInferencePipelineModal: React.FC = ({ + onClose, +}) => { + const { indexName } = useValues(IndexNameLogic); + const { setIndexName } = useActions(MLInferenceLogic); + useEffect(() => { + setIndexName(indexName); + }, [indexName]); + + return ( + + + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.title', + { + defaultMessage: 'Add an inference pipeline', + } + )} +

+
+
+ +
+ ); +}; + +const isProcessorConfigurationInvalid = ({ configuration }: AddInferencePipelineModal): boolean => { + const { pipelineName, modelID, sourceField } = configuration; + return pipelineName.trim().length === 0 || modelID.length === 0 || sourceField.length === 0; +}; + +const AddProcessorContent: React.FC = ({ onClose }) => { + const { addInferencePipelineModal, createErrors, supportedMLModels, isLoading } = + useValues(MLInferenceLogic); + const { createPipeline } = useActions(MLInferenceLogic); + if (isLoading) { + return ( + + + + ); + } + if (supportedMLModels === undefined || supportedMLModels?.length === 0) { + return ; + } + return ( + <> + + {createErrors.length > 0 && ( + <> + + {createErrors.map((message, i) => ( +

{message}

+ ))} +
+ + + )} + +
+ + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.footer.cancel', + { + defaultMessage: 'Cancel', + } + )} + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.footer.create', + { + defaultMessage: 'Create', + } + )} + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_pipeline.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_pipeline.tsx new file mode 100644 index 0000000000000..da95bd6d081f4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_pipeline.tsx @@ -0,0 +1,207 @@ +/* + * 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 { useValues, useActions } from 'kea'; + +import { + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiLink, + EuiSelect, + EuiSpacer, + EuiText, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { MLInferenceLogic } from './ml_inference_logic'; + +export const ConfigurePipeline: React.FC = () => { + const { + addInferencePipelineModal: { configuration }, + formErrors, + supportedMLModels, + sourceFields, + } = useValues(MLInferenceLogic); + const { setInferencePipelineConfiguration } = useActions(MLInferenceLogic); + + const { destinationField, modelID, pipelineName, sourceField } = configuration; + const models = supportedMLModels ?? []; + + return ( + <> + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.description', + { + defaultMessage: + "Once created, this pipeline will be added as a processor on your Enterprise Search Ingestion Pipeline. You'll also be able to use this pipeline elsewhere in your Elastic deployment.", + } + )} +

+ + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.docsLink', + { + defaultMessage: 'Learn more about using ML models in Enterprise Search', + } + )} + +
+ + + + + setInferencePipelineConfiguration({ + ...configuration, + pipelineName: e.target.value, + }) + } + /> + + + + ({ text: m.model_id, value: m.model_id })), + ]} + onChange={(e) => + setInferencePipelineConfiguration({ + ...configuration, + modelID: e.target.value, + }) + } + /> + + + + + + ({ + text: field, + value: field, + })) ?? []), + ]} + onChange={(e) => + setInferencePipelineConfiguration({ + ...configuration, + sourceField: e.target.value, + }) + } + /> + + + + + + setInferencePipelineConfiguration({ + ...configuration, + destinationField: e.target.value, + }) + } + /> + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts new file mode 100644 index 0000000000000..eb8f7f4f0e660 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts @@ -0,0 +1,211 @@ +/* + * 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 { kea, MakeLogicType } from 'kea'; + +import { IndicesGetMappingIndexMappingRecord } from '@elastic/elasticsearch/lib/api/types'; + +import { TrainedModelConfigResponse } from '@kbn/ml-plugin/common/types/trained_models'; + +import { HttpError, Status } from '../../../../../../../common/types/api'; + +import { generateEncodedPath } from '../../../../../shared/encode_path_params'; +import { getErrorsFromHttpResponse } from '../../../../../shared/flash_messages/handle_api_errors'; +import { KibanaLogic } from '../../../../../shared/kibana'; +import { MappingsApiLogic } from '../../../../api/mappings/mappings_logic'; +import { CreateMlInferencePipelineApiLogic } from '../../../../api/ml_models/create_ml_inference_pipeline'; +import { MLModelsApiLogic } from '../../../../api/ml_models/ml_models_logic'; + +import { SEARCH_INDEX_TAB_PATH } from '../../../../routes'; +import { SearchIndexTabId } from '../../search_index'; + +import { AddInferencePipelineFormErrors, InferencePipelineConfiguration } from './types'; +import { + isSupportedMLModel, + sortSourceFields, + validateInferencePipelineConfiguration, +} from './utils'; + +export const EMPTY_PIPELINE_CONFIGURATION: InferencePipelineConfiguration = { + destinationField: '', + modelID: '', + pipelineName: '', + sourceField: '', +}; + +const API_REQUEST_COMPLETE_STATUSES = [Status.SUCCESS, Status.ERROR]; + +interface MLInferenceProcessorsActions { + clearFormErrors: () => void; + createApiError: (error: HttpError) => HttpError; + createApiSuccess: typeof CreateMlInferencePipelineApiLogic.actions.apiSuccess; + createPipeline: () => void; + makeCreatePipelineRequest: typeof CreateMlInferencePipelineApiLogic.actions.makeRequest; + makeMLModelsRequest: typeof MLModelsApiLogic.actions.makeRequest; + makeMappingRequest: typeof MappingsApiLogic.actions.makeRequest; + mappingsApiError(error: HttpError): HttpError; + mlModelsApiError(error: HttpError): HttpError; + setCreateErrors(errors: string[]): { errors: string[] }; + setFormErrors: (inputErrors: AddInferencePipelineFormErrors) => { + inputErrors: AddInferencePipelineFormErrors; + }; + setIndexName: (indexName: string) => { indexName: string }; + setInferencePipelineConfiguration: (configuration: InferencePipelineConfiguration) => { + configuration: InferencePipelineConfiguration; + }; +} + +export interface AddInferencePipelineModal { + configuration: InferencePipelineConfiguration; + indexName: string; +} + +interface MLInferenceProcessorsValues { + addInferencePipelineModal: AddInferencePipelineModal; + createErrors: string[]; + formErrors: AddInferencePipelineFormErrors; + isLoading: boolean; + mappingData: typeof MappingsApiLogic.values.data; + mappingStatus: Status; + mlModelsData: typeof MLModelsApiLogic.values.data; + mlModelsStatus: typeof MLModelsApiLogic.values.apiStatus; + sourceFields: string[] | undefined; + supportedMLModels: typeof MLModelsApiLogic.values.data; +} + +export const MLInferenceLogic = kea< + MakeLogicType +>({ + actions: { + clearFormErrors: true, + createPipeline: true, + setCreateErrors: (errors: string[]) => ({ errors }), + setFormErrors: (inputErrors: AddInferencePipelineFormErrors) => ({ inputErrors }), + setIndexName: (indexName: string) => ({ indexName }), + setInferencePipelineConfiguration: (configuration: InferencePipelineConfiguration) => ({ + configuration, + }), + }, + connect: { + actions: [ + MappingsApiLogic, + ['makeRequest as makeMappingRequest', 'apiError as mappingsApiError'], + MLModelsApiLogic, + ['makeRequest as makeMLModelsRequest', 'apiError as mlModelsApiError'], + CreateMlInferencePipelineApiLogic, + [ + 'apiError as createApiError', + 'apiSuccess as createApiSuccess', + 'makeRequest as makeCreatePipelineRequest', + ], + ], + values: [ + MappingsApiLogic, + ['data as mappingData', 'status as mappingStatus'], + MLModelsApiLogic, + ['data as mlModelsData', 'status as mlModelsStatus'], + ], + }, + events: {}, + listeners: ({ values, actions }) => ({ + createApiSuccess: () => { + KibanaLogic.values.navigateToUrl( + generateEncodedPath(SEARCH_INDEX_TAB_PATH, { + indexName: values.addInferencePipelineModal.indexName, + tabId: SearchIndexTabId.PIPELINES, + }) + ); + }, + createPipeline: () => { + const { + addInferencePipelineModal: { configuration, indexName }, + } = values; + const validationErrors = validateInferencePipelineConfiguration(configuration); + if (validationErrors !== undefined) { + actions.setFormErrors(validationErrors); + return; + } + actions.clearFormErrors(); + + actions.makeCreatePipelineRequest({ + indexName, + pipelineName: configuration.pipelineName, + modelId: configuration.modelID, + sourceField: configuration.sourceField, + destinationField: + configuration.destinationField.trim().length > 0 + ? configuration.destinationField + : undefined, + }); + }, + makeCreatePipelineRequest: () => actions.setCreateErrors([]), + setIndexName: ({ indexName }) => { + actions.makeMLModelsRequest(undefined); + actions.makeMappingRequest({ indexName }); + }, + }), + reducers: { + addInferencePipelineModal: [ + { + configuration: { + ...EMPTY_PIPELINE_CONFIGURATION, + }, + indexName: '', + }, + { + setIndexName: (modal, { indexName }) => ({ ...modal, indexName }), + setInferencePipelineConfiguration: (modal, { configuration }) => ({ + ...modal, + configuration, + }), + }, + ], + createErrors: [ + [], + { + createApiError: (_, error) => getErrorsFromHttpResponse(error), + setCreateErrors: (_, { errors }) => errors, + }, + ], + formErrors: [ + {}, + { + clearFormErrors: () => ({}), + setFormErrors: (_, { inputErrors }) => inputErrors, + }, + ], + }, + selectors: ({ selectors }) => ({ + isLoading: [ + () => [selectors.mlModelsStatus, selectors.mappingStatus], + (mlModelsStatus, mappingStatus) => + !API_REQUEST_COMPLETE_STATUSES.includes(mlModelsStatus) || + !API_REQUEST_COMPLETE_STATUSES.includes(mappingStatus), + ], + sourceFields: [ + () => [selectors.mappingStatus, selectors.mappingData], + (status: Status, mapping: IndicesGetMappingIndexMappingRecord) => { + if (status !== Status.SUCCESS) return; + if (mapping?.mappings?.properties === undefined) return []; + return Object.entries(mapping.mappings.properties) + .reduce((fields, [key, value]) => { + if (value.type === 'text' || value.type === 'keyword') { + fields.push(key); + } + return fields; + }, [] as string[]) + .sort(sortSourceFields); + }, + ], + supportedMLModels: [ + () => [selectors.mlModelsData], + (mlModelsData: TrainedModelConfigResponse[] | undefined) => { + return mlModelsData?.filter(isSupportedMLModel); + }, + ], + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/no_models.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/no_models.tsx new file mode 100644 index 0000000000000..084fb4244cb7a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/no_models.tsx @@ -0,0 +1,58 @@ +/* + * 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 { EuiEmptyPrompt, EuiImage, EuiLink, EuiText, useEuiTheme } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import noMlModelsGraphicDark from '../../../../../../assets/images/no_ml_models_dark.svg'; +import noMlModelsGraphicLight from '../../../../../../assets/images/no_ml_models_light.svg'; + +export const NoModelsPanel: React.FC = () => { + const { colorMode } = useEuiTheme(); + + return ( + + + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.noModels.description', + { + defaultMessage: + 'You have no trained models available. Please follow the documenation to add trained ml models to your cluster.', + } + )} +

+
+ + } + footer={ + // TODO: insert correct docsLink here + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.crawler.crawlRequestsTable.emptyPrompt.docsLink', + { + defaultMessage: 'Learn More', + } + )} + + } + /> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts new file mode 100644 index 0000000000000..9ada53d224c8e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts @@ -0,0 +1,18 @@ +/* + * 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 InferencePipelineConfiguration { + destinationField: string; + modelID: string; + pipelineName: string; + sourceField: string; +} + +export interface AddInferencePipelineFormErrors { + destinationField?: string; + pipelineName?: string; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.test.ts new file mode 100644 index 0000000000000..068886f3c4ff7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.test.ts @@ -0,0 +1,96 @@ +/* + * 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 { TrainedModelConfigResponse } from '@kbn/ml-plugin/common/types/trained_models'; + +import { isSupportedMLModel, isValidPipelineName, sortSourceFields } from './utils'; + +describe('ml inference utils', () => { + describe('isSupportedMLModel', () => { + const makeFakeModel = ( + config: Partial + ): TrainedModelConfigResponse => ({ + inference_config: {}, + input: { + field_names: [], + }, + model_id: 'a-model-001', + model_type: 'pytorch', + tags: [], + version: '1', + ...config, + }); + it('returns true for expected models', () => { + const models: TrainedModelConfigResponse[] = [ + makeFakeModel({ + inference_config: { + ner: {}, + }, + }), + makeFakeModel({ + inference_config: { + classification: {}, + }, + }), + makeFakeModel({ + inference_config: { + text_classification: {}, + }, + }), + makeFakeModel({ + inference_config: { + text_embedding: {}, + }, + }), + makeFakeModel({ + inference_config: { + zero_shot_classification: { + classification_labels: [], + }, + }, + }), + ]; + + for (const model of models) { + expect(isSupportedMLModel(model)).toBe(true); + } + }); + + it('returns false for expected models', () => { + const models: TrainedModelConfigResponse[] = [makeFakeModel({})]; + + for (const model of models) { + expect(isSupportedMLModel(model)).toBe(false); + } + }); + }); + describe('sortSourceFields', () => { + it('promotes fields', () => { + let fields: string[] = ['id', 'body', 'url']; + expect(fields.sort(sortSourceFields)).toEqual(['body', 'id', 'url']); + fields = ['id', 'body_content', 'url']; + expect(fields.sort(sortSourceFields)).toEqual(['body_content', 'id', 'url']); + fields = ['id', 'title', 'message', 'url']; + expect(fields.sort(sortSourceFields)).toEqual(['title', 'id', 'message', 'url']); + fields = ['id', 'body', 'title', 'message', 'url']; + expect(fields.sort(sortSourceFields)).toEqual(['body', 'title', 'id', 'message', 'url']); + }); + }); + describe('isValidPipelineName', () => { + it('allows alphanumeric characters, underscores, & hypens', () => { + expect(isValidPipelineName('apipelinename123')).toEqual(true); + expect(isValidPipelineName('a_pipeline_name123')).toEqual(true); + expect(isValidPipelineName('a-pipeline-name-123')).toEqual(true); + }); + it('does not allow special characters', () => { + expect(isValidPipelineName('a_pipeline_name_1$')).toEqual(false); + expect(isValidPipelineName('a_pipeline_name_1%')).toEqual(false); + expect(isValidPipelineName('a_pipeline_name_1^')).toEqual(false); + expect(isValidPipelineName('a_pipeline_name_1"')).toEqual(false); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts new file mode 100644 index 0000000000000..8a3ef72c72af7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { TrainedModelConfigResponse } from '@kbn/ml-plugin/common/types/trained_models'; + +import { AddInferencePipelineFormErrors, InferencePipelineConfiguration } from './types'; + +const NLP_CONFIG_KEYS = [ + 'ner', + 'classification', + 'text_classification', + 'text_embedding', + 'zero_shot_classification', +]; +export const isSupportedMLModel = (model: TrainedModelConfigResponse): boolean => { + return Object.keys(model.inference_config).some((key) => NLP_CONFIG_KEYS.includes(key)); +}; + +const RECOMMENDED_FIELDS = ['body', 'body_content', 'title']; +export const sortSourceFields = (a: string, b: string): number => { + const promoteA = RECOMMENDED_FIELDS.includes(a); + const promoteB = RECOMMENDED_FIELDS.includes(b); + if (promoteA && promoteB) { + return RECOMMENDED_FIELDS.indexOf(a) > RECOMMENDED_FIELDS.indexOf(b) ? 1 : -1; + } else if (promoteA) { + return -1; + } else if (promoteB) { + return 1; + } + return a.localeCompare(b); +}; + +const VALID_PIPELINE_NAME_REGEX = /^[\w\s\-]+$/; +export const isValidPipelineName = (input: string): boolean => { + return input.length > 0 && VALID_PIPELINE_NAME_REGEX.test(input); +}; + +export const validateInferencePipelineConfiguration = ( + config: InferencePipelineConfiguration +): AddInferencePipelineFormErrors | undefined => { + const errors: AddInferencePipelineFormErrors = {}; + if (!isValidPipelineName(config.pipelineName)) { + errors.pipelineName = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.invalidPipelineName', + { + defaultMessage: 'Name must only contain letters, numbers, underscores, and hyphens.', + } + ); + return errors; + } +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx index e50805b0f0e16..e523d6060da56 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines.tsx @@ -7,16 +7,21 @@ import React from 'react'; -import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { DataPanel } from '../../../../shared/data_panel/data_panel'; import { IngestPipelinesCard } from './ingest_pipelines_card'; +import { AddMLInferencePipelineButton } from './ml_inference/add_ml_inference_button'; +import { AddMLInferencePipelineModal } from './ml_inference/add_ml_inference_pipeline_modal'; import { MlInferencePipelineProcessorsCard } from './ml_inference_pipeline_processors_card'; export const SearchIndexPipelines: React.FC = () => { + const [addInferencePipelineOpen, setShowAddInferencePipeline] = React.useState(false); + const closeAddInferencePipelineModal = () => setShowAddInferencePipeline(false); + return ( <> @@ -87,20 +92,16 @@ export const SearchIndexPipelines: React.FC = () => { )} iconType="compute" action={ - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.pipelines.mlInferencePipelines.newButton', - { - defaultMessage: 'Add ML inference pipeline', - } - )} - + setShowAddInferencePipeline(true)} /> } >
+ {addInferencePipelineOpen && ( + + )} ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts index 5e06554bd1dae..45f3126c19f96 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts @@ -22,9 +22,11 @@ const DEFAULT_PIPELINE_VALUES = { const DEFAULT_VALUES = { canSetPipeline: true, + canUseMlInferencePipeline: false, defaultPipelineValues: DEFAULT_PIPELINE_VALUES, defaultPipelineValuesData: undefined, index: undefined, + mlInferencePipelineProcessors: undefined, pipelineState: DEFAULT_PIPELINE_VALUES, showModal: false, }; @@ -146,6 +148,7 @@ describe('PipelinesLogic', () => { }); expect(PipelinesLogic.values).toEqual({ ...DEFAULT_VALUES, + canUseMlInferencePipeline: true, index: { ...connectorIndex, connector: { ...connectorIndex.connector, pipeline: newPipeline }, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts index 575ce3acbbe38..6b348f3ec94f8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts @@ -84,6 +84,7 @@ type PipelinesActions = Pick< interface PipelinesValues { canSetPipeline: boolean; + canUseMlInferencePipeline: boolean; defaultPipelineValues: IngestPipelineParams; defaultPipelineValuesData: IngestPipelineParams | null; index: FetchIndexApiResponse; @@ -229,6 +230,11 @@ export const PipelinesLogic = kea [selectors.index], (index: ElasticsearchIndexWithIngestion) => !isApiIndex(index), ], + canUseMlInferencePipeline: [ + () => [selectors.canSetPipeline, selectors.pipelineState], + (canSetPipeline: boolean, pipelineState: IngestPipelineParams) => + canSetPipeline && pipelineState.run_ml_inference, + ], defaultPipelineValues: [ () => [selectors.defaultPipelineValuesData], (pipeline: IngestPipelineParams | null) => pipeline ?? DEFAULT_PIPELINE_VALUES, diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 5af50fce587fe..70d37301bc8f2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -54,6 +54,7 @@ export const renderApp = ( const store = getContext().store; const unmountKibanaLogic = mountKibanaLogic({ + capabilities: core.application.capabilities, config, productAccess, charts: plugins.charts, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts index 37ab1e972bbd5..e66c4bc1dea39 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -11,7 +11,7 @@ import { kea, MakeLogicType } from 'kea'; import { ChartsPluginStart } from '@kbn/charts-plugin/public'; import { CloudSetup } from '@kbn/cloud-plugin/public'; -import { ApplicationStart, ChromeBreadcrumb, ScopedHistory } from '@kbn/core/public'; +import { ApplicationStart, Capabilities, ChromeBreadcrumb, ScopedHistory } from '@kbn/core/public'; import { SecurityPluginStart } from '@kbn/security-plugin/public'; import { ProductAccess } from '../../../../common/types'; @@ -26,6 +26,7 @@ interface KibanaLogicProps { config: { host?: string }; productAccess: ProductAccess; // Kibana core + capabilities: Capabilities; history: ScopedHistory; navigateToUrl: RequiredFieldsOnly; setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; @@ -47,6 +48,7 @@ export interface KibanaValues extends Omit { export const KibanaLogic = kea>({ path: ['enterprise_search', 'kibana_logic'], reducers: ({ props }) => ({ + capabilities: [props.capabilities || {}, {}], config: [props.config || {}, {}], charts: [props.charts, {}], cloud: [props.cloud || {}, {}], diff --git a/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_dark.svg b/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_dark.svg new file mode 100644 index 0000000000000..9e48c569fd940 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_light.svg b/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_light.svg new file mode 100644 index 0000000000000..636a8033e6f79 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/no_ml_models_light.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + From 73ba80778ee0c958f687dfa9745e8037bcdf3f71 Mon Sep 17 00:00:00 2001 From: Byron Hulcher Date: Thu, 15 Sep 2022 22:43:04 -0400 Subject: [PATCH 26/79] [Enterprise Search] Allow user to set authentication for Elastic Web Crawler domains (#140432) --- .../crawler/_mocks_/crawler_domains.mock.ts | 10 ++ .../api/crawler/types.ts | 15 ++ .../api/crawler/utils.ts | 31 ++-- .../authentication_panel.scss | 5 + .../authentication_panel.tsx | 53 +++++++ .../authentication_panel_actions.tsx | 84 +++++++++++ ...cation_panel_delete_confirmation_modal.tsx | 57 ++++++++ .../authentication_panel_edit_content.tsx | 99 +++++++++++++ .../authentication_panel_logic.ts | 134 ++++++++++++++++++ .../authentication_panel_view_content.tsx | 76 ++++++++++ .../authentication_panel/constants.ts | 20 +++ .../crawler_domain_detail.tsx | 3 + .../crawler_domain_detail_logic.ts | 30 +++- .../entry_points_table.test.tsx | 1 + .../sitemaps_table.test.tsx | 5 +- .../domain_management/domains_table.test.tsx | 2 + .../applications/shared/constants/labels.ts | 13 ++ .../shared/data_panel/data_panel.test.tsx | 12 +- .../shared/data_panel/data_panel.tsx | 44 +++--- .../enterprise_search/crawler/crawler.ts | 10 ++ 20 files changed, 655 insertions(+), 49 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.scss create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_actions.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_delete_confirmation_modal.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_edit_content.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_view_content.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/constants.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/_mocks_/crawler_domains.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/_mocks_/crawler_domains.mock.ts index b6c329b78ac2a..4b11aa699b081 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/_mocks_/crawler_domains.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/_mocks_/crawler_domains.mock.ts @@ -57,6 +57,11 @@ export const CRAWLER_DOMAIN_CONFIG_FROM_SERVER: DomainConfigFromServer = { }; export const CRAWLER_DOMAIN_FROM_SERVER: CrawlerDomainFromServer = { + auth: { + type: 'basic', + username: 'username', + password: 'password', + }, available_deduplication_fields: ['title', 'url'], crawl_rules: [CRAWL_RULE], created_on: '1657234422', @@ -84,6 +89,11 @@ export const CRAWLER_DOMAIN_CONFIG: DomainConfig = { }; export const CRAWLER_DOMAIN: CrawlerDomain = { + auth: { + type: 'basic', + username: 'username', + password: 'password', + }, availableDeduplicationFields: ['title', 'url'], crawlRules: [CRAWL_RULE], createdOn: '1657234422', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/types.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/types.ts index c29101c205c40..f828d34bdde12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/types.ts @@ -63,9 +63,23 @@ export enum CrawlType { Partial = 'partial', } +export interface BasicCrawlerAuth { + password: string; + type: 'basic'; + username: string; +} + +export interface RawCrawlerAuth { + header: string; + type: 'raw'; +} + +export type CrawlerAuth = BasicCrawlerAuth | RawCrawlerAuth | null; + // Server export interface CrawlerDomainFromServer { + auth: CrawlerAuth; available_deduplication_fields: string[]; crawl_rules: CrawlRule[]; created_on: string; @@ -150,6 +164,7 @@ export interface DomainConfigFromServer { // Client export interface CrawlerDomain { + auth: CrawlerAuth; availableDeduplicationFields: string[]; crawlRules: CrawlRule[]; createdOn: string; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/utils.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/utils.ts index b4853875dc9f7..ab47d8a575c5b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/utils.ts @@ -26,25 +26,30 @@ import { DomainConfigFromServer, CrawlerDomainsWithMetaFromServer, CrawlerDomainsWithMeta, + BasicCrawlerAuth, + CrawlerAuth, + RawCrawlerAuth, } from './types'; export function crawlerDomainServerToClient(payload: CrawlerDomainFromServer): CrawlerDomain { const { - id, - name, - sitemaps, - created_on: createdOn, - last_visited_at: lastCrawl, - document_count: documentCount, + auth, + available_deduplication_fields: availableDeduplicationFields, crawl_rules: crawlRules, - default_crawl_rule: defaultCrawlRule, - entry_points: entryPoints, + created_on: createdOn, deduplication_enabled: deduplicationEnabled, deduplication_fields: deduplicationFields, - available_deduplication_fields: availableDeduplicationFields, + default_crawl_rule: defaultCrawlRule, + document_count: documentCount, + entry_points: entryPoints, + id, + last_visited_at: lastCrawl, + name, + sitemaps, } = payload; const clientPayload: CrawlerDomain = { + auth, availableDeduplicationFields, crawlRules, createdOn, @@ -235,3 +240,11 @@ export const crawlerDomainsWithMetaServerToClient = ({ domains: results.map(crawlerDomainServerToClient), meta, }); + +export function isBasicCrawlerAuth(auth: CrawlerAuth): auth is BasicCrawlerAuth { + return auth !== null && (auth as BasicCrawlerAuth).type === 'basic'; +} + +export function isRawCrawlerAuth(auth: CrawlerAuth): auth is RawCrawlerAuth { + return auth !== null && (auth as RawCrawlerAuth).type === 'raw'; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.scss b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.scss new file mode 100644 index 0000000000000..0f571379476eb --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.scss @@ -0,0 +1,5 @@ +.authenticationPanel { + .authenticationCheckable { + height: 100%; + } +} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.tsx new file mode 100644 index 0000000000000..ddfa88cf27ff0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel.tsx @@ -0,0 +1,53 @@ +/* + * 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 { useValues } from 'kea'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { DataPanel } from '../../../../shared/data_panel/data_panel'; + +import { AuthenticationPanelActions } from './authentication_panel_actions'; +import { AuthenticationPanelDeleteConfirmationModal } from './authentication_panel_delete_confirmation_modal'; +import { AuthenticationPanelEditContent } from './authentication_panel_edit_content'; +import { AuthenticationPanelLogic } from './authentication_panel_logic'; +import { AuthenticationPanelViewContent } from './authentication_panel_view_content'; + +import './authentication_panel.scss'; + +export const AuthenticationPanel: React.FC = () => { + const { isEditing, isModalVisible } = useValues(AuthenticationPanelLogic); + + return ( + <> + + {i18n.translate('xpack.enterpriseSearch.crawler.authenticationPanel.title', { + defaultMessage: 'Authentication', + })} + + } + action={} + subtitle={ + + } + > + {isEditing ? : } + + {isModalVisible && } + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_actions.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_actions.tsx new file mode 100644 index 0000000000000..2a42a26ee8754 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_actions.tsx @@ -0,0 +1,84 @@ +/* + * 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 { useActions, useValues } from 'kea'; + +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { + SAVE_BUTTON_LABEL, + CANCEL_BUTTON_LABEL, + DELETE_BUTTON_LABEL, +} from '../../../../shared/constants'; +import { CrawlerAuth } from '../../../api/crawler/types'; +import { CrawlerDomainDetailLogic } from '../crawler_domain_detail_logic'; + +import { AuthenticationPanelLogic } from './authentication_panel_logic'; + +export const AuthenticationPanelActions: React.FC = () => { + const { domain } = useValues(CrawlerDomainDetailLogic); + + const currentAuth: CrawlerAuth = domain?.auth ?? null; + + const { disableEditing, enableEditing, saveCredentials, setIsModalVisible } = + useActions(AuthenticationPanelLogic); + + const { isEditing } = useValues(AuthenticationPanelLogic); + + return isEditing ? ( + + + saveCredentials()} + > + {SAVE_BUTTON_LABEL} + + + + disableEditing()} + > + {CANCEL_BUTTON_LABEL} + + + + ) : currentAuth === null ? ( + enableEditing(currentAuth)} + > + {i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.resetToDefaultsButtonLabel', + { + defaultMessage: 'Add credentials', + } + )} + + ) : ( + { + setIsModalVisible(true); + }} + > + {DELETE_BUTTON_LABEL} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_delete_confirmation_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_delete_confirmation_modal.tsx new file mode 100644 index 0000000000000..98c9737801887 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_delete_confirmation_modal.tsx @@ -0,0 +1,57 @@ +/* + * 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 { useActions } from 'kea'; + +import { EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { CANCEL_BUTTON_LABEL } from '../../../../shared/constants'; + +import { AuthenticationPanelLogic } from './authentication_panel_logic'; + +export const AuthenticationPanelDeleteConfirmationModal: React.FC = () => { + const { deleteCredentials, setIsModalVisible } = useActions(AuthenticationPanelLogic); + + return ( + { + event?.preventDefault(); + setIsModalVisible(false); + }} + onConfirm={(event) => { + event.preventDefault(); + deleteCredentials(); + }} + cancelButtonText={CANCEL_BUTTON_LABEL} + confirmButtonText={i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.deleteConfirmationModal.deleteButtonLabel', + { + defaultMessage: 'Delete', + } + )} + defaultFocusedButton="confirm" + buttonColor="danger" + > + {i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.deleteConfirmationModal.description', + { + defaultMessage: + 'Deleting these settings might prevent the crawler from indexing protected areas of the domain. This can not be undone.', + } + )} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_edit_content.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_edit_content.tsx new file mode 100644 index 0000000000000..eeed5bb377fe7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_edit_content.tsx @@ -0,0 +1,99 @@ +/* + * 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 { useActions, useValues } from 'kea'; + +import { + EuiForm, + EuiFieldText, + EuiFieldPassword, + EuiFormRow, + EuiTitle, + EuiCheckableCard, + EuiFormFieldset, + EuiFlexGroup, + EuiFlexItem, +} from '@elastic/eui'; + +import { USERNAME_LABEL, PASSWORD_LABEL, TOKEN_LABEL } from '../../../../shared/constants'; + +import { AuthenticationPanelLogic } from './authentication_panel_logic'; +import { AUTHENTICATION_LABELS } from './constants'; + +export const AuthenticationPanelEditContent: React.FC = () => { + const { selectAuthOption, setHeaderContent, setPassword, setUsername } = + useActions(AuthenticationPanelLogic); + + const { headerContent, username, password, selectedAuthOption } = + useValues(AuthenticationPanelLogic); + + return ( + + + + +
{AUTHENTICATION_LABELS.basic}
+
+ } + value="basic" + checked={selectedAuthOption === 'basic'} + onChange={() => selectAuthOption('basic')} + > + + + setUsername(event.target.value)} + disabled={selectedAuthOption !== 'basic'} + /> + + + setPassword(event.target.value)} + disabled={selectedAuthOption !== 'basic'} + /> + + + +
+ + +
{AUTHENTICATION_LABELS.raw}
+ + } + value="raw" + checked={selectedAuthOption === 'raw'} + onChange={() => selectAuthOption('raw')} + > + + + setHeaderContent(event.target.value)} + disabled={selectedAuthOption !== 'raw'} + /> + + +
+
+
+ + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_logic.ts new file mode 100644 index 0000000000000..de78802ca2ee0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_logic.ts @@ -0,0 +1,134 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { CrawlerAuth } from '../../../api/crawler/types'; +import { isRawCrawlerAuth, isBasicCrawlerAuth } from '../../../api/crawler/utils'; +import { + CrawlerDomainDetailActions, + CrawlerDomainDetailLogic, +} from '../crawler_domain_detail_logic'; + +interface AuthenticationPanelValues { + headerContent: string; + isEditing: boolean; + isModalVisible: boolean; + password: string; + selectedAuthOption: string | null; + username: string; +} + +type AuthenticationPanelActions = { + deleteCredentials(): void; + disableEditing(): void; + enableEditing(currentCrawlerAuth?: CrawlerAuth): { currentCrawlerAuth: CrawlerAuth | undefined }; + saveCredentials(): void; + selectAuthOption(authType: string): { authType: string }; + setHeaderContent(headerContent: string): { headerContent: string }; + setIsModalVisible(isModalVisible: boolean): { isModalVisible: boolean }; + setPassword(password: string): { password: string }; + setUsername(username: string): { username: string }; +} & Pick; + +export const AuthenticationPanelLogic = kea< + MakeLogicType +>({ + path: ['enterprise_search', 'app_search', 'crawler', 'authentication_panel'], + connect: { + actions: [CrawlerDomainDetailLogic, ['submitAuthUpdate', 'receiveDomainData']], + }, + actions: () => ({ + deleteCredentials: true, + disableEditing: true, + enableEditing: (currentCrawlerAuth) => ({ currentCrawlerAuth }), + saveCredentials: true, + selectAuthOption: (authType) => ({ authType }), + setHeaderContent: (headerContent) => ({ headerContent }), + setIsModalVisible: (isModalVisible) => ({ isModalVisible }), + setPassword: (password) => ({ password }), + setUsername: (username) => ({ username }), + }), + reducers: () => ({ + headerContent: [ + '', + { + enableEditing: (_, { currentCrawlerAuth }) => + currentCrawlerAuth !== undefined && isRawCrawlerAuth(currentCrawlerAuth) + ? currentCrawlerAuth.header + : '', + receiveDomainData: () => '', + setHeaderContent: (_, { headerContent }) => headerContent, + }, + ], + isEditing: [ + false, + { + disableEditing: () => false, + enableEditing: () => true, + receiveDomainData: () => false, + }, + ], + isModalVisible: [ + false, + { + receiveDomainData: () => false, + setIsModalVisible: (_, { isModalVisible }) => isModalVisible, + }, + ], + password: [ + '', + { + enableEditing: (_, { currentCrawlerAuth }) => + currentCrawlerAuth !== undefined && isBasicCrawlerAuth(currentCrawlerAuth) + ? currentCrawlerAuth.password + : '', + receiveDomainData: () => '', + setPassword: (_, { password }) => password, + }, + ], + selectedAuthOption: [ + null, + { + enableEditing: (_, { currentCrawlerAuth }) => currentCrawlerAuth?.type ?? 'basic', + receiveDomainData: () => null, + selectAuthOption: (_, { authType }) => authType, + }, + ], + username: [ + '', + { + enableEditing: (_, { currentCrawlerAuth }) => + currentCrawlerAuth !== undefined && isBasicCrawlerAuth(currentCrawlerAuth) + ? currentCrawlerAuth.username + : '', + receiveDomainData: () => '', + setUsername: (_, { username }) => username, + }, + ], + }), + listeners: ({ values }) => ({ + saveCredentials: () => { + const { headerContent, password, selectedAuthOption, username } = values; + if (selectedAuthOption === 'basic') { + CrawlerDomainDetailLogic.actions.submitAuthUpdate({ + password, + type: 'basic', + username, + }); + } else if (selectedAuthOption === 'raw') { + CrawlerDomainDetailLogic.actions.submitAuthUpdate({ + header: headerContent, + type: 'raw', + }); + } + }, + deleteCredentials: () => { + CrawlerDomainDetailLogic.actions.submitAuthUpdate(null); + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_view_content.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_view_content.tsx new file mode 100644 index 0000000000000..34d29d05dfe7b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/authentication_panel_view_content.tsx @@ -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 React from 'react'; + +import { useValues } from 'kea'; + +import { EuiEmptyPrompt, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { CrawlerDomainDetailLogic } from '../crawler_domain_detail_logic'; + +import './authentication_panel.scss'; + +export const AuthenticationPanelViewContent: React.FC = () => { + const { domain } = useValues(CrawlerDomainDetailLogic); + + return domain?.auth ? ( + + +

+ {i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.configurationSavePanel.title', + { + defaultMessage: 'Configuration settings saved', + } + )} +

+
+ + + {i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.configurationSavePanel.description', + { + defaultMessage: + 'Authentication settings for crawling protected content have been saved. To update an authentication mechanism, delete settings and restart.', + } + )} + +
+ ) : ( + + {i18n.translate('xpack.enterpriseSearch.crawler.authenticationPanel.emptyPrompt.title', { + defaultMessage: 'No authentication configured', + })} + + } + body={ + + {i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.emptyPrompt.addAuthenticationButtonLabel', + { + defaultMessage: 'Add authentication', + } + )} + + ), + }} + /> + } + titleSize="s" + /> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/constants.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/constants.ts new file mode 100644 index 0000000000000..2918f54892cc5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/authentication_panel/constants.ts @@ -0,0 +1,20 @@ +/* + * 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'; + +export const AUTHENTICATION_LABELS = { + basic: i18n.translate( + 'xpack.enterpriseSearch.crawler.authenticationPanel.basicAuthenticationLabel', + { + defaultMessage: 'Basic authentication', + } + ), + raw: i18n.translate('xpack.enterpriseSearch.crawler.authenticationPanel.rawAuthenticationLabel', { + defaultMessage: 'Bearer authentication', + }), +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail.tsx index e655e71066bf1..793da41b89be1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail.tsx @@ -28,6 +28,7 @@ import { SearchIndexTabId } from '../search_index/search_index'; import { baseBreadcrumbs } from '../search_indices'; import { CrawlerStatusIndicator } from '../shared/crawler_status_indicator/crawler_status_indicator'; +import { AuthenticationPanel } from './authentication_panel/authentication_panel'; import { CrawlRulesTable } from './crawl_rules_table'; import { CrawlerDomainDetailLogic } from './crawler_domain_detail_logic'; import { DeduplicationPanel } from './deduplication_panel/deduplication_panel'; @@ -96,6 +97,8 @@ export const CrawlerDomainDetail: React.FC = () => { + + diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail_logic.ts index c2ae2e3409eac..0b00622492c9b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/crawler_domain_detail_logic.ts @@ -21,6 +21,7 @@ import { DeleteCrawlerDomainResponse, } from '../../api/crawler/delete_crawler_domain_api_logic'; import { + CrawlerAuth, CrawlerDomain, CrawlerDomainFromServer, CrawlRule, @@ -44,13 +45,14 @@ export interface CrawlerDomainDetailValues { getLoading: boolean; } -interface CrawlerDomainDetailActions { +export interface CrawlerDomainDetailActions { deleteApiError(error: HttpError): HttpError; deleteApiSuccess(response: DeleteCrawlerDomainResponse): DeleteCrawlerDomainResponse; deleteDomain(): void; deleteMakeRequest(args: DeleteCrawlerDomainArgs): DeleteCrawlerDomainArgs; fetchDomainData(domainId: string): { domainId: string }; receiveDomainData(domain: CrawlerDomain): { domain: CrawlerDomain }; + submitAuthUpdate(auth: CrawlerAuth): { auth: CrawlerAuth }; submitDeduplicationUpdate(payload: { enabled?: boolean; fields?: string[] }): { enabled: boolean; fields: string[]; @@ -80,6 +82,7 @@ export const CrawlerDomainDetailLogic = kea< deleteDomainComplete: () => true, fetchDomainData: (domainId) => ({ domainId }), receiveDomainData: (domain) => ({ domain }), + submitAuthUpdate: (auth) => ({ auth }), submitDeduplicationUpdate: ({ fields, enabled }) => ({ enabled, fields }), updateCrawlRules: (crawlRules) => ({ crawlRules }), updateEntryPoints: (entryPoints) => ({ entryPoints }), @@ -135,7 +138,6 @@ export const CrawlerDomainDetailLogic = kea< deleteApiError: (error) => { flashAPIErrors(error); }, - fetchDomainData: async ({ domainId }) => { const { http } = HttpLogic.values; const { indexName } = IndexNameLogic.values; @@ -152,6 +154,30 @@ export const CrawlerDomainDetailLogic = kea< flashAPIErrors(e); } }, + submitAuthUpdate: async ({ auth }) => { + const { http } = HttpLogic.values; + const { indexName } = IndexNameLogic.values; + const { domainId } = values; + + const payload = { + auth, + }; + + try { + const response = await http.put( + `/internal/enterprise_search/indices/${indexName}/crawler/domains/${domainId}`, + { + body: JSON.stringify(payload), + } + ); + + const domainData = crawlerDomainServerToClient(response); + + actions.receiveDomainData(domainData); + } catch (e) { + flashAPIErrors(e); + } + }, submitDeduplicationUpdate: async ({ fields, enabled }) => { const { http } = HttpLogic.values; const { indexName } = IndexNameLogic.values; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/entry_points_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/entry_points_table.test.tsx index e57cd195946a5..a540a24188783 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/entry_points_table.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/entry_points_table.test.tsx @@ -25,6 +25,7 @@ describe('EntryPointsTable', () => { { id: '2', value: '/foo' }, ]; const domain: CrawlerDomain = { + auth: null, availableDeduplicationFields: ['title', 'description'], crawlRules: [], createdOn: '2018-01-01T00:00:00.000Z', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/sitemaps_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/sitemaps_table.test.tsx index ded26ca4b1acf..f8d1ddd3d4b57 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/sitemaps_table.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/crawler_domain_detail/sitemaps_table.test.tsx @@ -16,6 +16,8 @@ import { mountWithIntl } from '@kbn/test-jest-helpers'; import { GenericEndpointInlineEditableTable } from '../../../shared/tables/generic_endpoint_inline_editable_table'; +import { CrawlerDomain } from '../../api/crawler/types'; + import { SitemapsTable } from './sitemaps_table'; describe('SitemapsTable', () => { @@ -25,7 +27,8 @@ describe('SitemapsTable', () => { { id: '1', url: 'http://www.example.com/sitemap.xml' }, { id: '2', url: 'http://www.example.com/whatever/sitemaps.xml' }, ]; - const domain = { + const domain: CrawlerDomain = { + auth: null, createdOn: '2018-01-01T00:00:00.000Z', documentCount: 10, id: '6113e1407a2f2e6f42489794', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler/domain_management/domains_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler/domain_management/domains_table.test.tsx index 1edac9de49f53..6ef7512a59483 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler/domain_management/domains_table.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler/domain_management/domains_table.test.tsx @@ -38,6 +38,7 @@ const domains: CrawlerDomain[] = [ deduplicationEnabled: false, deduplicationFields: ['title'], availableDeduplicationFields: ['title', 'description'], + auth: null, }, { id: '4567', @@ -50,6 +51,7 @@ const domains: CrawlerDomain[] = [ deduplicationEnabled: false, deduplicationFields: ['title'], availableDeduplicationFields: ['title', 'description'], + auth: null, }, ]; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/constants/labels.ts b/x-pack/plugins/enterprise_search/public/applications/shared/constants/labels.ts index 8e6159d2b5b2a..88cec898afcb0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/constants/labels.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/constants/labels.ts @@ -10,6 +10,19 @@ import { i18n } from '@kbn/i18n'; export const USERNAME_LABEL = i18n.translate('xpack.enterpriseSearch.usernameLabel', { defaultMessage: 'Username', }); + +export const PASSWORD_LABEL = i18n.translate('xpack.enterpriseSearch.passwordLabel', { + defaultMessage: 'Password', +}); + +export const TOKEN_LABEL = i18n.translate('xpack.enterpriseSearch.tokenLabel', { + defaultMessage: 'Token', +}); + +export const TYPE_LABEL = i18n.translate('xpack.enterpriseSearch.typeLabel', { + defaultMessage: 'Type', +}); + export const EMAIL_LABEL = i18n.translate('xpack.enterpriseSearch.emailLabel', { defaultMessage: 'Email', }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.test.tsx index 547dc87e27486..917e3ab649476 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { EuiIcon, EuiButton, EuiTitle, EuiFlexGroup, EuiSpacer } from '@elastic/eui'; +import { EuiIcon, EuiButton, EuiTitle, EuiSpacer } from '@elastic/eui'; import { LoadingOverlay } from '../loading'; @@ -94,16 +94,6 @@ describe('DataPanel', () => { expect(wrapper.find(EuiTitle).prop('size')).toEqual('s'); }); - it('passes responsive to the header flex group', () => { - const wrapper = shallow(Test} />); - - expect(wrapper.find(EuiFlexGroup).first().prop('responsive')).toEqual(false); - - wrapper.setProps({ responsive: true }); - - expect(wrapper.find(EuiFlexGroup).first().prop('responsive')).toEqual(true); - }); - it('renders panel color based on filled flag', () => { const wrapper = shallow(Test} />); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.tsx index 0d4820a531c35..dd3d6b28f2547 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/data_panel/data_panel.tsx @@ -32,7 +32,6 @@ type Props = Omit<_EuiPanelDivlike, 'title'> & { iconType?: EuiIconProps['type']; action?: React.ReactNode; footerDocLink?: React.ReactNode; - responsive?: boolean; filled?: boolean; isLoading?: boolean; className?: string; @@ -44,7 +43,6 @@ export const DataPanel: React.FC = ({ subtitle, iconType, action, - responsive = false, filled, isLoading, footerDocLink, @@ -66,35 +64,29 @@ export const DataPanel: React.FC = ({ {...props} > - - + + - - - {iconType && ( - - - - )} - - {title} - - + {iconType && ( + + + + )} + + {title} - {action && {action}} - - {subtitle && ( - <> - - -

{subtitle}

-
- - )} -
+ {action && {action}}
+ {subtitle && ( + <> + + +

{subtitle}

+
+ + )} {children && ( <> diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts index 38e973f7305ad..0af97578b56a4 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts @@ -260,6 +260,16 @@ export function registerCrawlerRoutes(routeDependencies: RouteDependencies) { path: '/internal/enterprise_search/indices/{indexName}/crawler/domains/{domainId}', validate: { body: schema.object({ + auth: schema.maybe( + schema.nullable( + schema.object({ + header: schema.maybe(schema.string()), + password: schema.maybe(schema.string()), + type: schema.string(), + username: schema.maybe(schema.string()), + }) + ) + ), crawl_rules: schema.maybe( schema.arrayOf( schema.object({ From ed7b869640dcb255b6895867abde5e2f5e9dde7a Mon Sep 17 00:00:00 2001 From: Adam Demjen Date: Thu, 15 Sep 2022 23:01:31 -0400 Subject: [PATCH 27/79] [8.5][Enterprise Search] Add ML inference PL creation flow (#140645) * Add ML inference PL creation flow * Add exists check, clean up code a bit * Fix dest name * Separate concerns * Remove i18n due to linter error, fix src field ref * Add/update unit tests * Refactor error handling * Add sub-pipeline to parent ML PL * Add unit tests and docs * Refactor error handling * Wrap logic into higher level function * Add route test * Update routes --- .../common/types/error_codes.ts | 1 + .../create_pipeline_definitions.test.ts | 4 +- .../pipelines/create_pipeline_definitions.ts | 2 +- .../routes/enterprise_search/indices.test.ts | 125 ++++++++++-- .../routes/enterprise_search/indices.ts | 64 ++++++ .../create_ml_inference_pipeline.test.ts | 187 ++++++++++++++++++ .../utils/create_ml_inference_pipeline.ts | 172 ++++++++++++++++ 7 files changed, 538 insertions(+), 17 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts create mode 100644 x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts diff --git a/x-pack/plugins/enterprise_search/common/types/error_codes.ts b/x-pack/plugins/enterprise_search/common/types/error_codes.ts index e0e4070e167e1..8ceb77281a1e5 100644 --- a/x-pack/plugins/enterprise_search/common/types/error_codes.ts +++ b/x-pack/plugins/enterprise_search/common/types/error_codes.ts @@ -13,6 +13,7 @@ export enum ErrorCode { CRAWLER_ALREADY_EXISTS = 'crawler_already_exists', INDEX_ALREADY_EXISTS = 'index_already_exists', INDEX_NOT_FOUND = 'index_not_found', + PIPELINE_ALREADY_EXISTS = 'pipeline_already_exists', RESOURCE_NOT_FOUND = 'resource_not_found', UNAUTHORIZED = 'unauthorized', UNCAUGHT_EXCEPTION = 'uncaught_exception', diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts index 6961086edac1b..4052fefef50c1 100644 --- a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts @@ -70,7 +70,7 @@ describe('formatMlPipelineBody util function', () => { model_id: modelId, target_field: `ml.inference.${destField}`, field_map: { - sourceField: modelInputField, + 'my-source-field': modelInputField, }, }, }, @@ -154,7 +154,7 @@ describe('formatMlPipelineBody util function', () => { model_id: modelId, target_field: `ml.inference.${destField}`, field_map: { - sourceField: modelInputField, + 'my-source-field': modelInputField, }, }, }, diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts index 666588dd09886..ef7f6f9857359 100644 --- a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts @@ -271,7 +271,7 @@ export const formatMlPipelineBody = async ( model_id: modelId, target_field: `ml.inference.${destinationField}`, field_map: { - sourceField: modelInputField, + [sourceField]: modelInputField, }, }, }, diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts index f4c5657e000b1..377d8cb0793b0 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts @@ -9,10 +9,16 @@ import { MockRouter, mockDependencies } from '../../__mocks__'; import { RequestHandlerContext } from '@kbn/core/server'; +import { ErrorCode } from '../../../common/types/error_codes'; + jest.mock('../../lib/indices/fetch_ml_inference_pipeline_processors', () => ({ fetchMlInferencePipelineProcessors: jest.fn(), })); +jest.mock('../../utils/create_ml_inference_pipeline', () => ({ + createAndReferenceMlInferencePipeline: jest.fn(), +})); import { fetchMlInferencePipelineProcessors } from '../../lib/indices/fetch_ml_inference_pipeline_processors'; +import { createAndReferenceMlInferencePipeline } from '../../utils/create_ml_inference_pipeline'; import { registerIndexRoutes } from './indices'; @@ -22,24 +28,24 @@ describe('Enterprise Search Managed Indices', () => { asCurrentUser: {}, }; - beforeEach(() => { - const context = { - core: Promise.resolve({ elasticsearch: { client: mockClient } }), - } as jest.Mocked; + describe('GET /internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', () => { + beforeEach(() => { + const context = { + core: Promise.resolve({ elasticsearch: { client: mockClient } }), + } as jest.Mocked; - mockRouter = new MockRouter({ - context, - method: 'get', - path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', - }); + mockRouter = new MockRouter({ + context, + method: 'get', + path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', + }); - registerIndexRoutes({ - ...mockDependencies, - router: mockRouter.router, + registerIndexRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); }); - }); - describe('GET /internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', () => { it('fails validation without index_name', () => { const request = { params: {} }; mockRouter.shouldThrow(request); @@ -71,4 +77,95 @@ describe('Enterprise Search Managed Indices', () => { }); }); }); + + describe('POST /internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', () => { + const mockRequestBody = { + model_id: 'my-model-id', + pipeline_name: 'my-pipeline-name', + source_field: 'my-source-field', + destination_field: 'my-dest-field', + }; + + beforeEach(() => { + jest.clearAllMocks(); + + const context = { + core: Promise.resolve({ elasticsearch: { client: mockClient } }), + } as jest.Mocked; + + mockRouter = new MockRouter({ + context, + method: 'post', + path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', + }); + + registerIndexRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('fails validation without index_name', () => { + const request = { + params: {}, + }; + mockRouter.shouldThrow(request); + }); + + it('fails validation without required body properties', () => { + const request = { + params: { indexName: 'my-index-name' }, + body: {}, + }; + mockRouter.shouldThrow(request); + }); + + it('creates an ML inference pipeline', async () => { + (createAndReferenceMlInferencePipeline as jest.Mock).mockImplementationOnce(() => { + return Promise.resolve({ + id: 'ml-inference-my-pipeline-name', + created: true, + addedToParentPipeline: true, + }); + }); + + await mockRouter.callRoute({ + params: { indexName: 'my-index-name' }, + body: mockRequestBody, + }); + + expect(createAndReferenceMlInferencePipeline).toHaveBeenCalledWith( + 'my-index-name', + mockRequestBody.pipeline_name, + mockRequestBody.model_id, + mockRequestBody.source_field, + mockRequestBody.destination_field, + {} + ); + + expect(mockRouter.response.ok).toHaveBeenCalledWith({ + body: { + created: 'ml-inference-my-pipeline-name', + }, + headers: { 'content-type': 'application/json' }, + }); + }); + + it('responds with 409 CONFLICT if the pipeline already exists', async () => { + (createAndReferenceMlInferencePipeline as jest.Mock).mockImplementationOnce(() => { + return Promise.reject(new Error(ErrorCode.PIPELINE_ALREADY_EXISTS)); + }); + + await mockRouter.callRoute({ + params: { indexName: 'my-index-name' }, + body: mockRequestBody, + }); + + expect(mockRouter.response.customError).toHaveBeenCalledWith( + expect.objectContaining({ + statusCode: 409, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index 95f5f9f15bf62..b3f033ba9507f 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -24,6 +24,10 @@ import { createIndexPipelineDefinitions } from '../../lib/pipelines/create_pipel import { getCustomPipelines } from '../../lib/pipelines/get_custom_pipelines'; import { RouteDependencies } from '../../plugin'; import { createError } from '../../utils/create_error'; +import { + createAndReferenceMlInferencePipeline, + CreatedPipeline, +} from '../../utils/create_ml_inference_pipeline'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; import { isIndexNotFoundException } from '../../utils/identify_exceptions'; @@ -312,6 +316,66 @@ export function registerIndexRoutes({ }) ); + router.post( + { + path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', + validate: { + params: schema.object({ + indexName: schema.string(), + }), + body: schema.object({ + pipeline_name: schema.string(), + model_id: schema.string(), + source_field: schema.string(), + destination_field: schema.maybe(schema.nullable(schema.string())), + }), + }, + }, + + elasticsearchErrorHandler(log, async (context, request, response) => { + const indexName = decodeURIComponent(request.params.indexName); + const { client } = (await context.core).elasticsearch; + const { + model_id: modelId, + pipeline_name: pipelineName, + source_field: sourceField, + destination_field: destinationField, + } = request.body; + + let createPipelineResult: CreatedPipeline | undefined; + try { + // Create the sub-pipeline for inference + createPipelineResult = await createAndReferenceMlInferencePipeline( + indexName, + pipelineName, + modelId, + sourceField, + destinationField || modelId, + client.asCurrentUser + ); + } catch (error) { + // Handle scenario where pipeline already exists + if ((error as Error).message === ErrorCode.PIPELINE_ALREADY_EXISTS) { + return createError({ + errorCode: (error as Error).message as ErrorCode, + message: 'Pipeline already exists', + response, + statusCode: 409, + }); + } + + throw error; + } + + return response.ok({ + body: { + created: createPipelineResult?.id, + }, + headers: { 'content-type': 'application/json' }, + }); + }) + ); + router.post( { path: '/internal/enterprise_search/indices', diff --git a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts new file mode 100644 index 0000000000000..e4100a003eb81 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts @@ -0,0 +1,187 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core/server'; + +import { + createMlInferencePipeline, + addSubPipelineToIndexSpecificMlPipeline, +} from './create_ml_inference_pipeline'; + +describe('createMlInferencePipeline util function', () => { + const pipelineName = 'my-pipeline'; + const modelId = 'my-model-id'; + const sourceField = 'my-source-field'; + const destinationField = 'my-dest-field'; + const inferencePipelineGeneratedName = `ml-inference-${pipelineName}`; + + const mockClient = { + ingest: { + getPipeline: jest.fn(), + putPipeline: jest.fn(), + }, + ml: { + getTrainedModels: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should create the pipeline if it doesn't exist", async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject({ statusCode: 404 })); // Pipeline does not exist + mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); + mockClient.ml.getTrainedModels.mockImplementation(() => + Promise.resolve({ + trained_model_configs: [ + { + input: { + field_names: ['target-field'], + }, + }, + ], + }) + ); + + const expectedResult = { + created: true, + id: inferencePipelineGeneratedName, + }; + + const actualResult = await createMlInferencePipeline( + pipelineName, + modelId, + sourceField, + destinationField, + mockClient as unknown as ElasticsearchClient + ); + + expect(actualResult).toEqual(expectedResult); + expect(mockClient.ingest.putPipeline).toHaveBeenCalled(); + }); + + it('should throw an error without creating the pipeline if it already exists', () => { + mockClient.ingest.getPipeline.mockImplementation(() => + Promise.resolve({ + [inferencePipelineGeneratedName]: {}, + }) + ); // Pipeline exists + + const actualResult = createMlInferencePipeline( + pipelineName, + modelId, + sourceField, + destinationField, + mockClient as unknown as ElasticsearchClient + ); + + expect(actualResult).rejects.toThrow(Error); + expect(mockClient.ingest.putPipeline).not.toHaveBeenCalled(); + }); +}); + +describe('addSubPipelineToIndexSpecificMlPipeline util function', () => { + const indexName = 'my-index'; + const parentPipelineId = `${indexName}@ml-inference`; + const pipelineName = 'ml-inference-my-pipeline'; + + const mockClient = { + ingest: { + getPipeline: jest.fn(), + putPipeline: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should add the sub-pipeline reference to the parent ML pipeline if it isn't there", async () => { + mockClient.ingest.getPipeline.mockImplementation(() => + Promise.resolve({ + [parentPipelineId]: { + processors: [], + }, + }) + ); + + const expectedResult = { + id: pipelineName, + addedToParentPipeline: true, + }; + + const actualResult = await addSubPipelineToIndexSpecificMlPipeline( + indexName, + pipelineName, + mockClient as unknown as ElasticsearchClient + ); + + expect(actualResult).toEqual(expectedResult); + // Verify the parent pipeline was updated with a reference of the sub-pipeline + expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith({ + id: parentPipelineId, + processors: expect.arrayContaining([ + { + pipeline: { + name: pipelineName, + }, + }, + ]), + }); + }); + + it('should not add the sub-pipeline reference to the parent ML pipeline if the parent is missing', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject({ statusCode: 404 })); // Pipeline does not exist + + const expectedResult = { + id: pipelineName, + addedToParentPipeline: false, + }; + + const actualResult = await addSubPipelineToIndexSpecificMlPipeline( + indexName, + pipelineName, + mockClient as unknown as ElasticsearchClient + ); + + expect(actualResult).toEqual(expectedResult); + // Verify the parent pipeline was NOT updated + expect(mockClient.ingest.putPipeline).not.toHaveBeenCalled(); + }); + + it('should not add the sub-pipeline reference to the parent ML pipeline if it is already there', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => + Promise.resolve({ + [parentPipelineId]: { + processors: [ + { + pipeline: { + name: pipelineName, + }, + }, + ], + }, + }) + ); + + const expectedResult = { + id: pipelineName, + addedToParentPipeline: false, + }; + + const actualResult = await addSubPipelineToIndexSpecificMlPipeline( + indexName, + pipelineName, + mockClient as unknown as ElasticsearchClient + ); + + expect(actualResult).toEqual(expectedResult); + // Verify the parent pipeline was NOT updated + expect(mockClient.ingest.putPipeline).not.toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts new file mode 100644 index 0000000000000..3e1b51efabaf8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts @@ -0,0 +1,172 @@ +/* + * 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 { IngestGetPipelineResponse, IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; +import { ElasticsearchClient } from '@kbn/core/server'; + +import { ErrorCode } from '../../common/types/error_codes'; + +import { formatMlPipelineBody } from '../lib/pipelines/create_pipeline_definitions'; + +/** + * Details of a created pipeline. + */ +export interface CreatedPipeline { + id: string; + created?: boolean; + addedToParentPipeline?: boolean; +} + +/** + * Creates a Machine Learning Inference pipeline with the given settings, if it doesn't exist yet, + * then references it in the "parent" ML Inference pipeline that is associated with the index. + * @param indexName name of the index this pipeline corresponds to. + * @param pipelineName pipeline name set by the user. + * @param modelId model ID selected by the user. + * @param sourceField The document field that model will read. + * @param destinationField The document field that the model will write to. + * @param esClient the Elasticsearch Client to use when retrieving pipeline and model details. + */ +export const createAndReferenceMlInferencePipeline = async ( + indexName: string, + pipelineName: string, + modelId: string, + sourceField: string, + destinationField: string, + esClient: ElasticsearchClient +): Promise => { + const createPipelineResult = await createMlInferencePipeline( + pipelineName, + modelId, + sourceField, + destinationField || modelId, + esClient + ); + + const addSubPipelineResult = await addSubPipelineToIndexSpecificMlPipeline( + indexName, + createPipelineResult.id, + esClient + ); + + return Promise.resolve({ + ...createPipelineResult, + addedToParentPipeline: addSubPipelineResult.addedToParentPipeline, + }); +}; + +/** + * Creates a Machine Learning Inference pipeline with the given settings, if it doesn't exist yet. + * @param pipelineName pipeline name set by the user. + * @param modelId model ID selected by the user. + * @param sourceField The document field that model will read. + * @param destinationField The document field that the model will write to. + * @param esClient the Elasticsearch Client to use when retrieving pipeline and model details. + */ +export const createMlInferencePipeline = async ( + pipelineName: string, + modelId: string, + sourceField: string, + destinationField: string, + esClient: ElasticsearchClient +): Promise => { + const inferencePipelineGeneratedName = `ml-inference-${pipelineName}`; + + // Check that a pipeline with the same name doesn't already exist + let pipelineByName: IngestGetPipelineResponse | undefined; + try { + pipelineByName = await esClient.ingest.getPipeline({ + id: inferencePipelineGeneratedName, + }); + } catch (error) { + // Silently swallow error + } + if (pipelineByName?.[inferencePipelineGeneratedName]) { + throw new Error(ErrorCode.PIPELINE_ALREADY_EXISTS); + } + + // Generate pipeline with default processors + const mlInferencePipeline = await formatMlPipelineBody( + modelId, + sourceField, + destinationField, + esClient + ); + + await esClient.ingest.putPipeline({ + id: inferencePipelineGeneratedName, + ...mlInferencePipeline, + }); + + return Promise.resolve({ + id: inferencePipelineGeneratedName, + created: true, + }); +}; + +/** + * Adds the supplied a Machine Learning Inference pipeline reference to the "parent" ML Inference + * pipeline that is associated with the index. + * @param indexName name of the index this pipeline corresponds to. + * @param pipelineName name of the ML Inference pipeline to add. + * @param esClient the Elasticsearch Client to use when retrieving pipeline details. + */ +export const addSubPipelineToIndexSpecificMlPipeline = async ( + indexName: string, + pipelineName: string, + esClient: ElasticsearchClient +): Promise => { + const parentPipelineId = `${indexName}@ml-inference`; + + // Fetch the parent pipeline + let parentPipeline: IngestPipeline | undefined; + try { + const pipelineResponse = await esClient.ingest.getPipeline({ + id: parentPipelineId, + }); + parentPipeline = pipelineResponse[parentPipelineId]; + } catch (error) { + // Swallow error; in this case the next step will return + } + + // Verify the parent pipeline exists with a processors array + if (!parentPipeline?.processors) { + return Promise.resolve({ + id: pipelineName, + addedToParentPipeline: false, + }); + } + + // Check if the sub-pipeline reference is already in the list of processors, + // if so, don't modify it + const existingSubPipeline = parentPipeline.processors.find( + (p) => p.pipeline?.name === pipelineName + ); + if (existingSubPipeline) { + return Promise.resolve({ + id: pipelineName, + addedToParentPipeline: false, + }); + } + + // Add sub-processor to the ML inference parent pipeline + parentPipeline.processors.push({ + pipeline: { + name: pipelineName, + }, + }); + + await esClient.ingest.putPipeline({ + id: parentPipelineId, + ...parentPipeline, + }); + + return Promise.resolve({ + id: pipelineName, + addedToParentPipeline: true, + }); +}; From 997caf021cb242309763a62a1021e19285696fcd Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 15 Sep 2022 22:50:49 -0600 Subject: [PATCH 28/79] [api-docs] Daily api_docs build (#140871) --- api_docs/actions.devdocs.json | 831 +-- api_docs/actions.mdx | 4 +- api_docs/advanced_settings.devdocs.json | 194 +- api_docs/advanced_settings.mdx | 7 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 12 +- api_docs/alerting.mdx | 2 +- api_docs/apm.devdocs.json | 30 +- 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 | 44 +- api_docs/core.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 8 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.devdocs.json | 8 +- 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.devdocs.json | 6 +- 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 | 6 +- api_docs/deprecations_by_team.mdx | 6 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.devdocs.json | 15 + api_docs/discover.mdx | 4 +- 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.devdocs.json | 15 + api_docs/enterprise_search.mdx | 4 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.devdocs.json | 6 +- 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.devdocs.json | 4 +- api_docs/files.mdx | 2 +- api_docs/fleet.devdocs.json | 199 +- api_docs/fleet.mdx | 4 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.devdocs.json | 208 + api_docs/guided_onboarding.mdx | 52 + api_docs/home.devdocs.json | 10 +- 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.devdocs.json | 34 +- api_docs/kbn_aiops_utils.mdx | 4 +- 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.devdocs.json | 38 +- api_docs/kbn_apm_synthtrace.mdx | 4 +- 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.devdocs.json | 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_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_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 +- .../kbn_core_capabilities_browser_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_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_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_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.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 +- ...ticsearch_client_server_mocks.devdocs.json | 16 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- ...kbn_core_elasticsearch_server.devdocs.json | 16 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...elasticsearch_server_internal.devdocs.json | 8 +- ...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.devdocs.json | 10 +- api_docs/kbn_core_http_server.mdx | 2 +- ...kbn_core_http_server_internal.devdocs.json | 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_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_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.devdocs.json | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- ..._core_logging_server_internal.devdocs.json | 4 +- 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 +- 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 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...core_saved_objects_api_server_internal.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.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 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...cts_migration_server_internal.devdocs.json | 4 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.devdocs.json | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- ...n_core_status_common_internal.devdocs.json | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.devdocs.json | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.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 +- .../kbn_core_ui_settings_common.devdocs.json | 6 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.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 +- .../kbn_home_sample_data_card.devdocs.json | 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_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.devdocs.json | 4 +- api_docs/kbn_rule_data_utils.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- ...kbn_securitysolution_es_utils.devdocs.json | 8 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- ...ritysolution_io_ts_list_types.devdocs.json | 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 +- .../kbn_shared_ux_card_no_data.devdocs.json | 6 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- ..._shared_ux_card_no_data_mocks.devdocs.json | 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_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.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 +- ...kbn_typed_react_router_config.devdocs.json | 12 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- .../kbn_user_profile_components.devdocs.json | 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.devdocs.json | 118 +- api_docs/lens.mdx | 4 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.devdocs.json | 8 + api_docs/licensing.mdx | 2 +- api_docs/lists.devdocs.json | 4 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.devdocs.json | 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.devdocs.json | 1703 +++++- api_docs/observability.mdx | 7 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 33 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.devdocs.json | 242 + api_docs/profiling.mdx | 41 + api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.devdocs.json | 6 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- .../saved_objects_management.devdocs.json | 4 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.devdocs.json | 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 | 26 + api_docs/security.mdx | 4 +- api_docs/security_solution.devdocs.json | 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/stack_connectors.devdocs.json | 56 + api_docs/stack_connectors.mdx | 33 + api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- .../telemetry_collection_manager.devdocs.json | 4 +- 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 | 18 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.devdocs.json | 4 +- 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.devdocs.json | 128 +- api_docs/unified_field_list.mdx | 7 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.devdocs.json | 4 +- 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.devdocs.json | 4 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.devdocs.json | 8 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.devdocs.json | 4929 ++++++++++++++--- api_docs/visualizations.mdx | 4 +- 448 files changed, 7563 insertions(+), 2457 deletions(-) create mode 100644 api_docs/guided_onboarding.devdocs.json create mode 100644 api_docs/guided_onboarding.mdx create mode 100644 api_docs/profiling.devdocs.json create mode 100644 api_docs/profiling.mdx create mode 100644 api_docs/stack_connectors.devdocs.json create mode 100644 api_docs/stack_connectors.mdx diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 8817d0b03543e..bf3e33e925837 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -1444,6 +1444,20 @@ "path": "x-pack/plugins/actions/server/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "actions", + "id": "def-server.ActionTypeExecutorOptions.configurationUtilities", + "type": "Object", + "tags": [], + "label": "configurationUtilities", + "description": [], + "signature": [ + "ActionsConfigurationUtilities" + ], + "path": "x-pack/plugins/actions/server/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -1667,171 +1681,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly subAction: \"pushToService\"; readonly subActionParams: Readonly<{} & { incident: Readonly<{} & { tags: string[] | null; title: string; description: string | null; externalId: string | null; }>; comments: Readonly<{} & { comment: string; commentId: string; }>[] | null; }>; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/cases_webhook/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly message: string; readonly to: string[]; readonly subject: string; readonly cc: string[]; readonly bcc: string[]; readonly kibanaFooterLink: Readonly<{} & { path: string; text: string; }>; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/email.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly documents: Record[]; readonly indexOverride: string | null; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/es_index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly source?: string | undefined; readonly summary?: string | undefined; readonly group?: string | undefined; readonly component?: string | undefined; readonly timestamp?: string | undefined; readonly eventAction?: \"resolve\" | \"trigger\" | \"acknowledge\" | undefined; readonly dedupKey?: string | undefined; readonly severity?: \"error\" | \"warning\" | \"info\" | \"critical\" | undefined; readonly class?: string | undefined; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly message: string; readonly level: \"error\" | \"info\" | \"debug\" | \"trace\" | \"warn\" | \"fatal\"; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/server_log.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly message: string; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/slack.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly body?: string | undefined; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/webhook.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "Readonly<{} & { subAction: \"getFields\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"getIncident\"; subActionParams: Readonly<{} & { externalId: string; }>; }> | Readonly<{} & { subAction: \"handshake\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"pushToService\"; subActionParams: Readonly<{} & { incident: Readonly<{} & { description: string | null; category: string | null; externalId: string | null; severity: string | null; urgency: string | null; impact: string | null; short_description: string; subcategory: string | null; correlation_id: string | null; correlation_display: string | null; }>; comments: Readonly<{} & { comment: string; commentId: string; }>[] | null; }>; }> | Readonly<{} & { subAction: \"getChoices\"; subActionParams: Readonly<{} & { fields: string[]; }>; }> | Readonly<{} & { subAction: \"getFields\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"getIncident\"; subActionParams: Readonly<{} & { externalId: string; }>; }> | Readonly<{} & { subAction: \"handshake\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"pushToService\"; subActionParams: Readonly<{} & { incident: Readonly<{} & { description: string | null; category: string | null; externalId: string | null; short_description: string; subcategory: string | null; correlation_id: string | null; correlation_display: string | null; dest_ip: string | string[] | null; malware_hash: string | string[] | null; malware_url: string | string[] | null; source_ip: string | string[] | null; priority: string | null; }>; comments: Readonly<{} & { comment: string; commentId: string; }>[] | null; }>; }> | Readonly<{} & { subAction: \"getChoices\"; subActionParams: Readonly<{} & { fields: string[]; }>; }>" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/servicenow/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "Readonly<{} & { subAction: \"getFields\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"getIncident\"; subActionParams: Readonly<{} & { externalId: string; }>; }> | Readonly<{} & { subAction: \"handshake\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"pushToService\"; subActionParams: Readonly<{} & { incident: Readonly<{} & { description: string | null; parent: string | null; summary: string; externalId: string | null; priority: string | null; issueType: string | null; labels: string[] | null; }>; comments: Readonly<{} & { comment: string; commentId: string; }>[] | null; }>; }> | Readonly<{} & { subAction: \"issueTypes\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"fieldsByIssueType\"; subActionParams: Readonly<{} & { id: string; }>; }> | Readonly<{} & { subAction: \"issues\"; subActionParams: Readonly<{} & { title: string; }>; }> | Readonly<{} & { subAction: \"issue\"; subActionParams: Readonly<{} & { id: string; }>; }>" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/jira/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "Readonly<{} & { subAction: \"getFields\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"getIncident\"; subActionParams: Readonly<{} & { externalId: string; }>; }> | Readonly<{} & { subAction: \"handshake\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"pushToService\"; subActionParams: Readonly<{} & { incident: Readonly<{} & { description: string | null; name: string; externalId: string | null; incidentTypes: number[] | null; severityCode: number | null; }>; comments: Readonly<{} & { comment: string; commentId: string; }>[] | null; }>; }> | Readonly<{} & { subAction: \"incidentTypes\"; subActionParams: Readonly<{} & {}>; }> | Readonly<{} & { subAction: \"severity\"; subActionParams: Readonly<{} & {}>; }>" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/resilient/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionParamsType", - "type": "Type", - "tags": [], - "label": "ActionParamsType", - "description": [], - "signature": [ - "{ readonly message: string; }" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/teams.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-server.ActionsAuthorization", @@ -1947,186 +1796,6 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".cases-webhook\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/cases_webhook/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".email\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/email.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".index\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/es_index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".pagerduty\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".server-log\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/server_log.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".slack\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/slack.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".webhook\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/webhook.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".jira\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/jira/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".resilient\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/resilient/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ActionTypeId", - "type": "string", - "tags": [], - "label": "ActionTypeId", - "description": [], - "signature": [ - "\".teams\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/teams.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ServiceNowITSMActionTypeId", - "type": "string", - "tags": [], - "label": "ServiceNowITSMActionTypeId", - "description": [], - "signature": [ - "\".servicenow\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/servicenow/config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-server.ServiceNowSIRActionTypeId", - "type": "string", - "tags": [], - "label": "ServiceNowSIRActionTypeId", - "description": [], - "signature": [ - "\".servicenow-sir\"" - ], - "path": "x-pack/plugins/actions/server/builtin_action_types/servicenow/config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false } ], "objects": [], @@ -3386,89 +3055,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue", - "type": "Interface", - "tags": [], - "label": "SNProductsConfigValue", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.table", - "type": "string", - "tags": [], - "label": "table", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.appScope", - "type": "string", - "tags": [], - "label": "appScope", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.useImportAPI", - "type": "boolean", - "tags": [], - "label": "useImportAPI", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.importSetTable", - "type": "string", - "tags": [], - "label": "importSetTable", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.commentFieldKey", - "type": "string", - "tags": [], - "label": "commentFieldKey", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfigValue.appId", - "type": "string", - "tags": [], - "label": "appId", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-common.ValidatedEmail", @@ -3560,18 +3146,6 @@ } ], "enums": [ - { - "parentPluginId": "actions", - "id": "def-common.AdditionalEmailServices", - "type": "Enum", - "tags": [], - "label": "AdditionalEmailServices", - "description": [], - "path": "x-pack/plugins/actions/common/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-common.InvalidEmailReason", @@ -3740,36 +3314,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "actions", - "id": "def-common.DEFAULT_ALERTS_GROUPING_KEY", - "type": "string", - "tags": [], - "label": "DEFAULT_ALERTS_GROUPING_KEY", - "description": [], - "signature": [ - "\"{{rule.id}}:{{alert.id}}\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.FIELD_PREFIX", - "type": "string", - "tags": [], - "label": "FIELD_PREFIX", - "description": [], - "signature": [ - "\"u_\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-common.INTERNAL_BASE_ACTION_API_PATH", @@ -3888,104 +3432,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "actions", - "id": "def-common.ServiceNowITOMActionTypeId", - "type": "string", - "tags": [], - "label": "ServiceNowITOMActionTypeId", - "description": [], - "signature": [ - "\".servicenow-itom\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.ServiceNowITSMActionTypeId", - "type": "string", - "tags": [], - "label": "ServiceNowITSMActionTypeId", - "description": [], - "signature": [ - "\".servicenow\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.serviceNowITSMTable", - "type": "string", - "tags": [], - "label": "serviceNowITSMTable", - "description": [], - "signature": [ - "\"incident\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.ServiceNowSIRActionTypeId", - "type": "string", - "tags": [], - "label": "ServiceNowSIRActionTypeId", - "description": [], - "signature": [ - "\".servicenow-sir\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.serviceNowSIRTable", - "type": "string", - "tags": [], - "label": "serviceNowSIRTable", - "description": [], - "signature": [ - "\"sn_si_incident\"" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "actions", - "id": "def-common.SNProductsConfig", - "type": "Type", - "tags": [], - "label": "SNProductsConfig", - "description": [], - "signature": [ - "{ [x: string]: ", - { - "pluginId": "actions", - "scope": "common", - "docId": "kibActionsPluginApi", - "section": "def-common.SNProductsConfigValue", - "text": "SNProductsConfigValue" - }, - "; }" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-common.UptimeConnectorFeatureId", @@ -4159,255 +3605,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig", - "type": "Object", - "tags": [], - "label": "snExternalServiceConfig", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow", - "type": "Object", - "tags": [], - "label": "'.servicenow'", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.importSetTable", - "type": "string", - "tags": [], - "label": "importSetTable", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.appScope", - "type": "string", - "tags": [], - "label": "appScope", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.table", - "type": "string", - "tags": [], - "label": "table", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.useImportAPI", - "type": "boolean", - "tags": [], - "label": "useImportAPI", - "description": [], - "signature": [ - "true" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.commentFieldKey", - "type": "string", - "tags": [], - "label": "commentFieldKey", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenow.appId", - "type": "string", - "tags": [], - "label": "appId", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir", - "type": "Object", - "tags": [], - "label": "'.servicenow-sir'", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.importSetTable", - "type": "string", - "tags": [], - "label": "importSetTable", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.appScope", - "type": "string", - "tags": [], - "label": "appScope", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.table", - "type": "string", - "tags": [], - "label": "table", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.useImportAPI", - "type": "boolean", - "tags": [], - "label": "useImportAPI", - "description": [], - "signature": [ - "true" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.commentFieldKey", - "type": "string", - "tags": [], - "label": "commentFieldKey", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowsir.appId", - "type": "string", - "tags": [], - "label": "appId", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom", - "type": "Object", - "tags": [], - "label": "'.servicenow-itom'", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom.importSetTable", - "type": "string", - "tags": [], - "label": "importSetTable", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom.appScope", - "type": "string", - "tags": [], - "label": "appScope", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom.table", - "type": "string", - "tags": [], - "label": "table", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom.useImportAPI", - "type": "boolean", - "tags": [], - "label": "useImportAPI", - "description": [], - "signature": [ - "false" - ], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "actions", - "id": "def-common.snExternalServiceConfig..servicenowitom.commentFieldKey", - "type": "string", - "tags": [], - "label": "commentFieldKey", - "description": [], - "path": "x-pack/plugins/actions/common/servicenow_config.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "actions", "id": "def-common.UptimeConnectorFeature", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index e68cfe697f67d..89f671856a2f4 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-09-15 +date: 2022-09-16 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 | |-------------------|-----------|------------------------|-----------------| -| 273 | 0 | 268 | 19 | +| 214 | 0 | 209 | 19 | ## Client diff --git a/api_docs/advanced_settings.devdocs.json b/api_docs/advanced_settings.devdocs.json index 04693d637ccb0..7942869bbf8cb 100644 --- a/api_docs/advanced_settings.devdocs.json +++ b/api_docs/advanced_settings.devdocs.json @@ -294,9 +294,201 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig", + "type": "Function", + "tags": [], + "label": "toEditableConfig", + "description": [], + "signature": [ + "({\n def,\n name,\n value,\n isCustom,\n isOverridden,\n}: { def: ", + "PublicUiSettingsParams", + " & ", + "UserProvidedValues", + "; name: string; value: ", + "SavedObjectAttribute", + "; isCustom: boolean; isOverridden: boolean; }) => ", + "FieldSetting" + ], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1", + "type": "Object", + "tags": [], + "label": "{\n def,\n name,\n value,\n isCustom,\n isOverridden,\n}", + "description": [], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1.def", + "type": "CompoundType", + "tags": [], + "label": "def", + "description": [], + "signature": [ + "PublicUiSettingsParams", + " & ", + "UserProvidedValues", + "" + ], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1.value", + "type": "CompoundType", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "SavedObjectAttributeSingle", + " | ", + "SavedObjectAttributeSingle", + "[]" + ], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1.isCustom", + "type": "boolean", + "tags": [], + "label": "isCustom", + "description": [], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.toEditableConfig.$1.isOverridden", + "type": "boolean", + "tags": [], + "label": "isOverridden", + "description": [], + "path": "src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [ + "the editable config object" + ], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState", + "type": "Interface", + "tags": [], + "label": "FieldState", + "description": [], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState.value", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState.changeImage", + "type": "CompoundType", + "tags": [], + "label": "changeImage", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState.loading", + "type": "CompoundType", + "tags": [], + "label": "loading", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState.isInvalid", + "type": "CompoundType", + "tags": [], + "label": "isInvalid", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "advancedSettings", + "id": "def-public.FieldState.error", + "type": "CompoundType", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "string | null | undefined" + ], + "path": "src/plugins/advanced_settings/public/management_app/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false } ], - "interfaces": [], "enums": [], "misc": [], "objects": [], diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 948425dbf0575..9484742950fb4 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.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 | |-------------------|-----------|------------------------|-----------------| -| 23 | 0 | 19 | 1 | +| 36 | 1 | 32 | 2 | ## Client @@ -37,3 +37,6 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que ### Classes +### Interfaces + + diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index fd7678f28e47e..959e4d67b8813 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index c11acc2598f1b..616a00b212dee 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -44,7 +44,7 @@ "The rule to view" ], "signature": [ - "{ params: never; tags: string[]; id: string; monitoring?: ", + "{ name: string; params: never; tags: string[]; id: string; monitoring?: ", { "pluginId": "alerting", "scope": "common", @@ -52,7 +52,7 @@ "section": "def-common.RuleMonitoring", "text": "RuleMonitoring" }, - " | undefined; name: string; enabled: boolean; actions: ", + " | undefined; enabled: boolean; actions: ", { "pluginId": "alerting", "scope": "common", @@ -1819,7 +1819,7 @@ "section": "def-common.SanitizedRule", "text": "SanitizedRule" }, - ", \"tags\" | \"name\" | \"enabled\" | \"actions\" | \"throttle\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }" + ", \"name\" | \"tags\" | \"enabled\" | \"actions\" | \"throttle\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }" ], "path": "x-pack/plugins/alerting/server/types.ts", "deprecated": false, @@ -6193,7 +6193,7 @@ "label": "SanitizedRule", "description": [], "signature": [ - "{ params: Params; tags: string[]; id: string; monitoring?: ", + "{ name: string; params: Params; tags: string[]; id: string; monitoring?: ", { "pluginId": "alerting", "scope": "common", @@ -6201,7 +6201,7 @@ "section": "def-common.RuleMonitoring", "text": "RuleMonitoring" }, - " | undefined; name: string; enabled: boolean; actions: ", + " | undefined; enabled: boolean; actions: ", { "pluginId": "alerting", "scope": "common", @@ -6264,7 +6264,7 @@ "section": "def-common.SanitizedRule", "text": "SanitizedRule" }, - ", \"tags\" | \"name\" | \"enabled\" | \"actions\" | \"throttle\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }" + ", \"name\" | \"tags\" | \"enabled\" | \"actions\" | \"throttle\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }" ], "path": "x-pack/plugins/alerting/common/rule.ts", "deprecated": false, diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 6f8d1112c42f5..80603f6926fd4 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-09-15 +date: 2022-09-16 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 bf7c75c97bb93..b0e9d5757bffd 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -196,7 +196,7 @@ "APMPluginSetupDependencies", ") => { config$: ", "Observable", - "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; searchAggregatedTransactions: ", + "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; }>>; getApmIndices: () => Promise<", "ApmIndicesConfig", @@ -415,7 +415,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; sourcemap: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", + "{ readonly indices: Readonly<{} & { metric: string; error: string; span: string; transaction: string; sourcemap: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; }" ], @@ -781,7 +781,7 @@ "label": "APIEndpoint", "description": [], "signature": [ - "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/title\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics_by_transaction_name\" | \"POST /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/top_erroneous_transactions\" | \"POST /internal/apm/latency/overall_distribution/transactions\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/dependency\" | \"GET /internal/apm/services/{serviceName}/serviceNodes\" | \"GET /internal/apm/services\" | \"POST /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search\" | \"POST /api/apm/services/{serviceName}/annotation\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/sorted_and_filtered_services\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_rate\" | \"GET /internal/apm/alerts/chart_preview/transaction_duration\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_count\" | \"GET /api/apm/settings/agent-configuration\" | \"GET /api/apm/settings/agent-configuration/view\" | \"DELETE /api/apm/settings/agent-configuration\" | \"PUT /api/apm/settings/agent-configuration\" | \"POST /api/apm/settings/agent-configuration/search\" | \"GET /api/apm/settings/agent-configuration/environments\" | \"GET /api/apm/settings/agent-configuration/agent_name\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps\" | \"POST /api/apm/sourcemaps\" | \"DELETE /api/apm/sourcemaps/{id}\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/fleet/java_agent_versions\" | \"GET /internal/apm/dependencies/top_dependencies\" | \"GET /internal/apm/dependencies/upstream_services\" | \"GET /internal/apm/dependencies/metadata\" | \"GET /internal/apm/dependencies/charts/latency\" | \"GET /internal/apm/dependencies/charts/throughput\" | \"GET /internal/apm/dependencies/charts/error_rate\" | \"GET /internal/apm/dependencies/operations\" | \"GET /internal/apm/dependencies/charts/distribution\" | \"GET /internal/apm/dependencies/operations/spans\" | \"GET /internal/apm/correlations/field_candidates/transactions\" | \"POST /internal/apm/correlations/field_stats/transactions\" | \"GET /internal/apm/correlations/field_value_stats/transactions\" | \"POST /internal/apm/correlations/field_value_pairs/transactions\" | \"POST /internal/apm/correlations/significant_correlations/transactions\" | \"POST /internal/apm/correlations/p_values/transactions\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys\" | \"GET /internal/apm/storage_explorer\" | \"GET /internal/apm/services/{serviceName}/storage_details\" | \"GET /internal/apm/storage_chart\" | \"GET /internal/apm/storage_explorer/privileges\" | \"GET /internal/apm/storage_explorer_summary_stats\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\"" + "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/title\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics_by_transaction_name\" | \"POST /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/top_erroneous_transactions\" | \"POST /internal/apm/latency/overall_distribution/transactions\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/dependency\" | \"GET /internal/apm/services/{serviceName}/serviceNodes\" | \"GET /internal/apm/services\" | \"POST /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search\" | \"POST /api/apm/services/{serviceName}/annotation\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/sorted_and_filtered_services\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_rate\" | \"GET /internal/apm/alerts/chart_preview/transaction_duration\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_count\" | \"GET /api/apm/settings/agent-configuration\" | \"GET /api/apm/settings/agent-configuration/view\" | \"DELETE /api/apm/settings/agent-configuration\" | \"PUT /api/apm/settings/agent-configuration\" | \"POST /api/apm/settings/agent-configuration/search\" | \"GET /api/apm/settings/agent-configuration/environments\" | \"GET /api/apm/settings/agent-configuration/agent_name\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps\" | \"POST /api/apm/sourcemaps\" | \"DELETE /api/apm/sourcemaps/{id}\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/fleet/java_agent_versions\" | \"GET /internal/apm/dependencies/top_dependencies\" | \"GET /internal/apm/dependencies/upstream_services\" | \"GET /internal/apm/dependencies/metadata\" | \"GET /internal/apm/dependencies/charts/latency\" | \"GET /internal/apm/dependencies/charts/throughput\" | \"GET /internal/apm/dependencies/charts/error_rate\" | \"GET /internal/apm/dependencies/operations\" | \"GET /internal/apm/dependencies/charts/distribution\" | \"GET /internal/apm/dependencies/operations/spans\" | \"GET /internal/apm/correlations/field_candidates/transactions\" | \"POST /internal/apm/correlations/field_stats/transactions\" | \"GET /internal/apm/correlations/field_value_stats/transactions\" | \"POST /internal/apm/correlations/field_value_pairs/transactions\" | \"POST /internal/apm/correlations/significant_correlations/transactions\" | \"POST /internal/apm/correlations/p_values/transactions\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys\" | \"GET /internal/apm/storage_explorer\" | \"GET /internal/apm/services/{serviceName}/storage_details\" | \"GET /internal/apm/storage_chart\" | \"GET /internal/apm/storage_explorer/privileges\" | \"GET /internal/apm/storage_explorer_summary_stats\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\" | \"GET /internal/apm/settings/labs\"" ], "path": "x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts", "deprecated": false, @@ -811,7 +811,7 @@ "label": "APMConfig", "description": [], "signature": [ - "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; sourcemap: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", + "{ readonly indices: Readonly<{} & { metric: string; error: string; span: string; transaction: string; sourcemap: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; }" ], @@ -828,7 +828,7 @@ "label": "ApmIndicesConfigName", "description": [], "signature": [ - "\"error\" | \"metric\" | \"span\" | \"transaction\" | \"sourcemap\" | \"onboarding\"" + "\"metric\" | \"error\" | \"span\" | \"transaction\" | \"sourcemap\" | \"onboarding\"" ], "path": "x-pack/plugins/apm/server/index.ts", "deprecated": false, @@ -843,7 +843,19 @@ "label": "APMServerRouteRepository", "description": [], "signature": [ - "{ \"GET /internal/apm/time_range_metadata\": ", + "{ \"GET /internal/apm/settings/labs\": ", + "ServerRoute", + "<\"GET /internal/apm/settings/labs\", undefined, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { labsItems: string[]; }, ", + "APMRouteCreateOptions", + ">; \"GET /internal/apm/time_range_metadata\": ", "ServerRoute", "<\"GET /internal/apm/time_range_metadata\", ", "TypeC", @@ -2739,7 +2751,7 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { apmIndexSettings: { configurationName: \"error\" | \"metric\" | \"span\" | \"transaction\" | \"sourcemap\" | \"onboarding\"; defaultValue: string; savedValue: string | undefined; }[]; }, ", + ", { apmIndexSettings: { configurationName: \"metric\" | \"error\" | \"span\" | \"transaction\" | \"sourcemap\" | \"onboarding\"; defaultValue: string; savedValue: string | undefined; }[]; }, ", "APMRouteCreateOptions", ">; \"POST /internal/apm/settings/anomaly-detection/update_to_v3\": ", "ServerRoute", @@ -5045,6 +5057,8 @@ "PartialC", "<{ serviceNodeName: ", "StringC", + "; serviceRuntimeName: ", + "StringC", "; }>, ", "TypeC", "<{ environment: ", @@ -5590,7 +5604,7 @@ "description": [], "signature": [ "Observable", - "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; searchAggregatedTransactions: ", + "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; transactionGroupBucketSize: number; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; }>>" ], diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index fcdf68e91be87..6fe667b36756c 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-09-15 +date: 2022-09-16 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 c2373f4f599f9..c16c00c1f3bea 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-09-15 +date: 2022-09-16 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 3f663181b9beb..438e84d8d4d1d 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-09-15 +date: 2022-09-16 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 eb110e6bd7e8c..a67d3e217421b 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-09-15 +date: 2022-09-16 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 fb2caa7392a78..fa5e5e1e63618 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-09-15 +date: 2022-09-16 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 a69ea3dd9b941..5d775b395cdc2 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-09-15 +date: 2022-09-16 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 e91e40ceb4cd8..186748693e81b 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-09-15 +date: 2022-09-16 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 d14779a74d0a4..a275ba2d5ed7c 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-09-15 +date: 2022-09-16 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 e83b4f28f55f2..3c24eb3b048c5 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-09-15 +date: 2022-09-16 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 dad3ac591138f..1d25c04786f6d 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-09-15 +date: 2022-09-16 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 77ce268798158..9cbabddb866f2 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -15237,11 +15237,11 @@ "\nA sub-set of {@link UiSettingsParams} exposed to the client-side." ], "signature": [ - "{ options?: string[] | number[] | undefined; type?: ", + "{ name?: string | undefined; value?: unknown; description?: string | undefined; category?: string[] | undefined; options?: string[] | number[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; type?: ", "UiSettingsType", - " | undefined; metric?: { type: string; name: string; } | undefined; value?: unknown; description?: string | undefined; name?: string | undefined; order?: number | undefined; category?: string[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; deprecation?: ", + " | undefined; deprecation?: ", "DeprecationSettings", - " | undefined; }" + " | undefined; order?: number | undefined; metric?: { type: string; name: string; } | undefined; }" ], "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, @@ -27010,7 +27010,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the ES cluster on behalf of the Kibana internal user" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -27128,7 +27128,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -32152,7 +32152,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the internal Kibana user." ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -32270,7 +32270,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -33356,7 +33356,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the user that initiated the request to the Kibana server." ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -33474,7 +33474,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -35381,7 +35381,7 @@ "label": "options", "description": [], "signature": [ - "Method extends \"get\" | \"options\" ? Required, \"body\">> : Required<", "RouteConfigOptions", @@ -35839,7 +35839,7 @@ "label": "level", "description": [], "signature": [ - "\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"trace\" | \"warn\" | \"fatal\"" + "\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"warn\" | \"trace\" | \"fatal\"" ], "path": "node_modules/@types/kbn__core-logging-server/index.d.ts", "deprecated": false, @@ -37894,7 +37894,7 @@ "label": "internalClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -38012,7 +38012,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -39520,7 +39520,7 @@ "\nAdditional body options {@link RouteConfigOptionsBody}." ], "signature": [ - "(Method extends \"get\" | \"options\" ? undefined : ", + "(Method extends \"options\" | \"get\" ? undefined : ", "RouteConfigOptionsBody", ") | undefined" ], @@ -39538,7 +39538,7 @@ "\nDefines per-route timeouts." ], "signature": [ - "{ payload?: (Method extends \"get\" | \"options\" ? undefined : number) | undefined; idleSocket?: number | undefined; } | undefined" + "{ payload?: (Method extends \"options\" | \"get\" ? undefined : number) | undefined; idleSocket?: number | undefined; } | undefined" ], "path": "node_modules/@types/kbn__core-http-server/index.d.ts", "deprecated": false, @@ -49921,7 +49921,7 @@ "\nClient used to query the elasticsearch cluster.\n" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -50039,7 +50039,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -51623,7 +51623,7 @@ "\nRoute options: If 'GET' or 'OPTIONS' method, body options won't be returned." ], "signature": [ - "Method extends \"get\" | \"options\" ? Required, \"body\">> : Required<", "RouteConfigOptions", @@ -52418,11 +52418,11 @@ "\nA sub-set of {@link UiSettingsParams} exposed to the client-side." ], "signature": [ - "{ options?: string[] | number[] | undefined; type?: ", + "{ name?: string | undefined; value?: unknown; description?: string | undefined; category?: string[] | undefined; options?: string[] | number[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; type?: ", "UiSettingsType", - " | undefined; metric?: { type: string; name: string; } | undefined; value?: unknown; description?: string | undefined; name?: string | undefined; order?: number | undefined; category?: string[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; deprecation?: ", + " | undefined; deprecation?: ", "DeprecationSettings", - " | undefined; }" + " | undefined; order?: number | undefined; metric?: { type: string; name: string; } | undefined; }" ], "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, @@ -52923,7 +52923,7 @@ "\nSet of HTTP methods not changing the state of the server." ], "signature": [ - "\"get\" | \"options\"" + "\"options\" | \"get\"" ], "path": "node_modules/@types/kbn__core-http-server/index.d.ts", "deprecated": false, diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 43bd29d121fb9..aaa19cda16f11 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index a5824dcb16327..552eb7c33f6f7 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-09-15 +date: 2022-09-16 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 e15e706dabf6f..c69f7f840060b 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-09-15 +date: 2022-09-16 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 f18de69b55347..b309c95114149 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-09-15 +date: 2022-09-16 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 74700ab870fde..27afaa93906f5 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -8612,7 +8612,7 @@ "label": "AggConfigOptions", "description": [], "signature": [ - "{ type: ", + "{ schema?: string | undefined; type: ", { "pluginId": "data", "scope": "common", @@ -8622,7 +8622,7 @@ }, "; params?: {} | ", "SerializableRecord", - " | undefined; id?: string | undefined; enabled?: boolean | undefined; schema?: string | undefined; }" + " | undefined; id?: string | undefined; enabled?: boolean | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", "deprecated": false, @@ -15425,7 +15425,7 @@ "label": "elasticsearchClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -15543,7 +15543,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index ce3aae4debcd8..2014ef703edb4 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-09-15 +date: 2022-09-16 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 f0fbe18c567d0..1f54b122e97fc 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index a4b47f09c07b1..67aec61aeedf4 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -27979,7 +27979,7 @@ "label": "AggConfigOptions", "description": [], "signature": [ - "{ type: ", + "{ schema?: string | undefined; type: ", { "pluginId": "data", "scope": "common", @@ -27989,7 +27989,7 @@ }, "; params?: {} | ", "SerializableRecord", - " | undefined; id?: string | undefined; enabled?: boolean | undefined; schema?: string | undefined; }" + " | undefined; id?: string | undefined; enabled?: boolean | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_config.ts", "deprecated": false, @@ -28841,7 +28841,7 @@ "label": "CreateAggConfigParams", "description": [], "signature": [ - "{ type: string | ", + "{ schema?: string | undefined; type: string | ", { "pluginId": "data", "scope": "common", @@ -28851,7 +28851,7 @@ }, "; params?: {} | ", "SerializableRecord", - " | undefined; id?: string | undefined; enabled?: boolean | undefined; schema?: string | undefined; }" + " | undefined; id?: string | undefined; enabled?: boolean | undefined; }" ], "path": "src/plugins/data/common/search/aggs/agg_configs.ts", "deprecated": false, diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 8574dc75b0e1e..8009ffdd5fcbd 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-09-15 +date: 2022-09-16 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 73df9cb6ab875..fc939a74e8706 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-09-15 +date: 2022-09-16 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 79eb8525bbeb0..6e3dbc8841491 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-09-15 +date: 2022-09-16 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 2f98f85b1c8a7..c97710d1242ba 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-09-15 +date: 2022-09-16 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 8766b1f50d97d..0ba596a1b00b6 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -11480,7 +11480,7 @@ "label": "elasticsearchClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -11598,7 +11598,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -20758,7 +20758,7 @@ "label": "DataViewSavedObjectAttrs", "description": [], "signature": [ - "{ type?: string | undefined; title: string; name?: string | undefined; typeMeta?: string | undefined; }" + "{ name?: string | undefined; type?: string | undefined; title: string; typeMeta?: string | undefined; }" ], "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 7ad7796e219d5..6f36ca4bd5b26 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-09-15 +date: 2022-09-16 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 1a428db2ce689..04b7f673aca63 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-09-15 +date: 2022-09-16 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 6d8db8d2e2352..34644e823f484 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 56ab5cae75dda..c0d82ba54abf8 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -633,9 +633,9 @@ This is relied on by the reporting feature, and should be removed once reporting migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/issues/19914 | | | [app_authorization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.ts#:~:text=getKibanaFeatures), [privileges.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.ts#:~:text=getKibanaFeatures), [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getKibanaFeatures), [app_authorization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures)+ 14 more | 8.8.0 | | | [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getElasticsearchFeatures) | 8.8.0 | -| | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | +| | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=license%24) | 8.8.0 | -| | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | +| | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=appBasePath) | 8.8.0 | | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=onAppLeave) | 8.8.0 | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index a96c199ead60b..4895abe1b352d 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -144,9 +144,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ This is relied on by the reporting feature, and should be removed once reporting migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/issues/19914 | | security | | [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getElasticsearchFeatures) | 8.8.0 | -| security | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | +| security | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | security | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=license%24) | 8.8.0 | -| security | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | +| security | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | security | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=appBasePath) | 8.8.0 | | security | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=onAppLeave) | 8.8.0 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index bc99737695896..a9a6896f8310e 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index 87e0d53a57078..c9ebfdee37434 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -1873,6 +1873,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "discover", + "id": "def-common.SHOW_LEGACY_FIELD_TOP_VALUES", + "type": "string", + "tags": [], + "label": "SHOW_LEGACY_FIELD_TOP_VALUES", + "description": [], + "signature": [ + "\"discover:showLegacyFieldTopValues\"" + ], + "path": "src/plugins/discover/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "discover", "id": "def-common.SHOW_MULTIFIELDS", diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index bc3ac871b621f..f4a0ec2727226 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-disco | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 95 | 0 | 78 | 4 | +| 96 | 0 | 79 | 4 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 2b6b482ebf275..7402bde231b4c 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-09-15 +date: 2022-09-16 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 0ecd141b83ecd..e38bc0a53872d 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-09-15 +date: 2022-09-16 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 0a9dcf8931ed0..7d7f7892f586d 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-09-15 +date: 2022-09-16 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 40d48eca5932b..6cf42c87b908a 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.devdocs.json b/api_docs/enterprise_search.devdocs.json index 8ee7ecbb68c9a..b42b4016faf40 100644 --- a/api_docs/enterprise_search.devdocs.json +++ b/api_docs/enterprise_search.devdocs.json @@ -118,6 +118,21 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "enterpriseSearch", + "id": "def-server.CURRENT_CONNECTORS_INDEX", + "type": "string", + "tags": [], + "label": "CURRENT_CONNECTORS_INDEX", + "description": [], + "signature": [ + "\".elastic-connectors-v1\"" + ], + "path": "x-pack/plugins/enterprise_search/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "objects": [ diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 1a2227a7e3932..24ab3ffb105f9 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Enterprise Search](https://github.com/orgs/elastic/teams/enterprise-sea | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 8 | 0 | 8 | 0 | +| 9 | 0 | 9 | 0 | ## Server diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 20cb6d26e4a01..9999f010b998d 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-09-15 +date: 2022-09-16 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 1e86634d962a7..aec4931dc1cf6 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index 491bb3f165423..f821ced3a76e0 100644 --- a/api_docs/event_log.devdocs.json +++ b/api_docs/event_log.devdocs.json @@ -1312,7 +1312,7 @@ "label": "data", "description": [], "signature": [ - "(Readonly<{ error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; category?: string[] | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined)[]" + "(Readonly<{ error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ name?: string | undefined; description?: string | undefined; category?: string | undefined; id?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; category?: string[] | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined)[]" ], "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", "deprecated": false, @@ -1332,7 +1332,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; category?: string[] | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}>>> | undefined" + "DeepPartial | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ name?: string | undefined; description?: string | undefined; category?: string | undefined; id?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; category?: string[] | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, @@ -1347,7 +1347,7 @@ "label": "IValidatedEvent", "description": [], "signature": [ - "Readonly<{ error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: string | undefined; name?: string | undefined; version?: string | undefined; license?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; category?: string[] | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined" + "Readonly<{ error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: string | number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; } & {}>[] | undefined; space_ids?: string[] | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ name?: string | undefined; description?: string | undefined; category?: string | undefined; id?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; uuid?: string | undefined; } & {}> | undefined; event?: Readonly<{ start?: string | undefined; category?: string[] | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; created?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: string | number | undefined; code?: string | undefined; url?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: string | number | undefined; dataset?: string | undefined; ingested?: string | undefined; module?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 7c18a607537e6..ed1a8fcbee5e1 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-09-15 +date: 2022-09-16 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 92217a06c7744..962cd39de2b3b 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-09-15 +date: 2022-09-16 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 9db92d98d2453..578cd286542d5 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-09-15 +date: 2022-09-16 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 22670ec4a06a0..4ca9c8beea3ff 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-09-15 +date: 2022-09-16 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 929ed0d782e8f..256ecf65b917a 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-09-15 +date: 2022-09-16 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 d6a18dacfc30b..63bc3b2c18789 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-09-15 +date: 2022-09-16 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 d747d97a38df0..c317579d59bb5 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-09-15 +date: 2022-09-16 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 faa3903d56d76..7f91a7a611f1f 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-09-15 +date: 2022-09-16 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 c744ea5e03196..b264f962c196a 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-09-15 +date: 2022-09-16 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 e54106977418c..36d6da9ceacf3 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-09-15 +date: 2022-09-16 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 d4d1589d32b09..530a96a7a6fbb 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-09-15 +date: 2022-09-16 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 184b15afa80ed..509987352a7f6 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-09-15 +date: 2022-09-16 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 b2d388331f947..f97785d9318ac 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-09-15 +date: 2022-09-16 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 2f988bc4e4ad2..e947905c7209b 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-09-15 +date: 2022-09-16 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 bf795608fd9e7..ef5ee8d3d836a 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-09-15 +date: 2022-09-16 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 a2b04fd8cc677..35afd71790fb8 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-09-15 +date: 2022-09-16 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 d755461ce9119..34374dc12fca2 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-09-15 +date: 2022-09-16 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 63557715c45d9..7f8b5d041038a 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json index e8c6d117ab46a..faee578b74688 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -972,7 +972,7 @@ "\nAn elasticsearch client that will be used to interact with the cluster" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -1090,7 +1090,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 136829651b74d..cf2d5b3496402 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-09-15 +date: 2022-09-16 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 7512afd90c524..3cafe7115d4d9 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -12178,12 +12178,12 @@ { "parentPluginId": "fleet", "id": "def-common.PackageSpecManifest.type", - "type": "string", + "type": "CompoundType", "tags": [], "label": "type", "description": [], "signature": [ - "\"integration\" | undefined" + "\"input\" | \"integration\" | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/package_spec.ts", "deprecated": false, @@ -12939,180 +12939,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate", - "type": "Interface", - "tags": [], - "label": "RegistryPolicyTemplate", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.name", - "type": "string", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.name]", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.title", - "type": "string", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.title]", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.description", - "type": "string", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.description]", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.icons", - "type": "Array", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.icons]", - "description": [], - "signature": [ - { - "pluginId": "fleet", - "scope": "common", - "docId": "kibFleetPluginApi", - "section": "def-common.RegistryImage", - "text": "RegistryImage" - }, - "[] | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.screenshots", - "type": "Array", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.screenshots]", - "description": [], - "signature": [ - { - "pluginId": "fleet", - "scope": "common", - "docId": "kibFleetPluginApi", - "section": "def-common.RegistryImage", - "text": "RegistryImage" - }, - "[] | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.categories", - "type": "Array", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.categories]", - "description": [], - "signature": [ - "(", - { - "pluginId": "fleet", - "scope": "common", - "docId": "kibFleetPluginApi", - "section": "def-common.PackageSpecCategory", - "text": "PackageSpecCategory" - }, - " | undefined)[] | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.data_streams", - "type": "Array", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.data_streams]", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.inputs", - "type": "Array", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.inputs]", - "description": [], - "signature": [ - { - "pluginId": "fleet", - "scope": "common", - "docId": "kibFleetPluginApi", - "section": "def-common.RegistryInput", - "text": "RegistryInput" - }, - "[] | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.readme", - "type": "string", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.readme]", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "fleet", - "id": "def-common.RegistryPolicyTemplate.RegistryPolicyTemplateKeys.multiple", - "type": "CompoundType", - "tags": [], - "label": "[RegistryPolicyTemplateKeys.multiple]", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "x-pack/plugins/fleet/common/types/models/epm.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "fleet", "id": "def-common.RegistryStream", @@ -15021,6 +14847,23 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "fleet", + "id": "def-common.RegistryPolicyTemplate", + "type": "Type", + "tags": [], + "label": "RegistryPolicyTemplate", + "description": [], + "signature": [ + "RegistryPolicyIntegrationTemplate", + " | ", + "RegistryPolicyInputOnlyTemplate" + ], + "path": "x-pack/plugins/fleet/common/types/models/epm.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "fleet", "id": "def-common.RegistrySearchResult", @@ -15029,7 +14872,7 @@ "label": "RegistrySearchResult", "description": [], "signature": [ - "{ type?: \"integration\" | undefined; path: string; download: string; title: string; description: string; icons?: (", + "{ name: string; description: string; type?: \"input\" | \"integration\" | undefined; path: string; download: string; title: string; icons?: (", { "pluginId": "fleet", "scope": "common", @@ -15053,7 +14896,7 @@ "section": "def-common.PackageSpecCategory", "text": "PackageSpecCategory" }, - " | undefined)[] | undefined; name: string; version: string; internal?: boolean | undefined; release?: \"experimental\" | \"beta\" | \"ga\" | undefined; policy_templates?: ", + " | undefined)[] | undefined; version: string; internal?: boolean | undefined; release?: \"experimental\" | \"beta\" | \"ga\" | undefined; policy_templates?: ", { "pluginId": "fleet", "scope": "common", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 83ff56531a3f0..4123ec0dbc6a7 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-09-15 +date: 2022-09-16 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 | |-------------------|-----------|------------------------|-----------------| -| 979 | 3 | 880 | 15 | +| 969 | 3 | 870 | 17 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 8ad414d74f23f..521d5870e9c05 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.devdocs.json b/api_docs/guided_onboarding.devdocs.json new file mode 100644 index 0000000000000..27b0b8446a7d8 --- /dev/null +++ b/api_docs/guided_onboarding.devdocs.json @@ -0,0 +1,208 @@ +{ + "id": "guidedOnboarding", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingState", + "type": "Interface", + "tags": [], + "label": "GuidedOnboardingState", + "description": [], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingState.activeGuide", + "type": "CompoundType", + "tags": [], + "label": "activeGuide", + "description": [], + "signature": [ + { + "pluginId": "guidedOnboarding", + "scope": "public", + "docId": "kibGuidedOnboardingPluginApi", + "section": "def-public.UseCase", + "text": "UseCase" + }, + " | \"unset\"" + ], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingState.activeStep", + "type": "string", + "tags": [], + "label": "activeStep", + "description": [], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "guidedOnboarding", + "id": "def-public.UseCase", + "type": "Type", + "tags": [], + "label": "UseCase", + "description": [], + "signature": [ + "\"search\" | \"security\" | \"observability\"" + ], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingPluginSetup", + "type": "Interface", + "tags": [], + "label": "GuidedOnboardingPluginSetup", + "description": [], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingPluginStart", + "type": "Interface", + "tags": [], + "label": "GuidedOnboardingPluginStart", + "description": [], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "guidedOnboarding", + "id": "def-public.GuidedOnboardingPluginStart.guidedOnboardingApi", + "type": "Object", + "tags": [], + "label": "guidedOnboardingApi", + "description": [], + "signature": [ + "ApiService", + " | undefined" + ], + "path": "src/plugins/guided_onboarding/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "guidedOnboarding", + "id": "def-server.GuidedOnboardingPluginSetup", + "type": "Interface", + "tags": [], + "label": "GuidedOnboardingPluginSetup", + "description": [], + "path": "src/plugins/guided_onboarding/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "guidedOnboarding", + "id": "def-server.GuidedOnboardingPluginStart", + "type": "Interface", + "tags": [], + "label": "GuidedOnboardingPluginStart", + "description": [], + "path": "src/plugins/guided_onboarding/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "guidedOnboarding", + "id": "def-common.API_BASE_PATH", + "type": "string", + "tags": [], + "label": "API_BASE_PATH", + "description": [], + "signature": [ + "\"/api/guided_onboarding\"" + ], + "path": "src/plugins/guided_onboarding/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "guidedOnboarding", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"guidedOnboarding\"" + ], + "path": "src/plugins/guided_onboarding/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "guidedOnboarding", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"guidedOnboarding\"" + ], + "path": "src/plugins/guided_onboarding/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx new file mode 100644 index 0000000000000..0775c44509f05 --- /dev/null +++ b/api_docs/guided_onboarding.mdx @@ -0,0 +1,52 @@ +--- +#### +#### 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: kibGuidedOnboardingPluginApi +slug: /kibana-dev-docs/api/guidedOnboarding +title: "guidedOnboarding" +image: https://source.unsplash.com/400x175/?github +description: API docs for the guidedOnboarding plugin +date: 2022-09-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] +--- +import guidedOnboardingObj from './guided_onboarding.devdocs.json'; + +Guided onboarding framework + +Contact [Journey Onboarding](https://github.com/orgs/elastic/teams/platform-onboarding) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 12 | 0 | 12 | 1 | + +## Client + +### Setup + + +### Start + + +### Interfaces + + +### Consts, variables and types + + +## Server + +### Setup + + +### Start + + +## Common + +### Consts, variables and types + + diff --git a/api_docs/home.devdocs.json b/api_docs/home.devdocs.json index fb0744959b803..c8e980ff0a0ab 100644 --- a/api_docs/home.devdocs.json +++ b/api_docs/home.devdocs.json @@ -1738,7 +1738,7 @@ "signature": [ "{ getSampleDatasets: () => ", "Writable", - "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", + "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", "SavedObject", "[]) => void; addAppLinksToSampleDataset: (id: string, appLinks: ", { @@ -1773,7 +1773,7 @@ "signature": [ "() => ", "Writable", - "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>" + "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>" ], "path": "src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts", "deprecated": false, @@ -1830,7 +1830,7 @@ "section": "def-server.TutorialContext", "text": "TutorialContext" }, - ") => Readonly<{ isBeta?: boolean | undefined; savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; artifacts?: Readonly<{ application?: Readonly<{} & { path: string; label: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; savedObjectsInstallMsg?: string | undefined; customStatusCheckName?: string | undefined; integrationBrowserCategories?: string[] | undefined; eprPackageOverlap?: string | undefined; } & { id: string; name: string; category: \"other\" | \"security\" | \"metrics\" | \"logging\"; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }>" + ") => Readonly<{ isBeta?: boolean | undefined; savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; artifacts?: Readonly<{ application?: Readonly<{} & { path: string; label: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; savedObjectsInstallMsg?: string | undefined; customStatusCheckName?: string | undefined; integrationBrowserCategories?: string[] | undefined; eprPackageOverlap?: string | undefined; } & { name: string; category: \"other\" | \"security\" | \"metrics\" | \"logging\"; id: string; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }>" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts", "deprecated": false, @@ -1868,7 +1868,7 @@ "label": "TutorialSchema", "description": [], "signature": [ - "{ readonly isBeta?: boolean | undefined; readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly artifacts?: Readonly<{ application?: Readonly<{} & { path: string; label: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; readonly savedObjectsInstallMsg?: string | undefined; readonly customStatusCheckName?: string | undefined; readonly integrationBrowserCategories?: string[] | undefined; readonly eprPackageOverlap?: string | undefined; readonly id: string; readonly name: string; readonly category: \"other\" | \"security\" | \"metrics\" | \"logging\"; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }" + "{ readonly isBeta?: boolean | undefined; readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly onPremElasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }> | undefined; readonly artifacts?: Readonly<{ application?: Readonly<{} & { path: string; label: string; }> | undefined; exportedFields?: Readonly<{} & { documentationUrl: string; }> | undefined; } & { dashboards: Readonly<{ linkLabel?: string | undefined; } & { id: string; isOverview: boolean; }>[]; }> | undefined; readonly savedObjectsInstallMsg?: string | undefined; readonly customStatusCheckName?: string | undefined; readonly integrationBrowserCategories?: string[] | undefined; readonly eprPackageOverlap?: string | undefined; readonly name: string; readonly category: \"other\" | \"security\" | \"metrics\" | \"logging\"; readonly id: string; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { type: \"string\" | \"number\"; id: string; label: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }" ], "path": "src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts", "deprecated": false, @@ -2160,7 +2160,7 @@ "signature": [ "{ getSampleDatasets: () => ", "Writable", - "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", + "[]; previewImagePath: string; overviewDashboard: string; defaultIndex: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", "SavedObject", "[]) => void; addAppLinksToSampleDataset: (id: string, appLinks: ", { diff --git a/api_docs/home.mdx b/api_docs/home.mdx index da3d0a809920e..869efec534b9c 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-09-15 +date: 2022-09-16 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 fb081f2f46610..355f68a42f8aa 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-09-15 +date: 2022-09-16 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 6f831cf4ccac3..6055c198ad28b 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-09-15 +date: 2022-09-16 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 ec8805874ff5c..3fc361d9ec7ac 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-09-15 +date: 2022-09-16 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 fceaefc5787f8..7194579dec8b8 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-09-15 +date: 2022-09-16 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 13d90c9667487..22611b698bee1 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-09-15 +date: 2022-09-16 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 2f16fee32984b..8a56a9a9b3b2d 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-09-15 +date: 2022-09-16 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 3ff7bbd3bbb8e..45c28bd276a9d 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.devdocs.json b/api_docs/kbn_aiops_utils.devdocs.json index e2ece6ca9c92c..5fae256126a14 100644 --- a/api_docs/kbn_aiops_utils.devdocs.json +++ b/api_docs/kbn_aiops_utils.devdocs.json @@ -190,7 +190,7 @@ "Headers", ", logger: ", "Logger", - ") => StreamFactoryReturnType" + ", flushFix: boolean | undefined) => StreamFactoryReturnType" ], "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", "deprecated": false, @@ -227,6 +227,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.streamFactory.$3", + "type": "CompoundType", + "tags": [], + "label": "flushFix", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false } ], "returnComment": [ @@ -248,7 +263,7 @@ "Headers", ", logger: ", "Logger", - ") => StreamFactoryReturnType" + ", flushFix: boolean) => StreamFactoryReturnType" ], "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", "deprecated": false, @@ -285,6 +300,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.streamFactory.$3", + "type": "boolean", + "tags": [], + "label": "flushFix", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true } ], "returnComment": [ diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 40f752ece7346..1145fb982f00a 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact Machine Learning UI for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 49 | 0 | 24 | 0 | +| 51 | 0 | 26 | 0 | ## Common diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index e355f16ce354a..714b16bf8ffb9 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-09-15 +date: 2022-09-16 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 575ed95268a37..7d7cb1559a7bc 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-09-15 +date: 2022-09-16 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 07d94ea78c46e..31a2cd57d0df5 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-09-15 +date: 2022-09-16 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 8fc1987aeb2d3..09f6741bcc4c6 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-09-15 +date: 2022-09-16 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 9bdc6d59a32b5..07dd72fac01d7 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-09-15 +date: 2022-09-16 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 2b2ddc6e6fc01..bf7a4b411f2c3 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-09-15 +date: 2022-09-16 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 0ab59c7550240..1ab44b130466d 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-09-15 +date: 2022-09-16 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 053ab6a88c153..bc98065261d7b 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index 3ac0d3855ecb1..565fde2f17163 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -1024,7 +1024,7 @@ }, "[]; 'error.grouping_name': string; 'error.grouping_key': string; 'host.name': string; 'host.hostname': string; 'kubernetes.pod.uid': string; 'kubernetes.pod.name': string; 'metricset.name': string; observer: ", "Observer", - "; 'parent.id': string; 'processor.event': string; 'processor.name': string; 'trace.id': string; 'transaction.name': string; 'transaction.type': string; 'transaction.id': string; 'transaction.duration.us': number; 'transaction.duration.histogram': { values: number[]; counts: number[]; }; 'transaction.sampled': true; 'service.name': string; 'service.version': string; 'service.environment': string; 'service.node.name': string; 'service.runtime.name': string; 'service.runtime.version': string; 'service.framework.name': string; 'service.target.name': string; 'service.target.type': string; 'span.id': string; 'span.name': string; 'span.type': string; 'span.subtype': string; 'span.duration.us': number; 'span.destination.service.name': string; 'span.destination.service.resource': string; 'span.destination.service.type': string; 'span.destination.service.response_time.sum.us': number; 'span.destination.service.response_time.count': number; 'span.self_time.count': number; 'span.self_time.sum.us': number; 'span.links': { trace: { id: string; }; span: { id: string; }; }[]; 'cloud.provider': string; 'cloud.project.name': string; 'cloud.service.name': string; 'cloud.availability_zone': string; 'cloud.machine.type': string; 'cloud.region': string; 'host.os.platform': string; 'faas.id': string; 'faas.coldstart': boolean; 'faas.execution': string; 'faas.trigger.type': string; 'faas.trigger.request_id': string; }> & Partial<{ 'system.process.memory.size': number; 'system.memory.actual.free': number; 'system.memory.total': number; 'system.cpu.total.norm.pct': number; 'system.process.memory.rss.bytes': number; 'system.process.cpu.total.norm.pct': number; 'jvm.memory.heap.used': number; 'jvm.memory.non_heap.used': number; 'jvm.thread.count': number; }>" + "; 'parent.id': string; 'processor.event': string; 'processor.name': string; 'trace.id': string; 'transaction.name': string; 'transaction.type': string; 'transaction.id': string; 'transaction.duration.us': number; 'transaction.duration.histogram': { values: number[]; counts: number[]; }; 'transaction.sampled': true; 'service.name': string; 'service.version': string; 'service.environment': string; 'service.node.name': string; 'service.runtime.name': string; 'service.runtime.version': string; 'service.framework.name': string; 'service.target.name': string; 'service.target.type': string; 'span.id': string; 'span.name': string; 'span.type': string; 'span.subtype': string; 'span.duration.us': number; 'span.destination.service.name': string; 'span.destination.service.resource': string; 'span.destination.service.type': string; 'span.destination.service.response_time.sum.us': number; 'span.destination.service.response_time.count': number; 'span.self_time.count': number; 'span.self_time.sum.us': number; 'span.links': { trace: { id: string; }; span: { id: string; }; }[]; 'cloud.provider': string; 'cloud.project.name': string; 'cloud.service.name': string; 'cloud.availability_zone': string; 'cloud.machine.type': string; 'cloud.region': string; 'host.os.platform': string; 'faas.id': string; 'faas.name': string; 'faas.coldstart': boolean; 'faas.execution': string; 'faas.trigger.type': string; 'faas.trigger.request_id': string; }> & Partial<{ 'system.process.memory.size': number; 'system.memory.actual.free': number; 'system.memory.total': number; 'system.cpu.total.norm.pct': number; 'system.process.memory.rss.bytes': number; 'system.process.cpu.total.norm.pct': number; 'jvm.memory.heap.used': number; 'jvm.memory.non_heap.used': number; 'jvm.thread.count': number; 'faas.billed_duration': number; 'faas.timeout': number; 'faas.coldstart_duration': number; 'faas.duration': number; }>" ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/apm_fields.ts", "deprecated": false, @@ -1134,7 +1134,7 @@ }, "[] | undefined; 'error.grouping_name'?: string | undefined; 'error.grouping_key'?: string | undefined; 'host.name'?: string | undefined; 'host.hostname'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; observer?: ", "Observer", - " | undefined; 'parent.id'?: string | undefined; 'processor.event'?: string | undefined; 'processor.name'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; 'transaction.id'?: string | undefined; 'transaction.duration.us'?: number | undefined; 'transaction.sampled'?: true | undefined; 'service.name'?: string | undefined; 'service.version'?: string | undefined; 'service.environment'?: string | undefined; 'service.node.name'?: string | undefined; 'service.runtime.name'?: string | undefined; 'service.runtime.version'?: string | undefined; 'service.framework.name'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.type'?: string | undefined; 'span.id'?: string | undefined; 'span.name'?: string | undefined; 'span.type'?: string | undefined; 'span.subtype'?: string | undefined; 'span.duration.us'?: number | undefined; 'span.destination.service.name'?: string | undefined; 'span.destination.service.resource'?: string | undefined; 'span.destination.service.type'?: string | undefined; 'span.destination.service.response_time.sum.us'?: number | undefined; 'span.destination.service.response_time.count'?: number | undefined; 'span.self_time.count'?: number | undefined; 'span.self_time.sum.us'?: number | undefined; 'span.links'?: { trace: { id: string; }; span: { id: string; }; }[] | undefined; 'cloud.provider'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.region'?: string | undefined; 'host.os.platform'?: string | undefined; 'faas.id'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.trigger.type'?: string | undefined; 'faas.trigger.request_id'?: string | undefined; 'system.process.memory.size'?: number | undefined; 'system.memory.actual.free'?: number | undefined; 'system.memory.total'?: number | undefined; 'system.cpu.total.norm.pct'?: number | undefined; 'system.process.memory.rss.bytes'?: number | undefined; 'system.process.cpu.total.norm.pct'?: number | undefined; 'jvm.memory.heap.used'?: number | undefined; 'jvm.memory.non_heap.used'?: number | undefined; 'jvm.thread.count'?: number | undefined; }[]" + " | undefined; 'parent.id'?: string | undefined; 'processor.event'?: string | undefined; 'processor.name'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; 'transaction.id'?: string | undefined; 'transaction.duration.us'?: number | undefined; 'transaction.sampled'?: true | undefined; 'service.name'?: string | undefined; 'service.version'?: string | undefined; 'service.environment'?: string | undefined; 'service.node.name'?: string | undefined; 'service.runtime.name'?: string | undefined; 'service.runtime.version'?: string | undefined; 'service.framework.name'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.type'?: string | undefined; 'span.id'?: string | undefined; 'span.name'?: string | undefined; 'span.type'?: string | undefined; 'span.subtype'?: string | undefined; 'span.duration.us'?: number | undefined; 'span.destination.service.name'?: string | undefined; 'span.destination.service.resource'?: string | undefined; 'span.destination.service.type'?: string | undefined; 'span.destination.service.response_time.sum.us'?: number | undefined; 'span.destination.service.response_time.count'?: number | undefined; 'span.self_time.count'?: number | undefined; 'span.self_time.sum.us'?: number | undefined; 'span.links'?: { trace: { id: string; }; span: { id: string; }; }[] | undefined; 'cloud.provider'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.region'?: string | undefined; 'host.os.platform'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.trigger.type'?: string | undefined; 'faas.trigger.request_id'?: string | undefined; 'system.process.memory.size'?: number | undefined; 'system.memory.actual.free'?: number | undefined; 'system.memory.total'?: number | undefined; 'system.cpu.total.norm.pct'?: number | undefined; 'system.process.memory.rss.bytes'?: number | undefined; 'system.process.cpu.total.norm.pct'?: number | undefined; 'jvm.memory.heap.used'?: number | undefined; 'jvm.memory.non_heap.used'?: number | undefined; 'jvm.thread.count'?: number | undefined; 'faas.billed_duration'?: number | undefined; 'faas.timeout'?: number | undefined; 'faas.coldstart_duration'?: number | undefined; 'faas.duration'?: number | undefined; }[]" ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/index.ts", "deprecated": false, @@ -1190,7 +1190,7 @@ }, "[] | undefined; 'error.grouping_name'?: string | undefined; 'error.grouping_key'?: string | undefined; 'host.name'?: string | undefined; 'host.hostname'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; observer?: ", "Observer", - " | undefined; 'parent.id'?: string | undefined; 'processor.event'?: string | undefined; 'processor.name'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; 'transaction.id'?: string | undefined; 'transaction.duration.us'?: number | undefined; 'transaction.duration.histogram'?: { values: number[]; counts: number[]; } | undefined; 'transaction.sampled'?: true | undefined; 'service.name'?: string | undefined; 'service.version'?: string | undefined; 'service.environment'?: string | undefined; 'service.node.name'?: string | undefined; 'service.runtime.name'?: string | undefined; 'service.runtime.version'?: string | undefined; 'service.framework.name'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.type'?: string | undefined; 'span.id'?: string | undefined; 'span.name'?: string | undefined; 'span.type'?: string | undefined; 'span.subtype'?: string | undefined; 'span.duration.us'?: number | undefined; 'span.destination.service.name'?: string | undefined; 'span.destination.service.resource'?: string | undefined; 'span.destination.service.type'?: string | undefined; 'span.self_time.count'?: number | undefined; 'span.self_time.sum.us'?: number | undefined; 'span.links'?: { trace: { id: string; }; span: { id: string; }; }[] | undefined; 'cloud.provider'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.region'?: string | undefined; 'host.os.platform'?: string | undefined; 'faas.id'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.trigger.type'?: string | undefined; 'faas.trigger.request_id'?: string | undefined; 'system.process.memory.size'?: number | undefined; 'system.memory.actual.free'?: number | undefined; 'system.memory.total'?: number | undefined; 'system.cpu.total.norm.pct'?: number | undefined; 'system.process.memory.rss.bytes'?: number | undefined; 'system.process.cpu.total.norm.pct'?: number | undefined; 'jvm.memory.heap.used'?: number | undefined; 'jvm.memory.non_heap.used'?: number | undefined; 'jvm.thread.count'?: number | undefined; }[]" + " | undefined; 'parent.id'?: string | undefined; 'processor.event'?: string | undefined; 'processor.name'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; 'transaction.id'?: string | undefined; 'transaction.duration.us'?: number | undefined; 'transaction.duration.histogram'?: { values: number[]; counts: number[]; } | undefined; 'transaction.sampled'?: true | undefined; 'service.name'?: string | undefined; 'service.version'?: string | undefined; 'service.environment'?: string | undefined; 'service.node.name'?: string | undefined; 'service.runtime.name'?: string | undefined; 'service.runtime.version'?: string | undefined; 'service.framework.name'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.type'?: string | undefined; 'span.id'?: string | undefined; 'span.name'?: string | undefined; 'span.type'?: string | undefined; 'span.subtype'?: string | undefined; 'span.duration.us'?: number | undefined; 'span.destination.service.name'?: string | undefined; 'span.destination.service.resource'?: string | undefined; 'span.destination.service.type'?: string | undefined; 'span.self_time.count'?: number | undefined; 'span.self_time.sum.us'?: number | undefined; 'span.links'?: { trace: { id: string; }; span: { id: string; }; }[] | undefined; 'cloud.provider'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.region'?: string | undefined; 'host.os.platform'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.trigger.type'?: string | undefined; 'faas.trigger.request_id'?: string | undefined; 'system.process.memory.size'?: number | undefined; 'system.memory.actual.free'?: number | undefined; 'system.memory.total'?: number | undefined; 'system.cpu.total.norm.pct'?: number | undefined; 'system.process.memory.rss.bytes'?: number | undefined; 'system.process.cpu.total.norm.pct'?: number | undefined; 'jvm.memory.heap.used'?: number | undefined; 'jvm.memory.non_heap.used'?: number | undefined; 'jvm.thread.count'?: number | undefined; 'faas.billed_duration'?: number | undefined; 'faas.timeout'?: number | undefined; 'faas.coldstart_duration'?: number | undefined; 'faas.duration'?: number | undefined; }[]" ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/index.ts", "deprecated": false, @@ -1362,6 +1362,38 @@ "path": "packages/kbn-apm-synthtrace/src/lib/apm/index.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.apm.serverlessFunction", + "type": "Function", + "tags": [], + "label": "serverlessFunction", + "description": [], + "signature": [ + "({ functionName, serviceName, environment, agentName, }: { functionName: string; environment: string; agentName: string; serviceName?: string | undefined; }) => ", + "ServerlessFunction" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.apm.serverlessFunction.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ functionName: string; environment: string; agentName: string; serviceName?: string | undefined; }" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/serverless_function.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "initialIsOpen": false diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 08c5aa0f155f6..a28a8a32ed200 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 72 | 0 | 72 | 12 | +| 74 | 0 | 74 | 13 | ## Server diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 88cfbb334ac6e..13a7db755d7e7 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-09-15 +date: 2022-09-16 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 a6b3056eee178..4764376a84da5 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-09-15 +date: 2022-09-16 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 c399c69b6747f..44e2e6c125ed2 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-09-15 +date: 2022-09-16 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 cbcf6bb624273..0f4ecf3f40759 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-09-15 +date: 2022-09-16 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 97a3815f1ffbb..1bf5019c79259 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-09-15 +date: 2022-09-16 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 065f925683b2e..634f1526409fe 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-09-15 +date: 2022-09-16 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 a722251d51569..20a8479071810 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_coloring.devdocs.json index f8c78bf06c6b9..8c6054e41c806 100644 --- a/api_docs/kbn_coloring.devdocs.json +++ b/api_docs/kbn_coloring.devdocs.json @@ -1860,7 +1860,7 @@ "label": "RequiredPaletteParamTypes", "description": [], "signature": [ - "{ rangeMin: number; name: string; reverse: boolean; rangeType: \"number\" | \"percent\"; continuity: ", + "{ name: string; rangeMin: number; reverse: boolean; rangeType: \"number\" | \"percent\"; continuity: ", { "pluginId": "@kbn/coloring", "scope": "common", diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index f4c6612cda718..4e41b70db2faa 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-09-15 +date: 2022-09-16 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 34ef9bc76c931..682776f5a4f1e 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-09-15 +date: 2022-09-16 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 af2009c0884f3..c635f1dcddd46 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-09-15 +date: 2022-09-16 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 62b738288045e..55a565924ee00 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-09-15 +date: 2022-09-16 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 0111ef4073953..7d83dc8f56a54 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-09-15 +date: 2022-09-16 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 7b0d245fec26f..abd92cec98de6 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-09-15 +date: 2022-09-16 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 a4a448c344756..fff234fe46ea0 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-09-15 +date: 2022-09-16 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 c22547c3a94df..17b42d1c30c27 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-09-15 +date: 2022-09-16 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 442397fe88c22..11bbbb8f79fde 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-09-15 +date: 2022-09-16 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 51f24030b0398..d540cc63a74f4 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-09-15 +date: 2022-09-16 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_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index b83078ff29391..aaf7b14623d43 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index a288df63060bf..d5f5748076442 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 6c962fb38cd1b..22cd16b80ad07 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index ea7fd6b61449a..7c8986f62ca1c 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index e438455ae0698..e38581bcee59a 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index ee5cc597e8fd6..612826d821278 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 8674e74bf9b52..833fb7c15dc44 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-09-15 +date: 2022-09-16 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 a291f4ea5f7ba..e0b3ac2a467e3 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-09-15 +date: 2022-09-16 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 6d04efb623429..5e84561bd6f03 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-09-15 +date: 2022-09-16 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 5138c5ab12f74..2cf1ba0668559 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-09-15 +date: 2022-09-16 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_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index bc0923df3403b..8b936b3484670 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 75f7bd5e01c08..293aad469314b 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-09-15 +date: 2022-09-16 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 7dd592c3cd082..0dcafd2c3de13 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-09-15 +date: 2022-09-16 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 a26c460d27b3a..ee036fe6219ff 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-09-15 +date: 2022-09-16 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_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index fa6d180770fed..ffecec60dc460 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 8cbeb740b1795..d2fc4671e596b 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 620e70ce1ec1c..e59bb26dff78f 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-09-15 +date: 2022-09-16 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 24a5f5e298dcb..85aa24aaa64a7 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-09-15 +date: 2022-09-16 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 670bef0ded598..38c1258cbe4b9 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-09-15 +date: 2022-09-16 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 a62a696dbc86a..e243a8374e7b0 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-09-15 +date: 2022-09-16 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 fe538a3178146..7c5c57a5fc47b 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-09-15 +date: 2022-09-16 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 0ce0640387f0d..70e4eca4c670d 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-09-15 +date: 2022-09-16 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_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 276dbcd924f51..812f92ac500f5 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index fe93c13d76f05..8b98db26b5ed1 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index e7a091ffc7850..52540b10640d0 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-09-15 +date: 2022-09-16 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 03fe6cfb39fdf..e1e4dcb94d4e9 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-09-15 +date: 2022-09-16 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 b44ad58b50fed..3abeab145a839 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-09-15 +date: 2022-09-16 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 8d13ec60e6d1c..2b9ea0b1dd4a5 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-09-15 +date: 2022-09-16 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 c768a8edeffb0..a4484a6b52110 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json index a9b967b7e2c98..c682403d3d63d 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json @@ -237,7 +237,7 @@ "label": "asInternalUser", "description": [], "signature": [ - "{ get: ", + "{ name: string | symbol; get: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -341,7 +341,7 @@ }, "<", "default", - ">; name: string | symbol; index: ", + ">; index: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -1348,7 +1348,7 @@ "label": "asInternalUser", "description": [], "signature": [ - "{ get: ", + "{ name: string | symbol; get: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -1452,7 +1452,7 @@ }, "<", "default", - ">; name: string | symbol; index: ", + ">; index: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -2413,7 +2413,7 @@ "label": "asCurrentUser", "description": [], "signature": [ - "{ get: ", + "{ name: string | symbol; get: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -2517,7 +2517,7 @@ }, "<", "default", - ">; name: string | symbol; index: ", + ">; index: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -3545,7 +3545,7 @@ "label": "ElasticsearchClientMock", "description": [], "signature": [ - "{ get: ", + "{ name: string | symbol; get: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", @@ -3649,7 +3649,7 @@ }, "<", "default", - ">; name: string | symbol; index: ", + ">; index: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "server", diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index d61712c6c3228..1335350012a67 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server.devdocs.json index 7f41607270e7a..a6bbfb7a58cb9 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -883,7 +883,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the ES cluster on behalf of the Kibana internal user" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -1001,7 +1001,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -2499,7 +2499,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the internal Kibana user." ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -2617,7 +2617,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -3703,7 +3703,7 @@ "\nA {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster\non behalf of the user that initiated the request to the Kibana server." ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -3821,7 +3821,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -5154,7 +5154,7 @@ "\nClient used to query the elasticsearch cluster.\n" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -5272,7 +5272,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 293ac767bc8cf..021f63f3fbf97 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json index a040b2f6fb20c..248c3b356fa14 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json @@ -46,7 +46,7 @@ "label": "client", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -164,7 +164,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -1629,7 +1629,7 @@ "label": "internalClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -1747,7 +1747,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index b7e974cdd2074..4ff02698b021b 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-09-15 +date: 2022-09-16 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 ed9daf2559199..69f5eadb76281 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-09-15 +date: 2022-09-16 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 4810123b9488c..590bb47f1e954 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-09-15 +date: 2022-09-16 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 6481368cf41e6..6ec364c71a4a0 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-09-15 +date: 2022-09-16 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 f2cd585c5a2ac..458f73bbdb8ec 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-09-15 +date: 2022-09-16 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 010fdbd6dd5ea..a7124e27368e9 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-09-15 +date: 2022-09-16 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 bf58c2c728369..d91c4049f311e 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-09-15 +date: 2022-09-16 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 1687962ce4571..955a99a896d99 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-09-15 +date: 2022-09-16 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 f1f8b736ecd7b..60bb6d4986e29 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-09-15 +date: 2022-09-16 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 b52a9efea2a96..055c3990ce81e 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-09-15 +date: 2022-09-16 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 269e1a7227906..7a79d4392113e 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-09-15 +date: 2022-09-16 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 20b70c5b42cf7..ac297112a8e63 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-09-15 +date: 2022-09-16 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 a02a546d819b1..a3690094609ea 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-09-15 +date: 2022-09-16 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 9f8966957e8d3..eecf7e4c72281 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-09-15 +date: 2022-09-16 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 a635bb3961460..192f6b0e3f829 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-09-15 +date: 2022-09-16 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 e1eb359487726..47f0d7a07fd15 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-09-15 +date: 2022-09-16 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 bee6f8f992b13..0578097918f02 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-09-15 +date: 2022-09-16 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 d098e3cf23caf..6077f843fecd5 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-09-15 +date: 2022-09-16 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 c0f9b99007a21..34868e10ec19d 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-09-15 +date: 2022-09-16 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 46e846225490d..97370bb27bf55 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 6fbfbacd7757a..2fdd0ff9d2a33 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4544,7 +4544,7 @@ "label": "options", "description": [], "signature": [ - "Method extends \"get\" | \"options\" ? Required; readonly ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; redirectHttpFromPort?: number | undefined; } & { enabled: boolean; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; cipherSuites: string[]; supportedProtocols: string[]; clientAuthentication: \"optional\" | \"none\" | \"required\"; }>; readonly port: number; readonly cors: Readonly<{} & { enabled: boolean; allowCredentials: boolean; allowOrigin: string[] | \"*\"[]; }>; readonly autoListen: boolean; readonly shutdownTimeout: moment.Duration; readonly securityResponseHeaders: Readonly<{} & { referrerPolicy: \"origin\" | \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\" | null; disableEmbedding: boolean; strictTransportSecurity: string | null; xContentTypeOptions: \"nosniff\" | null; permissionsPolicy: string | null; }>; readonly customResponseHeaders: Record; readonly maxPayload: ", + "{ readonly basePath?: string | undefined; readonly uuid?: string | undefined; readonly publicBaseUrl?: string | undefined; readonly name: string; readonly host: string; readonly compression: Readonly<{ referrerWhitelist?: string[] | undefined; } & { enabled: boolean; }>; readonly ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; redirectHttpFromPort?: number | undefined; } & { enabled: boolean; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; cipherSuites: string[]; supportedProtocols: string[]; clientAuthentication: \"optional\" | \"none\" | \"required\"; }>; readonly port: number; readonly cors: Readonly<{} & { enabled: boolean; allowCredentials: boolean; allowOrigin: string[] | \"*\"[]; }>; readonly autoListen: boolean; readonly shutdownTimeout: moment.Duration; readonly securityResponseHeaders: Readonly<{} & { referrerPolicy: \"origin\" | \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\" | null; disableEmbedding: boolean; strictTransportSecurity: string | null; xContentTypeOptions: \"nosniff\" | null; permissionsPolicy: string | null; }>; readonly customResponseHeaders: Record; readonly maxPayload: ", "ByteSizeValue", "; readonly rewriteBasePath: boolean; readonly keepaliveTimeout: number; readonly socketTimeout: number; readonly xsrf: Readonly<{} & { disableProtection: boolean; allowlist: string[]; }>; readonly requestId: Readonly<{} & { allowFromAnyIp: boolean; ipAllowlist: string[]; }>; }" ], diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index fe55635d6b969..675f694e2e590 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-09-15 +date: 2022-09-16 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 7c41a909db7c9..e9f353ce26191 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-09-15 +date: 2022-09-16 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 c258392ad24fa..38ab4de67299f 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-09-15 +date: 2022-09-16 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 3e6e23f60fad5..b193323f5d9c6 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-09-15 +date: 2022-09-16 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_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 4e2f7741698f1..b316d261b8393 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 9c47ade4d4523..37981b5304738 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 24d93abaa4df5..7b9ec8446c34a 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 1d2f12bb38631..bd9fa9a89ee2d 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-09-15 +date: 2022-09-16 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 a5c6f62ac8254..eac28be734b51 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-09-15 +date: 2022-09-16 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 48010f098dd8e..b398c1f610cd9 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-09-15 +date: 2022-09-16 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 f82e5aa1d34cf..3c7ac76b86c06 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_logging_server.devdocs.json index 0ee04816b3df4..8a5748a6993ce 100644 --- a/api_docs/kbn_core_logging_server.devdocs.json +++ b/api_docs/kbn_core_logging_server.devdocs.json @@ -215,7 +215,7 @@ "label": "level", "description": [], "signature": [ - "\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"trace\" | \"warn\" | \"fatal\"" + "\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"warn\" | \"trace\" | \"fatal\"" ], "path": "packages/core/logging/core-logging-server/src/logger.ts", "deprecated": false, diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 44ccf3ee4c071..ac8e635c5b4e9 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_logging_server_internal.devdocs.json index d323e46daf7f2..97a1788e84dcb 100644 --- a/api_docs/kbn_core_logging_server_internal.devdocs.json +++ b/api_docs/kbn_core_logging_server_internal.devdocs.json @@ -149,7 +149,7 @@ "AppenderConfigType", ">>; loggers: ", "Type", - "[]>; }>" + "[]>; }>" ], "path": "packages/core/logging/core-logging-server-internal/src/logging_config.ts", "deprecated": false, @@ -173,7 +173,7 @@ "Type", "; level: ", "Type", - "<\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"trace\" | \"warn\" | \"fatal\">; }>" + "<\"error\" | \"all\" | \"info\" | \"debug\" | \"off\" | \"warn\" | \"trace\" | \"fatal\">; }>" ], "path": "packages/core/logging/core-logging-server-internal/src/logging_config.ts", "deprecated": false, diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 442f4408edb57..4138c9c371fd1 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-09-15 +date: 2022-09-16 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 93f111dbdf6fb..e274631349db8 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-09-15 +date: 2022-09-16 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 9461e0298e913..cf62ce99b1286 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-09-15 +date: 2022-09-16 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 f574ed7a6700c..60a53c9433b48 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-09-15 +date: 2022-09-16 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 a36732ece3b66..270f22a951756 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-09-15 +date: 2022-09-16 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 52ad923022f0a..1a44c130bc4d6 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-09-15 +date: 2022-09-16 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 701638fd9a30d..a4a1029cd20af 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-09-15 +date: 2022-09-16 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 600c8a59b4d20..da4a1522d1d43 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-09-15 +date: 2022-09-16 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_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 27de36cafb0a1..bf6d4a6e7504b 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-09-15 +date: 2022-09-16 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 dc326134fa2c0..68a923031fe98 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-09-15 +date: 2022-09-16 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 7c2c592d69969..01f9bca3ef07d 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-09-15 +date: 2022-09-16 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 0047db7651be5..9ccf357419991 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-09-15 +date: 2022-09-16 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 3370a4cecfb86..bda170301c25b 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-09-15 +date: 2022-09-16 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 6505a776c755f..f75f14c7ff86f 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-09-15 +date: 2022-09-16 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 1aaa04d80969d..45dc5afae14d5 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-09-15 +date: 2022-09-16 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 dbb91981c1ee4..9891fec77e0b1 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-09-15 +date: 2022-09-16 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 9b9795b90b6e2..b81d8c40eb1a4 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-09-15 +date: 2022-09-16 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 a5a2e27a9a444..e9757dff3607f 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-09-15 +date: 2022-09-16 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 d71ab586a5d39..15caa83d67230 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-09-15 +date: 2022-09-16 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_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 51caf2596740a..f5a3a6b516cc1 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_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 65e93ca8934a0..a6f101a4af96a 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-09-15 +date: 2022-09-16 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 8231e88b70f3c..3630f06ce6e2d 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-09-15 +date: 2022-09-16 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 cb8bfa88b8280..a88531fe71928 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-09-15 +date: 2022-09-16 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 ad7723a079ddd..d2450a89ff698 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-09-15 +date: 2022-09-16 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 60173859724df..94acccf6c6b1e 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-09-15 +date: 2022-09-16 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 be28c7633b345..d95a501757644 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-09-15 +date: 2022-09-16 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 98b9923c0dfdc..4d9902fadb309 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-09-15 +date: 2022-09-16 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 8ca618b072421..baea1e35d9089 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-09-15 +date: 2022-09-16 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 e4ddbece2eeff..bbb3e0524af62 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-09-15 +date: 2022-09-16 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 d59a9bc3799bf..d638492ac5d37 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-09-15 +date: 2022-09-16 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 49a9a9b851e76..f366609197be4 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-09-15 +date: 2022-09-16 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 f190deef5734d..3a874704aa27c 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json index 0ff9be0a9591b..3e01e7bbd7649 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json @@ -1757,7 +1757,7 @@ "label": "client", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -1875,7 +1875,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", 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 6556d0aa06a80..39df9a446d526 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-09-15 +date: 2022-09-16 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 de7e013de53d6..85591412f1874 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-09-15 +date: 2022-09-16 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 e0baaddc9e3a8..36a81d97ad054 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-09-15 +date: 2022-09-16 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 216f07224840f..cb98fcb2603c9 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-09-15 +date: 2022-09-16 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 ec53c99e25a9d..89cf9e3f39f79 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-09-15 +date: 2022-09-16 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 ec2a60fd65ecf..e388109467e08 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-09-15 +date: 2022-09-16 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_status_common.devdocs.json b/api_docs/kbn_core_status_common.devdocs.json index b49607b86963e..10cab0bc06263 100644 --- a/api_docs/kbn_core_status_common.devdocs.json +++ b/api_docs/kbn_core_status_common.devdocs.json @@ -211,7 +211,7 @@ "\nPossible values for the ID of a {@link ServiceStatusLevel}\n" ], "signature": [ - "\"critical\" | \"degraded\" | \"unavailable\" | \"available\"" + "\"degraded\" | \"unavailable\" | \"available\" | \"critical\"" ], "path": "packages/core/status/core-status-common/src/service_status.ts", "deprecated": false, diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 56412198db1ae..06f4a07631288 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.devdocs.json b/api_docs/kbn_core_status_common_internal.devdocs.json index 39b4d63b9e25a..eba46bfede8b3 100644 --- a/api_docs/kbn_core_status_common_internal.devdocs.json +++ b/api_docs/kbn_core_status_common_internal.devdocs.json @@ -195,7 +195,7 @@ "label": "level", "description": [], "signature": [ - "\"critical\" | \"degraded\" | \"unavailable\" | \"available\"" + "\"degraded\" | \"unavailable\" | \"available\" | \"critical\"" ], "path": "packages/core/status/core-status-common-internal/src/status.ts", "deprecated": false, diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index fdf64c71ff872..a7438ac98836f 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.devdocs.json b/api_docs/kbn_core_status_server.devdocs.json index 6438e27aa69d3..5ec5b6bbeb967 100644 --- a/api_docs/kbn_core_status_server.devdocs.json +++ b/api_docs/kbn_core_status_server.devdocs.json @@ -339,7 +339,7 @@ "\nPossible values for the ID of a {@link ServiceStatusLevel}\n" ], "signature": [ - "\"critical\" | \"degraded\" | \"unavailable\" | \"available\"" + "\"degraded\" | \"unavailable\" | \"available\" | \"critical\"" ], "path": "node_modules/@types/kbn__core-status-common/index.d.ts", "deprecated": false, diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 891adbc290582..ae57ebd3447bc 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 0688457bb68dd..88c5a8b0de7a6 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 9f5672c49fa9a..2a3aac600e632 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.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 cf3482bcb5633..a5b3101b3842e 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-09-15 +date: 2022-09-16 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 2eb20322031d5..1ed67ac38dede 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-09-15 +date: 2022-09-16 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 5107fce867997..e67101987a17a 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-09-15 +date: 2022-09-16 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 ab60f876fb239..4d81ccf8eb784 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-09-15 +date: 2022-09-16 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 5ef16629223aa..bd750e2835de1 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-09-15 +date: 2022-09-16 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 43eb2a53e8e40..3ab2bd0d074b0 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-09-15 +date: 2022-09-16 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 f5427a1d24980..416eb676ead0f 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-09-15 +date: 2022-09-16 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 61ad6eb332fc6..c9c0d40e5c2ac 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_core_ui_settings_common.devdocs.json index 6a5e89a290d41..6967cb7263b52 100644 --- a/api_docs/kbn_core_ui_settings_common.devdocs.json +++ b/api_docs/kbn_core_ui_settings_common.devdocs.json @@ -395,7 +395,7 @@ "\nA sub-set of {@link UiSettingsParams} exposed to the client-side." ], "signature": [ - "{ options?: string[] | number[] | undefined; type?: ", + "{ name?: string | undefined; value?: unknown; description?: string | undefined; category?: string[] | undefined; options?: string[] | number[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; type?: ", { "pluginId": "@kbn/core-ui-settings-common", "scope": "common", @@ -403,7 +403,7 @@ "section": "def-common.UiSettingsType", "text": "UiSettingsType" }, - " | undefined; metric?: { type: string; name: string; } | undefined; value?: unknown; description?: string | undefined; name?: string | undefined; order?: number | undefined; category?: string[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; deprecation?: ", + " | undefined; deprecation?: ", { "pluginId": "@kbn/core-ui-settings-common", "scope": "common", @@ -411,7 +411,7 @@ "section": "def-common.DeprecationSettings", "text": "DeprecationSettings" }, - " | undefined; }" + " | undefined; order?: number | undefined; metric?: { type: string; name: string; } | undefined; }" ], "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", "deprecated": false, diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 47b5af84acfb6..89a1f5a4a0180 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-09-15 +date: 2022-09-16 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_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 329168fd9bbde..ebadcf0adbfd9 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 986877ed698e4..6e1f4984a620f 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 51d5271583140..63bb3e26d5130 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 62ac9fa1d11c6..769d6bca0e3a6 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-09-15 +date: 2022-09-16 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_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 5b81fa3b07461..ba5de9f2e5744 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 544a8d745db23..6b565c5b2d7bc 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index c3ac631270416..d9f9348e45388 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-09-15 +date: 2022-09-16 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 507fd1bf0960d..09db2d3fe1e3b 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-09-15 +date: 2022-09-16 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 d3e73af45bad3..853472d308052 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-09-15 +date: 2022-09-16 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 50b7c4cd41f60..cbdf79d829c82 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-09-15 +date: 2022-09-16 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 9d5e505e7951d..289c23feb4500 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-09-15 +date: 2022-09-16 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 4638fe923ac2e..a7e8d5989c606 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-09-15 +date: 2022-09-16 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 4fcade43d5d29..efd0fe6071d74 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-09-15 +date: 2022-09-16 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 9811a7bb5bb93..3ecb932da1929 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-09-15 +date: 2022-09-16 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 bcb5ea688e245..7a8d06adc0587 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-09-15 +date: 2022-09-16 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 20e7a51b97546..e88e3d3f02260 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-09-15 +date: 2022-09-16 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 94c83eff7d1be..88f7fbe513879 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-09-15 +date: 2022-09-16 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 19bd3f2ac7359..ab6c3f52c1661 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-09-15 +date: 2022-09-16 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 1cd286490d974..4ea6c4d0270ab 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-09-15 +date: 2022-09-16 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 89f27af7fc60e..526edd5a7286a 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-09-15 +date: 2022-09-16 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 a0c4cddfbd6a3..3ba04ac6742cb 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-09-15 +date: 2022-09-16 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 e08e5fe26bcb2..4556d882753a9 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-09-15 +date: 2022-09-16 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 f457f495084aa..266db4346c649 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-09-15 +date: 2022-09-16 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 57a7ac01e3648..b87bb2236ad6c 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-09-15 +date: 2022-09-16 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 3c4fc0921e654..f7514e76fd812 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-09-15 +date: 2022-09-16 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 4686d195d85e1..b711db9b8c7dc 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_home_sample_data_card.devdocs.json index 729ea01b9dc8e..7bc80108253eb 100644 --- a/api_docs/kbn_home_sample_data_card.devdocs.json +++ b/api_docs/kbn_home_sample_data_card.devdocs.json @@ -633,7 +633,7 @@ "\nParameters drawn from the Storybook arguments collection that customize a component story." ], "signature": [ - "{ status: any; description: any; name: any; includeAppLinks: any; simulateErrors: any; }" + "{ name: any; description: any; status: any; includeAppLinks: any; simulateErrors: any; }" ], "path": "packages/home/sample_data_card/src/mocks/index.ts", "deprecated": false, diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 6b3cf035e39fa..aebbc95eed5db 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-09-15 +date: 2022-09-16 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 78e6f4004e420..20c39682df3ba 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-09-15 +date: 2022-09-16 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 be63434e17c8e..559873def41fa 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-09-15 +date: 2022-09-16 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 8fbbf0b59a3e8..36a47e6fd3665 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-09-15 +date: 2022-09-16 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 48cf86699c924..48d4528f89e0b 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-09-15 +date: 2022-09-16 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 a0d7f2e808639..0f7e54d2d826c 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-09-15 +date: 2022-09-16 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 ccdf88e0e2704..a7d6436c35074 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 8ff2bd9cc7ad9..916ac4edece4d 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-09-15 +date: 2022-09-16 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 7d0e427c1a41d..360601743ef63 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-09-15 +date: 2022-09-16 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 f2dc1232019c7..08d4bbe9d3e75 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-09-15 +date: 2022-09-16 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 3e769b57f3f81..be0b9a952187e 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-09-15 +date: 2022-09-16 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 eb118e41d9b4a..cbd535c7d2e1a 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-09-15 +date: 2022-09-16 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 c202f85e96ab8..704538d039df2 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-09-15 +date: 2022-09-16 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 295e6f7e9d19b..4b9b4c9ded5d2 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-09-15 +date: 2022-09-16 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 d917e3d8468d1..723f3830281a1 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-09-15 +date: 2022-09-16 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 132f0a3c5bbdd..d6a23470a935e 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-09-15 +date: 2022-09-16 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 d64a565dfa64d..7ceb1ffafd03e 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-09-15 +date: 2022-09-16 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 a035daa894432..0c3525c58b52a 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-09-15 +date: 2022-09-16 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 b3a81b42f77f5..29be28fe83bdf 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-09-15 +date: 2022-09-16 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 88a210a9a646b..98121d372f387 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-09-15 +date: 2022-09-16 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 1daf033ca32ce..a9bb61fcb5b32 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-09-15 +date: 2022-09-16 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 01e098b4e9f3a..bbe7eb8a62e3c 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-09-15 +date: 2022-09-16 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 6b9ab93f09609..4a6f148a9b1c8 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_rule_data_utils.devdocs.json index 4323a179a30df..c30477647a1ce 100644 --- a/api_docs/kbn_rule_data_utils.devdocs.json +++ b/api_docs/kbn_rule_data_utils.devdocs.json @@ -912,7 +912,7 @@ "label": "AlertConsumers", "description": [], "signature": [ - "\"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\" | \"observability\"" + "\"observability\" | \"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\"" ], "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts", "deprecated": false, @@ -1107,7 +1107,7 @@ "label": "ValidFeatureId", "description": [], "signature": [ - "\"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\" | \"observability\"" + "\"observability\" | \"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\"" ], "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts", "deprecated": false, diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index f172406667175..910663c985ead 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-09-15 +date: 2022-09-16 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 b1fd1ddfe4903..b46b98aba0108 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index b3149b45f10dc..a96bb0f4d470e 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -461,7 +461,7 @@ "label": "esClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -579,7 +579,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -1707,7 +1707,7 @@ "label": "esClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -1825,7 +1825,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 66dafe9c6b3b5..4047a43dc9af4 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-09-15 +date: 2022-09-16 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 c5193b1791ab7..bfd9ca9767ed6 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-09-15 +date: 2022-09-16 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 b281c7e8f48f5..d35ca5d72760c 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json index f75157365c883..64c89d491e6b6 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json @@ -2168,7 +2168,7 @@ "label": "CreateListSchemaDecoded", "description": [], "signature": [ - "{ type: \"boolean\" | \"date\" | \"keyword\" | \"ip\" | \"text\" | \"geo_point\" | \"geo_shape\" | \"date_nanos\" | \"long\" | \"double\" | \"date_range\" | \"ip_range\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; id: string | undefined; description: string; name: string; meta: object | undefined; serializer: string | undefined; deserializer: string | undefined; } & { version: number; }" + "{ name: string; description: string; type: \"boolean\" | \"date\" | \"keyword\" | \"ip\" | \"text\" | \"geo_point\" | \"geo_shape\" | \"date_nanos\" | \"long\" | \"double\" | \"date_range\" | \"ip_range\" | \"shape\" | \"short\" | \"binary\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; id: string | undefined; meta: object | undefined; serializer: string | undefined; deserializer: string | undefined; } & { version: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_list_schema/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index eef24273b1e07..56736882cf4ce 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-09-15 +date: 2022-09-16 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 8ef2c96c575c7..d2224103ee3bd 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-09-15 +date: 2022-09-16 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 64fcb546d398e..cfb95942dcca9 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-09-15 +date: 2022-09-16 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 690abfd693122..c64310453a4b3 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-09-15 +date: 2022-09-16 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 7686c02430098..acd9158741c3d 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-09-15 +date: 2022-09-16 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 6c09251d69863..a27603037a69f 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-09-15 +date: 2022-09-16 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 91755aa023325..8298accc6397f 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-09-15 +date: 2022-09-16 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 c7ab1e58f32c9..8f673e98e5dd1 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-09-15 +date: 2022-09-16 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 ef669c9c76ff3..aa9defd740b2c 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-09-15 +date: 2022-09-16 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 32f52a9162e63..46b43550037fa 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-09-15 +date: 2022-09-16 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 dee2e6d8758ef..2a36ed857d814 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-09-15 +date: 2022-09-16 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 c06c3f7785327..ac7843c890f96 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-09-15 +date: 2022-09-16 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 bde4f2fa741bb..6eae49690a165 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-09-15 +date: 2022-09-16 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 515d59019bd90..b2bff333aef1c 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-09-15 +date: 2022-09-16 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 e569c371b93ee..0c66e039c92f4 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_shared_ux_card_no_data.devdocs.json index ce63cea38e22e..a97e211368c5c 100644 --- a/api_docs/kbn_shared_ux_card_no_data.devdocs.json +++ b/api_docs/kbn_shared_ux_card_no_data.devdocs.json @@ -148,7 +148,7 @@ "signature": [ "Partial> & { button?: React.ReactNode; onClick?: React.MouseEventHandler | undefined; description?: React.ReactNode; category?: string | undefined; canAccessFleet?: boolean | undefined; }" + ", \"description\" | \"onClick\" | \"isDisabled\" | \"button\" | \"layout\">> & { button?: React.ReactNode; onClick?: React.MouseEventHandler | undefined; description?: React.ReactNode; category?: string | undefined; canAccessFleet?: boolean | undefined; }" ], "path": "node_modules/@kbn/shared-ux-card-no-data-types/index.d.ts", "deprecated": false, @@ -184,9 +184,9 @@ "\nProps for the `NoDataCard` sevice-connected component." ], "signature": [ - "{ children?: React.ReactNode; onError?: React.ReactEventHandler | undefined; hidden?: boolean | undefined; icon?: React.ReactElement<", + "{ children?: React.ReactNode; description?: React.ReactNode; category?: string | undefined; onError?: React.ReactEventHandler | undefined; hidden?: boolean | undefined; icon?: React.ReactElement<", "EuiIconProps", - ", string | React.JSXElementConstructor> | null | undefined; id?: string | undefined; image?: string | React.ReactElement> | undefined; className?: string | undefined; title?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; description?: React.ReactNode; security?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; lang?: string | undefined; category?: string | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; contentEditable?: \"inherit\" | Booleanish | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; translate?: \"no\" | \"yes\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"none\" | \"email\" | \"search\" | \"text\" | \"tel\" | \"url\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"mixed\" | \"false\" | \"true\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"date\" | \"location\" | \"time\" | \"page\" | \"false\" | \"true\" | \"step\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"none\" | \"copy\" | \"link\" | \"execute\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"grid\" | \"menu\" | \"false\" | \"true\" | \"dialog\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"false\" | \"true\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"mixed\" | \"false\" | \"true\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"all\" | \"text\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"other\" | \"ascending\" | \"descending\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; href?: string | undefined; rel?: string | undefined; target?: string | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"xs\" | \"l\" | \"xl\" | undefined; button?: React.ReactNode; footer?: React.ReactNode; hasBorder?: boolean | undefined; textAlign?: CardAlignment | undefined; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; betaBadgeProps?: Partial<(", + ", string | React.JSXElementConstructor> | null | undefined; id?: string | undefined; image?: string | React.ReactElement> | undefined; className?: string | undefined; title?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; security?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; lang?: string | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; contentEditable?: \"inherit\" | Booleanish | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; translate?: \"no\" | \"yes\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"none\" | \"email\" | \"search\" | \"text\" | \"tel\" | \"url\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"mixed\" | \"false\" | \"true\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"date\" | \"location\" | \"time\" | \"page\" | \"false\" | \"true\" | \"step\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"none\" | \"copy\" | \"link\" | \"execute\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"grid\" | \"menu\" | \"false\" | \"true\" | \"dialog\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"false\" | \"true\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"mixed\" | \"false\" | \"true\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"all\" | \"text\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"other\" | \"ascending\" | \"descending\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; href?: string | undefined; rel?: string | undefined; target?: string | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"xs\" | \"l\" | \"xl\" | undefined; button?: React.ReactNode; footer?: React.ReactNode; hasBorder?: boolean | undefined; textAlign?: CardAlignment | undefined; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; betaBadgeProps?: Partial<(", "CommonProps", " & ", "DisambiguateSet", diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index ab7ceb2be4730..a9006d28ec624 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_shared_ux_card_no_data_mocks.devdocs.json index bbd3d2f518bff..c83e2d8f0e1aa 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.devdocs.json +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.devdocs.json @@ -509,7 +509,7 @@ "\nStorybook parameters provided from the controls addon." ], "signature": [ - "{ title: any; description: any; category: any; button: any; canAccessFleet: any; }" + "{ description: any; category: any; title: any; button: any; canAccessFleet: any; }" ], "path": "packages/shared-ux/card/no_data/mocks/src/storybook.ts", "deprecated": false, 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 08416e4fe70ae..e245ed34fb036 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-09-15 +date: 2022-09-16 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 a7a69570eff79..99967c11ef8c1 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-09-15 +date: 2022-09-16 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 d215293450495..40ed36e167fd2 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-09-15 +date: 2022-09-16 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 30371fcc7755c..108ca587099be 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-09-15 +date: 2022-09-16 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 1828691b1f733..180ce0b2298ee 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-09-15 +date: 2022-09-16 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 48b144ff6b98e..32005ebac2760 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-09-15 +date: 2022-09-16 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 adfee4a1fd884..0f026abe9b337 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-09-15 +date: 2022-09-16 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 2004e5e24232b..a4e7ef6a79f38 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-09-15 +date: 2022-09-16 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 b1553e55a8298..f6a859c719bef 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-09-15 +date: 2022-09-16 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 b80e7b846bd49..5f54ad282b9b1 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-09-15 +date: 2022-09-16 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 6c5bc6c2fc746..cb6f819e530ce 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-09-15 +date: 2022-09-16 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 5add75ded9b23..ddf2d830b3639 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-09-15 +date: 2022-09-16 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 55bc3264893e0..0b79e21dbad61 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-09-15 +date: 2022-09-16 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 2561840effa5b..9f34d093ee138 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-09-15 +date: 2022-09-16 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 254fb90eb5002..0a1c6eb8ec706 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-09-15 +date: 2022-09-16 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_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 97e0817bcf8fe..ac9a7ee52deb1 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 1e397273c4ac3..3771da69028a8 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index d5bf2e40eb9f3..28a9a2ee000a4 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 0559dd88ea1af..6149e84fc2f9c 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-09-15 +date: 2022-09-16 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 3991442b491a8..f3fdc4b5ece37 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-09-15 +date: 2022-09-16 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 ac98d6d8e4faf..60dd5fdcc6d55 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-09-15 +date: 2022-09-16 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 7244bba46a094..6ee19e42188d0 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-09-15 +date: 2022-09-16 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 48f4a15e553b5..8d04fe3a18d9b 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-09-15 +date: 2022-09-16 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 a1e56ace2a657..b4be2245f78c2 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-09-15 +date: 2022-09-16 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 3bd5946ea6b7f..4fd12bbb026a0 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-09-15 +date: 2022-09-16 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 065e45d7456d9..a27871d528a3d 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-09-15 +date: 2022-09-16 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 51f32682b5615..1e2286f32139b 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-09-15 +date: 2022-09-16 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 fb3ba9a9f97c8..6d4978ce224d8 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-09-15 +date: 2022-09-16 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 40ff79d269ebd..c45a8faa285fe 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-09-15 +date: 2022-09-16 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 dca175974a18a..eb7173e0cb905 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-09-15 +date: 2022-09-16 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 7c51a9cb4590f..93ffd8d477656 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_typed_react_router_config.devdocs.json index 016fc28862436..b6c4b0eb31605 100644 --- a/api_docs/kbn_typed_react_router_config.devdocs.json +++ b/api_docs/kbn_typed_react_router_config.devdocs.json @@ -787,12 +787,12 @@ { "parentPluginId": "@kbn/typed-react-router-config", "id": "def-common.RouteMatch.route", - "type": "Uncategorized", + "type": "CompoundType", "tags": [], "label": "route", "description": [], "signature": [ - "TRoute" + "TRoute & { path: string; }" ], "path": "packages/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, @@ -2177,8 +2177,8 @@ "pluginId": "@kbn/typed-react-router-config", "scope": "common", "docId": "kibKbnTypedReactRouterConfigPluginApi", - "section": "def-common.Route", - "text": "Route" + "section": "def-common.RouteWithPath", + "text": "RouteWithPath" }, ") => string" ], @@ -2198,8 +2198,8 @@ "pluginId": "@kbn/typed-react-router-config", "scope": "common", "docId": "kibKbnTypedReactRouterConfigPluginApi", - "section": "def-common.Route", - "text": "Route" + "section": "def-common.RouteWithPath", + "text": "RouteWithPath" } ], "path": "packages/kbn-typed-react-router-config/src/types/index.ts", diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index a5910b5a22a26..efea59e0dc139 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-09-15 +date: 2022-09-16 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 65eb84dea705b..74fdbd658da86 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-09-15 +date: 2022-09-16 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.devdocs.json b/api_docs/kbn_user_profile_components.devdocs.json index 849e068eb629e..d8cd0cfd94f9e 100644 --- a/api_docs/kbn_user_profile_components.devdocs.json +++ b/api_docs/kbn_user_profile_components.devdocs.json @@ -319,7 +319,7 @@ }, " extends Omit<", "EuiAvatarProps", - ", \"type\" | \"color\" | \"iconColor\" | \"name\" | \"iconType\" | \"iconSize\" | \"initials\" | \"initialsLength\" | \"imageUrl\">" + ", \"name\" | \"type\" | \"color\" | \"iconColor\" | \"iconType\" | \"iconSize\" | \"initials\" | \"initialsLength\" | \"imageUrl\">" ], "path": "packages/kbn-user-profile-components/src/user_avatar.tsx", "deprecated": false, diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index d8ceff505abb9..11af3eaae141e 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-09-15 +date: 2022-09-16 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 326dd3ad35567..79a0284a5e84d 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-09-15 +date: 2022-09-16 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 af43dda9d70c3..c74715ea8c8bf 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-09-15 +date: 2022-09-16 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 cb6e6c5f7ce49..a91ffda96b905 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-09-15 +date: 2022-09-16 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 2630b7f0e85b4..752170e6108d0 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-09-15 +date: 2022-09-16 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 b08bc25f9124e..da453725287eb 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-09-15 +date: 2022-09-16 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 365499f56d208..1c95c60f7ab23 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-09-15 +date: 2022-09-16 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 0dc716bc337b9..58ffc35483859 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-09-15 +date: 2022-09-16 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 f7391fad68e12..dd98e7157dd5a 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 50822bc6a07fe..17237b208ad45 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -3616,7 +3616,7 @@ "label": "numberDisplay", "description": [], "signature": [ - "\"percent\" | \"hidden\" | \"value\"" + "\"value\" | \"percent\" | \"hidden\"" ], "path": "x-pack/plugins/lens/common/types.ts", "deprecated": false, @@ -5347,76 +5347,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "lens", - "id": "def-public.Visualization.updateLayersConfigurationFromContext", - "type": "Function", - "tags": [], - "label": "updateLayersConfigurationFromContext", - "description": [ - "\nUpdate the configuration for the visualization. This is used to update the state" - ], - "signature": [ - "((props: VisualizationConfigurationFromContextChangeProps) => T) | undefined" - ], - "path": "x-pack/plugins/lens/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "lens", - "id": "def-public.Visualization.updateLayersConfigurationFromContext.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "VisualizationConfigurationFromContextChangeProps" - ], - "path": "x-pack/plugins/lens/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "lens", - "id": "def-public.Visualization.getVisualizationSuggestionFromContext", - "type": "Function", - "tags": [], - "label": "getVisualizationSuggestionFromContext", - "description": [ - "\nUpdate the visualization state from the context." - ], - "signature": [ - "((props: VisualizationStateFromContextChangeProps) => ", - "Suggestion", - ") | undefined" - ], - "path": "x-pack/plugins/lens/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "lens", - "id": "def-public.Visualization.getVisualizationSuggestionFromContext.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "VisualizationStateFromContextChangeProps" - ], - "path": "x-pack/plugins/lens/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "lens", "id": "def-public.Visualization.renderDimensionEditor", @@ -6343,6 +6273,40 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "lens", + "id": "def-public.Visualization.getSuggestionFromConvertToLensContext", + "type": "Function", + "tags": [], + "label": "getSuggestionFromConvertToLensContext", + "description": [], + "signature": [ + "((props: VisualizationStateFromContextChangeProps) => ", + "Suggestion", + ") | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-public.Visualization.getSuggestionFromConvertToLensContext.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "VisualizationStateFromContextChangeProps" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -8162,7 +8126,7 @@ "section": "def-common.GaugeState", "text": "GaugeState" }, - ", \"goal\" | \"min\" | \"metric\" | \"max\"> & { metricAccessor?: string | undefined; minAccessor?: string | undefined; maxAccessor?: string | undefined; goalAccessor?: string | undefined; } & { layerId: string; layerType: ", + ", \"metric\" | \"goal\" | \"min\" | \"max\"> & { metricAccessor?: string | undefined; minAccessor?: string | undefined; maxAccessor?: string | undefined; goalAccessor?: string | undefined; } & { layerId: string; layerType: ", { "pluginId": "lens", "scope": "common", @@ -8311,7 +8275,7 @@ "label": "LensSavedObjectAttributes", "description": [], "signature": [ - "{ title: string; description?: string | undefined; state: { datasourceStates: Record; visualization: unknown; query: ", + "{ description?: string | undefined; title: string; state: { datasourceStates: Record; visualization: unknown; query: ", "Query", "; globalPalette?: { activePaletteId: string; state?: unknown; } | undefined; filters: ", "Filter", @@ -10145,7 +10109,7 @@ "label": "OperationTypePost712", "description": [], "signature": [ - "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"average\" | \"terms\" | \"median\" | \"cumulative_sum\" | \"moving_average\" | \"unique_count\" | \"last_value\" | \"counter_rate\" | \"differences\"" + "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"average\" | \"terms\" | \"median\" | \"cumulative_sum\" | \"moving_average\" | \"counter_rate\" | \"differences\" | \"unique_count\" | \"last_value\"" ], "path": "x-pack/plugins/lens/server/migrations/types.ts", "deprecated": false, @@ -10160,7 +10124,7 @@ "label": "OperationTypePre712", "description": [], "signature": [ - "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"terms\" | \"avg\" | \"median\" | \"cumulative_sum\" | \"derivative\" | \"moving_average\" | \"last_value\" | \"counter_rate\" | \"cardinality\"" + "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"terms\" | \"avg\" | \"median\" | \"cumulative_sum\" | \"derivative\" | \"moving_average\" | \"counter_rate\" | \"last_value\" | \"cardinality\"" ], "path": "x-pack/plugins/lens/server/migrations/types.ts", "deprecated": false, @@ -11002,7 +10966,7 @@ "label": "numberDisplay", "description": [], "signature": [ - "\"percent\" | \"hidden\" | \"value\"" + "\"value\" | \"percent\" | \"hidden\"" ], "path": "x-pack/plugins/lens/common/types.ts", "deprecated": false, @@ -11407,7 +11371,7 @@ "label": "NumberDisplayType", "description": [], "signature": [ - "\"percent\" | \"hidden\" | \"value\"" + "\"value\" | \"percent\" | \"hidden\"" ], "path": "x-pack/plugins/lens/common/types.ts", "deprecated": false, diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index e4bb0fe1f7017..c909b74ee6064 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 641 | 0 | 552 | 41 | +| 639 | 0 | 552 | 41 | ## Client diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index fbc64e2a4e6ea..a8b0a61e1c78a 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-09-15 +date: 2022-09-16 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 f15740a9a5b68..cd388625bfc86 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index df3f81f908362..0b456fa70029f 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -550,6 +550,10 @@ "plugin": "security", "path": "x-pack/plugins/security/common/licensing/license_service.test.ts" }, + { + "plugin": "security", + "path": "x-pack/plugins/security/common/licensing/license_service.test.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" @@ -1811,6 +1815,10 @@ "plugin": "security", "path": "x-pack/plugins/security/common/licensing/license_service.test.ts" }, + { + "plugin": "security", + "path": "x-pack/plugins/security/common/licensing/license_service.test.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 4419cde10dcd3..a01d1c44fb7b5 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.devdocs.json b/api_docs/lists.devdocs.json index fe03f21a11155..c533d58682907 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -3894,7 +3894,7 @@ "label": "esClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -4012,7 +4012,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 6cb57067ef155..58f3ca655e9be 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-09-15 +date: 2022-09-16 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 6a35ad4a5349b..d29c4bdaa54d6 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-09-15 +date: 2022-09-16 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 2030318dd7315..f9b92392acb2b 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-09-15 +date: 2022-09-16 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 79389095ac6a1..ca7bbf80792cd 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.devdocs.json b/api_docs/ml.devdocs.json index 5ff2618d25391..2e8827a761114 100644 --- a/api_docs/ml.devdocs.json +++ b/api_docs/ml.devdocs.json @@ -1596,7 +1596,7 @@ "label": "ML_PAGES", "description": [], "signature": [ - "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly TRAINED_MODELS_NODES: \"trained_models/nodes\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly ACCESS_DENIED: \"access-denied\"; readonly OVERVIEW: \"overview\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; }" + "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly TRAINED_MODELS_NODES: \"trained_models/nodes\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly ACCESS_DENIED: \"access-denied\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; }" ], "path": "x-pack/plugins/ml/common/constants/locator.ts", "deprecated": false, diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 85c2ac18cb50f..8ca9b074c95ef 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-09-15 +date: 2022-09-16 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 a1c0682748923..80e9179edd11b 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-09-15 +date: 2022-09-16 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 4207e2a1b1b94..972b441cf7221 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-09-15 +date: 2022-09-16 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 c51681c2f0345..c9d1bfcd7a3f2 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-09-15 +date: 2022-09-16 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 7db96060f323c..0c0b0d0569b1e 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index ebeeaebf779e9..be4d5adadeff9 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -3068,6 +3068,60 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "observability", + "id": "def-public.NavigationSection", + "type": "Interface", + "tags": [], + "label": "NavigationSection", + "description": [], + "path": "x-pack/plugins/observability/public/services/navigation_registry.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-public.NavigationSection.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability/public/services/navigation_registry.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-public.NavigationSection.sortKey", + "type": "number", + "tags": [], + "label": "sortKey", + "description": [], + "path": "x-pack/plugins/observability/public/services/navigation_registry.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-public.NavigationSection.entries", + "type": "Array", + "tags": [], + "label": "entries", + "description": [], + "signature": [ + "NavigationEntry", + "[]" + ], + "path": "x-pack/plugins/observability/public/services/navigation_registry.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-public.ObservabilityFetchDataResponse", @@ -5558,7 +5612,13 @@ " | undefined; list: () => string[]; }; navigation: { registerSections: (sections$: ", "Observable", "<", - "NavigationSection", + { + "pluginId": "observability", + "scope": "public", + "docId": "kibObservabilityPluginApi", + "section": "def-public.NavigationSection", + "text": "NavigationSection" + }, "[]>) => void; }; useRulesLink: (options?: ", "Options", ") => ", @@ -5791,7 +5851,7 @@ "label": "client", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -5909,7 +5969,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", @@ -8013,180 +8073,1468 @@ "initialIsOpen": false } ], - "objects": [], - "setup": { - "parentPluginId": "observability", - "id": "def-server.ObservabilityPluginSetup", - "type": "Type", - "tags": [], - "label": "ObservabilityPluginSetup", - "description": [], - "signature": [ - "{ getScopedAnnotationsClient: (requestContext: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - }, - " & { licensing: Promise<", - { - "pluginId": "licensing", - "scope": "server", - "docId": "kibLicensingPluginApi", - "section": "def-server.LicensingApiRequestHandlerContext", - "text": "LicensingApiRequestHandlerContext" - }, - ">; }, request: ", - "KibanaRequest", - ") => Promise<{ readonly index: string; create: (createParams: { annotation: { type: string; }; '@timestamp': string; message: string; } & { tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; }) => Promise<{ _id: string; _index: string; _source: ", - "Annotation", - "; }>; getById: (getByIdParams: { id: string; }) => Promise<", - "GetResponse", - ">; delete: (deleteParams: { id: string; }) => Promise<", - "WriteResponseBase", - ">; } | undefined>; }" - ], - "path": "x-pack/plugins/observability/server/plugin.ts", - "deprecated": false, - "trackAdoption": false, - "lifecycle": "setup", - "initialIsOpen": true - } - }, - "common": { - "classes": [], - "functions": [ + "objects": [ { "parentPluginId": "observability", - "id": "def-common.formatDurationFromTimeUnitChar", - "type": "Function", + "id": "def-server.uiSettings", + "type": "Object", "tags": [], - "label": "formatDurationFromTimeUnitChar", - "description": [], - "signature": [ - "(time: number, unit: ", - { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.TimeUnitChar", - "text": "TimeUnitChar" - }, - ") => string" + "label": "uiSettings", + "description": [ + "\nuiSettings definitions for Observability." ], - "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "path": "x-pack/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "observability", - "id": "def-common.formatDurationFromTimeUnitChar.$1", - "type": "number", + "id": "def-server.uiSettings.enableNewSyntheticsView", + "type": "Object", "tags": [], - "label": "time", + "label": "[enableNewSyntheticsView]", "description": [], - "signature": [ - "number" - ], - "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "path": "x-pack/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "observability", - "id": "def-common.formatDurationFromTimeUnitChar.$2", - "type": "CompoundType", - "tags": [], - "label": "unit", - "description": [], - "signature": [ + "children": [ { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.TimeUnitChar", - "text": "TimeUnitChar" + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableNewSyntheticsView.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false } - ], - "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-common.getProbabilityFromProgressiveLoadingQuality", - "type": "Function", - "tags": [], - "label": "getProbabilityFromProgressiveLoadingQuality", - "description": [], - "signature": [ - "(quality: ", - { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.ProgressiveLoadingQuality", - "text": "ProgressiveLoadingQuality" + ] }, - ") => number" - ], - "path": "x-pack/plugins/observability/common/progressive_loading.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { "parentPluginId": "observability", - "id": "def-common.getProbabilityFromProgressiveLoadingQuality.$1", - "type": "Enum", + "id": "def-server.uiSettings.enableInspectEsQueries", + "type": "Object", "tags": [], - "label": "quality", + "label": "[enableInspectEsQueries]", "description": [], - "signature": [ - { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.ProgressiveLoadingQuality", - "text": "ProgressiveLoadingQuality" - } - ], - "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "path": "x-pack/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [], - "enums": [ - { - "parentPluginId": "observability", - "id": "def-common.ProcessorEvent", - "type": "Enum", - "tags": [], - "label": "ProcessorEvent", - "description": [], - "path": "x-pack/plugins/observability/common/processor_event.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-common.ProgressiveLoadingQuality", - "type": "Enum", - "tags": [], + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableInspectEsQueries.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions", + "type": "Object", + "tags": [], + "label": "[maxSuggestions]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.maxSuggestions.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault", + "type": "Object", + "tags": [], + "label": "[enableComparisonByDefault]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableComparisonByDefault.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment", + "type": "Object", + "tags": [], + "label": "[defaultApmServiceEnvironment]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.defaultApmServiceEnvironment.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading", + "type": "Object", + "tags": [], + "label": "[apmProgressiveLoading]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.value", + "type": "Enum", + "tags": [], + "label": "value", + "description": [], + "signature": [ + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + } + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "<", + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + }, + ">" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"select\"" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + }, + "[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.optionLabels", + "type": "Object", + "tags": [], + "label": "optionLabels", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.optionLabels.ProgressiveLoadingQuality.off", + "type": "string", + "tags": [], + "label": "[ProgressiveLoadingQuality.off]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.optionLabels.ProgressiveLoadingQuality.low", + "type": "string", + "tags": [], + "label": "[ProgressiveLoadingQuality.low]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.optionLabels.ProgressiveLoadingQuality.medium", + "type": "string", + "tags": [], + "label": "[ProgressiveLoadingQuality.medium]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmProgressiveLoading.optionLabels.ProgressiveLoadingQuality.high", + "type": "string", + "tags": [], + "label": "[ProgressiveLoadingQuality.high]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups", + "type": "Object", + "tags": [], + "label": "[enableServiceGroups]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.enableServiceGroups.showInLabs", + "type": "boolean", + "tags": [], + "label": "showInLabs", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting", + "type": "Object", + "tags": [], + "label": "[apmServiceInventoryOptimizedSorting]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceInventoryOptimizedSorting.showInLabs", + "type": "boolean", + "tags": [], + "label": "showInLabs", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices", + "type": "Object", + "tags": [], + "label": "[apmServiceGroupMaxNumberOfServices]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmServiceGroupMaxNumberOfServices.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab", + "type": "Object", + "tags": [], + "label": "[apmTraceExplorerTab]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmTraceExplorerTab.showInLabs", + "type": "boolean", + "tags": [], + "label": "showInLabs", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab", + "type": "Object", + "tags": [], + "label": "[apmOperationsTab]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmOperationsTab.showInLabs", + "type": "boolean", + "tags": [], + "label": "showInLabs", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton", + "type": "Object", + "tags": [], + "label": "[apmLabsButton]", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmLabsButton.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "x-pack/plugins/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "initialIsOpen": false + } + ], + "setup": { + "parentPluginId": "observability", + "id": "def-server.ObservabilityPluginSetup", + "type": "Type", + "tags": [], + "label": "ObservabilityPluginSetup", + "description": [], + "signature": [ + "{ getScopedAnnotationsClient: (requestContext: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { licensing: Promise<", + { + "pluginId": "licensing", + "scope": "server", + "docId": "kibLicensingPluginApi", + "section": "def-server.LicensingApiRequestHandlerContext", + "text": "LicensingApiRequestHandlerContext" + }, + ">; }, request: ", + "KibanaRequest", + ") => Promise<{ readonly index: string; create: (createParams: { annotation: { type: string; }; '@timestamp': string; message: string; } & { tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; }) => Promise<{ _id: string; _index: string; _source: ", + "Annotation", + "; }>; getById: (getByIdParams: { id: string; }) => Promise<", + "GetResponse", + ">; delete: (deleteParams: { id: string; }) => Promise<", + "WriteResponseBase", + ">; } | undefined>; }" + ], + "path": "x-pack/plugins/observability/server/plugin.ts", + "deprecated": false, + "trackAdoption": false, + "lifecycle": "setup", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "observability", + "id": "def-common.formatDurationFromTimeUnitChar", + "type": "Function", + "tags": [], + "label": "formatDurationFromTimeUnitChar", + "description": [], + "signature": [ + "(time: number, unit: ", + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.TimeUnitChar", + "text": "TimeUnitChar" + }, + ") => string" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-common.formatDurationFromTimeUnitChar.$1", + "type": "number", + "tags": [], + "label": "time", + "description": [], + "signature": [ + "number" + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "observability", + "id": "def-common.formatDurationFromTimeUnitChar.$2", + "type": "CompoundType", + "tags": [], + "label": "unit", + "description": [], + "signature": [ + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.TimeUnitChar", + "text": "TimeUnitChar" + } + ], + "path": "x-pack/plugins/observability/common/utils/formatters/duration.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-common.getProbabilityFromProgressiveLoadingQuality", + "type": "Function", + "tags": [], + "label": "getProbabilityFromProgressiveLoadingQuality", + "description": [], + "signature": [ + "(quality: ", + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + }, + ") => number" + ], + "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-common.getProbabilityFromProgressiveLoadingQuality.$1", + "type": "Enum", + "tags": [], + "label": "quality", + "description": [], + "signature": [ + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + } + ], + "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [ + { + "parentPluginId": "observability", + "id": "def-common.ProcessorEvent", + "type": "Enum", + "tags": [], + "label": "ProcessorEvent", + "description": [], + "path": "x-pack/plugins/observability/common/processor_event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-common.ProgressiveLoadingQuality", + "type": "Enum", + "tags": [], "label": "ProgressiveLoadingQuality", "description": [], "path": "x-pack/plugins/observability/common/progressive_loading.ts", @@ -8196,6 +9544,21 @@ } ], "misc": [ + { + "parentPluginId": "observability", + "id": "def-common.apmLabsButton", + "type": "string", + "tags": [], + "label": "apmLabsButton", + "description": [], + "signature": [ + "\"observability:apmLabsButton\"" + ], + "path": "x-pack/plugins/observability/common/ui_settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-common.apmOperationsTab", @@ -8453,6 +9816,36 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observability", + "id": "def-common.enableNewSyntheticsView", + "type": "string", + "tags": [], + "label": "enableNewSyntheticsView", + "description": [], + "signature": [ + "\"observability:enableNewSyntheticsView\"" + ], + "path": "x-pack/plugins/observability/common/ui_settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-common.enableServiceGroups", + "type": "string", + "tags": [], + "label": "enableServiceGroups", + "description": [], + "signature": [ + "\"observability:enableServiceGroups\"" + ], + "path": "x-pack/plugins/observability/common/ui_settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-common.maxSuggestions", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index e8520140a70ea..52917c76e918f 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Observability UI](https://github.com/orgs/elastic/teams/observability-u | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 397 | 2 | 394 | 30 | +| 501 | 2 | 497 | 30 | ## Client @@ -48,6 +48,9 @@ Contact [Observability UI](https://github.com/orgs/elastic/teams/observability-u ### Setup +### Objects + + ### Functions diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index b4dbdc99d43ff..e4fecbd1642f7 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-09-15 +date: 2022-09-16 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 95f30da6410ab..acdc7e071f287 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,20 +15,20 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 455 | 380 | 36 | +| 458 | 383 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 30837 | 180 | 20600 | 971 | +| 31118 | 182 | 20880 | 975 | ## 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) | - | 273 | 0 | 268 | 19 | -| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 19 | 1 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 214 | 0 | 209 | 19 | +| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 36 | 1 | 32 | 2 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 7 | 0 | 0 | 1 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 370 | 0 | 361 | 22 | | | [APM UI](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 38 | 0 | 38 | 52 | @@ -53,12 +53,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [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. | 966 | 0 | 208 | 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. | 95 | 0 | 78 | 4 | +| | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 96 | 0 | 79 | 4 | | | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds embeddables service to Kibana | 515 | 0 | 415 | 4 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 42 | 0 | -| | [Enterprise Search](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 8 | 0 | 8 | 0 | +| | [Enterprise Search](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 9 | 0 | 9 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 114 | 3 | 110 | 3 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | The Event Annotation service contains expressions for event annotations | 170 | 0 | 170 | 3 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 106 | 0 | 106 | 10 | @@ -80,12 +80,13 @@ 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. | 240 | 0 | 6 | 2 | -| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 979 | 3 | 880 | 15 | +| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 969 | 3 | 870 | 17 | | | [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 | | graph | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 0 | 0 | 0 | 0 | | grokdebugger | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | +| | [Journey Onboarding](https://github.com/orgs/elastic/teams/platform-onboarding) | Guided onboarding framework | 12 | 0 | 12 | 1 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 143 | 0 | 104 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 4 | 0 | 4 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 177 | 0 | 172 | 3 | @@ -99,7 +100,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | kibanaUsageCollection | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 0 | 0 | 0 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 615 | 3 | 418 | 9 | | | [Security Team](https://github.com/orgs/elastic/teams/security-team) | - | 3 | 0 | 3 | 1 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 641 | 0 | 552 | 41 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 639 | 0 | 552 | 41 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 8 | 0 | 8 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 3 | 0 | 3 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | @@ -113,10 +114,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Stack Monitoring](https://github.com/orgs/elastic/teams/stack-monitoring-ui) | - | 9 | 0 | 9 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 34 | 0 | 34 | 2 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | -| | [Observability UI](https://github.com/orgs/elastic/teams/observability-ui) | - | 397 | 2 | 394 | 30 | +| | [Observability UI](https://github.com/orgs/elastic/teams/observability-ui) | - | 501 | 2 | 497 | 30 | | | [Security asset management](https://github.com/orgs/elastic/teams/security-asset-management) | - | 14 | 0 | 14 | 2 | | painlessLab | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 243 | 2 | 187 | 12 | +| | [profiling](https://github.com/orgs/elastic/teams/profiling-ui) | - | 14 | 1 | 14 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 4 | 0 | 4 | 0 | | | [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Reporting Services enables applications to feature reports that the user can automate with Watcher and download later. | 36 | 0 | 16 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 21 | 0 | 21 | 0 | @@ -131,13 +133,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 32 | 0 | 13 | 0 | | | [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 4 | | searchprofiler | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | -| | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 245 | 0 | 90 | 0 | +| | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 247 | 0 | 90 | 0 | | | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 54 | 0 | 53 | 22 | | | [Security Team](https://github.com/orgs/elastic/teams/security-team) | - | 3 | 0 | 3 | 1 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds URL Service and sharing capabilities to Kibana | 114 | 0 | 55 | 10 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 22 | 1 | 22 | 1 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 260 | 0 | 64 | 0 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 0 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 2 | 0 | 2 | 0 | | synthetics | [Uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 83 | 0 | 41 | 7 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 44 | 0 | 1 | 0 | @@ -151,7 +154,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 428 | 0 | 407 | 46 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds UI Actions service to Kibana | 132 | 0 | 91 | 11 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends UI Actions plugin with more functionality | 205 | 0 | 142 | 9 | -| | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list which can be integrated into apps | 54 | 0 | 52 | 2 | +| | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list which can be integrated into apps | 61 | 0 | 59 | 2 | | | [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-services) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 122 | 2 | 96 | 16 | | upgradeAssistant | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | urlDrilldown | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | @@ -171,7 +174,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the vislib visualizations. These are the classical area/line/bar, pie, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 26 | 0 | 25 | 1 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 53 | 0 | 50 | 5 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 419 | 12 | 390 | 15 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 611 | 12 | 582 | 14 | | watcher | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -180,7 +183,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [Owner missing] | - | 11 | 5 | 11 | 0 | | | Machine Learning UI | React components for AIOps related efforts. | 6 | 0 | 6 | 0 | -| | Machine Learning UI | Static utilities for AIOps related efforts. | 49 | 0 | 24 | 0 | +| | Machine Learning UI | Static utilities for AIOps related efforts. | 51 | 0 | 26 | 0 | | | [Owner missing] | Alerts components and hooks | 9 | 1 | 9 | 0 | | | Kibana Core | Kibana Analytics tool | 73 | 0 | 73 | 2 | | | Kibana Core | - | 96 | 0 | 0 | 0 | @@ -189,7 +192,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Kibana Core | - | 18 | 0 | 0 | 0 | | | Kibana Core | - | 20 | 0 | 0 | 0 | | | [Owner missing] | - | 16 | 0 | 16 | 0 | -| | [Owner missing] | Elastic APM trace data generator | 72 | 0 | 72 | 12 | +| | [Owner missing] | Elastic APM trace data generator | 74 | 0 | 74 | 13 | | | [Owner missing] | - | 11 | 0 | 11 | 0 | | | [Owner missing] | - | 10 | 0 | 10 | 0 | | | [Owner missing] | - | 76 | 0 | 76 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 07f323620fdba..ee28f5d100fe8 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.devdocs.json b/api_docs/profiling.devdocs.json new file mode 100644 index 0000000000000..1b5e38396b43d --- /dev/null +++ b/api_docs/profiling.devdocs.json @@ -0,0 +1,242 @@ +{ + "id": "profiling", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "profiling", + "id": "def-server.ProfilingPluginSetup", + "type": "Interface", + "tags": [], + "label": "ProfilingPluginSetup", + "description": [], + "path": "x-pack/plugins/profiling/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "profiling", + "id": "def-server.ProfilingPluginStart", + "type": "Interface", + "tags": [], + "label": "ProfilingPluginStart", + "description": [], + "path": "x-pack/plugins/profiling/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "profiling", + "id": "def-common.fromMapToRecord", + "type": "Function", + "tags": [], + "label": "fromMapToRecord", + "description": [], + "signature": [ + "(m: Map) => Record" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "profiling", + "id": "def-common.fromMapToRecord.$1", + "type": "Object", + "tags": [], + "label": "m", + "description": [], + "signature": [ + "Map" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.getRoutePaths", + "type": "Function", + "tags": [], + "label": "getRoutePaths", + "description": [], + "signature": [ + "() => { TopN: string; TopNContainers: string; TopNDeployments: string; TopNFunctions: string; TopNHosts: string; TopNThreads: string; TopNTraces: string; Flamechart: string; FrameInformation: string; }" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.timeRangeFromRequest", + "type": "Function", + "tags": [], + "label": "timeRangeFromRequest", + "description": [], + "signature": [ + "(request: any) => [number, number]" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "profiling", + "id": "def-common.timeRangeFromRequest.$1", + "type": "Any", + "tags": [], + "label": "request", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "profiling", + "id": "def-common.INDEX_EVENTS", + "type": "string", + "tags": [], + "label": "INDEX_EVENTS", + "description": [], + "signature": [ + "\"profiling-events-all\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.INDEX_EXECUTABLES", + "type": "string", + "tags": [], + "label": "INDEX_EXECUTABLES", + "description": [], + "signature": [ + "\"profiling-executables\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.INDEX_FRAMES", + "type": "string", + "tags": [], + "label": "INDEX_FRAMES", + "description": [], + "signature": [ + "\"profiling-stackframes\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.INDEX_TRACES", + "type": "string", + "tags": [], + "label": "INDEX_TRACES", + "description": [], + "signature": [ + "\"profiling-stacktraces\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.NOT_AVAILABLE_LABEL", + "type": "string", + "tags": [], + "label": "NOT_AVAILABLE_LABEL", + "description": [], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"profiling\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "profiling", + "id": "def-common.PLUGIN_NAME", + "type": "string", + "tags": [], + "label": "PLUGIN_NAME", + "description": [], + "signature": [ + "\"profiling\"" + ], + "path": "x-pack/plugins/profiling/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx new file mode 100644 index 0000000000000..dae070e7441df --- /dev/null +++ b/api_docs/profiling.mdx @@ -0,0 +1,41 @@ +--- +#### +#### 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: kibProfilingPluginApi +slug: /kibana-dev-docs/api/profiling +title: "profiling" +image: https://source.unsplash.com/400x175/?github +description: API docs for the profiling plugin +date: 2022-09-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] +--- +import profilingObj from './profiling.devdocs.json'; + + + +Contact [profiling](https://github.com/orgs/elastic/teams/profiling-ui) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 14 | 1 | 14 | 0 | + +## Server + +### Setup + + +### Start + + +## Common + +### Functions + + +### Consts, variables and types + + diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 5727eee5149c2..e51170f1ab197 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-09-15 +date: 2022-09-16 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 bfb754f7261fb..c4d4a2ffb81a2 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-09-15 +date: 2022-09-16 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 59c395024b234..5e73ff580bd5a 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.devdocs.json b/api_docs/rule_registry.devdocs.json index 63cb7763de4a9..8984e36894ca5 100644 --- a/api_docs/rule_registry.devdocs.json +++ b/api_docs/rule_registry.devdocs.json @@ -1650,9 +1650,9 @@ "section": "def-common.WithoutReservedActionGroups", "text": "WithoutReservedActionGroups" }, - ">) => Promise; validate?: { params?: ", + ">) => Promise; name: string; validate?: { params?: ", "RuleTypeParamsValidator", - " | undefined; } | undefined; id: string; name: string; cancelAlertsOnRuleTimeout?: boolean | undefined; actionGroups: ", + " | undefined; } | undefined; id: string; cancelAlertsOnRuleTimeout?: boolean | undefined; actionGroups: ", { "pluginId": "alerting", "scope": "common", @@ -1911,7 +1911,7 @@ "\nID of the Kibana feature associated with the index.\nUsed by alerts-as-data RBAC.\n\nNote from @dhurley14\nThe purpose of the `feature` param is to force the user to update\nthe data structure which contains the mapping of consumers to alerts\nas data indices. The idea is it is typed such that it forces the\nuser to go to the code and modify it. At least until a better system\nis put in place or we move the alerts as data client out of rule registry.\n" ], "signature": [ - "\"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\" | \"observability\"" + "\"observability\" | \"logs\" | \"apm\" | \"uptime\" | \"siem\" | \"infrastructure\"" ], "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts", "deprecated": false, diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index a3a5dede156c4..934bed7630e2d 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-09-15 +date: 2022-09-16 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 5ec876764901b..745a480c42385 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-09-15 +date: 2022-09-16 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 f8113f2246abe..67cb74f601542 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 66bd77d205270..e1fda967a5c19 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2022-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.devdocs.json b/api_docs/saved_objects_management.devdocs.json index 2cd75f6e2bb2f..3c4ff5fc143a3 100644 --- a/api_docs/saved_objects_management.devdocs.json +++ b/api_docs/saved_objects_management.devdocs.json @@ -294,7 +294,7 @@ "label": "euiColumn", "description": [], "signature": [ - "{ children?: React.ReactNode; onError?: React.ReactEventHandler | undefined; render?: ((value: any, record: ", + "{ children?: React.ReactNode; name: React.ReactNode; description?: string | undefined; onError?: React.ReactEventHandler | undefined; render?: ((value: any, record: ", { "pluginId": "savedObjectsManagement", "scope": "public", @@ -302,7 +302,7 @@ "section": "def-public.SavedObjectsManagementRecord", "text": "SavedObjectsManagementRecord" }, - ") => React.ReactNode) | undefined; hidden?: boolean | undefined; color?: string | undefined; id?: string | undefined; className?: string | undefined; title?: string | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; description?: string | undefined; security?: string | undefined; name: React.ReactNode; field: (string & {}) | keyof ", + ") => React.ReactNode) | undefined; hidden?: boolean | undefined; color?: string | undefined; id?: string | undefined; className?: string | undefined; title?: string | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; security?: string | undefined; field: (string & {}) | keyof ", { "pluginId": "savedObjectsManagement", "scope": "public", diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 57ca08be0a5d3..25132a284524f 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.devdocs.json b/api_docs/saved_objects_tagging.devdocs.json index 7b3c3512e7e03..c2f9424248bc6 100644 --- a/api_docs/saved_objects_tagging.devdocs.json +++ b/api_docs/saved_objects_tagging.devdocs.json @@ -1242,7 +1242,7 @@ "label": "errors", "description": [], "signature": [ - "{ color?: string | undefined; id?: string | undefined; description?: string | undefined; name?: string | undefined; }" + "{ name?: string | undefined; description?: string | undefined; color?: string | undefined; id?: string | undefined; }" ], "path": "x-pack/plugins/saved_objects_tagging/common/validation.ts", "deprecated": false, diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index d55c46efc1e8d..fa3107a2ba758 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-09-15 +date: 2022-09-16 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 5f906930e81d8..fbb284821351f 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-09-15 +date: 2022-09-16 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 ba458bf7c8371..4e018e282a417 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-09-15 +date: 2022-09-16 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 a55c66d6c52c7..e436d4732f767 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-09-15 +date: 2022-09-16 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 2adfa62df7cd2..6afd85ddbe59b 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-09-15 +date: 2022-09-16 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 4dc4b7e085144..d400f91576d7d 100644 --- a/api_docs/security.devdocs.json +++ b/api_docs/security.devdocs.json @@ -522,6 +522,19 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "security", + "id": "def-public.SecurityLicenseFeatures.allowUserProfileCollaboration", + "type": "boolean", + "tags": [], + "label": "allowUserProfileCollaboration", + "description": [ + "\nIndicates whether we allow user profile collaboration features (suggest and privileges checks APIs)." + ], + "path": "x-pack/plugins/security/common/licensing/license_features.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "security", "id": "def-public.SecurityLicenseFeatures.layout", @@ -3966,6 +3979,19 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "security", + "id": "def-common.SecurityLicenseFeatures.allowUserProfileCollaboration", + "type": "boolean", + "tags": [], + "label": "allowUserProfileCollaboration", + "description": [ + "\nIndicates whether we allow user profile collaboration features (suggest and privileges checks APIs)." + ], + "path": "x-pack/plugins/security/common/licensing/license_features.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "security", "id": "def-common.SecurityLicenseFeatures.layout", diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 057465fcdb47c..ccfbdf0a21e6f 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-securit | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 245 | 0 | 90 | 0 | +| 247 | 0 | 90 | 0 | ## Client diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index de0462d8c99de..5827c20db016b 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -1141,4 +1141,4 @@ "misc": [], "objects": [] } -} +} \ No newline at end of file diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e9529b9419ba3..3ebfe809f25a9 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-09-15 +date: 2022-09-16 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 c51dfb81f2beb..547bc46121bab 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-09-15 +date: 2022-09-16 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 6b02a6aee7909..45b0f5b0579f4 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-09-15 +date: 2022-09-16 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 768b98bcf1466..0593e0859ffef 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-09-15 +date: 2022-09-16 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 d0f9561baa6a3..221a75452b69a 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-09-15 +date: 2022-09-16 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 07ea237b98f6d..aef94c8b01b67 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.devdocs.json b/api_docs/stack_connectors.devdocs.json new file mode 100644 index 0000000000000..51e0fbc4412e4 --- /dev/null +++ b/api_docs/stack_connectors.devdocs.json @@ -0,0 +1,56 @@ +{ + "id": "stackConnectors", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [ + { + "parentPluginId": "stackConnectors", + "id": "def-common.AdditionalEmailServices", + "type": "Enum", + "tags": [], + "label": "AdditionalEmailServices", + "description": [], + "path": "x-pack/plugins/stack_connectors/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "stackConnectors", + "id": "def-common.INTERNAL_BASE_STACK_CONNECTORS_API_PATH", + "type": "string", + "tags": [], + "label": "INTERNAL_BASE_STACK_CONNECTORS_API_PATH", + "description": [], + "signature": [ + "\"/internal/stack_connectors\"" + ], + "path": "x-pack/plugins/stack_connectors/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx new file mode 100644 index 0000000000000..12cae65d716b8 --- /dev/null +++ b/api_docs/stack_connectors.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: kibStackConnectorsPluginApi +slug: /kibana-dev-docs/api/stackConnectors +title: "stackConnectors" +image: https://source.unsplash.com/400x175/?github +description: API docs for the stackConnectors plugin +date: 2022-09-16 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] +--- +import stackConnectorsObj from './stack_connectors.devdocs.json'; + + + +Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Common + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index c3266964d5850..e9f4ac32b7639 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-09-15 +date: 2022-09-16 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 19ac8779c574e..5588cb19a211d 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.devdocs.json b/api_docs/telemetry_collection_manager.devdocs.json index 46639d54fba68..f5e1d86713cd2 100644 --- a/api_docs/telemetry_collection_manager.devdocs.json +++ b/api_docs/telemetry_collection_manager.devdocs.json @@ -76,7 +76,7 @@ "label": "esClient", "description": [], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -194,7 +194,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 525c730b4b2f5..781c96f70bf98 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-09-15 +date: 2022-09-16 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 8236d204b52ee..01f55ab9b62ca 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-09-15 +date: 2022-09-16 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 3898a9d769230..d04ab81ff27bb 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-09-15 +date: 2022-09-16 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 0dc87e4b317d9..eb65dfd9b33c3 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-09-15 +date: 2022-09-16 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 49bd26f376c08..c5c0d5324560b 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -822,7 +822,7 @@ "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -856,7 +856,7 @@ "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -2559,7 +2559,7 @@ "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -3145,7 +3145,7 @@ "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -3173,7 +3173,7 @@ "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -4347,7 +4347,7 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -7075,7 +7075,7 @@ "signature": [ "Pick<", "EuiDataGridColumn", - ", \"id\" | \"schema\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", + ", \"schema\" | \"id\" | \"actions\" | \"display\" | \"defaultSortDirection\" | \"displayAsText\" | \"initialWidth\" | \"isSortable\"> & { aggregatable?: boolean | undefined; tGridCellActions?: ", "TGridCellAction", "[] | undefined; category?: string | undefined; columnHeaderType: ", { @@ -7151,7 +7151,7 @@ "label": "DataProvidersAnd", "description": [], "signature": [ - "{ type?: ", + "{ name: string; type?: ", { "pluginId": "timelines", "scope": "common", @@ -7159,7 +7159,7 @@ "section": "def-common.DataProviderType", "text": "DataProviderType" }, - " | undefined; id: string; name: string; enabled: boolean; excluded: boolean; kqlQuery: string; queryMatch: ", + " | undefined; id: string; enabled: boolean; excluded: boolean; kqlQuery: string; queryMatch: ", { "pluginId": "timelines", "scope": "common", diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 367904d3c3073..d638c6235b4ef 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-09-15 +date: 2022-09-16 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 573d6175a741d..7ebbc1c2b0a1e 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index cdea7649565a3..77ded4f84172b 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -3466,7 +3466,7 @@ "section": "def-common.RuleType", "text": "RuleType" }, - ", \"id\" | \"name\" | \"actionGroups\" | \"defaultActionGroupId\" | \"recoveryActionGroup\" | \"producer\" | \"minimumLicenseRequired\" | \"defaultScheduleInterval\" | \"ruleTaskTimeout\" | \"doesSetRecoveryContext\">" + ", \"name\" | \"id\" | \"actionGroups\" | \"defaultActionGroupId\" | \"recoveryActionGroup\" | \"producer\" | \"minimumLicenseRequired\" | \"defaultScheduleInterval\" | \"ruleTaskTimeout\" | \"doesSetRecoveryContext\">" ], "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", "deprecated": false, @@ -3830,7 +3830,7 @@ "label": "setRuleProperty", "description": [], "signature": [ - "(key: Prop, value: ", + "(key: Prop, value: ", "SanitizedRule", "[Prop] | null) => void" ], diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 8dcad8be104e9..1fa9e73e95bd0 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-09-15 +date: 2022-09-16 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 8f440da5d567d..117c56ce2e4d4 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-09-15 +date: 2022-09-16 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 bc0c192cc84e0..0645f4175f561 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.devdocs.json b/api_docs/unified_field_list.devdocs.json index e7555c2ac5a6c..9ade69bc0eab0 100644 --- a/api_docs/unified_field_list.devdocs.json +++ b/api_docs/unified_field_list.devdocs.json @@ -284,6 +284,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.FieldStatsProps.color", + "type": "string", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/unified_field_list/public/components/field_stats/field_stats.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "unifiedFieldList", "id": "def-public.FieldStatsProps.datatestsubj", @@ -306,7 +320,7 @@ "label": "overrideMissingContent", "description": [], "signature": [ - "((params?: { noDataFound?: boolean | undefined; } | undefined) => JSX.Element | null) | undefined" + "((params: { element: JSX.Element; noDataFound?: boolean | undefined; }) => JSX.Element | null) | undefined" ], "path": "src/plugins/unified_field_list/public/components/field_stats/field_stats.tsx", "deprecated": false, @@ -323,6 +337,20 @@ "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.FieldStatsProps.overrideMissingContent.$1.element", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "JSX.Element" + ], + "path": "src/plugins/unified_field_list/public/components/field_stats/field_stats.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "unifiedFieldList", "id": "def-public.FieldStatsProps.overrideMissingContent.$1.noDataFound", @@ -413,6 +441,27 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.FieldStatsProps.onAddFilter", + "type": "Function", + "tags": [], + "label": "onAddFilter", + "description": [], + "signature": [ + { + "pluginId": "unifiedFieldList", + "scope": "public", + "docId": "kibUnifiedFieldListPluginApi", + "section": "def-public.AddFieldFilterHandler", + "text": "AddFieldFilterHandler" + }, + " | undefined" + ], + "path": "src/plugins/unified_field_list/public/components/field_stats/field_stats.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -722,7 +771,82 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.AddFieldFilterHandler", + "type": "Type", + "tags": [], + "label": "AddFieldFilterHandler", + "description": [], + "signature": [ + "(field: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + ", value: unknown, type: \"+\" | \"-\") => void" + ], + "path": "src/plugins/unified_field_list/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.AddFieldFilterHandler.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + } + ], + "path": "src/plugins/unified_field_list/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.AddFieldFilterHandler.$2", + "type": "Unknown", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/plugins/unified_field_list/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "unifiedFieldList", + "id": "def-public.AddFieldFilterHandler.$3", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"+\" | \"-\"" + ], + "path": "src/plugins/unified_field_list/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], "objects": [], "setup": { "parentPluginId": "unifiedFieldList", diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 7b8485881de26..614f41e97969b 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-disco | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 54 | 0 | 52 | 2 | +| 61 | 0 | 59 | 2 | ## Client @@ -37,6 +37,9 @@ Contact [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-disco ### Interfaces +### Consts, variables and types + + ## Server ### Setup diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 48b056de3c9a8..36f6fbca5534a 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-09-15 +date: 2022-09-16 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 7b806c7403134..5ea17435303e8 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-09-15 +date: 2022-09-16 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 0f286636bf558..418745559941b 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.devdocs.json b/api_docs/usage_collection.devdocs.json index 7d580cf4289f8..c90dbcddab203 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -345,7 +345,7 @@ "\nRequest-scoped Elasticsearch client" ], "signature": [ - "{ get: { (this: That, params: ", + "{ name: string | symbol; get: { (this: That, params: ", "GetRequest", " | ", "GetRequest", @@ -463,7 +463,7 @@ "default", "; security: ", "default", - "; name: string | symbol; index: { (this: That, params: ", + "; index: { (this: That, params: ", "IndexRequest", " | ", "IndexRequest", diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 64a08ca43b97a..256148aed11ec 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-09-15 +date: 2022-09-16 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 52f1bc99e8120..9bf17796bccbf 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-09-15 +date: 2022-09-16 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 3a0089cbce613..35b2c8731277e 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-09-15 +date: 2022-09-16 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 d663081d2bfca..1ec278381bcce 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-09-15 +date: 2022-09-16 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 6a93f9f2cdca6..72aa00f2b862b 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-09-15 +date: 2022-09-16 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 394a056bbf185..9562cf9e49226 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-09-15 +date: 2022-09-16 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 ed2aea50a0cb5..457d1fbb4325e 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-09-15 +date: 2022-09-16 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 d8ea231869dc7..2edff681b4c52 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-09-15 +date: 2022-09-16 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 d03dda67b8499..00ee3e122300e 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-09-15 +date: 2022-09-16 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 5829a0b885f35..396cb6eea16c3 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.devdocs.json b/api_docs/vis_type_vislib.devdocs.json index 22b92af62d579..2ba5f096eecd3 100644 --- a/api_docs/vis_type_vislib.devdocs.json +++ b/api_docs/vis_type_vislib.devdocs.json @@ -40,7 +40,7 @@ "label": "type", "description": [], "signature": [ - "\"goal\" | \"metric\" | \"gauge\" | \"heatmap\" | \"pie\"" + "\"metric\" | \"goal\" | \"gauge\" | \"heatmap\" | \"pie\"" ], "path": "src/plugins/vis_types/vislib/public/types.ts", "deprecated": false, @@ -359,7 +359,7 @@ "label": "VislibChartType", "description": [], "signature": [ - "\"goal\" | \"metric\" | \"gauge\" | \"heatmap\" | \"pie\"" + "\"metric\" | \"goal\" | \"gauge\" | \"heatmap\" | \"pie\"" ], "path": "src/plugins/vis_types/vislib/public/types.ts", "deprecated": false, diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 55dd3c6370f54..04e89e5dae11d 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.devdocs.json b/api_docs/vis_type_xy.devdocs.json index 854b8f143a301..5468fa97bdb7a 100644 --- a/api_docs/vis_type_xy.devdocs.json +++ b/api_docs/vis_type_xy.devdocs.json @@ -831,7 +831,13 @@ "text": "SchemaConfig" }, ", \"params\"> & { params: {} | ", - "DateHistogramParams", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.DateHistogramParams", + "text": "DateHistogramParams" + }, " | ", "HistogramParams", " | ", diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 91a7729b5fb46..a073edea817a1 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 352226b8a79ff..33b99385c989a 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -116,12 +116,20 @@ " | undefined) => Promise<", { "pluginId": "visualizations", - "scope": "public", + "scope": "common", "docId": "kibVisualizationsPluginApi", - "section": "def-public.NavigateToLensContext", + "section": "def-common.NavigateToLensContext", "text": "NavigateToLensContext" }, - " | null> | undefined) | undefined" + "<", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYConfiguration", + "text": "XYConfiguration" + }, + "> | null> | undefined) | undefined" ], "path": "src/plugins/visualizations/public/vis_types/base_vis_type.ts", "deprecated": false, @@ -3006,67 +3014,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "visualizations", - "id": "def-public.NavigateToLensContext", - "type": "Interface", - "tags": [], - "label": "NavigateToLensContext", - "description": [], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "visualizations", - "id": "def-public.NavigateToLensContext.layers", - "type": "Object", - "tags": [], - "label": "layers", - "description": [], - "signature": [ - "{ [key: string]: ", - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeEditorLayersContext", - "text": "VisualizeEditorLayersContext" - }, - "; }" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.NavigateToLensContext.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.NavigateToLensContext.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "signature": [ - "{ fill: string | number; legend: { isVisible: boolean; position: string; shouldTruncate: boolean; maxLines: number; showSingleSeries: boolean; }; gridLinesVisibility: { x: boolean; yLeft: boolean; yRight: boolean; }; tickLabelsVisibility?: { x: boolean; yLeft: boolean; yRight: boolean; } | undefined; axisTitlesVisibility?: { x: boolean; yLeft: boolean; yRight: boolean; } | undefined; valueLabels?: boolean | undefined; extents?: { yLeftExtent: AxisExtents; yRightExtent: AxisExtents; } | undefined; }" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "visualizations", "id": "def-public.Schema", @@ -4596,12 +4543,20 @@ " | undefined) => Promise<", { "pluginId": "visualizations", - "scope": "public", + "scope": "common", "docId": "kibVisualizationsPluginApi", - "section": "def-public.NavigateToLensContext", + "section": "def-common.NavigateToLensContext", "text": "NavigateToLensContext" }, - " | null> | undefined) | undefined" + "<", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYConfiguration", + "text": "XYConfiguration" + }, + "> | null> | undefined) | undefined" ], "path": "src/plugins/visualizations/public/vis_types/types.ts", "deprecated": false, @@ -5474,430 +5429,166 @@ }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext", + "id": "def-public.VisualizeInput", "type": "Interface", "tags": [], - "label": "VisualizeEditorLayersContext", + "label": "VisualizeInput", "description": [], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.indexPatternId", - "type": "string", - "tags": [], - "label": "indexPatternId", - "description": [], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.splitWithDateHistogram", - "type": "CompoundType", - "tags": [], - "label": "splitWithDateHistogram", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.xFieldName", - "type": "string", - "tags": [], - "label": "xFieldName", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.xMode", - "type": "string", - "tags": [], - "label": "xMode", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, + "signature": [ { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.chartType", - "type": "string", - "tags": [], - "label": "chartType", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false + "pluginId": "visualizations", + "scope": "public", + "docId": "kibVisualizationsPluginApi", + "section": "def-public.VisualizeInput", + "text": "VisualizeInput" }, + " extends ", { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.axisPosition", - "type": "string", - "tags": [], - "label": "axisPosition", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.EmbeddableInput", + "text": "EmbeddableInput" + } + ], + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.termsParams", + "id": "def-public.VisualizeInput.vis", "type": "Object", "tags": [], - "label": "termsParams", - "description": [], - "signature": [ - "Record | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.splitFields", - "type": "Array", - "tags": [], - "label": "splitFields", + "label": "vis", "description": [], "signature": [ - "string[] | undefined" + "{ colors?: { [key: string]: string; } | undefined; } | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.splitMode", - "type": "string", + "id": "def-public.VisualizeInput.savedVis", + "type": "Object", "tags": [], - "label": "splitMode", + "label": "savedVis", "description": [], "signature": [ - "string | undefined" + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.SerializedVis", + "text": "SerializedVis" + }, + "<", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.VisParams", + "text": "VisParams" + }, + "> | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.collapseFn", - "type": "string", + "id": "def-public.VisualizeInput.renderMode", + "type": "CompoundType", "tags": [], - "label": "collapseFn", + "label": "renderMode", "description": [], "signature": [ - "string | undefined" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.RenderMode", + "text": "RenderMode" + }, + " | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.splitFilters", - "type": "Array", + "id": "def-public.VisualizeInput.table", + "type": "Unknown", "tags": [], - "label": "splitFilters", + "label": "table", "description": [], "signature": [ - "SplitByFilters[] | undefined" + "unknown" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.palette", + "id": "def-public.VisualizeInput.query", "type": "Object", "tags": [], - "label": "palette", + "label": "query", "description": [], "signature": [ - "PaletteOutput", - "<{ [key: string]: unknown; }> | undefined" + "Query", + " | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.metrics", + "id": "def-public.VisualizeInput.filters", "type": "Array", "tags": [], - "label": "metrics", + "label": "filters", "description": [], "signature": [ - "VisualizeEditorMetricContext[]" + "Filter", + "[] | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.timeInterval", - "type": "string", + "id": "def-public.VisualizeInput.timeRange", + "type": "Object", "tags": [], - "label": "timeInterval", + "label": "timeRange", "description": [], "signature": [ - "string | undefined" + "TimeRange", + " | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.format", - "type": "string", + "id": "def-public.VisualizeInput.timeslice", + "type": "Object", "tags": [], - "label": "format", + "label": "timeslice", "description": [], "signature": [ - "string | undefined" + "[number, number] | undefined" ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.label", - "type": "string", - "tags": [], - "label": "label", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.layerId", - "type": "string", - "tags": [], - "label": "layerId", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEditorLayersContext.dropPartialBuckets", - "type": "CompoundType", - "tags": [], - "label": "dropPartialBuckets", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/visualizations/public/vis_types/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput", - "type": "Interface", - "tags": [], - "label": "VisualizeInput", - "description": [], - "signature": [ - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeInput", - "text": "VisualizeInput" - }, - " extends ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - } - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.vis", - "type": "Object", - "tags": [], - "label": "vis", - "description": [], - "signature": [ - "{ colors?: { [key: string]: string; } | undefined; } | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.savedVis", - "type": "Object", - "tags": [], - "label": "savedVis", - "description": [], - "signature": [ - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.SerializedVis", - "text": "SerializedVis" - }, - "<", - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.VisParams", - "text": "VisParams" - }, - "> | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.renderMode", - "type": "CompoundType", - "tags": [], - "label": "renderMode", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.RenderMode", - "text": "RenderMode" - }, - " | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.table", - "type": "Unknown", - "tags": [], - "label": "table", - "description": [], - "signature": [ - "unknown" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.query", - "type": "Object", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "Query", - " | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.filters", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.timeRange", - "type": "Object", - "tags": [], - "label": "timeRange", - "description": [], - "signature": [ - "TimeRange", - " | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeInput.timeslice", - "type": "Object", - "tags": [], - "label": "timeslice", - "description": [], - "signature": [ - "[number, number] | undefined" - ], - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx", "deprecated": false, "trackAdoption": false } @@ -6016,7 +5707,13 @@ "description": [], "signature": [ "{ type: \"xy_dimension\"; } & { label: string; aggType: string; params: {} | ", - "DateHistogramParams", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.DateHistogramParams", + "text": "DateHistogramParams" + }, " | ", "HistogramParams", " | ", @@ -7805,120 +7502,115 @@ }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis", + "id": "def-common.AxesSettingsConfig", "type": "Interface", "tags": [], - "label": "SerializedVis", + "label": "AxesSettingsConfig", "description": [], - "signature": [ - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.SerializedVis", - "text": "SerializedVis" - }, - "" - ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.title", - "type": "string", + "id": "def-common.AxesSettingsConfig.x", + "type": "boolean", "tags": [], - "label": "title", + "label": "x", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.description", - "type": "string", + "id": "def-common.AxesSettingsConfig.yRight", + "type": "boolean", "tags": [], - "label": "description", + "label": "yRight", "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.type", - "type": "string", + "id": "def-common.AxesSettingsConfig.yLeft", + "type": "boolean", "tags": [], - "label": "type", + "label": "yLeft", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.AxisExtentConfig", + "type": "Interface", + "tags": [], + "label": "AxisExtentConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.AxisExtentConfig.mode", + "type": "CompoundType", + "tags": [], + "label": "mode", + "description": [], + "signature": [ + "\"custom\" | \"full\" | \"dataBounds\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.params", - "type": "Uncategorized", + "id": "def-common.AxisExtentConfig.lowerBound", + "type": "number", "tags": [], - "label": "params", + "label": "lowerBound", "description": [], "signature": [ - "T" + "number | undefined" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.uiState", - "type": "Any", + "id": "def-common.AxisExtentConfig.upperBound", + "type": "number", "tags": [], - "label": "uiState", + "label": "upperBound", "description": [], "signature": [ - "any" + "number | undefined" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVis.data", - "type": "Object", + "id": "def-common.AxisExtentConfig.enforce", + "type": "CompoundType", "tags": [], - "label": "data", + "label": "enforce", "description": [], "signature": [ - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.SerializedVisData", - "text": "SerializedVisData" - } + "boolean | undefined" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false } @@ -7927,347 +7619,4168 @@ }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVisData", + "id": "def-common.BaseColumn", "type": "Interface", "tags": [], - "label": "SerializedVisData", + "label": "BaseColumn", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.BaseColumn", + "text": "BaseColumn" + }, + "" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "visualizations", - "id": "def-common.SerializedVisData.expression", + "id": "def-common.BaseColumn.columnId", "type": "string", "tags": [], - "label": "expression", + "label": "columnId", "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVisData.aggs", - "type": "Array", + "id": "def-common.BaseColumn.operationType", + "type": "Uncategorized", "tags": [], - "label": "aggs", + "label": "operationType", "description": [], "signature": [ - "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "SerializableRecord", - " | undefined; schema?: string | undefined; }[]" + "OperationType" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVisData.searchSource", - "type": "Object", + "id": "def-common.BaseColumn.label", + "type": "string", "tags": [], - "label": "searchSource", + "label": "label", "description": [], "signature": [ - "{ type?: string | undefined; query?: ", - "Query", - " | ", - "AggregateQuery", - " | undefined; filter?: ", - "Filter", - "[] | undefined; sort?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.EsQuerySortValue", - "text": "EsQuerySortValue" - }, - "[] | undefined; highlight?: ", - "SerializableRecord", - " | undefined; highlightAll?: boolean | undefined; trackTotalHits?: number | boolean | undefined; aggs?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "SerializableRecord", - " | undefined; schema?: string | undefined; }[] | undefined; from?: number | undefined; size?: number | undefined; source?: boolean | ", - "Fields", - " | undefined; version?: boolean | undefined; fields?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchFieldValue", - "text": "SearchFieldValue" - }, - "[] | undefined; fieldsFromSource?: ", - "Fields", - " | undefined; index?: string | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - " | undefined; searchAfter?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.EsQuerySearchAfter", - "text": "EsQuerySearchAfter" - }, - " | undefined; timeout?: string | undefined; terminate_after?: number | undefined; parent?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SerializedSearchSourceFields", - "text": "SerializedSearchSourceFields" - }, - " | undefined; }" + "string | undefined" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.SerializedVisData.savedSearchId", - "type": "string", + "id": "def-common.BaseColumn.isBucketed", + "type": "boolean", "tags": [], - "label": "savedSearchId", + "label": "isBucketed", "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "visualizations", - "id": "def-common.VisParams", - "type": "Interface", - "tags": [], - "label": "VisParams", - "description": [], - "path": "src/plugins/visualizations/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "visualizations", - "id": "def-common.VisParams.Unnamed", - "type": "IndexSignature", + "id": "def-common.BaseColumn.isSplit", + "type": "boolean", "tags": [], - "label": "[key: string]: any", + "label": "isSplit", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.BaseColumn.dataType", + "type": "CompoundType", + "tags": [], + "label": "dataType", "description": [], "signature": [ - "[key: string]: any" + "\"string\" | \"number\" | \"boolean\" | \"date\" | \"document\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"histogram\"" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes", - "type": "Interface", - "tags": [], - "label": "VisualizationSavedObjectAttributes", - "description": [], - "signature": [ - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.VisualizationSavedObjectAttributes", - "text": "VisualizationSavedObjectAttributes" }, - " extends ", - "SavedObjectAttributes" - ], - "path": "src/plugins/visualizations/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.description", - "type": "string", + "id": "def-common.BaseColumn.timeScale", + "type": "CompoundType", "tags": [], - "label": "description", + "label": "timeScale", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.TimeScaleUnit", + "text": "TimeScaleUnit" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.kibanaSavedObjectMeta", - "type": "Object", + "id": "def-common.BaseColumn.timeShift", + "type": "string", "tags": [], - "label": "kibanaSavedObjectMeta", + "label": "timeShift", "description": [], "signature": [ - "{ searchSourceJSON: string; }" + "string | undefined" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.title", + "id": "def-common.BaseColumn.reducedTimeRange", "type": "string", "tags": [], - "label": "title", + "label": "reducedTimeRange", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.version", - "type": "number", + "id": "def-common.BaseColumn.isStaticValue", + "type": "CompoundType", "tags": [], - "label": "version", + "label": "isStaticValue", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.visState", - "type": "string", + "id": "def-common.BaseColumn.filter", + "type": "Object", "tags": [], - "label": "visState", + "label": "filter", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FilterQuery", + "text": "FilterQuery" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "visualizations", - "id": "def-common.VisualizationSavedObjectAttributes.uiStateJSON", - "type": "string", + "id": "def-common.BaseColumn.params", + "type": "Uncategorized", "tags": [], - "label": "uiStateJSON", + "label": "params", "description": [], - "path": "src/plugins/visualizations/common/types.ts", + "signature": [ + "Params" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false } ], "initialIsOpen": false - } - ], - "enums": [ + }, { "parentPluginId": "visualizations", - "id": "def-common.LegendSize", + "id": "def-common.ColumnWithReferences", + "type": "Interface", + "tags": [], + "label": "ColumnWithReferences", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.BaseColumn", + "text": "BaseColumn" + }, + "" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.ColumnWithReferences.references", + "type": "Array", + "tags": [], + "label": "references", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.ColumnWithSourceField", + "type": "Interface", + "tags": [], + "label": "ColumnWithSourceField", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.BaseColumn", + "text": "BaseColumn" + }, + "" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.ColumnWithSourceField.sourceField", + "type": "string", + "tags": [], + "label": "sourceField", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramParams", + "type": "Interface", + "tags": [], + "label": "DateHistogramParams", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramParams.interval", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramParams.ignoreTimeRange", + "type": "CompoundType", + "tags": [], + "label": "ignoreTimeRange", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramParams.includeEmptyRows", + "type": "CompoundType", + "tags": [], + "label": "includeEmptyRows", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramParams.dropPartials", + "type": "CompoundType", + "tags": [], + "label": "dropPartials", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Filter", + "type": "Interface", + "tags": [], + "label": "Filter", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.Filter.input", + "type": "Object", + "tags": [], + "label": "input", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FilterQuery", + "text": "FilterQuery" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Filter.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FilterQuery", + "type": "Interface", + "tags": [], + "label": "FilterQuery", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.FilterQuery.query", + "type": "CompoundType", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "string | { [key: string]: any; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FilterQuery.language", + "type": "string", + "tags": [], + "label": "language", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FiltersParams", + "type": "Interface", + "tags": [], + "label": "FiltersParams", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.FiltersParams.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FormatParams", + "type": "Interface", + "tags": [], + "label": "FormatParams", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.FormatParams.format", + "type": "Object", + "tags": [], + "label": "format", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.NumberValueFormat", + "text": "NumberValueFormat" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FormulaParams", + "type": "Interface", + "tags": [], + "label": "FormulaParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormulaParams", + "text": "FormulaParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.FormulaParams.formula", + "type": "string", + "tags": [], + "label": "formula", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FormulaParams.isFormulaBroken", + "type": "CompoundType", + "tags": [], + "label": "isFormulaBroken", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LabelsOrientationConfig", + "type": "Interface", + "tags": [], + "label": "LabelsOrientationConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.LabelsOrientationConfig.x", + "type": "number", + "tags": [], + "label": "x", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LabelsOrientationConfig.yLeft", + "type": "number", + "tags": [], + "label": "yLeft", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LabelsOrientationConfig.yRight", + "type": "number", + "tags": [], + "label": "yRight", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LastValueParams", + "type": "Interface", + "tags": [], + "label": "LastValueParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LastValueParams", + "text": "LastValueParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.LastValueParams.sortField", + "type": "string", + "tags": [], + "label": "sortField", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LastValueParams.showArrayValues", + "type": "boolean", + "tags": [], + "label": "showArrayValues", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Layer", + "type": "Interface", + "tags": [], + "label": "Layer", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.Layer.indexPatternId", + "type": "string", + "tags": [], + "label": "indexPatternId", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Layer.layerId", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Layer.columns", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Column", + "text": "Column" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Layer.columnOrder", + "type": "Array", + "tags": [], + "label": "columnOrder", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig", + "type": "Interface", + "tags": [], + "label": "LegendConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.isVisible", + "type": "boolean", + "tags": [], + "label": "isVisible", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.position", + "type": "CompoundType", + "tags": [], + "label": "position", + "description": [], + "signature": [ + "\"top\" | \"bottom\" | \"left\" | \"right\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.showSingleSeries", + "type": "CompoundType", + "tags": [], + "label": "showSingleSeries", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.isInside", + "type": "CompoundType", + "tags": [], + "label": "isInside", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.horizontalAlignment", + "type": "CompoundType", + "tags": [], + "label": "horizontalAlignment", + "description": [], + "signature": [ + "\"left\" | \"right\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.verticalAlignment", + "type": "CompoundType", + "tags": [], + "label": "verticalAlignment", + "description": [], + "signature": [ + "\"top\" | \"bottom\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.floatingColumns", + "type": "number", + "tags": [], + "label": "floatingColumns", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.maxLines", + "type": "number", + "tags": [], + "label": "maxLines", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.shouldTruncate", + "type": "CompoundType", + "tags": [], + "label": "shouldTruncate", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LegendConfig.legendSize", + "type": "CompoundType", + "tags": [], + "label": "legendSize", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LegendSize", + "text": "LegendSize" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MovingAverageParams", + "type": "Interface", + "tags": [], + "label": "MovingAverageParams", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.MovingAverageParams.window", + "type": "number", + "tags": [], + "label": "window", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.NavigateToLensContext", + "type": "Interface", + "tags": [], + "label": "NavigateToLensContext", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.NavigateToLensContext", + "text": "NavigateToLensContext" + }, + "" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.NavigateToLensContext.layers", + "type": "Array", + "tags": [], + "label": "layers", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Layer", + "text": "Layer" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.NavigateToLensContext.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.NavigateToLensContext.configuration", + "type": "Uncategorized", + "tags": [], + "label": "configuration", + "description": [], + "signature": [ + "T" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/context.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.NumberValueFormat", + "type": "Interface", + "tags": [], + "label": "NumberValueFormat", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.NumberValueFormat.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.NumberValueFormat.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ decimals: number; suffix?: string | undefined; } | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileParams", + "type": "Interface", + "tags": [], + "label": "PercentileParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileParams", + "text": "PercentileParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileParams.percentile", + "type": "number", + "tags": [], + "label": "percentile", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileRanksParams", + "type": "Interface", + "tags": [], + "label": "PercentileRanksParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileRanksParams", + "text": "PercentileRanksParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileRanksParams.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Range", + "type": "Interface", + "tags": [], + "label": "Range", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.Range.from", + "type": "CompoundType", + "tags": [], + "label": "from", + "description": [], + "signature": [ + "number | null" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Range.to", + "type": "CompoundType", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "number | null" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Range.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams", + "type": "Interface", + "tags": [], + "label": "RangeParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.RangeParams", + "text": "RangeParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"range\" | \"histogram\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams.maxBars", + "type": "CompoundType", + "tags": [], + "label": "maxBars", + "description": [], + "signature": [ + "number | \"auto\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams.ranges", + "type": "Array", + "tags": [], + "label": "ranges", + "description": [], + "signature": [ + "Range[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams.includeEmptyRows", + "type": "CompoundType", + "tags": [], + "label": "includeEmptyRows", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeParams.parentFormat", + "type": "Object", + "tags": [], + "label": "parentFormat", + "description": [], + "signature": [ + "{ id: string; params?: { id?: string | undefined; template?: string | undefined; replaceInfinity?: boolean | undefined; } | undefined; } | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis", + "type": "Interface", + "tags": [], + "label": "SerializedVis", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.SerializedVis", + "text": "SerializedVis" + }, + "" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.params", + "type": "Uncategorized", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "T" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.uiState", + "type": "Any", + "tags": [], + "label": "uiState", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVis.data", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.SerializedVisData", + "text": "SerializedVisData" + } + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVisData", + "type": "Interface", + "tags": [], + "label": "SerializedVisData", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVisData.expression", + "type": "string", + "tags": [], + "label": "expression", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVisData.aggs", + "type": "Array", + "tags": [], + "label": "aggs", + "description": [], + "signature": [ + "{ type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", + "SerializableRecord", + " | undefined; schema?: string | undefined; }[]" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVisData.searchSource", + "type": "Object", + "tags": [], + "label": "searchSource", + "description": [], + "signature": [ + "{ type?: string | undefined; query?: ", + "Query", + " | ", + "AggregateQuery", + " | undefined; filter?: ", + "Filter", + "[] | undefined; sort?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySortValue", + "text": "EsQuerySortValue" + }, + "[] | undefined; highlight?: ", + "SerializableRecord", + " | undefined; highlightAll?: boolean | undefined; trackTotalHits?: number | boolean | undefined; aggs?: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", + "SerializableRecord", + " | undefined; schema?: string | undefined; }[] | undefined; from?: number | undefined; size?: number | undefined; source?: boolean | ", + "Fields", + " | undefined; version?: boolean | undefined; fields?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchFieldValue", + "text": "SearchFieldValue" + }, + "[] | undefined; fieldsFromSource?: ", + "Fields", + " | undefined; index?: string | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + " | undefined; searchAfter?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySearchAfter", + "text": "EsQuerySearchAfter" + }, + " | undefined; timeout?: string | undefined; terminate_after?: number | undefined; parent?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SerializedSearchSourceFields", + "text": "SerializedSearchSourceFields" + }, + " | undefined; }" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SerializedVisData.savedSearchId", + "type": "string", + "tags": [], + "label": "savedSearchId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.StaticValueParams", + "type": "Interface", + "tags": [], + "label": "StaticValueParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.StaticValueParams", + "text": "StaticValueParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.StaticValueParams.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams", + "type": "Interface", + "tags": [], + "label": "TermsParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.TermsParams", + "text": "TermsParams" + }, + " extends ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.size", + "type": "number", + "tags": [], + "label": "size", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.include", + "type": "CompoundType", + "tags": [], + "label": "include", + "description": [], + "signature": [ + "string[] | number[] | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.exclude", + "type": "CompoundType", + "tags": [], + "label": "exclude", + "description": [], + "signature": [ + "string[] | number[] | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.includeIsRegex", + "type": "CompoundType", + "tags": [], + "label": "includeIsRegex", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.excludeIsRegex", + "type": "CompoundType", + "tags": [], + "label": "excludeIsRegex", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.orderBy", + "type": "CompoundType", + "tags": [], + "label": "orderBy", + "description": [], + "signature": [ + "{ type: \"alphabetical\"; fallback?: boolean | undefined; } | { type: \"rare\"; maxDocCount: number; } | { type: \"column\"; columnId: string; } | { type: \"custom\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.orderAgg", + "type": "CompoundType", + "tags": [], + "label": "orderAgg", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Column", + "text": "Column" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.orderDirection", + "type": "CompoundType", + "tags": [], + "label": "orderDirection", + "description": [], + "signature": [ + "\"asc\" | \"desc\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.otherBucket", + "type": "CompoundType", + "tags": [], + "label": "otherBucket", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.missingBucket", + "type": "CompoundType", + "tags": [], + "label": "missingBucket", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.secondaryFields", + "type": "Array", + "tags": [], + "label": "secondaryFields", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsParams.parentFormat", + "type": "Object", + "tags": [], + "label": "parentFormat", + "description": [], + "signature": [ + "{ id: string; } | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TimeScaleParams", + "type": "Interface", + "tags": [], + "label": "TimeScaleParams", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.TimeScaleParams.unit", + "type": "string", + "tags": [], + "label": "unit", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisParams", + "type": "Interface", + "tags": [], + "label": "VisParams", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.VisParams.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[key: string]: any", + "description": [], + "signature": [ + "[key: string]: any" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes", + "type": "Interface", + "tags": [], + "label": "VisualizationSavedObjectAttributes", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.VisualizationSavedObjectAttributes", + "text": "VisualizationSavedObjectAttributes" + }, + " extends ", + "SavedObjectAttributes" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.kibanaSavedObjectMeta", + "type": "Object", + "tags": [], + "label": "kibanaSavedObjectMeta", + "description": [], + "signature": [ + "{ searchSourceJSON: string; }" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.version", + "type": "number", + "tags": [], + "label": "version", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.visState", + "type": "string", + "tags": [], + "label": "visState", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.VisualizationSavedObjectAttributes.uiStateJSON", + "type": "string", + "tags": [], + "label": "uiStateJSON", + "description": [], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration", + "type": "Interface", + "tags": [], + "label": "XYConfiguration", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.preferredSeriesType", + "type": "CompoundType", + "tags": [], + "label": "preferredSeriesType", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.SeriesType", + "text": "SeriesType" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.legend", + "type": "Object", + "tags": [], + "label": "legend", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LegendConfig", + "text": "LegendConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.valueLabels", + "type": "CompoundType", + "tags": [], + "label": "valueLabels", + "description": [], + "signature": [ + "\"hide\" | \"show\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.fittingFunction", + "type": "CompoundType", + "tags": [], + "label": "fittingFunction", + "description": [], + "signature": [ + "\"None\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | \"Average\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.emphasizeFitting", + "type": "CompoundType", + "tags": [], + "label": "emphasizeFitting", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.endValue", + "type": "CompoundType", + "tags": [], + "label": "endValue", + "description": [], + "signature": [ + "\"None\" | \"Zero\" | \"Nearest\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.xExtent", + "type": "Object", + "tags": [], + "label": "xExtent", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxisExtentConfig", + "text": "AxisExtentConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yLeftExtent", + "type": "Object", + "tags": [], + "label": "yLeftExtent", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxisExtentConfig", + "text": "AxisExtentConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yRightExtent", + "type": "Object", + "tags": [], + "label": "yRightExtent", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxisExtentConfig", + "text": "AxisExtentConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.layers", + "type": "Array", + "tags": [], + "label": "layers", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYLayerConfig", + "text": "XYLayerConfig" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.xTitle", + "type": "string", + "tags": [], + "label": "xTitle", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yTitle", + "type": "string", + "tags": [], + "label": "yTitle", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yRightTitle", + "type": "string", + "tags": [], + "label": "yRightTitle", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yLeftScale", + "type": "CompoundType", + "tags": [], + "label": "yLeftScale", + "description": [], + "signature": [ + "\"linear\" | \"log\" | \"time\" | \"sqrt\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.yRightScale", + "type": "CompoundType", + "tags": [], + "label": "yRightScale", + "description": [], + "signature": [ + "\"linear\" | \"log\" | \"time\" | \"sqrt\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.axisTitlesVisibilitySettings", + "type": "Object", + "tags": [], + "label": "axisTitlesVisibilitySettings", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxesSettingsConfig", + "text": "AxesSettingsConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.tickLabelsVisibilitySettings", + "type": "Object", + "tags": [], + "label": "tickLabelsVisibilitySettings", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxesSettingsConfig", + "text": "AxesSettingsConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.gridlinesVisibilitySettings", + "type": "Object", + "tags": [], + "label": "gridlinesVisibilitySettings", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AxesSettingsConfig", + "text": "AxesSettingsConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.labelsOrientation", + "type": "Object", + "tags": [], + "label": "labelsOrientation", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LabelsOrientationConfig", + "text": "LabelsOrientationConfig" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.curveType", + "type": "CompoundType", + "tags": [], + "label": "curveType", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYCurveType", + "text": "XYCurveType" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.fillOpacity", + "type": "number", + "tags": [], + "label": "fillOpacity", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.hideEndzones", + "type": "CompoundType", + "tags": [], + "label": "hideEndzones", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYConfiguration.valuesInLegend", + "type": "CompoundType", + "tags": [], + "label": "valuesInLegend", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig", + "type": "Interface", + "tags": [], + "label": "XYDataLayerConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.layerId", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.accessors", + "type": "Array", + "tags": [], + "label": "accessors", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.layerType", + "type": "string", + "tags": [], + "label": "layerType", + "description": [], + "signature": [ + "\"data\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.seriesType", + "type": "CompoundType", + "tags": [], + "label": "seriesType", + "description": [], + "signature": [ + "\"bar\" | \"line\" | \"area\" | \"bar_stacked\" | \"area_stacked\" | \"bar_horizontal\" | \"bar_percentage_stacked\" | \"bar_horizontal_stacked\" | \"area_percentage_stacked\" | \"bar_horizontal_percentage_stacked\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.xAccessor", + "type": "string", + "tags": [], + "label": "xAccessor", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.simpleView", + "type": "CompoundType", + "tags": [], + "label": "simpleView", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.yConfig", + "type": "Array", + "tags": [], + "label": "yConfig", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.YConfig", + "text": "YConfig" + }, + "[] | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.splitAccessor", + "type": "string", + "tags": [], + "label": "splitAccessor", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.palette", + "type": "Object", + "tags": [], + "label": "palette", + "description": [], + "signature": [ + "PaletteOutput", + "<{ [key: string]: unknown; }> | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.collapseFn", + "type": "string", + "tags": [], + "label": "collapseFn", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.xScaleType", + "type": "CompoundType", + "tags": [], + "label": "xScaleType", + "description": [], + "signature": [ + "\"linear\" | \"time\" | \"ordinal\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.isHistogram", + "type": "CompoundType", + "tags": [], + "label": "isHistogram", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYDataLayerConfig.columnToLabel", + "type": "string", + "tags": [], + "label": "columnToLabel", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYReferenceLineLayerConfig", + "type": "Interface", + "tags": [], + "label": "XYReferenceLineLayerConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.XYReferenceLineLayerConfig.layerId", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYReferenceLineLayerConfig.accessors", + "type": "Array", + "tags": [], + "label": "accessors", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYReferenceLineLayerConfig.yConfig", + "type": "Array", + "tags": [], + "label": "yConfig", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.YConfig", + "text": "YConfig" + }, + "[] | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYReferenceLineLayerConfig.layerType", + "type": "string", + "tags": [], + "label": "layerType", + "description": [], + "signature": [ + "\"referenceLine\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig", + "type": "Interface", + "tags": [], + "label": "YConfig", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.forAccessor", + "type": "string", + "tags": [], + "label": "forAccessor", + "description": [], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.color", + "type": "string", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.icon", + "type": "string", + "tags": [], + "label": "icon", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.lineWidth", + "type": "number", + "tags": [], + "label": "lineWidth", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.lineStyle", + "type": "CompoundType", + "tags": [], + "label": "lineStyle", + "description": [], + "signature": [ + "\"solid\" | \"dashed\" | \"dotted\" | \"dot-dashed\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.fill", + "type": "CompoundType", + "tags": [], + "label": "fill", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FillType", + "text": "FillType" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.iconPosition", + "type": "CompoundType", + "tags": [], + "label": "iconPosition", + "description": [], + "signature": [ + "\"above\" | \"below\" | \"auto\" | \"left\" | \"right\" | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.textVisibility", + "type": "CompoundType", + "tags": [], + "label": "textVisibility", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YConfig.axisMode", + "type": "CompoundType", + "tags": [], + "label": "axisMode", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.YAxisMode", + "text": "YAxisMode" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "visualizations", + "id": "def-common.LegendSize", "type": "Enum", "tags": [], - "label": "LegendSize", + "label": "LegendSize", + "description": [], + "path": "src/plugins/visualizations/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "visualizations", + "id": "def-common.AnyColumnWithReferences", + "type": "Type", + "tags": [], + "label": "AnyColumnWithReferences", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.CumulativeSumColumn", + "text": "CumulativeSumColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.CounterRateColumn", + "text": "CounterRateColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.DerivativeColumn", + "text": "DerivativeColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.MovingAverageColumn", + "text": "MovingAverageColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormulaColumn", + "text": "FormulaColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.StaticValueColumn", + "text": "StaticValueColumn" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.AnyColumnWithSourceField", + "type": "Type", + "tags": [], + "label": "AnyColumnWithSourceField", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.RangeColumn", + "text": "RangeColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.TermsColumn", + "text": "TermsColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.DateHistogramColumn", + "text": "DateHistogramColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.MinColumn", + "text": "MinColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.MaxColumn", + "text": "MaxColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AvgColumn", + "text": "AvgColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.SumColumn", + "text": "SumColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.MedianColumn", + "text": "MedianColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.StandardDeviationColumn", + "text": "StandardDeviationColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.CardinalityColumn", + "text": "CardinalityColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileColumn", + "text": "PercentileColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileRanksColumn", + "text": "PercentileRanksColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.CountColumn", + "text": "CountColumn" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LastValueColumn", + "text": "LastValueColumn" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.AvgColumn", + "type": "Type", + "tags": [], + "label": "AvgColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"average\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.AvgParams", + "type": "Type", + "tags": [], + "label": "AvgParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CardinalityColumn", + "type": "Type", + "tags": [], + "label": "CardinalityColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"unique_count\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CardinalityParams", + "type": "Type", + "tags": [], + "label": "CardinalityParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Column", + "type": "Type", + "tags": [], + "label": "Column", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AnyColumnWithReferences", + "text": "AnyColumnWithReferences" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.AnyColumnWithSourceField", + "text": "AnyColumnWithSourceField" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FiltersColumn", + "text": "FiltersColumn" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.ColumnWithMeta", + "type": "Type", + "tags": [], + "label": "ColumnWithMeta", + "description": [], + "signature": [ + "Col & (Meta extends undefined ? undefined : { meta: Meta; })" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Configuration", + "type": "Type", + "tags": [], + "label": "Configuration", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYConfiguration", + "text": "XYConfiguration" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CountColumn", + "type": "Type", + "tags": [], + "label": "CountColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"count\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CounterRateColumn", + "type": "Type", + "tags": [], + "label": "CounterRateColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + "<\"counter_rate\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CounterRateParams", + "type": "Type", + "tags": [], + "label": "CounterRateParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CountParams", + "type": "Type", + "tags": [], + "label": "CountParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CumulativeSumColumn", + "type": "Type", + "tags": [], + "label": "CumulativeSumColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + "<\"cumulative_sum\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.CumulativeSumParams", + "type": "Type", + "tags": [], + "label": "CumulativeSumParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DataType", + "type": "Type", + "tags": [], + "label": "DataType", + "description": [], + "signature": [ + "\"string\" | \"number\" | \"boolean\" | \"date\" | \"document\" | \"ip\" | \"geo_point\" | \"geo_shape\" | \"murmur3\" | \"histogram\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DateHistogramColumn", + "type": "Type", + "tags": [], + "label": "DateHistogramColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"date_histogram\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.DateHistogramParams", + "text": "DateHistogramParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DEFAULT_LEGEND_SIZE", + "type": "string", + "tags": [], + "label": "DEFAULT_LEGEND_SIZE", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LegendSize", + "text": "LegendSize" + }, + ".MEDIUM" + ], + "path": "src/plugins/visualizations/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DerivativeColumn", + "type": "Type", + "tags": [], + "label": "DerivativeColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + "<\"differences\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.DerivativeParams", + "type": "Type", + "tags": [], + "label": "DerivativeParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Dimension", + "type": "Type", + "tags": [], + "label": "Dimension", + "description": [], + "signature": [ + "[DimensionColumn[] | undefined, string]" + ], + "path": "src/plugins/visualizations/common/utils/prepare_log_table.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.ExpressionValueVisDimension", + "type": "Type", + "tags": [], + "label": "ExpressionValueVisDimension", + "description": [], + "signature": [ + "{ type: \"vis_dimension\"; } & { accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: { id?: string | undefined; params?: Record | undefined; }; }" + ], + "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FillType", + "type": "Type", + "tags": [], + "label": "FillType", + "description": [], + "signature": [ + "\"above\" | \"below\" | \"none\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FiltersColumn", + "type": "Type", + "tags": [], + "label": "FiltersColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.BaseColumn", + "text": "BaseColumn" + }, + "<\"filters\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FiltersParams", + "text": "FiltersParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.FormulaColumn", + "type": "Type", + "tags": [], + "label": "FormulaColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + "<\"formula\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormulaParams", + "text": "FormulaParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.LastValueColumn", + "type": "Type", + "tags": [], + "label": "LastValueColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"last_value\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.LastValueParams", + "text": "LastValueParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MaxColumn", + "type": "Type", + "tags": [], + "label": "MaxColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"max\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MaxParams", + "type": "Type", + "tags": [], + "label": "MaxParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MedianColumn", + "type": "Type", + "tags": [], + "label": "MedianColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"median\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MedianParams", + "type": "Type", + "tags": [], + "label": "MedianParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MinColumn", + "type": "Type", + "tags": [], + "label": "MinColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"min\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MinParams", + "type": "Type", + "tags": [], + "label": "MinParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.MovingAverageColumn", + "type": "Type", + "tags": [], + "label": "MovingAverageColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" + }, + "<\"moving_average\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.MovingAverageParams", + "text": "MovingAverageParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Operation", + "type": "Type", + "tags": [], + "label": "Operation", + "description": [], + "signature": [ + "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"average\" | \"terms\" | \"median\" | \"cumulative_sum\" | \"moving_average\" | \"counter_rate\" | \"differences\" | \"formula\" | \"static_value\" | \"standard_deviation\" | \"unique_count\" | \"percentile_rank\" | \"last_value\" | \"normalize_by_unit\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/operations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.OperationWithReferences", + "type": "Type", + "tags": [], + "label": "OperationWithReferences", + "description": [], + "signature": [ + "\"cumulative_sum\" | \"moving_average\" | \"counter_rate\" | \"differences\" | \"formula\" | \"static_value\" | \"normalize_by_unit\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/operations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.OperationWithSourceField", + "type": "Type", + "tags": [], + "label": "OperationWithSourceField", + "description": [], + "signature": [ + "\"range\" | \"min\" | \"max\" | \"filters\" | \"count\" | \"date_histogram\" | \"percentile\" | \"sum\" | \"average\" | \"terms\" | \"median\" | \"standard_deviation\" | \"unique_count\" | \"percentile_rank\" | \"last_value\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/operations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileColumn", + "type": "Type", + "tags": [], + "label": "PercentileColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"percentile\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileParams", + "text": "PercentileParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.PercentileRanksColumn", + "type": "Type", + "tags": [], + "label": "PercentileRanksColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"percentile_rank\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.PercentileRanksParams", + "text": "PercentileRanksParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.RangeColumn", + "type": "Type", + "tags": [], + "label": "RangeColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"range\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.RangeParams", + "text": "RangeParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SavedVisState", + "type": "Type", + "tags": [], + "label": "SavedVisState", + "description": [], + "signature": [ + "{ title: string; type: string; params: TVisParams; aggs: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", + "SerializableRecord", + " | undefined; schema?: string | undefined; }[]; }" + ], + "path": "src/plugins/visualizations/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SeriesType", + "type": "Type", + "tags": [], + "label": "SeriesType", "description": [], - "path": "src/plugins/visualizations/common/constants.ts", + "signature": [ + "\"bar\" | \"line\" | \"area\" | \"bar_stacked\" | \"area_stacked\" | \"bar_horizontal\" | \"bar_percentage_stacked\" | \"bar_horizontal_stacked\" | \"area_percentage_stacked\" | \"bar_horizontal_percentage_stacked\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false - } - ], - "misc": [ + }, { "parentPluginId": "visualizations", - "id": "def-common.DEFAULT_LEGEND_SIZE", - "type": "string", + "id": "def-common.SortingHint", + "type": "Type", "tags": [], - "label": "DEFAULT_LEGEND_SIZE", + "label": "SortingHint", + "description": [], + "signature": [ + "\"version\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.StandardDeviationColumn", + "type": "Type", + "tags": [], + "label": "StandardDeviationColumn", "description": [], "signature": [ { "pluginId": "visualizations", "scope": "common", "docId": "kibVisualizationsPluginApi", - "section": "def-common.LegendSize", - "text": "LegendSize" + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" }, - ".MEDIUM" + "<\"standard_deviation\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" ], - "path": "src/plugins/visualizations/common/constants.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "visualizations", - "id": "def-common.Dimension", + "id": "def-common.StandardDeviationParams", "type": "Type", "tags": [], - "label": "Dimension", + "label": "StandardDeviationParams", "description": [], "signature": [ - "[DimensionColumn[] | undefined, string]" + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } ], - "path": "src/plugins/visualizations/common/utils/prepare_log_table.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "visualizations", - "id": "def-common.ExpressionValueVisDimension", + "id": "def-common.StaticValueColumn", "type": "Type", "tags": [], - "label": "ExpressionValueVisDimension", + "label": "StaticValueColumn", "description": [], "signature": [ - "{ type: \"vis_dimension\"; } & { accessor: number | ", { - "pluginId": "expressions", + "pluginId": "visualizations", "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithReferences", + "text": "ColumnWithReferences" }, - "; format: { id?: string | undefined; params?: Record | undefined; }; }" + "<\"static_value\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.StaticValueParams", + "text": "StaticValueParams" + }, + ">" ], - "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "visualizations", - "id": "def-common.SavedVisState", + "id": "def-common.SumColumn", "type": "Type", "tags": [], - "label": "SavedVisState", + "label": "SumColumn", "description": [], "signature": [ - "{ title: string; type: string; params: TVisParams; aggs: { type: string; enabled?: boolean | undefined; id?: string | undefined; params?: {} | ", - "SerializableRecord", - " | undefined; schema?: string | undefined; }[]; }" + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"sum\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + }, + ">" ], - "path": "src/plugins/visualizations/common/types.ts", + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SumParams", + "type": "Type", + "tags": [], + "label": "SumParams", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.FormatParams", + "text": "FormatParams" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TermsColumn", + "type": "Type", + "tags": [], + "label": "TermsColumn", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.ColumnWithSourceField", + "text": "ColumnWithSourceField" + }, + "<\"terms\", ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.TermsParams", + "text": "TermsParams" + }, + ">" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/columns.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.TimeScaleUnit", + "type": "Type", + "tags": [], + "label": "TimeScaleUnit", + "description": [], + "signature": [ + "\"d\" | \"h\" | \"m\" | \"s\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/common.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYCurveType", + "type": "Type", + "tags": [], + "label": "XYCurveType", + "description": [], + "signature": [ + "\"LINEAR\" | \"CURVE_MONOTONE_X\" | \"CURVE_STEP_AFTER\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYLayerConfig", + "type": "Type", + "tags": [], + "label": "XYLayerConfig", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYDataLayerConfig", + "text": "XYDataLayerConfig" + }, + " | ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.XYReferenceLineLayerConfig", + "text": "XYReferenceLineLayerConfig" + } + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YAxisMode", + "type": "Type", + "tags": [], + "label": "YAxisMode", + "description": [], + "signature": [ + "\"auto\" | \"bottom\" | \"left\" | \"right\"" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false } ], "objects": [ + { + "parentPluginId": "visualizations", + "id": "def-common.FillTypes", + "type": "Object", + "tags": [], + "label": "FillTypes", + "description": [], + "signature": [ + "{ readonly NONE: \"none\"; readonly ABOVE: \"above\"; readonly BELOW: \"below\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-common.LegendSizeToPixels", @@ -8282,6 +11795,96 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.Operations", + "type": "Object", + "tags": [], + "label": "Operations", + "description": [], + "signature": [ + "{ readonly CUMULATIVE_SUM: \"cumulative_sum\"; readonly COUNTER_RATE: \"counter_rate\"; readonly DIFFERENCES: \"differences\"; readonly MOVING_AVERAGE: \"moving_average\"; readonly FORMULA: \"formula\"; readonly STATIC_VALUE: \"static_value\"; readonly NORMALIZE_BY_UNIT: \"normalize_by_unit\"; readonly FILTERS: \"filters\"; readonly RANGE: \"range\"; readonly TERMS: \"terms\"; readonly DATE_HISTOGRAM: \"date_histogram\"; readonly MIN: \"min\"; readonly MAX: \"max\"; readonly AVERAGE: \"average\"; readonly SUM: \"sum\"; readonly MEDIAN: \"median\"; readonly STANDARD_DEVIATION: \"standard_deviation\"; readonly UNIQUE_COUNT: \"unique_count\"; readonly PERCENTILE: \"percentile\"; readonly PERCENTILE_RANK: \"percentile_rank\"; readonly COUNT: \"count\"; readonly LAST_VALUE: \"last_value\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.OperationsWithReferences", + "type": "Object", + "tags": [], + "label": "OperationsWithReferences", + "description": [], + "signature": [ + "{ readonly CUMULATIVE_SUM: \"cumulative_sum\"; readonly COUNTER_RATE: \"counter_rate\"; readonly DIFFERENCES: \"differences\"; readonly MOVING_AVERAGE: \"moving_average\"; readonly FORMULA: \"formula\"; readonly STATIC_VALUE: \"static_value\"; readonly NORMALIZE_BY_UNIT: \"normalize_by_unit\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.OperationsWithSourceField", + "type": "Object", + "tags": [], + "label": "OperationsWithSourceField", + "description": [], + "signature": [ + "{ readonly FILTERS: \"filters\"; readonly RANGE: \"range\"; readonly TERMS: \"terms\"; readonly DATE_HISTOGRAM: \"date_histogram\"; readonly MIN: \"min\"; readonly MAX: \"max\"; readonly AVERAGE: \"average\"; readonly SUM: \"sum\"; readonly MEDIAN: \"median\"; readonly STANDARD_DEVIATION: \"standard_deviation\"; readonly UNIQUE_COUNT: \"unique_count\"; readonly PERCENTILE: \"percentile\"; readonly PERCENTILE_RANK: \"percentile_rank\"; readonly COUNT: \"count\"; readonly LAST_VALUE: \"last_value\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.SeriesTypes", + "type": "Object", + "tags": [], + "label": "SeriesTypes", + "description": [], + "signature": [ + "{ readonly BAR: \"bar\"; readonly LINE: \"line\"; readonly AREA: \"area\"; readonly BAR_STACKED: \"bar_stacked\"; readonly AREA_STACKED: \"area_stacked\"; readonly BAR_HORIZONTAL: \"bar_horizontal\"; readonly BAR_PERCENTAGE_STACKED: \"bar_percentage_stacked\"; readonly BAR_HORIZONTAL_STACKED: \"bar_horizontal_stacked\"; readonly AREA_PERCENTAGE_STACKED: \"area_percentage_stacked\"; readonly BAR_HORIZONTAL_PERCENTAGE_STACKED: \"bar_horizontal_percentage_stacked\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.XYCurveTypes", + "type": "Object", + "tags": [], + "label": "XYCurveTypes", + "description": [], + "signature": [ + "{ readonly LINEAR: \"LINEAR\"; readonly CURVE_MONOTONE_X: \"CURVE_MONOTONE_X\"; readonly CURVE_STEP_AFTER: \"CURVE_STEP_AFTER\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.YAxisModes", + "type": "Object", + "tags": [], + "label": "YAxisModes", + "description": [], + "signature": [ + "{ readonly AUTO: \"auto\"; readonly LEFT: \"left\"; readonly RIGHT: \"right\"; readonly BOTTOM: \"bottom\"; }" + ], + "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ] } diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 974e2fda9781f..e999d94a5796e 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-09-15 +date: 2022-09-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 419 | 12 | 390 | 15 | +| 611 | 12 | 582 | 14 | ## Client From 77964bc0f7530a4918dd00d9c0d4c0e45cdcbbf0 Mon Sep 17 00:00:00 2001 From: spalger Date: Thu, 15 Sep 2022 12:38:36 -0500 Subject: [PATCH 29/79] modernize test-subj-selector (#140847) --- package.json | 1 + packages/BUILD.bazel | 1 + .../src/fatal_errors_screen.test.tsx | 2 +- packages/kbn-test-subj-selector/BUILD.bazel | 112 +++++++++++++++--- packages/kbn-test-subj-selector/README.mdx | 18 ++- packages/kbn-test-subj-selector/index.js | 38 ------ packages/kbn-test-subj-selector/index.test.js | 24 ---- .../{index.d.ts => index.ts} | 3 +- .../kbn-test-subj-selector/jest.config.js | 2 +- packages/kbn-test-subj-selector/kibana.jsonc | 4 +- packages/kbn-test-subj-selector/package.json | 11 +- .../test_subj_selector.test.ts | 20 ++++ .../test_subj_selector.ts | 53 +++++++++ packages/kbn-test-subj-selector/tsconfig.json | 12 +- test/accessibility/services/a11y/a11y.ts | 2 +- .../expressions_explorer/expressions.ts | 2 +- .../services/common/test_subjects.ts | 2 +- .../web_element_wrapper.ts | 2 +- .../log_entry_actions_menu.test.tsx | 2 +- .../page_objects/infra_home_page.ts | 2 +- .../page_objects/endpoint_responder.ts | 2 +- .../page_objects/timeline/index.ts | 2 +- yarn.lock | 4 + 23 files changed, 217 insertions(+), 104 deletions(-) delete mode 100755 packages/kbn-test-subj-selector/index.js delete mode 100755 packages/kbn-test-subj-selector/index.test.js rename packages/kbn-test-subj-selector/{index.d.ts => index.ts} (74%) mode change 100755 => 100644 packages/kbn-test-subj-selector/package.json create mode 100644 packages/kbn-test-subj-selector/test_subj_selector.test.ts create mode 100644 packages/kbn-test-subj-selector/test_subj_selector.ts diff --git a/package.json b/package.json index 9001b3a56faca..d18b2678a99eb 100644 --- a/package.json +++ b/package.json @@ -1105,6 +1105,7 @@ "@types/kbn__telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools/npm_module_types", "@types/kbn__test": "link:bazel-bin/packages/kbn-test/npm_module_types", "@types/kbn__test-jest-helpers": "link:bazel-bin/packages/kbn-test-jest-helpers/npm_module_types", + "@types/kbn__test-subj-selector": "link:bazel-bin/packages/kbn-test-subj-selector/npm_module_types", "@types/kbn__tooling-log": "link:bazel-bin/packages/kbn-tooling-log/npm_module_types", "@types/kbn__type-summarizer": "link:bazel-bin/packages/kbn-type-summarizer/npm_module_types", "@types/kbn__type-summarizer-cli": "link:bazel-bin/packages/kbn-type-summarizer-cli/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 6f40fc9ae3864..0d697c2852c2a 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -562,6 +562,7 @@ filegroup( "//packages/kbn-telemetry-tools:build_types", "//packages/kbn-test:build_types", "//packages/kbn-test-jest-helpers:build_types", + "//packages/kbn-test-subj-selector:build_types", "//packages/kbn-tooling-log:build_types", "//packages/kbn-type-summarizer:build_types", "//packages/kbn-type-summarizer-cli:build_types", diff --git a/packages/core/fatal-errors/core-fatal-errors-browser-internal/src/fatal_errors_screen.test.tsx b/packages/core/fatal-errors/core-fatal-errors-browser-internal/src/fatal_errors_screen.test.tsx index 1849517c8cf3f..5fea6d6a66342 100644 --- a/packages/core/fatal-errors/core-fatal-errors-browser-internal/src/fatal_errors_screen.test.tsx +++ b/packages/core/fatal-errors/core-fatal-errors-browser-internal/src/fatal_errors_screen.test.tsx @@ -7,7 +7,7 @@ */ import { EuiCallOut } from '@elastic/eui'; -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import React from 'react'; import { of, ReplaySubject } from 'rxjs'; import { mountWithIntl, shallowWithIntl } from '@kbn/test-jest-helpers'; diff --git a/packages/kbn-test-subj-selector/BUILD.bazel b/packages/kbn-test-subj-selector/BUILD.bazel index cc3334650a5d9..a92554c948230 100644 --- a/packages/kbn-test-subj-selector/BUILD.bazel +++ b/packages/kbn-test-subj-selector/BUILD.bazel @@ -1,13 +1,28 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") load("@build_bazel_rules_nodejs//:index.bzl", "js_library") -load("//src/dev/bazel:index.bzl", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") -PKG_BASE_NAME = "kbn-test-subj-selector" +PKG_DIRNAME = "kbn-test-subj-selector" PKG_REQUIRE_NAME = "@kbn/test-subj-selector" -SOURCE_FILES = glob([ - "index.d.ts", - "index.js" -]) +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) SRCS = SOURCE_FILES @@ -20,29 +35,90 @@ NPM_MODULE_EXTRA_FILES = [ "package.json", ] -RUNTIME_DEPS = [] +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ +] -js_library( - name = PKG_BASE_NAME, - srcs = NPM_MODULE_EXTRA_FILES + [ - ":srcs", +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as 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", ], - deps = RUNTIME_DEPS, +) + +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", + 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 = [ - ":%s" % PKG_BASE_NAME, - ] + deps = [":" + PKG_DIRNAME], ) filegroup( name = "build", - srcs = [ - ":npm_module", - ], + 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/kbn-test-subj-selector/README.mdx b/packages/kbn-test-subj-selector/README.mdx index c924d15937129..9f36c3c63670c 100755 --- a/packages/kbn-test-subj-selector/README.mdx +++ b/packages/kbn-test-subj-selector/README.mdx @@ -7,4 +7,20 @@ date: 2022-05-19 tags: ['kibana', 'dev', 'contributor', 'operations', 'test', 'subj', 'selector'] --- -Converts a string from a test subject syntax into a css selectors composed by `data-test-subj`. +Converts a testSubject selector into a CSS selector. + +testSubject selector syntax rules: + + - `data-test-subj` values can include spaces + + - prefixing a value with `~` will allow matching a single word in a `data-test-subj` that uses several space delimited list words + - example: `~foo` + - css equivalent: `[data-test-subj~="foo"]` + + - the `>` character is used between two values to indicate that the value on the right must match an element inside an element matched by the value on the left + - example: `foo > bar` + - css equivalent: `[data-test-subj=foo] [data-test-subj=bar]` + + - the `&` character is used between two values to indicate that the value on both sides must both match the element + - example: `foo & bar` + - css equivalent: `[data-test-subj=foo][data-test-subj=bar]` \ No newline at end of file diff --git a/packages/kbn-test-subj-selector/index.js b/packages/kbn-test-subj-selector/index.js deleted file mode 100755 index 0163983d87eea..0000000000000 --- a/packages/kbn-test-subj-selector/index.js +++ /dev/null @@ -1,38 +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. - */ - -function selectorToTerms(selector) { - return selector - .replace(/\s*~\s*/g, '~') // css locator with '~' operator cannot contain spaces - .replace(/\s*>\s*/g, '>') // remove all whitespace around joins > - .replace(/\s*&\s*/g, '&') // remove all whitespace around joins & - .split(/>+/); -} - -function termToCssSelector(term) { - if (term) { - return term.startsWith('~') - ? '[data-test-subj~="' + term.substring(1).replace(/\s/g, '') + '"]' - : '[data-test-subj="' + term + '"]'; - } else { - return ''; - } -} - -module.exports = function testSubjSelector(selector) { - const cssSelectors = []; - const terms = selectorToTerms(selector); - - while (terms.length) { - const term = terms.shift(); - // split each term by joins/& and map to css selectors - cssSelectors.push(term.split('&').map(termToCssSelector).join('')); - } - - return cssSelectors.join(' '); -}; diff --git a/packages/kbn-test-subj-selector/index.test.js b/packages/kbn-test-subj-selector/index.test.js deleted file mode 100755 index aa23c8d1bd70b..0000000000000 --- a/packages/kbn-test-subj-selector/index.test.js +++ /dev/null @@ -1,24 +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. - */ - -const testSubjSelector = require('.'); - -describe('testSubjSelector()', function () { - it('converts subjectSelectors to cssSelectors', function () { - expect(testSubjSelector('foo bar')).toEqual('[data-test-subj="foo bar"]'); - expect(testSubjSelector('foo > bar')).toEqual('[data-test-subj="foo"] [data-test-subj="bar"]'); - expect(testSubjSelector('foo > bar baz')).toEqual( - '[data-test-subj="foo"] [data-test-subj="bar baz"]' - ); - expect(testSubjSelector('foo> ~bar')).toEqual('[data-test-subj="foo"] [data-test-subj~="bar"]'); - expect(testSubjSelector('~ foo')).toEqual('[data-test-subj~="foo"]'); - expect(testSubjSelector('~foo & ~ bar')).toEqual( - '[data-test-subj~="foo"][data-test-subj~="bar"]' - ); - }); -}); diff --git a/packages/kbn-test-subj-selector/index.d.ts b/packages/kbn-test-subj-selector/index.ts similarity index 74% rename from packages/kbn-test-subj-selector/index.d.ts rename to packages/kbn-test-subj-selector/index.ts index 41765c094dc74..d815909b39b7b 100644 --- a/packages/kbn-test-subj-selector/index.d.ts +++ b/packages/kbn-test-subj-selector/index.ts @@ -6,5 +6,4 @@ * Side Public License, v 1. */ -// eslint-disable-next-line import/no-default-export -export default function kbnTestSubjSelector(selector: string): string; +export { subj } from './test_subj_selector'; diff --git a/packages/kbn-test-subj-selector/jest.config.js b/packages/kbn-test-subj-selector/jest.config.js index 8395fe2837911..26b71c41970d1 100644 --- a/packages/kbn-test-subj-selector/jest.config.js +++ b/packages/kbn-test-subj-selector/jest.config.js @@ -7,7 +7,7 @@ */ module.exports = { - preset: '@kbn/test', + preset: '@kbn/test/jest_node', rootDir: '../..', roots: ['/packages/kbn-test-subj-selector'], }; diff --git a/packages/kbn-test-subj-selector/kibana.jsonc b/packages/kbn-test-subj-selector/kibana.jsonc index 697ce5593ea71..708e1fd44ac39 100644 --- a/packages/kbn-test-subj-selector/kibana.jsonc +++ b/packages/kbn-test-subj-selector/kibana.jsonc @@ -1,8 +1,8 @@ { "type": "shared-common", "id": "@kbn/test-subj-selector", - "devOnly": true, "owner": "@elastic/kibana-operations", + "devOnly": true, "runtimeDeps": [], - "typeDeps": [] + "typeDeps": [], } diff --git a/packages/kbn-test-subj-selector/package.json b/packages/kbn-test-subj-selector/package.json old mode 100755 new mode 100644 index 8ced36990a6e3..6c8d040735d50 --- a/packages/kbn-test-subj-selector/package.json +++ b/packages/kbn-test-subj-selector/package.json @@ -1,10 +1,7 @@ { "name": "@kbn/test-subj-selector", - "version": "0.2.1", - "description": "", - "main": "index.js", - "keywords": [], - "author": "Spencer Alger ", - "license": "SSPL-1.0 OR Elastic License 2.0", - "private": "true" + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" } diff --git a/packages/kbn-test-subj-selector/test_subj_selector.test.ts b/packages/kbn-test-subj-selector/test_subj_selector.test.ts new file mode 100644 index 0000000000000..d8ad1e6ddfd56 --- /dev/null +++ b/packages/kbn-test-subj-selector/test_subj_selector.test.ts @@ -0,0 +1,20 @@ +/* + * 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 { subj } from './test_subj_selector'; + +describe('testSubjSelector()', function () { + it('converts subjectSelectors to cssSelectors', function () { + expect(subj('foo bar')).toEqual('[data-test-subj="foo bar"]'); + expect(subj('foo > bar')).toEqual('[data-test-subj="foo"] [data-test-subj="bar"]'); + expect(subj('foo > bar baz')).toEqual('[data-test-subj="foo"] [data-test-subj="bar baz"]'); + expect(subj('foo> ~bar')).toEqual('[data-test-subj="foo"] [data-test-subj~="bar"]'); + expect(subj('~ foo')).toEqual('[data-test-subj~="foo"]'); + expect(subj('~foo & ~ bar')).toEqual('[data-test-subj~="foo"][data-test-subj~="bar"]'); + }); +}); diff --git a/packages/kbn-test-subj-selector/test_subj_selector.ts b/packages/kbn-test-subj-selector/test_subj_selector.ts new file mode 100644 index 0000000000000..e6db49755a89b --- /dev/null +++ b/packages/kbn-test-subj-selector/test_subj_selector.ts @@ -0,0 +1,53 @@ +/* + * 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. + */ + +function selectorToTerms(selector: string) { + return selector + .replace(/\s*~\s*/g, '~') // css locator with '~' operator cannot contain spaces + .replace(/\s*>\s*/g, '>') // remove all whitespace around joins > + .replace(/\s*&\s*/g, '&') // remove all whitespace around joins & + .split(/>+/); +} + +function termToCssSelector(term: string) { + if (term) { + return term.startsWith('~') + ? '[data-test-subj~="' + term.substring(1).replace(/\s/g, '') + '"]' + : '[data-test-subj="' + term + '"]'; + } else { + return ''; + } +} + +/** + * Converts a testSubject selector into a CSS selector. + * + * testSubject selector syntax rules: + * + * - `data-test-subj` values can include spaces + * + * - prefixing a value with `~` will allow matching a single word in a `data-test-subj` that uses several space delimited list words + * - example: `~foo` + * - css equivalent: `[data-test-subj~="foo"]` + * + * - the `>` character is used between two values to indicate that the value on the right must match an element inside an element matched by the value on the left + * - example: `foo > bar` + * - css equivalent: `[data-test-subj=foo] [data-test-subj=bar]` + * + * - the `&` character is used between two values to indicate that the value on both sides must both match the element + * - example: `foo & bar` + * - css equivalent: `[data-test-subj=foo][data-test-subj=bar]` + */ +export function subj(selector: string) { + return selectorToTerms(selector) + .map((term) => + // split each term by joins/& and map to css selectors + term.split('&').map(termToCssSelector).join('') + ) + .join(' '); +} diff --git a/packages/kbn-test-subj-selector/tsconfig.json b/packages/kbn-test-subj-selector/tsconfig.json index a590073946162..81935b1385550 100644 --- a/packages/kbn-test-subj-selector/tsconfig.json +++ b/packages/kbn-test-subj-selector/tsconfig.json @@ -1,9 +1,17 @@ { "extends": "../../tsconfig.bazel.json", "compilerOptions": { - "outDir": "target/types" + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "stripInternal": false, + "types": [ + "jest", + "node" + ] }, "include": [ - "index.d.ts" + "**/*.ts", ] } diff --git a/test/accessibility/services/a11y/a11y.ts b/test/accessibility/services/a11y/a11y.ts index e04e38cb9f72f..dd0d6c7f682e3 100644 --- a/test/accessibility/services/a11y/a11y.ts +++ b/test/accessibility/services/a11y/a11y.ts @@ -7,7 +7,7 @@ */ import chalk from 'chalk'; -import testSubjectToCss from '@kbn/test-subj-selector'; +import { subj as testSubjectToCss } from '@kbn/test-subj-selector'; import { AXE_CONFIG, AXE_OPTIONS } from '@kbn/axe-config'; import { FtrService } from '../../ftr_provider_context'; diff --git a/test/examples/expressions_explorer/expressions.ts b/test/examples/expressions_explorer/expressions.ts index 9d55458426776..c7b28cdd03c29 100644 --- a/test/examples/expressions_explorer/expressions.ts +++ b/test/examples/expressions_explorer/expressions.ts @@ -7,7 +7,7 @@ */ import expect from '@kbn/expect'; -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { PluginFunctionalProviderContext } from '../../plugin_functional/services'; // eslint-disable-next-line import/no-default-export diff --git a/test/functional/services/common/test_subjects.ts b/test/functional/services/common/test_subjects.ts index 0e9d7ed9ce931..8b3697e9c0e5a 100644 --- a/test/functional/services/common/test_subjects.ts +++ b/test/functional/services/common/test_subjects.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { WebElementWrapper } from '../lib/web_element_wrapper'; import { FtrService } from '../../ftr_provider_context'; import { TimeoutOpt } from './types'; diff --git a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts index a4f0d40b6db95..144b625121f7e 100644 --- a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts +++ b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts @@ -10,7 +10,7 @@ import { setTimeout as setTimeoutAsync } from 'timers/promises'; import { WebElement, WebDriver, By, Key } from 'selenium-webdriver'; import { PNG } from 'pngjs'; import cheerio from 'cheerio'; -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { ToolingLog } from '@kbn/tooling-log'; import { CustomCheerio, CustomCheerioStatic } from './custom_cheerio_api'; // @ts-ignore not supported yet diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx index 8bc4e5f16cf81..5a6639a1f2298 100644 --- a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import testSubject from '@kbn/test-subj-selector'; +import { subj as testSubject } from '@kbn/test-subj-selector'; import React from 'react'; import { act } from 'react-dom/test-utils'; diff --git a/x-pack/test/functional/page_objects/infra_home_page.ts b/x-pack/test/functional/page_objects/infra_home_page.ts index f9b57c636f341..71be94e4ed338 100644 --- a/x-pack/test/functional/page_objects/infra_home_page.ts +++ b/x-pack/test/functional/page_objects/infra_home_page.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { FtrProviderContext } from '../ftr_provider_context'; diff --git a/x-pack/test/security_solution_endpoint/page_objects/endpoint_responder.ts b/x-pack/test/security_solution_endpoint/page_objects/endpoint_responder.ts index 56a47631a4912..00062df861e6a 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/endpoint_responder.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/endpoint_responder.ts @@ -5,7 +5,7 @@ * 2.0. */ -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { FtrProviderContext } from '../ftr_provider_context'; const TEST_SUBJ = Object.freeze({ diff --git a/x-pack/test/security_solution_ftr/page_objects/timeline/index.ts b/x-pack/test/security_solution_ftr/page_objects/timeline/index.ts index e418f03143134..7675e6d8e8eea 100644 --- a/x-pack/test/security_solution_ftr/page_objects/timeline/index.ts +++ b/x-pack/test/security_solution_ftr/page_objects/timeline/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import testSubjSelector from '@kbn/test-subj-selector'; +import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { FtrService } from '../../../functional/ftr_provider_context'; import { DATE_RANGE_OPTION_TO_TEST_SUBJ_MAP } from '../helpers/super_date_picker'; diff --git a/yarn.lock b/yarn.lock index 73049486ff1fe..4fc61a4458015 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7761,6 +7761,10 @@ version "0.0.0" uid "" +"@types/kbn__test-subj-selector@link:bazel-bin/packages/kbn-test-subj-selector/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__test@link:bazel-bin/packages/kbn-test/npm_module_types": version "0.0.0" uid "" From b744e7cede2857a463699007e9a7dd3ed850148b Mon Sep 17 00:00:00 2001 From: Tomasz Ciecierski Date: Fri, 16 Sep 2022 09:50:35 +0200 Subject: [PATCH 30/79] [Osquery] Add Osquery results to Case (#139909) --- x-pack/plugins/cases/common/index.ts | 10 +- x-pack/plugins/cases/public/types.ts | 4 +- .../saved_objects/case_observability.ndjson | 42 ++++++ .../saved_objects/case_security.ndjson | 42 ++++++ .../cypress/integration/all/cases.spec.ts | 76 ++++++++++ x-pack/plugins/osquery/kibana.json | 4 +- .../public/actions/use_live_query_details.ts | 22 ++- .../public/cases/add_to_cases_button.tsx | 86 ++++++++++++ .../public/live_queries/form/index.tsx | 28 +++- .../form/pack_queries_status_table.tsx | 131 +++++++++++++----- .../live_queries/form/pack_results_header.tsx | 66 +++++++++ .../osquery/public/live_queries/index.tsx | 3 +- x-pack/plugins/osquery/public/plugin.ts | 16 ++- .../osquery/public/results/results_table.tsx | 8 +- .../routes/live_queries/details/index.tsx | 18 ++- .../public/routes/saved_queries/edit/tabs.tsx | 42 ++++-- .../attachments/external_reference.tsx | 27 ++++ .../external_references_content.tsx | 31 +++++ .../lazy_external_reference_content.tsx | 66 +++++++++ .../pack_queries_attachment_wrapper.tsx | 63 +++++++++ .../public/shared_components/index.tsx | 1 + .../osquery_action/index.tsx | 3 +- .../public/timelines/get_add_to_timeline.tsx | 58 ++++++++ x-pack/plugins/osquery/public/types.ts | 7 + .../scripts/roles_users/soc_manager/role.json | 2 + .../osquery/server/utils/register_features.ts | 2 +- x-pack/plugins/osquery/tsconfig.json | 1 + 27 files changed, 797 insertions(+), 62 deletions(-) create mode 100644 x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_observability.ndjson create mode 100644 x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_security.ndjson create mode 100644 x-pack/plugins/osquery/cypress/integration/all/cases.spec.ts create mode 100644 x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx create mode 100644 x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx create mode 100644 x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx create mode 100644 x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx create mode 100644 x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx create mode 100644 x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx create mode 100644 x-pack/plugins/osquery/public/timelines/get_add_to_timeline.tsx diff --git a/x-pack/plugins/cases/common/index.ts b/x-pack/plugins/cases/common/index.ts index e246c98f71c75..489ee28a26cd6 100644 --- a/x-pack/plugins/cases/common/index.ts +++ b/x-pack/plugins/cases/common/index.ts @@ -18,6 +18,8 @@ export { CASES_URL, SECURITY_SOLUTION_OWNER, + OBSERVABILITY_OWNER, + GENERAL_CASES_OWNER, CREATE_CASES_CAPABILITY, DELETE_CASES_CAPABILITY, PUSH_CASES_CAPABILITY, @@ -25,7 +27,13 @@ export { UPDATE_CASES_CAPABILITY, } from './constants'; -export { CommentType, CaseStatuses, getCasesFromAlertsUrl, throwErrors } from './api'; +export { + CommentType, + CaseStatuses, + getCasesFromAlertsUrl, + throwErrors, + ExternalReferenceStorageType, +} from './api'; export type { Case, diff --git a/x-pack/plugins/cases/public/types.ts b/x-pack/plugins/cases/public/types.ts index e7ad03b482cd6..8b67eb96cda24 100644 --- a/x-pack/plugins/cases/public/types.ts +++ b/x-pack/plugins/cases/public/types.ts @@ -28,6 +28,7 @@ import type { CasesMetricsRequest, CasesStatusRequest, CommentRequestAlertType, + CommentRequestExternalReferenceNoSOType, CommentRequestPersistableStateType, CommentRequestUserType, } from '../common/api'; @@ -152,7 +153,8 @@ export interface CasesUiStart { export type SupportedCaseAttachment = | CommentRequestAlertType | CommentRequestUserType - | CommentRequestPersistableStateType; + | CommentRequestPersistableStateType + | CommentRequestExternalReferenceNoSOType; export type CaseAttachments = SupportedCaseAttachment[]; export type CaseAttachmentWithoutOwner = DistributiveOmit; diff --git a/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_observability.ndjson b/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_observability.ndjson new file mode 100644 index 0000000000000..cc443d95875fd --- /dev/null +++ b/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_observability.ndjson @@ -0,0 +1,42 @@ +{ + "attributes": { + "assignees": [], + "closed_at": null, + "closed_by": null, + "connector": { + "fields": [], + "name": "none", + "type": ".none" + }, + "created_at": "2022-09-14T07:51:42.298Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "description": "Test Observability case", + "duration": null, + "external_service": null, + "owner": "observability", + "settings": { + "syncAlerts": false + }, + "severity": "low", + "status": "open", + "tags": [ + "obs" + ], + "title": "Test Obs case", + "updated_at": null, + "updated_by": null + }, + "coreMigrationVersion": "8.5.0", + "id": "127acc90-3402-11ed-a392-0f81f7d06b71", + "migrationVersion": { + "cases": "8.5.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-09-14T07:51:42.299Z", + "version": "WzEwMDIwLDFd" +} diff --git a/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_security.ndjson b/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_security.ndjson new file mode 100644 index 0000000000000..1262d7bd5d281 --- /dev/null +++ b/x-pack/plugins/osquery/cypress/fixtures/saved_objects/case_security.ndjson @@ -0,0 +1,42 @@ +{ + "attributes": { + "assignees": [], + "closed_at": null, + "closed_by": null, + "connector": { + "fields": [], + "name": "none", + "type": ".none" + }, + "created_at": "2022-09-14T08:29:25.376Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "description": "Test security description", + "duration": null, + "external_service": null, + "owner": "securitySolution", + "settings": { + "syncAlerts": true + }, + "severity": "low", + "status": "open", + "tags": [ + "security" + ], + "title": "Test Security Case", + "updated_at": null, + "updated_by": null + }, + "coreMigrationVersion": "8.5.0", + "id": "5760cad0-3407-11ed-b29d-758c6c3e798d", + "migrationVersion": { + "cases": "8.5.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-09-14T08:29:25.376Z", + "version": "WzE0OTk0LDFd" +} diff --git a/x-pack/plugins/osquery/cypress/integration/all/cases.spec.ts b/x-pack/plugins/osquery/cypress/integration/all/cases.spec.ts new file mode 100644 index 0000000000000..cb16dd1dfb8fe --- /dev/null +++ b/x-pack/plugins/osquery/cypress/integration/all/cases.spec.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 { checkResults } from '../../tasks/live_query'; +import { navigateTo } from '../../tasks/navigation'; +import { ArchiverMethod, runKbnArchiverScript } from '../../tasks/archiver'; +import { login } from '../../tasks/login'; +import { ROLES } from '../../test'; + +describe('Add to Cases', () => { + describe('observability', () => { + before(() => { + runKbnArchiverScript(ArchiverMethod.LOAD, 'case_observability'); + login(ROLES.soc_manager); + navigateTo('/app/osquery'); + }); + + after(() => { + runKbnArchiverScript(ArchiverMethod.UNLOAD, 'case_observability'); + }); + it('should add result a case and not have add to timeline in result', () => { + cy.react('CustomItemAction', { + props: { index: 1 }, + }).click(); + cy.contains('Live query details'); + cy.contains('Add to Case').click(); + cy.contains('Select case'); + cy.contains(/Select$/).click(); + cy.contains('Test Obs case has been updated'); + cy.visit('/app/observability/cases'); + cy.contains('Test Obs case').click(); + checkResults(); + cy.contains('attached Osquery results'); + cy.contains('SELECT * FROM users;'); + cy.contains('View in Discover').should('exist'); + cy.contains('View in Lens').should('exist'); + cy.contains('Add to Case').should('not.exist'); + cy.contains('Add to timeline investigation').should('not.exist'); + }); + }); + describe('security', () => { + before(() => { + runKbnArchiverScript(ArchiverMethod.LOAD, 'case_security'); + login(ROLES.soc_manager); + navigateTo('/app/osquery'); + }); + + after(() => { + runKbnArchiverScript(ArchiverMethod.UNLOAD, 'case_security'); + }); + + it('should add result a case and have add to timeline in result', () => { + cy.react('CustomItemAction', { + props: { index: 1 }, + }).click(); + cy.contains('Live query details'); + cy.contains('Add to Case').click(); + cy.contains('Select case'); + cy.contains(/Select$/).click(); + cy.contains('Test Security Case has been updated'); + cy.visit('/app/security/cases'); + cy.contains('Test Security Case').click(); + checkResults(); + cy.contains('attached Osquery results'); + cy.contains('SELECT * FROM users;'); + cy.contains('View in Discover').should('exist'); + cy.contains('View in Lens').should('exist'); + cy.contains('Add to Case').should('not.exist'); + cy.contains('Add to timeline investigation').should('exist'); + }); + }); +}); diff --git a/x-pack/plugins/osquery/kibana.json b/x-pack/plugins/osquery/kibana.json index 539c2f7dc18dc..6d956fdce9fe9 100644 --- a/x-pack/plugins/osquery/kibana.json +++ b/x-pack/plugins/osquery/kibana.json @@ -7,8 +7,8 @@ "githubTeam": "security-asset-management" }, "kibanaVersion": "kibana", - "optionalPlugins": ["fleet", "home", "usageCollection", "lens", "telemetry"], - "requiredBundles": ["esUiShared", "fleet", "kibanaUtils", "kibanaReact", "lens"], + "optionalPlugins": ["fleet", "home", "usageCollection", "lens", "telemetry", "cases"], + "requiredBundles": ["esUiShared", "fleet", "kibanaUtils", "kibanaReact", "lens", "cases"], "requiredPlugins": [ "actions", "data", diff --git a/x-pack/plugins/osquery/public/actions/use_live_query_details.ts b/x-pack/plugins/osquery/public/actions/use_live_query_details.ts index b8703a8370d02..dd41eb1455b0e 100644 --- a/x-pack/plugins/osquery/public/actions/use_live_query_details.ts +++ b/x-pack/plugins/osquery/public/actions/use_live_query_details.ts @@ -8,20 +8,17 @@ import { useQuery } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; +import { filter } from 'lodash'; import { useKibana } from '../common/lib/kibana'; import type { ESTermQuery } from '../../common/typed_json'; import { useErrorToast } from '../common/hooks/use_error_toast'; -export interface LiveQueryDetailsArgs { - actionDetails: Record; - id: string; -} - interface UseLiveQueryDetails { actionId?: string; isLive?: boolean; filterQuery?: ESTermQuery | string; skip?: boolean; + queryIds?: string[]; } export interface LiveQueryDetailsItem { @@ -56,12 +53,13 @@ export const useLiveQueryDetails = ({ filterQuery, isLive = false, skip = false, + queryIds, // enable finding out specific queries only, eg. in cases }: UseLiveQueryDetails) => { const { http } = useKibana().services; const setErrorToast = useErrorToast(); return useQuery<{ data: LiveQueryDetailsItem }, Error, LiveQueryDetailsItem>( - ['liveQueries', { actionId, filterQuery }], + ['liveQueries', { actionId, filterQuery, queryIds }], () => http.get(`/api/osquery/live_queries/${actionId}`), { enabled: !skip && !!actionId, @@ -73,7 +71,17 @@ export const useLiveQueryDetails = ({ defaultMessage: 'Error while fetching action details', }), }), - select: (response) => response.data, + select: (response) => { + if (queryIds) { + const filteredQueries = filter(response.data.queries, (query) => + queryIds.includes(query.action_id) + ); + + return { ...response.data, queries: filteredQueries }; + } + + return response.data; + }, refetchOnWindowFocus: false, retryDelay: 5000, } diff --git a/x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx b/x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx new file mode 100644 index 0000000000000..9f2df87f35615 --- /dev/null +++ b/x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { CommentType, ExternalReferenceStorageType } from '@kbn/cases-plugin/common'; +import { EuiButtonEmpty, EuiButtonIcon, EuiFlexItem, EuiToolTip } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import type { CaseAttachmentsWithoutOwner } from '@kbn/cases-plugin/public'; +import { useKibana } from '../common/lib/kibana'; + +const ADD_TO_CASE = i18n.translate( + 'xpack.osquery.pack.queriesTable.addToCaseResultsActionAriaLabel', + { + defaultMessage: 'Add to Case', + } +); + +interface IProps { + queryId: string; + agentIds?: string[]; + actionId: string; + isIcon?: boolean; + isDisabled?: boolean; + iconProps?: Record; +} + +export const AddToCaseButton: React.FC = ({ + actionId, + agentIds = [], + queryId = '', + isIcon = false, + isDisabled, + iconProps, +}) => { + const { cases } = useKibana().services; + + const casePermissions = cases.helpers.canUseCases(); + const hasCasesPermissions = + casePermissions.read && casePermissions.update && casePermissions.push; + const selectCaseModal = cases.hooks.getUseCasesAddToExistingCaseModal({}); + + const handleClick = useCallback(() => { + const attachments: CaseAttachmentsWithoutOwner = [ + { + type: CommentType.externalReference, + externalReferenceId: actionId, + externalReferenceStorage: { + type: ExternalReferenceStorageType.elasticSearchDoc, + }, + externalReferenceAttachmentTypeId: 'osquery', + externalReferenceMetadata: { actionId, agentIds, queryId }, + }, + ]; + if (hasCasesPermissions) { + selectCaseModal.open({ attachments }); + } + }, [actionId, agentIds, hasCasesPermissions, queryId, selectCaseModal]); + + if (isIcon) { + return ( + {ADD_TO_CASE}
}> + + + ); + } + + return ( + + {ADD_TO_CASE} + + ); +}; diff --git a/x-pack/plugins/osquery/public/live_queries/form/index.tsx b/x-pack/plugins/osquery/public/live_queries/form/index.tsx index 96afe9deb98e2..98993d69386a5 100644 --- a/x-pack/plugins/osquery/public/live_queries/form/index.tsx +++ b/x-pack/plugins/osquery/public/live_queries/form/index.tsx @@ -21,6 +21,7 @@ import { useForm as useHookForm, FormProvider } from 'react-hook-form'; import { isEmpty, map, find, pickBy } from 'lodash'; import { i18n } from '@kbn/i18n'; +import type { AddToTimelinePayload } from '../../timelines/get_add_to_timeline'; import type { SavedQuerySOFormData } from '../../saved_queries/form/use_saved_query_form'; import type { EcsMappingFormField, @@ -40,6 +41,7 @@ import { LiveQueryQueryField } from './live_query_query_field'; import { AgentsTableField } from './agents_table_field'; import { PacksComboBoxField } from './packs_combobox_field'; import { savedQueryDataSerializer } from '../../saved_queries/form/use_saved_query_form'; +import { AddToCaseButton } from '../../cases/add_to_cases_button'; export interface LiveQueryFormFields { query?: string; @@ -105,7 +107,7 @@ interface LiveQueryFormProps { formType?: FormType; enabled?: boolean; hideAgentsField?: boolean; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => React.ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => React.ReactElement; } const LiveQueryFormComponent: React.FC = ({ @@ -278,6 +280,26 @@ const LiveQueryFormComponent: React.FC = ({ ); const singleQueryDetails = useMemo(() => liveQueryDetails?.queries?.[0], [liveQueryDetails]); + const liveQueryActionId = useMemo(() => liveQueryDetails?.action_id, [liveQueryDetails]); + + const addToCaseButton = useCallback( + (payload) => { + if (liveQueryActionId) { + return ( + + ); + } + + return <>; + }, + [agentIds, liveQueryActionId] + ); const resultsStepContent = useMemo( () => @@ -288,6 +310,7 @@ const LiveQueryFormComponent: React.FC = ({ endDate={singleQueryDetails?.expiration} agentIds={singleQueryDetails?.agents} addToTimeline={addToTimeline} + addToCase={addToCaseButton} /> ) : null, [ @@ -296,6 +319,7 @@ const LiveQueryFormComponent: React.FC = ({ singleQueryDetails?.agents, serializedData.ecs_mapping, addToTimeline, + addToCaseButton, ] ); @@ -459,7 +483,9 @@ const LiveQueryFormComponent: React.FC = ({ agentIds={agentIds} // @ts-expect-error version string !+ string[] data={liveQueryDetails?.queries ?? selectedPackData?.attributes?.queries} + addToCase={addToCaseButton} addToTimeline={addToTimeline} + showResultsHeader />
diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx b/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx index 9ba830e96311a..38cd6d9cedc3c 100644 --- a/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx +++ b/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { get } from 'lodash'; +import { get, map } from 'lodash'; import type { ReactElement } from 'react'; import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { @@ -34,6 +34,9 @@ import type { import { DOCUMENT_FIELD_NAME as RECORDS_FIELD } from '@kbn/lens-plugin/common/constants'; import { FilterStateStore } from '@kbn/es-query'; import styled from 'styled-components'; +import { SECURITY_APP_NAME } from '../../timelines/get_add_to_timeline'; +import type { AddToTimelinePayload } from '../../timelines/get_add_to_timeline'; +import { PackResultsHeader } from './pack_results_header'; import { Direction } from '../../../common/search_strategy'; import { removeMultilines } from '../../../common/utils/build_query/remove_multilines'; import { useKibana } from '../../common/lib/kibana'; @@ -43,6 +46,8 @@ import type { PackItem } from '../../packs/types'; import type { LogsDataView } from '../../common/hooks/use_logs_data_view'; import { useLogsDataView } from '../../common/hooks/use_logs_data_view'; +const CASES_OWNER: string[] = []; + const TruncateTooltipText = styled.div` width: 100%; @@ -526,22 +531,39 @@ type PackQueryStatusItem = Partial<{ interface PackQueriesStatusTableProps { agentIds?: string[]; + queryId?: string; actionId?: string; data?: PackQueryStatusItem[]; startDate?: string; expirationDate?: string; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => ReactElement; + addToCase?: ({ + actionId, + isIcon, + isDisabled, + }: { + actionId?: string; + isIcon?: boolean; + isDisabled?: boolean; + }) => ReactElement; + showResultsHeader?: boolean; } const PackQueriesStatusTableComponent: React.FC = ({ actionId, + queryId, agentIds, data, startDate, expirationDate, addToTimeline, + addToCase, + showResultsHeader, }) => { const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState>({}); + const { cases, timelines, appName } = useKibana().services; + const casePermissions = cases.helpers.canUseCases(); + const CasesContext = cases.ui.getCasesContext(); const renderIDColumn = useCallback( (id: string) => ( @@ -595,7 +617,18 @@ const PackQueriesStatusTableComponent: React.FC = ( ); const renderLensResultsAction = useCallback((item) => , []); + const handleAddToCase = useCallback( + (payload: { actionId: string; isIcon?: boolean }) => + // eslint-disable-next-line react/display-name + () => { + if (addToCase) { + return addToCase({ actionId: payload.actionId, isIcon: payload?.isIcon }); + } + return <>; + }, + [addToCase] + ); const getHandleErrorsToggle = useCallback( (item) => () => { setItemIdToExpandedRowMap((prevValue) => { @@ -614,6 +647,7 @@ const PackQueriesStatusTableComponent: React.FC = ( agentIds={agentIds} failedAgentsCount={item?.failed ?? 0} addToTimeline={addToTimeline} + addToCase={addToCase && handleAddToCase({ actionId: item.action_id })} />
@@ -623,7 +657,7 @@ const PackQueriesStatusTableComponent: React.FC = ( return itemIdToExpandedRowMapValues; }); }, - [agentIds, expirationDate, startDate, addToTimeline] + [startDate, expirationDate, agentIds, addToTimeline, addToCase, handleAddToCase] ); const renderToggleResultsAction = useCallback( @@ -642,8 +676,28 @@ const PackQueriesStatusTableComponent: React.FC = ( const getItemId = useCallback((item: PackItem) => get(item, 'id'), []); - const columns = useMemo( - () => [ + const columns = useMemo(() => { + const resultActions = [ + { + render: renderDiscoverResultsAction, + }, + { + render: renderLensResultsAction, + }, + { + available: () => !!addToCase, + render: (item: { action_id: string }) => + addToCase && + addToCase({ actionId: item.action_id, isIcon: true, isDisabled: !item.action_id }), + }, + { + available: () => addToTimeline && timelines && appName === SECURITY_APP_NAME, + render: (item: { action_id: string }) => + addToTimeline && addToTimeline({ query: ['action_id', item.action_id], isIcon: true }), + }, + ]; + + return [ { field: 'id', name: i18n.translate('xpack.osquery.pack.queriesTable.idColumnTitle', { @@ -679,14 +733,7 @@ const PackQueriesStatusTableComponent: React.FC = ( defaultMessage: 'View results', }), width: '90px', - actions: [ - { - render: renderDiscoverResultsAction, - }, - { - render: renderLensResultsAction, - }, - ], + actions: resultActions, }, { id: 'actions', @@ -699,17 +746,20 @@ const PackQueriesStatusTableComponent: React.FC = ( }, ], }, - ], - [ - renderIDColumn, - renderQueryColumn, - renderDocsColumn, - renderAgentsColumn, - renderDiscoverResultsAction, - renderLensResultsAction, - renderToggleResultsAction, - ] - ); + ]; + }, [ + renderDiscoverResultsAction, + renderLensResultsAction, + renderIDColumn, + renderQueryColumn, + renderDocsColumn, + renderAgentsColumn, + renderToggleResultsAction, + addToCase, + addToTimeline, + timelines, + appName, + ]); const sorting = useMemo( () => ({ @@ -724,7 +774,7 @@ const PackQueriesStatusTableComponent: React.FC = ( useEffect(() => { // reset the expanded row map when the data changes setItemIdToExpandedRowMap({}); - }, [actionId]); + }, [queryId, actionId]); useEffect(() => { if ( @@ -737,15 +787,30 @@ const PackQueriesStatusTableComponent: React.FC = ( } }, [agentIds?.length, data, getHandleErrorsToggle, itemIdToExpandedRowMap]); + const queryIds = useMemo( + () => + map(data, (query) => ({ + value: query.action_id || '', + field: 'action_id', + })), + [data] + ); + return ( - + + {showResultsHeader && ( + + )} + + + ); }; diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx b/x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx new file mode 100644 index 0000000000000..854548fdb58e4 --- /dev/null +++ b/x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx @@ -0,0 +1,66 @@ +/* + * 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 { ReactElement } from 'react'; +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import styled from 'styled-components'; + +interface PackResultsHeadersProps { + actionId?: string; + addToCase?: ({ + isIcon, + iconProps, + }: { + isIcon: boolean; + iconProps: Record; + }) => ReactElement; + queryIds: Array<{ value: string; field: string }>; +} + +const StyledResultsHeading = styled(EuiFlexItem)` + padding-right: 20px; + border-right: 2px solid #d3dae6; +`; + +const StyledIconsList = styled(EuiFlexItem)` + align-content: center; + justify-content: center; + padding-left: 10px; +`; + +export const PackResultsHeader = ({ actionId, addToCase }: PackResultsHeadersProps) => ( + <> + + + +

+ +

+
+
+ + + {actionId && + addToCase && + addToCase({ + isIcon: true, + iconProps: { + color: 'text', + size: 'xs', + iconSize: 'l', + }, + })} + + +
+ + +); diff --git a/x-pack/plugins/osquery/public/live_queries/index.tsx b/x-pack/plugins/osquery/public/live_queries/index.tsx index 746687f4b644b..ba953b4aad6da 100644 --- a/x-pack/plugins/osquery/public/live_queries/index.tsx +++ b/x-pack/plugins/osquery/public/live_queries/index.tsx @@ -10,6 +10,7 @@ import { EuiCode, EuiLoadingContent, EuiEmptyPrompt } from '@elastic/eui'; import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import type { AddToTimelinePayload } from '../timelines/get_add_to_timeline'; import type { EcsMappingSerialized } from '../packs/queries/ecs_mapping_editor_field'; import { LiveQueryForm } from './form'; import { useActionResultsPrivileges } from '../action_results/use_action_privileges'; @@ -33,7 +34,7 @@ interface LiveQueryProps { hideAgentsField?: boolean; packId?: string; agentSelection?: AgentSelection; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => React.ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => React.ReactElement; } const LiveQueryComponent: React.FC = ({ diff --git a/x-pack/plugins/osquery/public/plugin.ts b/x-pack/plugins/osquery/public/plugin.ts index ddea34a936178..64713f16699f2 100644 --- a/x-pack/plugins/osquery/public/plugin.ts +++ b/x-pack/plugins/osquery/public/plugin.ts @@ -19,6 +19,7 @@ import type { OsqueryPluginStart, StartPlugins, AppPluginStartDependencies, + SetupPlugins, } from './types'; import { OSQUERY_INTEGRATION_NAME, PLUGIN_NAME } from '../common'; import { @@ -30,7 +31,9 @@ import { getLazyOsqueryAction, getLazyLiveQueryField, useIsOsqueryAvailableSimple, + getExternalReferenceAttachmentRegular, } from './shared_components'; +import type { ServicesWrapperProps } from './shared_components/services_wrapper'; export class OsqueryPlugin implements Plugin { private kibanaVersion: string; @@ -40,7 +43,7 @@ export class OsqueryPlugin implements Plugin { + plugins.cases?.attachmentFramework.registerExternalReference( + getExternalReferenceAttachmentRegular({ + ...coreStart, + ...depsStart, + storage, + kibanaVersion, + } as unknown as ServicesWrapperProps['services']) + ); + }); + // Return methods that should be available to other plugins return {}; } diff --git a/x-pack/plugins/osquery/public/results/results_table.tsx b/x-pack/plugins/osquery/public/results/results_table.tsx index a1658538045a6..2d8822b9ab4a8 100644 --- a/x-pack/plugins/osquery/public/results/results_table.tsx +++ b/x-pack/plugins/osquery/public/results/results_table.tsx @@ -28,6 +28,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import React, { createContext, useEffect, useState, useCallback, useContext, useMemo } from 'react'; import { pagePathGetters } from '@kbn/fleet-plugin/public'; +import type { AddToTimelinePayload } from '../timelines/get_add_to_timeline'; import type { ECSMapping } from '../../common/schemas/common'; import { useAllResults } from './use_all_results'; import type { ResultEdges } from '../../common/search_strategy'; @@ -52,7 +53,8 @@ interface ResultsTableComponentProps { ecsMapping?: ECSMapping; endDate?: string; startDate?: string; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => React.ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => React.ReactElement; + addToCase?: ({ actionId }: { actionId?: string }) => React.ReactElement; } const ResultsTableComponent: React.FC = ({ @@ -62,6 +64,7 @@ const ResultsTableComponent: React.FC = ({ startDate, endDate, addToTimeline, + addToCase, }) => { const [isLive, setIsLive] = useState(true); const { data: hasActionResultsPrivileges } = useActionResultsPrivileges(); @@ -343,10 +346,11 @@ const ResultsTableComponent: React.FC = ({ startDate={startDate} /> {addToTimeline && addToTimeline({ query: ['action_id', actionId] })} + {addToCase && addToCase({ actionId })} ), }), - [actionId, addToTimeline, endDate, startDate] + [actionId, addToCase, addToTimeline, endDate, startDate] ); useEffect( diff --git a/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx index bcc069da7359f..a4c58074c76e1 100644 --- a/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx +++ b/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx @@ -7,9 +7,10 @@ import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import React, { useLayoutEffect, useMemo, useState } from 'react'; +import React, { useCallback, useLayoutEffect, useMemo, useState } from 'react'; import { useParams } from 'react-router-dom'; +import { AddToCaseButton } from '../../../cases/add_to_cases_button'; import { useRouterNavigate } from '../../../common/lib/kibana'; import { WithHeaderLayout } from '../../../components/layouts'; import { useLiveQueryDetails } from '../../../actions/use_live_query_details'; @@ -52,6 +53,19 @@ const LiveQueryDetailsPageComponent = () => { useLayoutEffect(() => { setIsLive(() => !(data?.status === 'completed')); }, [data?.status]); + const addToCaseButton = useCallback( + (payload) => ( + + ), + [data?.agents, actionId] + ); return ( @@ -61,6 +75,8 @@ const LiveQueryDetailsPageComponent = () => { startDate={data?.['@timestamp']} expirationDate={data?.expiration} agentIds={data?.agents} + addToCase={addToCaseButton} + showResultsHeader /> ); diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx b/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx index 081530479c8b1..98731a67ee837 100644 --- a/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx +++ b/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx @@ -8,11 +8,15 @@ import { EuiTabbedContent, EuiNotificationBadge } from '@elastic/eui'; import React, { useMemo } from 'react'; import type { ReactElement } from 'react'; +import { useKibana } from '../../../common/lib/kibana'; +import type { AddToTimelinePayload } from '../../../timelines/get_add_to_timeline'; import type { ECSMapping } from '../../../../common/schemas/common'; import { ResultsTable } from '../../../results/results_table'; import { ActionResultsSummary } from '../../../action_results/action_results_summary'; +const CASES_OWNER: string[] = []; + interface ResultTabsProps { actionId: string; agentIds?: string[]; @@ -20,7 +24,8 @@ interface ResultTabsProps { ecsMapping?: ECSMapping; failedAgentsCount?: number; endDate?: string; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => ReactElement; + addToCase?: ({ actionId }: { actionId?: string }) => ReactElement; } const ResultTabsComponent: React.FC = ({ @@ -31,7 +36,12 @@ const ResultTabsComponent: React.FC = ({ failedAgentsCount, startDate, addToTimeline, + addToCase, }) => { + const { cases } = useKibana().services; + const casePermissions = cases.helpers.canUseCases(); + const CasesContext = cases.ui.getCasesContext(); + const tabs = useMemo( () => [ { @@ -45,6 +55,7 @@ const ResultTabsComponent: React.FC = ({ startDate={startDate} endDate={endDate} addToTimeline={addToTimeline} + addToCase={addToCase} /> ), }, @@ -61,18 +72,29 @@ const ResultTabsComponent: React.FC = ({ ) : null, }, ], - [actionId, agentIds, ecsMapping, startDate, endDate, addToTimeline, failedAgentsCount] + [ + actionId, + agentIds, + ecsMapping, + startDate, + endDate, + addToTimeline, + addToCase, + failedAgentsCount, + ] ); return ( - + + + ); }; diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx b/x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx new file mode 100644 index 0000000000000..51bfc6ab1c22f --- /dev/null +++ b/x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx @@ -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 { EuiAvatar } from '@elastic/eui'; +import React from 'react'; +import type { ExternalReferenceAttachmentType } from '@kbn/cases-plugin/public/client/attachment_framework/types'; +import { getLazyExternalContent } from './lazy_external_reference_content'; +import type { ServicesWrapperProps } from '../services_wrapper'; +import OsqueryLogo from '../../components/osquery_icon/osquery.svg'; + +export const getExternalReferenceAttachmentRegular = ( + services: ServicesWrapperProps['services'] +): ExternalReferenceAttachmentType => ({ + id: 'osquery', + displayName: 'Osquery', + getAttachmentViewObject: () => ({ + type: 'regular', + event: 'attached Osquery results', + timelineAvatar: , + // @ts-expect-error update types + children: getLazyExternalContent(services), + }), +}); diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx b/x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx new file mode 100644 index 0000000000000..304167a12f57e --- /dev/null +++ b/x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; + +import type { IExternalReferenceMetaDataProps } from './lazy_external_reference_content'; +import { PackQueriesAttachmentWrapper } from './pack_queries_attachment_wrapper'; + +const AttachmentContent = (props: IExternalReferenceMetaDataProps) => { + const { externalReferenceMetadata } = props; + + return ( + + + + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { AttachmentContent as default }; diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx b/x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx new file mode 100644 index 0000000000000..94e4180f30676 --- /dev/null +++ b/x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx @@ -0,0 +1,66 @@ +/* + * 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, { lazy, Suspense } from 'react'; +import { EuiCode, EuiEmptyPrompt } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { OsqueryIcon } from '../../components/osquery_icon'; +import { useKibana } from '../../common/lib/kibana'; +import type { ServicesWrapperProps } from '../services_wrapper'; +import ServicesWrapper from '../services_wrapper'; +import { PERMISSION_DENIED } from '../osquery_action/translations'; + +export interface IExternalReferenceMetaDataProps { + externalReferenceMetadata: { + actionId: string; + agentIds: string[]; + queryId: string; + }; +} + +export const getLazyExternalContent = + // eslint-disable-next-line react/display-name + (services: ServicesWrapperProps['services']) => (props: IExternalReferenceMetaDataProps) => { + const { + services: { + application: { + capabilities: { osquery }, + }, + }, + } = useKibana(); + + if (!osquery.read) { + return ( + } + title={

{PERMISSION_DENIED}

} + titleSize="xs" + body={ + osquery, + }} + /> + } + /> + ); + } + + const AttachmentContent = lazy(() => import('./external_references_content')); + + return ( + + + + + + ); + }; diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx b/x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx new file mode 100644 index 0000000000000..c7344f49b32c5 --- /dev/null +++ b/x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useLayoutEffect, useState } from 'react'; +import { useKibana } from '../../common/lib/kibana'; +import { getAddToTimeline } from '../../timelines/get_add_to_timeline'; +import { PackQueriesStatusTable } from '../../live_queries/form/pack_queries_status_table'; +import { useLiveQueryDetails } from '../../actions/use_live_query_details'; + +interface PackQueriesAttachmentWrapperProps { + actionId?: string; + agentIds: string[]; + queryId: string; +} + +export const PackQueriesAttachmentWrapper = ({ + actionId, + agentIds, + queryId, +}: PackQueriesAttachmentWrapperProps) => { + const { + services: { timelines, appName }, + } = useKibana(); + const [isLive, setIsLive] = useState(false); + const addToTimelineButton = getAddToTimeline(timelines, appName); + + const { data } = useLiveQueryDetails({ + actionId, + isLive, + ...(queryId ? { queryIds: [queryId] } : {}), + }); + + useLayoutEffect(() => { + setIsLive(() => !(data?.status === 'completed')); + }, [data?.status]); + + const addToTimeline = useCallback( + (payload) => { + if (!actionId || !addToTimelineButton) { + return <>; + } + + return addToTimelineButton(payload); + }, + [actionId, addToTimelineButton] + ); + + return ( + + ); +}; diff --git a/x-pack/plugins/osquery/public/shared_components/index.tsx b/x-pack/plugins/osquery/public/shared_components/index.tsx index fee2466a49430..cb4d6881cef71 100644 --- a/x-pack/plugins/osquery/public/shared_components/index.tsx +++ b/x-pack/plugins/osquery/public/shared_components/index.tsx @@ -8,3 +8,4 @@ export { getLazyOsqueryAction } from './lazy_osquery_action'; export { getLazyLiveQueryField } from './lazy_live_query_field'; export { useIsOsqueryAvailableSimple } from './osquery_action/use_is_osquery_available_simple'; +export { getExternalReferenceAttachmentRegular } from './attachments/external_reference'; diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx b/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx index bc039b334a910..a3586d6c8c937 100644 --- a/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx +++ b/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx @@ -8,6 +8,7 @@ import { EuiLoadingContent, EuiEmptyPrompt, EuiCode } from '@elastic/eui'; import React, { useMemo } from 'react'; +import type { AddToTimelinePayload } from '../../timelines/get_add_to_timeline'; import { AGENT_STATUS_ERROR, EMPTY_PROMPT, @@ -25,7 +26,7 @@ export interface OsqueryActionProps { defaultValues?: {}; formType: 'steps' | 'simple'; hideAgentsField?: boolean; - addToTimeline?: (payload: { query: [string, string]; isIcon?: true }) => React.ReactElement; + addToTimeline?: (payload: AddToTimelinePayload) => React.ReactElement; } const OsqueryActionComponent: React.FC = ({ diff --git a/x-pack/plugins/osquery/public/timelines/get_add_to_timeline.tsx b/x-pack/plugins/osquery/public/timelines/get_add_to_timeline.tsx new file mode 100644 index 0000000000000..47cfc34679b33 --- /dev/null +++ b/x-pack/plugins/osquery/public/timelines/get_add_to_timeline.tsx @@ -0,0 +1,58 @@ +/* + * 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 { EuiButtonEmpty } from '@elastic/eui'; +import type { ServicesWrapperProps } from '../shared_components/services_wrapper'; + +const TimelineComponent = React.memo((props) => ); +TimelineComponent.displayName = 'TimelineComponent'; + +export interface AddToTimelinePayload { + query: [string, string]; + isIcon?: true; +} + +export const SECURITY_APP_NAME = 'Security'; +export const getAddToTimeline = ( + timelines: ServicesWrapperProps['services']['timelines'], + appName?: string +) => { + if (!timelines || appName !== SECURITY_APP_NAME) { + return; + } + + const { getAddToTimelineButton } = timelines.getHoverActions(); + + return (payload: AddToTimelinePayload) => { + const { + query: [field, value], + isIcon, + } = payload; + + const providerA = { + and: [], + enabled: true, + excluded: false, + id: value, + kqlQuery: '', + name: value, + queryMatch: { + field, + value, + operator: ':' as const, + }, + }; + + return getAddToTimelineButton({ + dataProvider: providerA, + field: value, + ownFocus: false, + ...(isIcon ? { showTooltip: true } : { Component: TimelineComponent }), + }); + }; +}; diff --git a/x-pack/plugins/osquery/public/types.ts b/x-pack/plugins/osquery/public/types.ts index c19dd10802f32..30207b51c4c85 100644 --- a/x-pack/plugins/osquery/public/types.ts +++ b/x-pack/plugins/osquery/public/types.ts @@ -16,10 +16,13 @@ import type { TriggersAndActionsUIPublicPluginSetup, TriggersAndActionsUIPublicPluginStart, } from '@kbn/triggers-actions-ui-plugin/public'; +import type { CasesUiStart, CasesUiSetup } from '@kbn/cases-plugin/public'; +import type { TimelinesUIStart } from '@kbn/timelines-plugin/public'; import type { getLazyLiveQueryField, getLazyOsqueryAction } from './shared_components'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface OsqueryPluginSetup {} + export interface OsqueryPluginStart { OsqueryAction?: ReturnType; LiveQueryField?: ReturnType; @@ -37,10 +40,14 @@ export interface StartPlugins { lens?: LensPublicStart; security: SecurityPluginStart; triggersActionsUi: TriggersAndActionsUIPublicPluginStart; + cases: CasesUiStart; + timelines: TimelinesUIStart; + appName?: string; } export interface SetupPlugins { triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + cases?: CasesUiSetup; } export type StartServices = CoreStart & StartPlugins; diff --git a/x-pack/plugins/osquery/scripts/roles_users/soc_manager/role.json b/x-pack/plugins/osquery/scripts/roles_users/soc_manager/role.json index e427fece0ea01..2c029fe75d3fb 100644 --- a/x-pack/plugins/osquery/scripts/roles_users/soc_manager/role.json +++ b/x-pack/plugins/osquery/scripts/roles_users/soc_manager/role.json @@ -17,6 +17,8 @@ "feature": { "discover": ["read"], "infrastructure": ["read"], + "observabilityCases": ["all"], + "securitySolutionCases": ["all"], "ml": ["all"], "siem": ["all"], "osquery": ["all"], diff --git a/x-pack/plugins/osquery/server/utils/register_features.ts b/x-pack/plugins/osquery/server/utils/register_features.ts index 9627d2a179232..4925b1ea14ad6 100644 --- a/x-pack/plugins/osquery/server/utils/register_features.ts +++ b/x-pack/plugins/osquery/server/utils/register_features.ts @@ -34,7 +34,7 @@ export const registerFeatures = (features: SetupPlugins['features']) => { all: [], read: [], }, - ui: ['write'], + ui: ['read', 'write'], }, read: { api: [`${PLUGIN_ID}-read`], diff --git a/x-pack/plugins/osquery/tsconfig.json b/x-pack/plugins/osquery/tsconfig.json index f9cacf100b691..37070a7af748d 100644 --- a/x-pack/plugins/osquery/tsconfig.json +++ b/x-pack/plugins/osquery/tsconfig.json @@ -30,6 +30,7 @@ // optionalPlugins from ./kibana.json { "path": "../../../src/plugins/home/tsconfig.json" }, + { "path": "../cases/tsconfig.json" }, // requiredBundles from ./kibana.json { "path": "../../../src/plugins/es_ui_shared/tsconfig.json" }, From 102a77f0222789e0ca6c0f9107c2936fa7285173 Mon Sep 17 00:00:00 2001 From: Paulo Henrique Date: Fri, 16 Sep 2022 01:24:14 -0700 Subject: [PATCH 31/79] [8.5][Session view][TTY output] Custom Markers for Terminal Control Bar (#140869) Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/types/process_tree/index.ts | 1 + .../tty_player_controls/index.test.tsx | 39 ++++++ .../components/tty_player_controls/index.tsx | 32 ++--- .../components/tty_player_controls/styles.ts | 5 +- .../tty_player_controls_markers/index.tsx | 105 ++++++++++++++++ .../tty_player_controls_markers/play_head.tsx | 34 ++++++ .../tty_player_controls_markers/styles.ts | 114 ++++++++++++++++++ .../public/hooks/use_eui_theme.ts | 9 ++ 8 files changed, 317 insertions(+), 22 deletions(-) create mode 100644 x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx create mode 100644 x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx create mode 100644 x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts diff --git a/x-pack/plugins/session_view/common/types/process_tree/index.ts b/x-pack/plugins/session_view/common/types/process_tree/index.ts index a2c825cae1433..68f8924abd702 100644 --- a/x-pack/plugins/session_view/common/types/process_tree/index.ts +++ b/x-pack/plugins/session_view/common/types/process_tree/index.ts @@ -76,6 +76,7 @@ export interface ProcessStartMarker { export interface IOFields { text?: string; + max_bytes_per_process_exceeded?: boolean; } export interface ProcessFields { diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx b/x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx index 9417e72186db0..a98cb544b9068 100644 --- a/x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx @@ -99,4 +99,43 @@ describe('TTYPlayerControls component', () => { renderResult.queryByTestId('sessionView:TTYPlayerControlsEnd')?.click(); expect(props.onSeekLine).toHaveBeenCalledWith(10); }); + + it('render output markers', async () => { + renderResult = mockedContext.render(); + expect( + renderResult.queryAllByRole('button', { + name: 'output', + }) + ).toHaveLength(props.processStartMarkers.length); + }); + it('render data_limited markers', async () => { + const processStartMarkers = [ + { event: MOCK_PROCESS_EVENT_START, line: 0 }, + { + event: { + process: { + ...MOCK_PROCESS_EVENT_MIDDLE, + io: { + max_bytes_per_process_exceeded: true, + }, + }, + }, + line: 2, + }, + { event: MOCK_PROCESS_EVENT_END, line: 4 }, + ]; + renderResult = mockedContext.render( + + ); + expect( + renderResult.queryAllByRole('button', { + name: 'output', + }) + ).toHaveLength(2); + expect( + renderResult.queryAllByRole('button', { + name: 'data_limited', + }) + ).toHaveLength(1); + }); }); diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx b/x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx index a298474b77f6b..fffb7493f4c9e 100644 --- a/x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx @@ -8,7 +8,6 @@ import React, { useCallback, ChangeEvent, MouseEvent } from 'react'; import { EuiButtonEmpty, EuiPanel, - EuiRange, EuiFlexGroup, EuiFlexItem, EuiButtonIcon, @@ -26,6 +25,7 @@ import { TTY_START, VIEW_IN_SESSION, } from './translations'; +import { TTYPlayerControlsMarkers } from './tty_player_controls_markers'; export interface TTYPlayerControlsDeps { currentProcessEvent: ProcessEvent | undefined; @@ -71,19 +71,12 @@ export const TTYPlayerControls = ({ }, [linesLength, onSeekLine]); const seekToPrevProcess = useCallback(() => { - let index = findIndex(processStartMarkers, (marker) => { - if (marker.line > currentLine) { - return true; - } - - return false; - }); - - if (index === -1) { - index = processStartMarkers.length - 1; - } + const index = + currentLine > processStartMarkers[processStartMarkers.length - 1].line + ? processStartMarkers.length + : findIndex(processStartMarkers, (marker) => marker.line >= currentLine); - const previousMarker = processStartMarkers[index - 2]; + const previousMarker = processStartMarkers[index - 1]; onSeekLine(previousMarker?.line || 0); }, [processStartMarkers, onSeekLine, currentLine]); @@ -97,7 +90,7 @@ export const TTYPlayerControls = ({ }); const nextMarker = processStartMarkers[nextIndex]; - onSeekLine(nextMarker?.line || linesLength); + onSeekLine(nextMarker?.line || linesLength - 1); }, [processStartMarkers, onSeekLine, linesLength, currentLine]); const handleViewInSession = useCallback(() => { @@ -180,13 +173,12 @@ export const TTYPlayerControls = ({ /> - - + diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts b/x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts index 60e4e3c9b71cd..e3a7b899625da 100644 --- a/x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts @@ -10,7 +10,7 @@ import { CSSObject } from '@emotion/react'; import { useEuiTheme } from '../../hooks'; export const useStyles = () => { - const { euiTheme } = useEuiTheme(); + const { euiTheme, euiVars } = useEuiTheme(); const cached = useMemo(() => { const { size, border } = euiTheme; @@ -19,6 +19,7 @@ export const useStyles = () => { paddingBottom: size.s, borderBottomLeftRadius: border.radius.medium, borderBottomRightRadius: border.radius.medium, + backgroundColor: euiVars.terminalOutputBackground, }; const controlButton: CSSObject = { @@ -29,7 +30,7 @@ export const useStyles = () => { controlsPanel, controlButton, }; - }, [euiTheme]); + }, [euiTheme, euiVars.terminalOutputBackground]); return cached; }; diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx new file mode 100644 index 0000000000000..2eb0c0b3ecf88 --- /dev/null +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx @@ -0,0 +1,105 @@ +/* + * 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, { ChangeEvent, MouseEvent, useMemo } from 'react'; +import { EuiRange } from '@elastic/eui'; +import type { ProcessStartMarker } from '../../../../common/types/process_tree'; +import { useStyles } from './styles'; +import { PlayHead } from './play_head'; + +type Props = { + processStartMarkers: ProcessStartMarker[]; + linesLength: number; + currentLine: number; + onChange: (e: ChangeEvent | MouseEvent) => void; +}; + +type TTYPlayerLineMarker = { + line: number; + type: 'output' | 'data_limited'; +}; + +export const TTYPlayerControlsMarkers = ({ + processStartMarkers, + linesLength, + currentLine, + onChange, +}: Props) => { + const styles = useStyles(); + + const markers = useMemo(() => { + if (processStartMarkers.length < 1) { + return []; + } + return processStartMarkers.map( + ({ event, line }) => + ({ + type: + event.process?.io?.max_bytes_per_process_exceeded === true ? 'data_limited' : 'output', + line, + } as TTYPlayerLineMarker) + ); + }, [processStartMarkers]); + + const markersLength = markers.length; + if (!markersLength) { + return null; + } + + const currentSelected = + currentLine >= markers[markersLength - 1].line + ? markersLength - 1 + : markers.findIndex((marker) => marker.line > currentLine) - 1; + + const currentSelectedType = markers[Math.max(0, currentSelected)].type; + + return ( + <> + + +
+ {markers.map(({ line, type }, idx) => { + const selected = + currentLine >= line && + (idx === markersLength - 1 || currentLine < markers[idx + 1].line); + + // markers positions are absolute, setting higher z-index on the selected one in case there + // are severals next to each other + const style = { + left: `${(line * 100) / linesLength}%`, + zIndex: selected ? 3 : 2, + }; + + return ( + + ); + })} +
+ + ); +}; diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx new file mode 100644 index 0000000000000..6cfd5cb70e62d --- /dev/null +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as React from 'react'; + +interface SVGRProps { + title?: string; + titleId?: string; +} + +/** + * Custom component for replacing the thumb of an input of type range + */ +export const PlayHead = ({ + title, + titleId, + ...props +}: React.SVGProps & SVGRProps) => ( + + {title ? {title} : null} + + +); diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts new file mode 100644 index 0000000000000..03134947d8f7a --- /dev/null +++ b/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts @@ -0,0 +1,114 @@ +/* + * 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 { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { useEuiTheme } from '../../../hooks'; + +type TTYPlayerLineMarkerType = 'output' | 'data_limited'; + +export const useStyles = () => { + const { euiTheme, euiVars } = useEuiTheme(); + const cached = useMemo(() => { + const { border } = euiTheme; + + const markersOverlay: CSSObject = { + top: 5, + zIndex: 2, + position: 'absolute', + width: '100%', + }; + + const getMarkerBackgroundColor = (type: TTYPlayerLineMarkerType, selected: boolean) => { + if (type === 'data_limited') { + return euiVars.terminalOutputMarkerWarning; + } + if (selected) { + return euiVars.terminalOutputMarkerAccent; + } + return euiVars.euiColorVis1; + }; + + const marker = (type: TTYPlayerLineMarkerType, selected: boolean): CSSObject => ({ + fontSize: 0, + overflow: 'hidden', + position: 'absolute', + padding: 0, + width: 3, + height: 12, + backgroundColor: getMarkerBackgroundColor(type, selected), + border: `${border.width.thick} solid ${euiVars.terminalOutputBackground}`, + borderRadius: border.radius.small, + boxSizing: 'content-box', + top: 0, + pointerEvents: 'none', + marginLeft: '-3.5px', + }); + + const playHeadThumb: CSSObject = { + cursor: 'pointer', + marginTop: -20, + width: 9, + height: 30, + marginLeft: -4.5, + }; + + const customThumb: CSSObject = { + ...playHeadThumb, + border: 'none', + boxShadow: 'none', + backgroundColor: 'transparent', + borderRadius: 0, + opacity: 0, + appearance: 'none', + }; + + // Custom css for input type range, overrinding some options of EuiRange + // The custom thumb below is visually hidden and shares the same css properties with the playHead component + // Source (Chrome): https://developer.mozilla.org/en-US/docs/Web/CSS/::-webkit-slider-thumb + // Source (Firefox): https://developer.mozilla.org/en-US/docs/Web/CSS/::-moz-range-thumb + const range: CSSObject = { + height: 25, + '&:focus:not(:focus-visible)::-webkit-slider-thumb': { + boxShadow: 'none', + backgroundColor: 'transparent', + }, + "input[type='range']::-webkit-slider-thumb": customThumb, + "input[type='range']::-moz-range-thumb": customThumb, + '.euiRangeHighlight__progress': { + backgroundColor: euiVars.euiColorVis0_behindText, + }, + '.euiRangeSlider:focus ~ .euiRangeHighlight .euiRangeHighlight__progress': { + backgroundColor: euiVars.euiColorVis0_behindText, + }, + '.euiRangeSlider:focus:not(:focus-visible) ~ .euiRangeHighlight .euiRangeHighlight__progress': + { backgroundColor: euiVars.euiColorVis0_behindText }, + '.euiRangeTrack::after': { + background: euiVars.terminalOutputSliderBackground, + }, + }; + + const playHead = (type: TTYPlayerLineMarkerType): CSSObject => ({ + ...playHeadThumb, + position: 'absolute', + top: 16, + fill: + type === 'data_limited' + ? euiVars.terminalOutputMarkerWarning + : euiVars.terminalOutputMarkerAccent, + }); + + return { + marker, + markersOverlay, + range, + playHead, + }; + }, [euiTheme, euiVars]); + + return cached; +}; diff --git a/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts b/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts index 02f7dd479d2ac..a62cab176657b 100644 --- a/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts +++ b/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts @@ -14,6 +14,10 @@ type ExtraEuiVars = { // eslint-disable-next-line @typescript-eslint/naming-convention euiColorVis6_asText: string; buttonsBackgroundNormalDefaultPrimary: string; + terminalOutputBackground: string; + terminalOutputMarkerAccent: string; + terminalOutputMarkerWarning: string; + terminalOutputSliderBackground: string; }; type EuiVars = typeof euiLightVars & ExtraEuiVars; type EuiThemeReturn = ReturnType & { euiVars: EuiVars }; @@ -31,6 +35,11 @@ export const useEuiTheme = (...props: EuiThemeProps): EuiThemeReturn => { // eslint-disable-next-line @typescript-eslint/naming-convention euiColorVis6_asText: shade(themeVars.euiColorVis6, 0.335), buttonsBackgroundNormalDefaultPrimary: '#006DE4', + // Terminal Output Colors don't change with the theme + terminalOutputBackground: '#1d1e23', + terminalOutputMarkerAccent: euiLightVars.euiColorAccent, + terminalOutputMarkerWarning: euiDarkVars.euiColorWarning, + terminalOutputSliderBackground: euiLightVars.euiColorDarkestShade, }; return { From 78f00e12af226183dfd2367dc46004dc803d1027 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Fri, 16 Sep 2022 04:55:20 -0400 Subject: [PATCH 32/79] Fixing basic test (#140850) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../security_and_spaces/tests/common/index.ts | 1 - .../security_and_spaces/tests/trial/index.ts | 1 + .../tests/{common => trial}/user_profiles/get_current.ts | 3 +-- 3 files changed, 2 insertions(+), 3 deletions(-) rename x-pack/test/cases_api_integration/security_and_spaces/tests/{common => trial}/user_profiles/get_current.ts (99%) diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts index 5bafda42115c8..4b709998f1a2e 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts @@ -38,7 +38,6 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./metrics/get_case_metrics_actions')); loadTestFile(require.resolve('./metrics/get_case_metrics_connectors')); loadTestFile(require.resolve('./metrics/get_cases_metrics')); - loadTestFile(require.resolve('./user_profiles/get_current')); /** * Internal routes diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts index 1d6e0c373c243..b9ee78736e3f3 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts @@ -33,6 +33,7 @@ export default ({ loadTestFile, getService }: FtrProviderContext): void => { loadTestFile(require.resolve('./configure')); // sub privileges are only available with a license above basic loadTestFile(require.resolve('./delete_sub_privilege')); + loadTestFile(require.resolve('./user_profiles/get_current')); // Internal routes loadTestFile(require.resolve('./internal/suggest_user_profiles')); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_profiles/get_current.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/user_profiles/get_current.ts similarity index 99% rename from x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_profiles/get_current.ts rename to x-pack/test/cases_api_integration/security_and_spaces/tests/trial/user_profiles/get_current.ts index 5478eab0bdbd6..9e070c3f4ffc9 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_profiles/get_current.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/user_profiles/get_current.ts @@ -30,8 +30,7 @@ export default function ({ getService }: FtrProviderContext) { const supertestWithoutAuth = getService('supertestWithoutAuth'); const es = getService('es'); - // Failing: See https://github.com/elastic/kibana/issues/140812 - describe.skip('user_profiles', () => { + describe('user_profiles', () => { describe('get_current', () => { let headers: Record; let superUserWithProfile: User; From 0bfc3fd41adbbd56effe4d90ef261903b1de3da8 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 16 Sep 2022 10:31:41 +0100 Subject: [PATCH 33/79] [ML] Log pattern analysis UI (#139005) * [ML] Log caegorization UI POC * improvements * code structure changes * further refactoring * fixes after merge with main * fixes after merging with main * adding table pagination * catching category request errors * small refactor * fixes after merge with main * further fixes are merge with main * showing errors in toast * updating breadcrumbs * translations and removing unused files * changing case of side nav items * translations * updating actions * fixing unused variable * translations * adding comment * small changes based on review * improving search request type * capitalizing discover * changes based on review * fixing chart tooltip * fixing examples from fields containing dots * fixing breadcrumbs * [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> --- .../common/api/log_categorization/index.ts | 9 + .../common/api/log_categorization/schema.ts | 20 ++ .../public/application/utils/error_utils.ts | 6 + .../document_count_chart.tsx | 17 +- .../document_count_content.tsx | 8 +- .../category_table/category_table.tsx | 270 ++++++++++++++ .../category_table/index.ts | 9 + .../category_table/use_table_state.ts | 46 +++ .../document_count_chart.tsx | 82 +++++ .../components/log_categorization/index.ts | 13 + .../log_categorization_app_state.tsx | 31 ++ .../log_categorization_page.tsx | 333 ++++++++++++++++++ .../use_categorize_request.ts | 201 +++++++++++ .../log_categorization/use_discover_links.ts | 76 ++++ x-pack/plugins/aiops/public/hooks/use_data.ts | 9 +- x-pack/plugins/aiops/public/index.ts | 2 +- .../aiops/public/shared_lazy_components.tsx | 25 +- x-pack/plugins/aiops/server/plugin.ts | 5 +- x-pack/plugins/ml/common/constants/locator.ts | 2 + x-pack/plugins/ml/common/types/locator.ts | 4 +- .../application/aiops/log_categorization.tsx | 66 ++++ .../components/ml_page/side_nav.tsx | 13 +- .../public/application/routing/breadcrumbs.ts | 32 +- .../routes/aiops/explain_log_rate_spikes.tsx | 6 +- .../application/routing/routes/aiops/index.ts | 1 + .../routes/aiops/log_categorization.tsx | 63 ++++ .../routes/new_job/index_or_search.tsx | 38 +- .../plugins/ml/public/locator/ml_locator.ts | 2 + 28 files changed, 1362 insertions(+), 27 deletions(-) create mode 100644 x-pack/plugins/aiops/common/api/log_categorization/index.ts create mode 100644 x-pack/plugins/aiops/common/api/log_categorization/schema.ts create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/category_table/index.ts create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/index.ts create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts create mode 100644 x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts create mode 100644 x-pack/plugins/ml/public/application/aiops/log_categorization.tsx create mode 100644 x-pack/plugins/ml/public/application/routing/routes/aiops/log_categorization.tsx diff --git a/x-pack/plugins/aiops/common/api/log_categorization/index.ts b/x-pack/plugins/aiops/common/api/log_categorization/index.ts new file mode 100644 index 0000000000000..cff9bb82c6d83 --- /dev/null +++ b/x-pack/plugins/aiops/common/api/log_categorization/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { categorizeSchema } from './schema'; +export type { CategorizeSchema } from './schema'; diff --git a/x-pack/plugins/aiops/common/api/log_categorization/schema.ts b/x-pack/plugins/aiops/common/api/log_categorization/schema.ts new file mode 100644 index 0000000000000..5c8387bfe5995 --- /dev/null +++ b/x-pack/plugins/aiops/common/api/log_categorization/schema.ts @@ -0,0 +1,20 @@ +/* + * 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 { schema, TypeOf } from '@kbn/config-schema'; + +export const categorizeSchema = schema.object({ + index: schema.string(), + field: schema.string(), + timeField: schema.string(), + to: schema.number(), + from: schema.number(), + query: schema.any(), + intervalMs: schema.maybe(schema.number()), +}); + +export type CategorizeSchema = TypeOf; diff --git a/x-pack/plugins/aiops/public/application/utils/error_utils.ts b/x-pack/plugins/aiops/public/application/utils/error_utils.ts index ab2843ae6c3e2..f1f1c34dd2959 100644 --- a/x-pack/plugins/aiops/public/application/utils/error_utils.ts +++ b/x-pack/plugins/aiops/public/application/utils/error_utils.ts @@ -185,3 +185,9 @@ export const extractErrorProperties = (error: ErrorType): AiOpsErrorObject => { message: '', }; }; + +export const extractErrorMessage = (error: ErrorType): string => { + // extract only the error message within the response error coming from Kibana, Elasticsearch, and our own ML messages + const errorObj = extractErrorProperties(error); + return errorObj.message; +}; diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx b/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx index 5f024ac393c50..1989316b15ec1 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx +++ b/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx @@ -27,7 +27,6 @@ import { DualBrush, DualBrushAnnotation } from '@kbn/aiops-components'; import { getSnappedWindowParameters, getWindowParameters } from '@kbn/aiops-utils'; import type { WindowParameters } from '@kbn/aiops-utils'; import { MULTILAYER_TIME_AXIS_STYLE } from '@kbn/charts-plugin/common'; -import type { ChangePoint } from '@kbn/ml-agg-utils'; import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; @@ -48,14 +47,14 @@ export interface DocumentCountChartPoint { } interface DocumentCountChartProps { - brushSelectionUpdateHandler: (d: WindowParameters, force: boolean) => void; + brushSelectionUpdateHandler?: (d: WindowParameters, force: boolean) => void; width?: number; chartPoints: DocumentCountChartPoint[]; chartPointsSplit?: DocumentCountChartPoint[]; timeRangeEarliest: number; timeRangeLatest: number; interval: number; - changePoint?: ChangePoint; + chartPointsSplitLabel: string; isBrushCleared: boolean; } @@ -100,7 +99,7 @@ export const DocumentCountChart: FC = ({ timeRangeEarliest, timeRangeLatest, interval, - changePoint, + chartPointsSplitLabel, isBrushCleared, }) => { const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext(); @@ -125,8 +124,6 @@ export const DocumentCountChart: FC = ({ } ); - const splitSeriesName = `${changePoint?.fieldName}:${changePoint?.fieldValue}`; - // TODO Let user choose between ZOOM and BRUSH mode. const [viewMode] = useState(VIEW_MODE.BRUSH); @@ -198,6 +195,9 @@ export const DocumentCountChart: FC = ({ }; const onElementClick: ElementClickListener = ([elementData]) => { + if (brushSelectionUpdateHandler === undefined) { + return; + } const startRange = (elementData as XYChartElementEvent)[0].x; const range = { @@ -245,6 +245,9 @@ export const DocumentCountChart: FC = ({ }, [isBrushCleared, originalWindowParameters]); function onWindowParametersChange(wp: WindowParameters, wpPx: WindowParameters) { + if (brushSelectionUpdateHandler === undefined) { + return; + } setWindowParameters(wp); setWindowParametersAsPixels(wpPx); brushSelectionUpdateHandler(wp, false); @@ -360,7 +363,7 @@ export const DocumentCountChart: FC = ({ {chartPointsSplit && ( = ({ const bucketTimestamps = Object.keys(documentCountStats?.buckets ?? {}).map((time) => +time); const timeRangeEarliest = min(bucketTimestamps); const timeRangeLatest = max(bucketTimestamps); + const chartPointsSplitLabel = useMemo( + () => `${changePoint?.fieldName}:${changePoint?.fieldValue}`, + [changePoint] + ); if ( documentCountStats === undefined || @@ -118,7 +122,7 @@ export const DocumentCountContent: FC = ({ timeRangeEarliest={timeRangeEarliest} timeRangeLatest={timeRangeLatest} interval={documentCountStats.interval} - changePoint={changePoint} + chartPointsSplitLabel={chartPointsSplitLabel} isBrushCleared={isBrushCleared} /> )} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx new file mode 100644 index 0000000000000..1aa613962ff9e --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx @@ -0,0 +1,270 @@ +/* + * 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, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { TimefilterContract } from '@kbn/data-plugin/public'; +import { + EuiButton, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiInMemoryTable, + EuiBasicTableColumn, + EuiCode, + EuiText, + EuiTableSelectionType, +} from '@elastic/eui'; + +import { useDiscoverLinks } from '../use_discover_links'; +import { MiniHistogram } from '../../mini_histogram'; +import { useEuiTheme } from '../../../hooks/use_eui_theme'; +import type { AiOpsIndexBasedAppState } from '../../explain_log_rate_spikes/explain_log_rate_spikes_app_state'; +import type { EventRate, Category, SparkLinesPerCategory } from '../use_categorize_request'; +import { useTableState } from './use_table_state'; + +const QUERY_MODE = { + INCLUDE: 'should', + EXCLUDE: 'must_not', +} as const; +export type QueryMode = typeof QUERY_MODE[keyof typeof QUERY_MODE]; + +interface Props { + categories: Category[]; + sparkLines: SparkLinesPerCategory; + eventRate: EventRate; + dataViewId: string; + selectedField: string | undefined; + timefilter: TimefilterContract; + aiopsListState: Required; + pinnedCategory: Category | null; + setPinnedCategory: (category: Category | null) => void; + selectedCategory: Category | null; + setSelectedCategory: (category: Category | null) => void; +} + +export const CategoryTable: FC = ({ + categories, + sparkLines, + eventRate, + dataViewId, + selectedField, + timefilter, + aiopsListState, + pinnedCategory, + setPinnedCategory, + selectedCategory, + setSelectedCategory, +}) => { + const euiTheme = useEuiTheme(); + const { openInDiscoverWithFilter } = useDiscoverLinks(); + const [selectedCategories, setSelectedCategories] = useState([]); + const { onTableChange, pagination, sorting } = useTableState(categories ?? [], 'key'); + + const openInDiscover = (mode: QueryMode, category?: Category) => { + const timefilterActiveBounds = timefilter.getActiveBounds(); + if (timefilterActiveBounds === undefined || selectedField === undefined) { + return; + } + + openInDiscoverWithFilter( + dataViewId, + selectedField, + selectedCategories, + aiopsListState, + timefilterActiveBounds, + mode, + category + ); + }; + + const columns: Array> = [ + { + field: 'count', + name: i18n.translate('xpack.aiops.logCategorization.column.count', { + defaultMessage: 'Count', + }), + sortable: true, + width: '80px', + }, + { + field: 'count', + name: i18n.translate('xpack.aiops.logCategorization.column.logRate', { + defaultMessage: 'Log rate', + }), + sortable: true, + width: '100px', + render: (_, { key }) => { + const sparkLine = sparkLines[key]; + if (sparkLine === undefined) { + return null; + } + const histogram = eventRate.map((e) => ({ + doc_count_overall: e.docCount, + doc_count_change_point: sparkLine[e.key], + key: e.key, + key_as_string: `${e.key}`, + })); + + return ( + + ); + }, + }, + { + field: 'examples', + name: i18n.translate('xpack.aiops.logCategorization.column.examples', { + defaultMessage: 'Examples', + }), + sortable: true, + style: { display: 'block' }, + render: (examples: string[]) => ( +
+ {examples.map((e) => ( + <> + + + {e} + + + + + ))} +
+ ), + }, + { + name: 'Actions', + width: '60px', + actions: [ + { + name: i18n.translate('xpack.aiops.logCategorization.showInDiscover', { + defaultMessage: 'Show these in Discover', + }), + description: i18n.translate('xpack.aiops.logCategorization.showInDiscover', { + defaultMessage: 'Show these in Discover', + }), + icon: 'discoverApp', + type: 'icon', + onClick: (category) => openInDiscover(QUERY_MODE.INCLUDE, category), + }, + { + name: i18n.translate('xpack.aiops.logCategorization.filterOutInDiscover', { + defaultMessage: 'Filter out in Discover', + }), + description: i18n.translate('xpack.aiops.logCategorization.filterOutInDiscover', { + defaultMessage: 'Filter out in Discover', + }), + icon: 'filter', + type: 'icon', + onClick: (category) => openInDiscover(QUERY_MODE.EXCLUDE, category), + }, + // Disabled for now + // { + // name: i18n.translate('xpack.aiops.logCategorization.openInDataViz', { + // defaultMessage: 'Open in data visualizer', + // }), + // icon: 'stats', + // type: 'icon', + // onClick: () => {}, + // }, + ], + }, + ] as Array>; + + const selectionValue: EuiTableSelectionType | undefined = { + selectable: () => true, + onSelectionChange: (selectedItems) => setSelectedCategories(selectedItems), + }; + + const getRowStyle = (category: Category) => { + if ( + pinnedCategory && + pinnedCategory.key === category.key && + pinnedCategory.key === category.key + ) { + return { + backgroundColor: 'rgb(227,240,249,0.37)', + }; + } + + if ( + selectedCategory && + selectedCategory.key === category.key && + selectedCategory.key === category.key + ) { + return { + backgroundColor: euiTheme.euiColorLightestShade, + }; + } + + return { + backgroundColor: 'white', + }; + }; + + return ( + <> + {selectedCategories.length > 0 ? ( + <> + + + openInDiscover(QUERY_MODE.INCLUDE)}> + + + + + openInDiscover(QUERY_MODE.EXCLUDE)}> + + + + + + ) : null} + + compressed + items={categories} + columns={columns} + isSelectable={true} + selection={selectionValue} + itemId="key" + onTableChange={onTableChange} + pagination={pagination} + sorting={sorting} + rowProps={(category) => { + return { + onClick: () => { + if (category.key === pinnedCategory?.key) { + setPinnedCategory(null); + } else { + setPinnedCategory(category); + } + }, + onMouseEnter: () => { + setSelectedCategory(category); + }, + onMouseLeave: () => { + setSelectedCategory(null); + }, + style: getRowStyle(category), + }; + }} + /> + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/index.ts b/x-pack/plugins/aiops/public/components/log_categorization/category_table/index.ts new file mode 100644 index 0000000000000..65b93b2c1eb44 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { CategoryTable } from './category_table'; +export type { QueryMode } from './category_table'; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts new file mode 100644 index 0000000000000..c67fe7d28fa9b --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts @@ -0,0 +1,46 @@ +/* + * 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 { useState } from 'react'; +import { EuiInMemoryTable, Direction, Pagination } from '@elastic/eui'; + +export function useTableState(items: T[], initialSortField: string) { + const [pageIndex, setPageIndex] = useState(0); + const [pageSize, setPageSize] = useState(10); + const [sortField, setSortField] = useState(initialSortField); + const [sortDirection, setSortDirection] = useState('asc'); + + const onTableChange: EuiInMemoryTable['onTableChange'] = ({ + page = { index: 0, size: 10 }, + sort = { field: sortField, direction: sortDirection }, + }) => { + const { index, size } = page; + setPageIndex(index); + setPageSize(size); + + const { field, direction } = sort; + setSortField(field as string); + setSortDirection(direction as Direction); + }; + + const pagination: Pagination = { + pageIndex, + pageSize, + totalItemCount: (items ?? []).length, + pageSizeOptions: [10, 20, 50], + showPerPageOptions: true, + }; + + const sorting = { + sort: { + field: sortField, + direction: sortDirection, + }, + }; + + return { onTableChange, pagination, sorting, setPageIndex }; +} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx b/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx new file mode 100644 index 0000000000000..4ec9ddd68209e --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.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 React, { FC, useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; +import { DocumentCountChart as DocumentCountChartRoot } from '../document_count_content/document_count_chart'; +import { TotalCountHeader } from '../document_count_content/total_count_header'; +import type { Category, SparkLinesPerCategory } from './use_categorize_request'; +import type { EventRate } from './use_categorize_request'; +import { DocumentCountStats } from '../../get_document_stats'; + +interface Props { + totalCount: number; + pinnedCategory: Category | null; + selectedCategory: Category | null; + eventRate: EventRate; + sparkLines: SparkLinesPerCategory; + documentCountStats?: DocumentCountStats; +} + +export const DocumentCountChart: FC = ({ + eventRate, + sparkLines, + totalCount, + pinnedCategory, + selectedCategory, + documentCountStats, +}) => { + const chartPointsSplitLabel = i18n.translate( + 'xpack.aiops.logCategorization.chartPointsSplitLabel', + { + defaultMessage: 'Selected category', + } + ); + const chartPoints = useMemo(() => { + const category = selectedCategory ?? pinnedCategory ?? null; + return eventRate.map(({ key, docCount }) => { + let value = docCount; + if (category && sparkLines[category.key] && sparkLines[category.key][key]) { + value -= sparkLines[category.key][key]; + } + return { time: key, value }; + }); + }, [eventRate, pinnedCategory, selectedCategory, sparkLines]); + + const chartPointsSplit = useMemo(() => { + const category = selectedCategory ?? pinnedCategory ?? null; + return category !== null + ? eventRate.map(({ key }) => { + const value = + sparkLines && sparkLines[category.key] && sparkLines[category.key][key] + ? sparkLines[category.key][key] + : 0; + return { time: key, value }; + }) + : undefined; + }, [eventRate, pinnedCategory, selectedCategory, sparkLines]); + + if (documentCountStats?.interval === undefined) { + return null; + } + + return ( + <> + + + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/index.ts b/x-pack/plugins/aiops/public/components/log_categorization/index.ts new file mode 100644 index 0000000000000..748a0f8486420 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/index.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type { LogCategorizationAppStateProps } from './log_categorization_app_state'; +import { LogCategorizationAppState } from './log_categorization_app_state'; + +// required for dynamic import using React.lazy() +// eslint-disable-next-line import/no-default-export +export default LogCategorizationAppState; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx new file mode 100644 index 0000000000000..1a546f5ec60bf --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { FC } from 'react'; +import type { SavedSearch } from '@kbn/discover-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { LogCategorizationPage } from './log_categorization_page'; +import { SavedSearchSavedObject } from '../../application/utils/search_utils'; +import type { AiopsAppDependencies } from '../../hooks/use_aiops_app_context'; +import { AiopsAppContext } from '../../hooks/use_aiops_app_context'; + +export interface LogCategorizationAppStateProps { + dataView: DataView; + savedSearch: SavedSearch | SavedSearchSavedObject | null; + appDependencies: AiopsAppDependencies; +} + +export const LogCategorizationAppState: FC = ({ + dataView, + savedSearch, + appDependencies, +}) => { + return ( + + + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx new file mode 100644 index 0000000000000..6bc90db0a7b71 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx @@ -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 React, { FC, useState, useEffect, useCallback, useMemo } from 'react'; +import type { SavedSearch } from '@kbn/discover-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { Filter, Query } from '@kbn/es-query'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiButton, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiPageBody, + EuiPageContentHeader_Deprecated as EuiPageContentHeader, + EuiPageContentHeaderSection_Deprecated as EuiPageContentHeaderSection, + EuiTitle, + EuiComboBox, + EuiComboBoxOptionOption, + EuiFormRow, + EuiLoadingContent, +} from '@elastic/eui'; + +import { FullTimeRangeSelector } from '../full_time_range_selector'; +import { DatePickerWrapper } from '../date_picker_wrapper'; +import { useData } from '../../hooks/use_data'; +import { SearchPanel } from '../search_panel'; +import type { + SearchQueryLanguage, + SavedSearchSavedObject, +} from '../../application/utils/search_utils'; +import { useUrlState } from '../../hooks/use_url_state'; +import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; +import { restorableDefaults } from '../explain_log_rate_spikes/explain_log_rate_spikes_app_state'; +import { useCategorizeRequest } from './use_categorize_request'; +import type { EventRate, Category, SparkLinesPerCategory } from './use_categorize_request'; +import { CategoryTable } from './category_table'; +import { DocumentCountChart } from './document_count_chart'; + +export interface LogCategorizationPageProps { + dataView: DataView; + savedSearch: SavedSearch | SavedSearchSavedObject | null; +} + +const BAR_TARGET = 20; + +export const LogCategorizationPage: FC = ({ + dataView, + savedSearch, +}) => { + const { + notifications: { toasts }, + } = useAiopsAppContext(); + + const { runCategorizeRequest, cancelRequest } = useCategorizeRequest(); + const [aiopsListState, setAiopsListState] = useState(restorableDefaults); + const [globalState, setGlobalState] = useUrlState('_g'); + const [selectedField, setSelectedField] = useState(); + const [selectedCategory, setSelectedCategory] = useState(null); + const [categories, setCategories] = useState(null); + const [currentSavedSearch, setCurrentSavedSearch] = useState(savedSearch); + const [loading, setLoading] = useState(false); + const [totalCount, setTotalCount] = useState(0); + const [eventRate, setEventRate] = useState([]); + const [pinnedCategory, setPinnedCategory] = useState(null); + const [sparkLines, setSparkLines] = useState({}); + + useEffect( + function cancelRequestOnLeave() { + return () => { + cancelRequest(); + }; + }, + [cancelRequest] + ); + + const setSearchParams = useCallback( + (searchParams: { + searchQuery: Query['query']; + searchString: Query['query']; + queryLanguage: SearchQueryLanguage; + filters: Filter[]; + }) => { + // When the user loads saved search and then clear or modify the query + // we should remove the saved search and replace it with the index pattern id + if (currentSavedSearch !== null) { + setCurrentSavedSearch(null); + } + + setAiopsListState({ + ...aiopsListState, + searchQuery: searchParams.searchQuery, + searchString: searchParams.searchString, + searchQueryLanguage: searchParams.queryLanguage, + filters: searchParams.filters, + }); + }, + [currentSavedSearch, aiopsListState, setAiopsListState] + ); + + const { + documentStats, + timefilter, + earliest, + latest, + searchQueryLanguage, + searchString, + searchQuery, + intervalMs, + } = useData( + { currentDataView: dataView, currentSavedSearch }, + aiopsListState, + setGlobalState, + undefined, + BAR_TARGET + ); + + useEffect(() => { + if (globalState?.time !== undefined) { + timefilter.setTime({ + from: globalState.time.from, + to: globalState.time.to, + }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(globalState?.time), timefilter]); + + const fields = useMemo( + () => + dataView.fields + .filter( + ({ displayName, esTypes, count }) => + esTypes && esTypes.includes('text') && !['_id', '_index'].includes(displayName) + ) + .map(({ displayName }) => ({ + label: displayName, + })), + [dataView] + ); + + useEffect( + function setSingleFieldAsSelected() { + if (fields.length === 1) { + setSelectedField(fields[0].label); + } + }, + [fields] + ); + + useEffect(() => { + if (documentStats.documentCountStats?.buckets) { + setEventRate( + Object.entries(documentStats.documentCountStats.buckets).map(([key, docCount]) => ({ + key: +key, + docCount, + })) + ); + setTotalCount(documentStats.totalCount); + } + }, [documentStats, earliest, latest, searchQueryLanguage, searchString, searchQuery]); + + const loadCategories = useCallback(async () => { + setLoading(true); + setCategories(null); + const { title: index, timeFieldName: timeField } = dataView; + + if (selectedField === undefined || timeField === undefined) { + return; + } + + cancelRequest(); + + try { + const resp = await runCategorizeRequest( + index, + selectedField, + timeField, + earliest, + latest, + searchQuery, + intervalMs + ); + + setCategories(resp.categories); + setSparkLines(resp.sparkLinesPerCategory); + } catch (error) { + toasts.addError(error, { + title: i18n.translate('xpack.aiops.logCategorization.errorLoadingCategories', { + defaultMessage: 'Error loading categories', + }), + }); + } + + setLoading(false); + }, [ + selectedField, + dataView, + searchQuery, + earliest, + latest, + runCategorizeRequest, + cancelRequest, + intervalMs, + toasts, + ]); + + const onFieldChange = (value: EuiComboBoxOptionOption[] | undefined) => { + setSelectedField(value && value.length ? value[0].label : undefined); + }; + + return ( + + + + + +
+ +

{dataView.getName()}

+
+
+
+ + + {dataView.timeFieldName !== undefined && ( + + + + )} + + + + +
+
+
+ + + + + + + + + + + + + + + {loading === false ? ( + { + loadCategories(); + }} + > + + + ) : ( + cancelRequest()}>Cancel + )} + + + + + + {eventRate.length ? ( + <> + + + + + ) : null} + {loading === true ? : null} + {categories !== null ? ( + + ) : null} +
+ ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts b/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts new file mode 100644 index 0000000000000..b687d5a0110d9 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts @@ -0,0 +1,201 @@ +/* + * 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 { cloneDeep, get } from 'lodash'; +import { useRef, useCallback } from 'react'; +import { isCompleteResponse, isErrorResponse } from '@kbn/data-plugin/public'; +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; + +import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; + +const CATEGORY_LIMIT = 1000; +const EXAMPLE_LIMIT = 1; + +interface CatResponse { + rawResponse: { + aggregations: { + categories: { + buckets: Array<{ + key: string; + doc_count: number; + hit: { hits: { hits: Array<{ _source: { message: string } }> } }; + sparkline: { buckets: Array<{ key_as_string: string; key: number; doc_count: number }> }; + }>; + }; + }; + }; +} + +export interface Category { + key: string; + count: number; + examples: string[]; + sparkline?: Array<{ doc_count: number; key: number; key_as_string: string }>; +} + +export type EventRate = Array<{ + key: number; + docCount: number; +}>; + +export type SparkLinesPerCategory = Record>; + +export function useCategorizeRequest() { + const { data } = useAiopsAppContext(); + + const abortController = useRef(new AbortController()); + + const runCategorizeRequest = useCallback( + ( + index: string, + field: string, + timeField: string, + from: number | undefined, + to: number | undefined, + query: QueryDslQueryContainer, + intervalMs?: number + ): Promise<{ categories: Category[]; sparkLinesPerCategory: SparkLinesPerCategory }> => { + return new Promise((resolve, reject) => { + data.search + .search, CatResponse>( + createCategoryRequest(index, field, timeField, from, to, query, intervalMs), + { abortSignal: abortController.current.signal } + ) + .subscribe({ + next: (result) => { + if (isCompleteResponse(result)) { + resolve(processCategoryResults(result, field)); + } else if (isErrorResponse(result)) { + reject(result); + } else { + // partial results + // Ignore partial results for now. + // An issue with the search function means partial results are not being returned correctly. + } + }, + error: (error) => { + if (error.name === 'AbortError') { + return resolve({ categories: [], sparkLinesPerCategory: {} }); + } + reject(error); + }, + }); + }); + }, + [data.search] + ); + + const cancelRequest = useCallback(() => { + abortController.current.abort(); + abortController.current = new AbortController(); + }, []); + + return { runCategorizeRequest, cancelRequest }; +} + +function createCategoryRequest( + index: string, + field: string, + timeField: string, + from: number | undefined, + to: number | undefined, + queryIn: QueryDslQueryContainer, + intervalMs?: number +) { + const query = cloneDeep(queryIn); + + if (query.bool === undefined) { + query.bool = {}; + } + if (query.bool.must === undefined) { + query.bool.must = []; + if (query.match_all !== undefined) { + query.bool.must.push({ match_all: query.match_all }); + delete query.match_all; + } + } + if (query.multi_match !== undefined) { + query.bool.should = { + multi_match: query.multi_match, + }; + delete query.multi_match; + } + + (query.bool.must as QueryDslQueryContainer[]).push({ + range: { + [timeField]: { + gte: from, + lte: to, + format: 'epoch_millis', + }, + }, + }); + return { + params: { + index, + size: 0, + body: { + query, + aggs: { + categories: { + categorize_text: { + field, + size: CATEGORY_LIMIT, + }, + aggs: { + hit: { + top_hits: { + size: EXAMPLE_LIMIT, + sort: [timeField], + _source: field, + }, + }, + ...(intervalMs + ? { + sparkline: { + date_histogram: { + field: timeField, + fixed_interval: `${intervalMs}ms`, + }, + }, + } + : {}), + }, + }, + }, + }, + }, + }; +} + +function processCategoryResults(result: CatResponse, field: string) { + const sparkLinesPerCategory: SparkLinesPerCategory = {}; + + if (result.rawResponse.aggregations === undefined) { + throw new Error('processCategoryResults failed, did not return aggregations.'); + } + + const categories: Category[] = result.rawResponse.aggregations.categories.buckets.map((b) => { + sparkLinesPerCategory[b.key] = + b.sparkline === undefined + ? {} + : b.sparkline.buckets.reduce>((acc2, cur2) => { + acc2[cur2.key] = cur2.doc_count; + return acc2; + }, {}); + + return { + key: b.key, + count: b.doc_count, + examples: b.hit.hits.hits.map((h) => get(h._source, field)), + }; + }); + return { + categories, + sparkLinesPerCategory, + }; +} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts b/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts new file mode 100644 index 0000000000000..8a1c438199878 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.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 rison from 'rison-node'; +import moment from 'moment'; + +import type { TimeRangeBounds } from '@kbn/data-plugin/common'; +import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; +import type { Category } from './use_categorize_request'; +import type { QueryMode } from './category_table'; +import type { AiOpsIndexBasedAppState } from '../explain_log_rate_spikes/explain_log_rate_spikes_app_state'; + +export function useDiscoverLinks() { + const { + http: { basePath }, + } = useAiopsAppContext(); + + const openInDiscoverWithFilter = ( + index: string, + field: string, + selection: Category[], + aiopsListState: Required, + timefilterActiveBounds: TimeRangeBounds, + mode: QueryMode, + category?: Category + ) => { + const selectedRows = category === undefined ? selection : [category]; + + const _g = rison.encode({ + time: { + from: moment(timefilterActiveBounds.min?.valueOf()).toISOString(), + to: moment(timefilterActiveBounds.max?.valueOf()).toISOString(), + }, + }); + + const _a = rison.encode({ + filters: [ + ...aiopsListState.filters, + { + query: { + bool: { + [mode]: selectedRows.map(({ key: query }) => ({ + match: { + [field]: { + auto_generate_synonyms_phrase_query: false, + fuzziness: 0, + operator: 'and', + query, + }, + }, + })), + }, + }, + }, + ], + index, + interval: 'auto', + query: { + language: aiopsListState.searchQueryLanguage, + query: aiopsListState.searchString, + }, + }); + + let path = basePath.get(); + path += '/app/discover#/'; + path += '?_g=' + _g; + path += '&_a=' + encodeURIComponent(_a); + window.open(path, '_blank'); + }; + + return { openInDiscoverWithFilter }; +} diff --git a/x-pack/plugins/aiops/public/hooks/use_data.ts b/x-pack/plugins/aiops/public/hooks/use_data.ts index 471196334e15c..9ea8f9bd2335b 100644 --- a/x-pack/plugins/aiops/public/hooks/use_data.ts +++ b/x-pack/plugins/aiops/public/hooks/use_data.ts @@ -29,6 +29,8 @@ import { useTimefilter } from './use_time_filter'; import { useDocumentCountStats } from './use_document_count_stats'; import type { Dictionary } from './use_url_state'; +const DEFAULT_BAR_TARGET = 75; + export const useData = ( { currentDataView, @@ -36,7 +38,8 @@ export const useData = ( }: { currentDataView: DataView; currentSavedSearch: SavedSearch | SavedSearchSavedObject | null }, aiopsListState: AiOpsIndexBasedAppState, onUpdate: (params: Dictionary) => void, - selectedChangePoint?: ChangePoint + selectedChangePoint?: ChangePoint, + barTarget: number = DEFAULT_BAR_TARGET ) => { const { uiSettings, @@ -125,10 +128,9 @@ export const useData = ( function updateFieldStatsRequest() { const timefilterActiveBounds = timefilter.getActiveBounds(); if (timefilterActiveBounds !== undefined) { - const BAR_TARGET = 75; _timeBuckets.setInterval('auto'); _timeBuckets.setBounds(timefilterActiveBounds); - _timeBuckets.setBarTarget(BAR_TARGET); + _timeBuckets.setBarTarget(barTarget); setFieldStatsRequest({ earliest: timefilterActiveBounds.min?.valueOf(), latest: timefilterActiveBounds.max?.valueOf(), @@ -186,6 +188,7 @@ export const useData = ( earliest: fieldStatsRequest?.earliest, /** End timestamp filter */ latest: fieldStatsRequest?.latest, + intervalMs: fieldStatsRequest?.intervalMs, searchQueryLanguage, searchString, searchQuery, diff --git a/x-pack/plugins/aiops/public/index.ts b/x-pack/plugins/aiops/public/index.ts index 1f8373839493e..3cd151ea2b72f 100755 --- a/x-pack/plugins/aiops/public/index.ts +++ b/x-pack/plugins/aiops/public/index.ts @@ -13,4 +13,4 @@ export function plugin() { return new AiopsPlugin(); } -export { ExplainLogRateSpikes } from './shared_lazy_components'; +export { ExplainLogRateSpikes, LogCategorization } from './shared_lazy_components'; diff --git a/x-pack/plugins/aiops/public/shared_lazy_components.tsx b/x-pack/plugins/aiops/public/shared_lazy_components.tsx index a84bd359bdb68..90d01f999a8b6 100644 --- a/x-pack/plugins/aiops/public/shared_lazy_components.tsx +++ b/x-pack/plugins/aiops/public/shared_lazy_components.tsx @@ -9,12 +9,13 @@ import React, { FC, Suspense } from 'react'; import { EuiErrorBoundary, EuiLoadingContent } from '@elastic/eui'; import type { ExplainLogRateSpikesAppStateProps } from './components/explain_log_rate_spikes'; +import type { LogCategorizationAppStateProps } from './components/log_categorization'; const ExplainLogRateSpikesAppStateLazy = React.lazy( () => import('./components/explain_log_rate_spikes') ); -const LazyWrapper: FC = ({ children }) => ( +const ExplainLogRateSpikesLazyWrapper: FC = ({ children }) => ( }>{children} @@ -25,7 +26,25 @@ const LazyWrapper: FC = ({ children }) => ( * @param {ExplainLogRateSpikesAppStateProps} props - properties specifying the data on which to run the analysis. */ export const ExplainLogRateSpikes: FC = (props) => ( - + - + +); + +const LogCategorizationAppStateLazy = React.lazy(() => import('./components/log_categorization')); + +const LogCategorizationLazyWrapper: FC = ({ children }) => ( + + }>{children} + +); + +/** + * Lazy-wrapped LogCategorizationAppStateProps React component + * @param {LogCategorizationAppStateProps} props - properties specifying the data on which to run the analysis. + */ +export const LogCategorization: FC = (props) => ( + + + ); diff --git a/x-pack/plugins/aiops/server/plugin.ts b/x-pack/plugins/aiops/server/plugin.ts index 29b4b79884d8c..16e17930d6f2e 100755 --- a/x-pack/plugins/aiops/server/plugin.ts +++ b/x-pack/plugins/aiops/server/plugin.ts @@ -32,7 +32,10 @@ export class AiopsPlugin this.logger = initializerContext.logger.get(); } - public setup(core: CoreSetup, plugins: AiopsPluginSetupDeps) { + public setup( + core: CoreSetup, + plugins: AiopsPluginSetupDeps + ) { this.logger.debug('aiops: Setup'); // Subscribe to license changes and store the current license in `currentLicense`. diff --git a/x-pack/plugins/ml/common/constants/locator.ts b/x-pack/plugins/ml/common/constants/locator.ts index a9006aaadcef5..395d23b15a16b 100644 --- a/x-pack/plugins/ml/common/constants/locator.ts +++ b/x-pack/plugins/ml/common/constants/locator.ts @@ -56,6 +56,8 @@ export const ML_PAGES = { AIOPS: 'aiops', AIOPS_EXPLAIN_LOG_RATE_SPIKES: 'aiops/explain_log_rate_spikes', AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: 'aiops/explain_log_rate_spikes_index_select', + AIOPS_LOG_CATEGORIZATION: 'aiops/log_categorization', + AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: 'aiops/log_categorization_index_select', } as const; export type MlPages = typeof ML_PAGES[keyof typeof ML_PAGES]; diff --git a/x-pack/plugins/ml/common/types/locator.ts b/x-pack/plugins/ml/common/types/locator.ts index 11beec3bee2e9..973b2bb7335a3 100644 --- a/x-pack/plugins/ml/common/types/locator.ts +++ b/x-pack/plugins/ml/common/types/locator.ts @@ -63,7 +63,9 @@ export type MlGenericUrlState = MLPageState< | typeof ML_PAGES.DATA_VISUALIZER_INDEX_SELECT | typeof ML_PAGES.AIOPS | typeof ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES - | typeof ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT, + | typeof ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT + | typeof ML_PAGES.AIOPS_LOG_CATEGORIZATION + | typeof ML_PAGES.AIOPS_LOG_CATEGORIZATION_INDEX_SELECT, MlGenericUrlPageState | undefined >; diff --git a/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx b/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx new file mode 100644 index 0000000000000..e1d816d61357a --- /dev/null +++ b/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx @@ -0,0 +1,66 @@ +/* + * 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 { pick } from 'lodash'; + +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; + +import { FormattedMessage } from '@kbn/i18n-react'; +import { LogCategorization } from '@kbn/aiops-plugin/public'; + +import { useMlContext } from '../contexts/ml'; +import { useMlKibana } from '../contexts/kibana'; +import { HelpMenu } from '../components/help_menu'; +import { TechnicalPreviewBadge } from '../components/technical_preview_badge'; + +import { MlPageHeader } from '../components/page_header'; + +export const LogCategorizationPage: FC = () => { + const { services } = useMlKibana(); + + const context = useMlContext(); + const dataView = context.currentDataView; + const savedSearch = context.currentSavedSearch; + + return ( + <> + + + + + + + + + + + {dataView && ( + + )} + + + ); +}; diff --git a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx index c58f8448d9a95..4dbc2400aa7cf 100644 --- a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx +++ b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx @@ -234,7 +234,7 @@ export function useSideNavItems(activeRoute: MlRoute | undefined) { mlTabs.push({ id: 'aiops_section', name: i18n.translate('xpack.ml.navMenu.aiopsTabLinkText', { - defaultMessage: 'AIOps', + defaultMessage: 'AIOps Labs', }), disabled: disableLinks, items: [ @@ -242,11 +242,20 @@ export function useSideNavItems(activeRoute: MlRoute | undefined) { id: 'explainlogratespikes', pathId: ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT, name: i18n.translate('xpack.ml.navMenu.explainLogRateSpikesLinkText', { - defaultMessage: 'Explain log rate spikes', + defaultMessage: 'Explain Log Rate Spikes', }), disabled: disableLinks, testSubj: 'mlMainTab explainLogRateSpikes', }, + { + id: 'logCategorization', + pathId: ML_PAGES.AIOPS_LOG_CATEGORIZATION_INDEX_SELECT, + name: i18n.translate('xpack.ml.navMenu.logCategorizationLinkText', { + defaultMessage: 'Log Pattern Analysis', + }), + disabled: disableLinks, + testSubj: 'mlMainTab logCategorization', + }, ], }); } diff --git a/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts b/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts index 38ace0233cbb8..9ae337cfcd7f0 100644 --- a/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts +++ b/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts @@ -55,13 +55,36 @@ export const DATA_VISUALIZER_BREADCRUMB: ChromeBreadcrumb = Object.freeze({ href: '/datavisualizer', }); -export const AIOPS_BREADCRUMB: ChromeBreadcrumb = Object.freeze({ +// we need two AIOPS_BREADCRUMB breadcrumb items as they each need to link +// to either the explain log rate spikes page or the log categorization page +export const AIOPS_BREADCRUMB_EXPLAIN_LOG_RATE_SPIKES: ChromeBreadcrumb = Object.freeze({ text: i18n.translate('xpack.ml.aiopsBreadcrumbLabel', { - defaultMessage: 'AIOps', + defaultMessage: 'AIOps Labs', }), href: '/aiops/explain_log_rate_spikes_index_select', }); +export const AIOPS_BREADCRUMB_LOG_PATTERN_ANALYSIS: ChromeBreadcrumb = Object.freeze({ + text: i18n.translate('xpack.ml.aiopsBreadcrumbLabel', { + defaultMessage: 'AIOps Labs', + }), + href: '/aiops/log_categorization_index_select', +}); + +export const EXPLAIN_LOG_RATE_SPIKES: ChromeBreadcrumb = Object.freeze({ + text: i18n.translate('xpack.ml.aiops.explainLogRateSpikesBreadcrumbLabel', { + defaultMessage: 'Explain Log Rate Spikes', + }), + href: '/aiops/explain_log_rate_spikes_index_select', +}); + +export const LOG_PATTERN_ANALYSIS: ChromeBreadcrumb = Object.freeze({ + text: i18n.translate('xpack.ml.aiops.logPatternAnalysisBreadcrumbLabel', { + defaultMessage: 'Log Pattern Analysis', + }), + href: '/aiops/log_categorization_index_select', +}); + export const CREATE_JOB_BREADCRUMB: ChromeBreadcrumb = Object.freeze({ text: i18n.translate('xpack.ml.createJobsBreadcrumbLabel', { defaultMessage: 'Create job', @@ -90,7 +113,10 @@ const breadcrumbs = { DATA_FRAME_ANALYTICS_BREADCRUMB, TRAINED_MODELS, DATA_VISUALIZER_BREADCRUMB, - AIOPS_BREADCRUMB, + AIOPS_BREADCRUMB_EXPLAIN_LOG_RATE_SPIKES, + AIOPS_BREADCRUMB_LOG_PATTERN_ANALYSIS, + EXPLAIN_LOG_RATE_SPIKES, + LOG_PATTERN_ANALYSIS, CREATE_JOB_BREADCRUMB, CALENDAR_MANAGEMENT_BREADCRUMB, FILTER_LISTS_BREADCRUMB, diff --git a/x-pack/plugins/ml/public/application/routing/routes/aiops/explain_log_rate_spikes.tsx b/x-pack/plugins/ml/public/application/routing/routes/aiops/explain_log_rate_spikes.tsx index 5fac891a79675..e101efff47a2b 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/aiops/explain_log_rate_spikes.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/aiops/explain_log_rate_spikes.tsx @@ -35,7 +35,11 @@ export const explainLogRateSpikesRouteFactory = ( render: (props, deps) => , breadcrumbs: [ getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), - getBreadcrumbWithUrlForApp('AIOPS_BREADCRUMB', navigateToPath, basePath), + getBreadcrumbWithUrlForApp( + 'AIOPS_BREADCRUMB_EXPLAIN_LOG_RATE_SPIKES', + navigateToPath, + basePath + ), { text: i18n.translate('xpack.ml.aiopsBreadcrumbs.explainLogRateSpikesLabel', { defaultMessage: 'Explain log rate spikes', diff --git a/x-pack/plugins/ml/public/application/routing/routes/aiops/index.ts b/x-pack/plugins/ml/public/application/routing/routes/aiops/index.ts index f2b192a4cd097..5b55d41e887bc 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/aiops/index.ts +++ b/x-pack/plugins/ml/public/application/routing/routes/aiops/index.ts @@ -6,3 +6,4 @@ */ export * from './explain_log_rate_spikes'; +export * from './log_categorization'; diff --git a/x-pack/plugins/ml/public/application/routing/routes/aiops/log_categorization.tsx b/x-pack/plugins/ml/public/application/routing/routes/aiops/log_categorization.tsx new file mode 100644 index 0000000000000..f08c2973a6f8b --- /dev/null +++ b/x-pack/plugins/ml/public/application/routing/routes/aiops/log_categorization.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import { parse } from 'query-string'; + +import { i18n } from '@kbn/i18n'; + +import { AIOPS_ENABLED } from '@kbn/aiops-plugin/common'; + +import { NavigateToPath } from '../../../contexts/kibana'; + +import { MlRoute, PageLoader, PageProps } from '../../router'; +import { useResolver } from '../../use_resolver'; +import { LogCategorizationPage as Page } from '../../../aiops/log_categorization'; + +import { checkBasicLicense } from '../../../license'; +import { checkGetJobsCapabilitiesResolver } from '../../../capabilities/check_capabilities'; +import { cacheDataViewsContract } from '../../../util/index_utils'; +import { getBreadcrumbWithUrlForApp } from '../../breadcrumbs'; + +export const logCategorizationRouteFactory = ( + navigateToPath: NavigateToPath, + basePath: string +): MlRoute => ({ + id: 'log_categorization', + path: '/aiops/log_categorization', + title: i18n.translate('xpack.ml.aiops.logCategorization.docTitle', { + defaultMessage: 'Log Pattern Analysis', + }), + render: (props, deps) => , + breadcrumbs: [ + getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), + getBreadcrumbWithUrlForApp('AIOPS_BREADCRUMB_LOG_PATTERN_ANALYSIS', navigateToPath, basePath), + { + text: i18n.translate('xpack.ml.aiops.logCategorization.docTitle', { + defaultMessage: 'Log Pattern Analysis', + }), + }, + ], + disabled: !AIOPS_ENABLED, +}); + +const PageWrapper: FC = ({ location, deps }) => { + const { redirectToMlAccessDeniedPage } = deps; + + const { index, savedSearchId }: Record = parse(location.search, { sort: false }); + const { context } = useResolver(index, savedSearchId, deps.config, deps.dataViewsContract, { + checkBasicLicense, + cacheDataViewsContract: () => cacheDataViewsContract(deps.dataViewsContract), + checkGetJobsCapabilities: () => checkGetJobsCapabilitiesResolver(redirectToMlAccessDeniedPage), + }); + + return ( + + + + ); +}; diff --git a/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx b/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx index 5ea3bfa9d35eb..9323d86d32b99 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx @@ -45,17 +45,29 @@ const getDataVisBreadcrumbs = (navigateToPath: NavigateToPath, basePath: string) getBreadcrumbWithUrlForApp('DATA_VISUALIZER_BREADCRUMB', navigateToPath, basePath), { text: i18n.translate('xpack.ml.jobsBreadcrumbs.selectDateViewLabel', { - defaultMessage: 'Data View', + defaultMessage: 'Select Data View', }), }, ]; const getExplainLogRateSpikesBreadcrumbs = (navigateToPath: NavigateToPath, basePath: string) => [ getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), - getBreadcrumbWithUrlForApp('AIOPS_BREADCRUMB', navigateToPath, basePath), + getBreadcrumbWithUrlForApp('AIOPS_BREADCRUMB_EXPLAIN_LOG_RATE_SPIKES', navigateToPath, basePath), + getBreadcrumbWithUrlForApp('EXPLAIN_LOG_RATE_SPIKES', navigateToPath, basePath), { text: i18n.translate('xpack.ml.aiopsBreadcrumbs.selectDateViewLabel', { - defaultMessage: 'Data View', + defaultMessage: 'Select Data View', + }), + }, +]; + +const getLogCategorizationBreadcrumbs = (navigateToPath: NavigateToPath, basePath: string) => [ + getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), + getBreadcrumbWithUrlForApp('AIOPS_BREADCRUMB_LOG_PATTERN_ANALYSIS', navigateToPath, basePath), + getBreadcrumbWithUrlForApp('LOG_PATTERN_ANALYSIS', navigateToPath, basePath), + { + text: i18n.translate('xpack.ml.aiopsBreadcrumbs.selectDateViewLabel', { + defaultMessage: 'Select Data View', }), }, ]; @@ -116,6 +128,26 @@ export const explainLogRateSpikesIndexOrSearchRouteFactory = ( breadcrumbs: getExplainLogRateSpikesBreadcrumbs(navigateToPath, basePath), }); +export const logCategorizationIndexOrSearchRouteFactory = ( + navigateToPath: NavigateToPath, + basePath: string +): MlRoute => ({ + id: 'data_view_log_categorization', + path: '/aiops/log_categorization_index_select', + title: i18n.translate('xpack.ml.selectDataViewLabel', { + defaultMessage: 'Select Data View', + }), + render: (props, deps) => ( + + ), + breadcrumbs: getLogCategorizationBreadcrumbs(navigateToPath, basePath), +}); + const PageWrapper: FC = ({ nextStepPath, deps, mode }) => { const { services: { diff --git a/x-pack/plugins/ml/public/locator/ml_locator.ts b/x-pack/plugins/ml/public/locator/ml_locator.ts index ed80e50d75132..a742700cceaec 100644 --- a/x-pack/plugins/ml/public/locator/ml_locator.ts +++ b/x-pack/plugins/ml/public/locator/ml_locator.ts @@ -88,6 +88,8 @@ export class MlLocatorDefinition implements LocatorDefinition { case ML_PAGES.AIOPS: case ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES: case ML_PAGES.AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: + case ML_PAGES.AIOPS_LOG_CATEGORIZATION: + case ML_PAGES.AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: case ML_PAGES.OVERVIEW: case ML_PAGES.SETTINGS: case ML_PAGES.FILTER_LISTS_MANAGE: From 6932b712bc85490ca9db0dc7557e595703757547 Mon Sep 17 00:00:00 2001 From: Michael Dokolin Date: Fri, 16 Sep 2022 11:37:20 +0200 Subject: [PATCH 34/79] [Search] Fix search query builder to generate wildcard query for keyword fields (#140629) --- packages/kbn-es-query/src/es_query/types.ts | 4 ++++ .../src/filters/stubs/fields.mocks.ts | 6 +++++ .../src/kuery/functions/is.test.ts | 19 +++++++++++++++ .../kbn-es-query/src/kuery/functions/is.ts | 23 +++++++++++-------- .../kuery/functions/utils/get_fields.test.ts | 11 +++++---- 5 files changed, 50 insertions(+), 13 deletions(-) diff --git a/packages/kbn-es-query/src/es_query/types.ts b/packages/kbn-es-query/src/es_query/types.ts index 14e091ed5b7f2..89c22521a6409 100644 --- a/packages/kbn-es-query/src/es_query/types.ts +++ b/packages/kbn-es-query/src/es_query/types.ts @@ -54,6 +54,10 @@ export type DataViewFieldBase = { */ lang?: estypes.ScriptLanguage; scripted?: boolean; + /** + * ES field types as strings array. + */ + esTypes?: string[]; }; /** diff --git a/packages/kbn-es-query/src/filters/stubs/fields.mocks.ts b/packages/kbn-es-query/src/filters/stubs/fields.mocks.ts index 2d9b7269f85a4..390d322ffb9ed 100644 --- a/packages/kbn-es-query/src/filters/stubs/fields.mocks.ts +++ b/packages/kbn-es-query/src/filters/stubs/fields.mocks.ts @@ -42,6 +42,12 @@ export const fields: DataViewFieldBase[] = [ type: 'string', scripted: false, }, + { + name: 'machine.os.keyword', + type: 'string', + esTypes: ['keyword'], + scripted: false, + }, { name: 'script number', type: 'number', diff --git a/packages/kbn-es-query/src/kuery/functions/is.test.ts b/packages/kbn-es-query/src/kuery/functions/is.test.ts index f0143db87809b..f36ea0d17dc8c 100644 --- a/packages/kbn-es-query/src/kuery/functions/is.test.ts +++ b/packages/kbn-es-query/src/kuery/functions/is.test.ts @@ -206,6 +206,25 @@ describe('kuery functions', () => { expect(result).toEqual(expected); }); + test('should create a wildcard query for keyword fields', () => { + const expected = { + bool: { + should: [ + { + wildcard: { + 'machine.os.keyword': 'win*', + }, + }, + ], + minimum_should_match: 1, + }, + }; + const node = nodeTypes.function.buildNode('is', 'machine.os.keyword', 'win*'); + const result = is.toElasticsearchQuery(node, indexPattern); + + expect(result).toEqual(expected); + }); + test('should support scripted fields', () => { const node = nodeTypes.function.buildNode('is', 'script string', 'foo'); const result = is.toElasticsearchQuery(node, indexPattern); diff --git a/packages/kbn-es-query/src/kuery/functions/is.ts b/packages/kbn-es-query/src/kuery/functions/is.ts index 12ada3326604d..f2db74857b02e 100644 --- a/packages/kbn-es-query/src/kuery/functions/is.ts +++ b/packages/kbn-es-query/src/kuery/functions/is.ts @@ -142,15 +142,20 @@ export function toElasticsearchQuery( }), ]; } else if (wildcard.isNode(valueArg)) { - return [ - ...accumulator, - wrapWithNestedQuery({ - query_string: { - fields: [field.name], - query: wildcard.toQueryStringQuery(valueArg), - }, - }), - ]; + const query = field.esTypes?.includes('keyword') + ? { + wildcard: { + [field.name]: value, + }, + } + : { + query_string: { + fields: [field.name], + query: wildcard.toQueryStringQuery(valueArg), + }, + }; + + return [...accumulator, wrapWithNestedQuery(query)]; } else if (field.type === 'date') { /* If we detect that it's a date field and the user wants an exact date, we need to convert the query to both >= and <= the value provided to force a range query. This is because match and match_phrase queries do not accept a timezone parameter. diff --git a/packages/kbn-es-query/src/kuery/functions/utils/get_fields.test.ts b/packages/kbn-es-query/src/kuery/functions/utils/get_fields.test.ts index f3d49c426d079..e0e69c222604e 100644 --- a/packages/kbn-es-query/src/kuery/functions/utils/get_fields.test.ts +++ b/packages/kbn-es-query/src/kuery/functions/utils/get_fields.test.ts @@ -74,10 +74,13 @@ describe('getFields', () => { const fieldNameNode = nodeTypes.wildcard.buildNode('machine*'); const results = getFields(fieldNameNode, indexPattern); - expect(Array.isArray(results)).toBeTruthy(); - expect(results).toHaveLength(2); - expect(results!.find((field) => field.name === 'machine.os')).toBeDefined(); - expect(results!.find((field) => field.name === 'machine.os.raw')).toBeDefined(); + expect(results).toEqual(expect.any(Array)); + expect(results).toHaveLength(3); + expect(results).toEqual([ + expect.objectContaining({ name: 'machine.os' }), + expect.objectContaining({ name: 'machine.os.raw' }), + expect.objectContaining({ name: 'machine.os.keyword' }), + ]); }); }); }); From a4ba3f8cf52216f3b9ee3c7e2472dd8ca3cd1926 Mon Sep 17 00:00:00 2001 From: Michael Olorunnisola Date: Fri, 16 Sep 2022 10:08:50 -0400 Subject: [PATCH 35/79] [Bug][Security Solution][Investigations] - Remove DataProvider from bottom bar (#140727) * remove dataproviders from bottom bar * remove unused dataprovider tests * cleanup code * fix tests * rename boolean --- .../flyout/__snapshots__/index.test.tsx.snap | 283 +----------------- .../flyout/bottom_bar/index.test.tsx | 61 +--- .../components/flyout/bottom_bar/index.tsx | 25 +- .../timelines/components/flyout/index.tsx | 3 +- 4 files changed, 8 insertions(+), 364 deletions(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/flyout/__snapshots__/index.test.tsx.snap index a6a846110f72c..df6539a20c74e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/__snapshots__/index.test.tsx.snap @@ -18,171 +18,7 @@ exports[`Flyout rendering it renders correctly against snapshot 1`] = ` - .c7 { - -webkit-transition: background-color 0.7s ease; - transition: background-color 0.7s ease; - width: 100%; - height: 100%; -} - -.c7 .flyout-overlay .euiPanel { - background-color: #16171c; -} - -.c7 > div.timeline-drop-area .drop-and-provider-timeline { - display: none; -} - -.c7 > div.timeline-drop-area + div { - display: none !important; -} - -.c13 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-radius: 100%; - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - font-size: 9px; - height: 34px; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - margin: 0 5px 0 5px; - padding: 7px 6px 4px 6px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - width: 34px; -} - -.c13 .euiBadge__content { - position: relative; - top: -1px; -} - -.c13 .euiBadge__text { - text-overflow: clip; -} - -.c10 { - overflow: hidden; - margin: 5px 0 5px 0; - padding: 3px; - white-space: nowrap; -} - -.c12 { - height: 20px; - margin: 0 5px 0 5px; - maxwidth: 85px; - minwidth: 85px; -} - -.c11 { - background-color: #343741; -} - -.c8 { - width: auto; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-align-content: center; - -ms-flex-line-pack: center; - align-content: center; - min-height: 100px; -} - -.c8 + div { - display: none !important; -} - -.c9 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: no-wrap; - -ms-flex-wrap: no-wrap; - flex-wrap: no-wrap; -} - -.c5 { - padding: 2px 0 4px 0; -} - -.is-dragging .c5 .drop-target-data-providers { - background: rgba(125,222,216,0.1); - border: 0.2rem dashed #7dded8; -} - -.is-dragging .c5 .drop-target-data-providers .timeline-drop-area-empty__text { - color: #7dded8; -} - -.is-dragging .c5 .drop-target-data-providers .euiFormHelpText { - color: #7dded8; -} - -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - padding-bottom: 2px; - position: relative; - border: 0.2rem dashed #535966; - border-radius: 5px; - padding: 4px 0; - margin: 2px 0 2px 0; - max-height: 33vh; - min-height: 100px; - overflow: auto; - resize: vertical; - background-color: #16171c; -} - -.c2 { + .c2 { display: block; } @@ -200,16 +36,6 @@ exports[`Flyout rendering it renders correctly against snapshot 1`] = ` overflow: hidden; } -.c4 { - border-radius: 0; - padding: 0 4px 0 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - z-index: 9000; -} -
-
-
-
-
-
-
-
- Drop anything -
- - - - - highlighted - - - - -
- here to build an -
- - - - OR - - - -
- query -
-
-
-
- -
-
-
-
-
-
-
`; diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.test.tsx index 366b8d36fc7d4..6c97e250a8e79 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.test.tsx @@ -9,91 +9,36 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import { TestProviders } from '../../../../common/mock/test_providers'; -import { TimelineTabs } from '../../../../../common/types/timeline'; import { FlyoutBottomBar } from '.'; describe('FlyoutBottomBar', () => { test('it renders the expected bottom bar', () => { render( - + ); expect(screen.getByTestId('flyoutBottomBar')).toBeInTheDocument(); }); - test('it renders the data providers drop target area', () => { - render( - - - - ); - - expect(screen.getByTestId('dataProviders')).toBeInTheDocument(); - }); - test('it renders the flyout header panel', () => { render( - + ); expect(screen.getByTestId('timeline-flyout-header-panel')).toBeInTheDocument(); }); - test('it hides the data providers drop target area', () => { - render( - - - - ); - - expect(screen.queryByTestId('dataProviders')).not.toBeInTheDocument(); - }); - test('it hides the flyout header panel', () => { render( - + ); expect(screen.queryByTestId('timeline-flyout-header-panel')).not.toBeInTheDocument(); }); - - test('it renders the data providers drop target area when showDataproviders=false and tab is not query', () => { - render( - - - - ); - - expect(screen.getByTestId('dataProviders')).toBeInTheDocument(); - }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.tsx index 3bb2d4d7530c9..0b5286f1fedb3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/bottom_bar/index.tsx @@ -4,39 +4,20 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import { EuiPanel } from '@elastic/eui'; import React from 'react'; -import styled from 'styled-components'; - -import { DataProviders } from '../../timeline/data_providers'; import { FLYOUT_BUTTON_BAR_CLASS_NAME } from '../../timeline/helpers'; import { FlyoutHeaderPanel } from '../header'; -import { TimelineTabs } from '../../../../../common/types/timeline'; - -const DataProvidersPanel = styled(EuiPanel)` - border-radius: 0; - padding: 0 4px 0 4px; - user-select: none; - z-index: ${({ theme }) => theme.eui.euiZLevel9}; -`; interface FlyoutBottomBarProps { - activeTab: TimelineTabs; - showDataproviders: boolean; + showTimelineHeaderPanel: boolean; timelineId: string; } export const FlyoutBottomBar = React.memo( - ({ activeTab, showDataproviders, timelineId }) => { + ({ showTimelineHeaderPanel, timelineId }) => { return (
- {showDataproviders && } - {(showDataproviders || (!showDataproviders && activeTab !== TimelineTabs.query)) && ( - - - - )} + {showTimelineHeaderPanel && }
); } diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx index 2b77901b4f102..dfb2fd0cdd927 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx @@ -29,7 +29,6 @@ const FlyoutComponent: React.FC = ({ timelineId, onAppLeave }) => { const dispatch = useDispatch(); const getTimelineShowStatus = useMemo(() => getTimelineShowStatusByIdSelector(), []); const { - activeTab, show, status: timelineStatus, updated, @@ -122,7 +121,7 @@ const FlyoutComponent: React.FC = ({ timelineId, onAppLeave }) => { - + ); From 3f2cf463b754cbfe0a8e52ed7928ba167485b203 Mon Sep 17 00:00:00 2001 From: Julia Date: Fri, 16 Sep 2022 19:20:05 +0200 Subject: [PATCH 36/79] [RAM] Show alerts count (#140473) * create alerts count component * use new alerts count component in toolbar plugin * add test for alerts count * remove only in tests * using emotion/react lig for css Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Xavier Mouligneau --- .../alerts_table/alerts_table.test.tsx | 5 +++ .../components/alerts_count/alerts_count.tsx | 41 +++++++++++++++++++ .../sections/alerts_table/toolbar/index.tsx | 1 + .../toolbar/toolbar_visibility.tsx | 29 +++++++++---- 4 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/alerts_count/alerts_count.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/alerts_table.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/alerts_table.test.tsx index c4fb24feac98b..a17efca41fd19 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/alerts_table.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/alerts_table.test.tsx @@ -123,6 +123,11 @@ describe('AlertsTable', () => { expect(getByTestId('toolbar-updated-at')).not.toBe(null); }); + it('should show alerts count', () => { + const { getByTestId } = render(); + expect(getByTestId('toolbar-alerts-count')).not.toBe(null); + }); + describe('leading control columns', () => { it('should return at least the flyout action control', async () => { const wrapper = render(); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/alerts_count/alerts_count.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/alerts_count/alerts_count.tsx new file mode 100644 index 0000000000000..50eb14ccfa3df --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/alerts_count/alerts_count.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; + +const translateUnit = (totalCount: number) => + i18n.translate('xpack.triggersActionsUI.alertsTable.alertsCountUnit', { + values: { totalCount }, + defaultMessage: `{totalCount, plural, =1 {alert} other {alerts}}`, + }); + +export const AlertsCount = ({ count }: { count: number }) => { + const { euiTheme } = useEuiTheme(); + + const alertCountText = useMemo( + () => `${count.toLocaleString()} ${translateUnit(count)}`, + [count] + ); + + return ( + + {alertCountText} + + ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/index.tsx index 9f9143ffc8863..e261dc7d09cd9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/index.tsx @@ -6,3 +6,4 @@ */ export { getToolbarVisibility } from './toolbar_visibility'; +export { AlertsCount } from './components/alerts_count/alerts_count'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/toolbar_visibility.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/toolbar_visibility.tsx index df79c2723193b..bc4c4817ec37c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/toolbar_visibility.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/toolbar_visibility.tsx @@ -8,18 +8,28 @@ import { EuiDataGridToolBarVisibilityOptions } from '@elastic/eui'; import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common/search_strategy'; import React, { lazy, Suspense } from 'react'; +import { AlertsCount } from './components/alerts_count/alerts_count'; import { BulkActionsConfig } from '../../../../types'; import { LastUpdatedAt } from './components/last_updated_at'; const BulkActionsToolbar = lazy(() => import('../bulk_actions/components/toolbar')); -const getDefaultVisibility = (updatedAt: number) => { +const getDefaultVisibility = ({ + alertsCount, + updatedAt, +}: { + alertsCount: number; + updatedAt: number; +}) => { + const additionalControls = { + right: , + left: { append: }, + }; + return { + additionalControls, showColumnSelector: true, showSortSelector: true, - additionalControls: { - right: , - }, }; }; @@ -39,7 +49,7 @@ export const getToolbarVisibility = ({ updatedAt: number; }): EuiDataGridToolBarVisibilityOptions => { const selectedRowsCount = rowSelection.size; - const defaultVisibility = getDefaultVisibility(updatedAt); + const defaultVisibility = getDefaultVisibility({ alertsCount, updatedAt }); if (selectedRowsCount === 0 || selectedRowsCount === undefined || bulkActions.length === 0) return defaultVisibility; @@ -51,9 +61,12 @@ export const getToolbarVisibility = ({ ...defaultVisibility.additionalControls, left: { append: ( - - - + <> + + + + + ), }, }, From fd2a789f790a1a608238c6a29036bd7704af699d Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 16 Sep 2022 22:44:04 -0600 Subject: [PATCH 37/79] [api-docs] Daily api_docs build (#140886) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.devdocs.json | 41 ++++++++++ api_docs/aiops.mdx | 4 +- 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 | 78 ++++++++++++++++++- api_docs/cases.mdx | 4 +- 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/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/guided_onboarding.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_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_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 +- .../kbn_core_capabilities_browser_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_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_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_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.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 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_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 +- 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 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...core_saved_objects_api_server_internal.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.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 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.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_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.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.devdocs.json | 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_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_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.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_test_subj_selector.devdocs.json | 63 +++++++++++++++ api_docs/kbn_test_subj_selector.mdx | 30 +++++++ 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.devdocs.json | 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 | 11 +-- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.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_finder.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/stack_connectors.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 +- 396 files changed, 608 insertions(+), 401 deletions(-) create mode 100644 api_docs/kbn_test_subj_selector.devdocs.json create mode 100644 api_docs/kbn_test_subj_selector.mdx diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 89f671856a2f4..94fc58b05381c 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-09-16 +date: 2022-09-17 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 9484742950fb4..566f47ec3c580 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.devdocs.json b/api_docs/aiops.devdocs.json index ec6cbc9258812..52234380bb0a6 100644 --- a/api_docs/aiops.devdocs.json +++ b/api_docs/aiops.devdocs.json @@ -43,6 +43,47 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "aiops", + "id": "def-public.LogCategorization", + "type": "Function", + "tags": [], + "label": "LogCategorization", + "description": [ + "\nLazy-wrapped LogCategorizationAppStateProps React component" + ], + "signature": [ + "(props: React.PropsWithChildren<", + "LogCategorizationAppStateProps", + ">) => JSX.Element" + ], + "path": "x-pack/plugins/aiops/public/shared_lazy_components.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "aiops", + "id": "def-public.LogCategorization.$1", + "type": "CompoundType", + "tags": [], + "label": "props", + "description": [ + "- properties specifying the data on which to run the analysis." + ], + "signature": [ + "React.PropsWithChildren<", + "LogCategorizationAppStateProps", + ">" + ], + "path": "x-pack/plugins/aiops/public/shared_lazy_components.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 959e4d67b8813..ca92815ccaa68 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 7 | 0 | 0 | 1 | +| 9 | 0 | 0 | 2 | ## Client diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 80603f6926fd4..91f1a811f9189 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-09-16 +date: 2022-09-17 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 6fe667b36756c..4ce896985c275 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-09-16 +date: 2022-09-17 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 c16c00c1f3bea..9f5bd8a93b20f 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-09-16 +date: 2022-09-17 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 438e84d8d4d1d..333dbc9b9a45d 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-09-16 +date: 2022-09-17 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 a67d3e217421b..9cc22b1ded6f9 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-09-16 +date: 2022-09-17 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 b6707b75f2054..46161fd8de3be 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -742,7 +742,25 @@ "section": "def-common.CommentType", "text": "CommentType" }, - ".alert; alertId: string | string[]; index: string | string[]; rule: { id: string | null; name: string | null; }; owner: string; } | { type: ", + ".alert; alertId: string | string[]; index: string | string[]; rule: { id: string | null; name: string | null; }; owner: string; } | { externalReferenceId: string; externalReferenceStorage: { type: ", + { + "pluginId": "cases", + "scope": "common", + "docId": "kibCasesPluginApi", + "section": "def-common.ExternalReferenceStorageType", + "text": "ExternalReferenceStorageType" + }, + ".elasticSearchDoc; }; externalReferenceAttachmentTypeId: string; externalReferenceMetadata: { [x: string]: ", + "JsonValue", + "; } | null; type: ", + { + "pluginId": "cases", + "scope": "common", + "docId": "kibCasesPluginApi", + "section": "def-common.CommentType", + "text": "CommentType" + }, + ".externalReference; owner: string; } | { type: ", { "pluginId": "cases", "scope": "common", @@ -1509,6 +1527,18 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "cases", + "id": "def-common.ExternalReferenceStorageType", + "type": "Enum", + "tags": [], + "label": "ExternalReferenceStorageType", + "description": [], + "path": "x-pack/plugins/cases/common/api/cases/comment.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "misc": [ @@ -1569,7 +1599,13 @@ "text": "CommentType" }, ".actions; comment: string; actions: { targets: { hostname: string; endpointId: string; }[]; type: string; }; owner: string; } & { created_at: string; created_by: { email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } & { profile_uid?: string | undefined; }; owner: string; pushed_at: string | null; pushed_by: ({ email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } & { profile_uid?: string | undefined; }) | null; updated_at: string | null; updated_by: ({ email: string | null | undefined; full_name: string | null | undefined; username: string | null | undefined; } & { profile_uid?: string | undefined; }) | null; }) | (({ externalReferenceId: string; externalReferenceStorage: { type: ", - "ExternalReferenceStorageType", + { + "pluginId": "cases", + "scope": "common", + "docId": "kibCasesPluginApi", + "section": "def-common.ExternalReferenceStorageType", + "text": "ExternalReferenceStorageType" + }, ".elasticSearchDoc; }; externalReferenceAttachmentTypeId: string; externalReferenceMetadata: { [x: string]: ", "JsonValue", "; } | null; type: ", @@ -1581,7 +1617,13 @@ "text": "CommentType" }, ".externalReference; owner: string; } | { externalReferenceId: string; externalReferenceStorage: { type: ", - "ExternalReferenceStorageType", + { + "pluginId": "cases", + "scope": "common", + "docId": "kibCasesPluginApi", + "section": "def-common.ExternalReferenceStorageType", + "text": "ExternalReferenceStorageType" + }, ".savedObject; soType: string; }; externalReferenceAttachmentTypeId: string; externalReferenceMetadata: { [x: string]: ", "JsonValue", "; } | null; type: ", @@ -1694,6 +1736,36 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.GENERAL_CASES_OWNER", + "type": "string", + "tags": [], + "label": "GENERAL_CASES_OWNER", + "description": [], + "signature": [ + "\"cases\"" + ], + "path": "x-pack/plugins/cases/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "cases", + "id": "def-common.OBSERVABILITY_OWNER", + "type": "string", + "tags": [], + "label": "OBSERVABILITY_OWNER", + "description": [], + "signature": [ + "\"observability\"" + ], + "path": "x-pack/plugins/cases/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.PUSH_CASES_CAPABILITY", diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index fa5e5e1e63618..a8a5b958f9fed 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-09-16 +date: 2022-09-17 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 | |-------------------|-----------|------------------------|-----------------| -| 84 | 0 | 68 | 29 | +| 87 | 0 | 71 | 28 | ## Client diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 5d775b395cdc2..c4d9a0c524279 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-09-16 +date: 2022-09-17 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 186748693e81b..2bc376bac752b 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-09-16 +date: 2022-09-17 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 a275ba2d5ed7c..73d4fbcb51480 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-09-16 +date: 2022-09-17 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 3c24eb3b048c5..0666787230868 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-09-16 +date: 2022-09-17 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 1d25c04786f6d..ed27eb22e40fb 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-09-16 +date: 2022-09-17 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 aaa19cda16f11..2630a8ff1787d 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 552eb7c33f6f7..5c5259990b080 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-09-16 +date: 2022-09-17 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 c69f7f840060b..28cacb4f946ff 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-09-16 +date: 2022-09-17 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 b309c95114149..106a2ab907f8e 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-09-16 +date: 2022-09-17 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 2014ef703edb4..691277770df98 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-09-16 +date: 2022-09-17 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 1f54b122e97fc..d036c06e82b1d 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-09-16 +date: 2022-09-17 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 8009ffdd5fcbd..eb8d27c975125 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-09-16 +date: 2022-09-17 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 fc939a74e8706..0076b80bdc2f8 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-09-16 +date: 2022-09-17 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 6e3dbc8841491..5ed09dcd9e98f 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-09-16 +date: 2022-09-17 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 c97710d1242ba..6674d4e8aad7a 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-09-16 +date: 2022-09-17 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 6f36ca4bd5b26..fd98e648fc0fb 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-09-16 +date: 2022-09-17 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 04b7f673aca63..b3ba25f3a2139 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-09-16 +date: 2022-09-17 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 34644e823f484..c405ce1cda2ce 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index c0d82ba54abf8..99ee934d06ec3 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 4895abe1b352d..9b9a2b9be35fa 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index a9a6896f8310e..512f4afb40c15 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-09-16 +date: 2022-09-17 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 f4a0ec2727226..6f813741dc3c1 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-09-16 +date: 2022-09-17 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 7402bde231b4c..04e986f7abb49 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-09-16 +date: 2022-09-17 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 e38bc0a53872d..94aa652d2d8ff 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-09-16 +date: 2022-09-17 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 7d7f7892f586d..19035f35a3ad0 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-09-16 +date: 2022-09-17 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 6cf42c87b908a..e2a8ccab28201 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-09-16 +date: 2022-09-17 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 24ab3ffb105f9..9b0a921aa5785 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-09-16 +date: 2022-09-17 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 9999f010b998d..699956e0e31ff 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-09-16 +date: 2022-09-17 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 aec4931dc1cf6..390d962c755d5 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-09-16 +date: 2022-09-17 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 ed1a8fcbee5e1..45857b1184a6d 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-09-16 +date: 2022-09-17 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 962cd39de2b3b..61ad90851a3eb 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-09-16 +date: 2022-09-17 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 578cd286542d5..1fb1c6cf2e226 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-09-16 +date: 2022-09-17 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 4ca9c8beea3ff..b97bd668b471c 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-09-16 +date: 2022-09-17 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 256ecf65b917a..38d1a14a08ff2 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-09-16 +date: 2022-09-17 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 63bc3b2c18789..b4ee97a290199 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-09-16 +date: 2022-09-17 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 c317579d59bb5..b1629fb8f5126 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-09-16 +date: 2022-09-17 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 7f91a7a611f1f..79a4565335b41 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-09-16 +date: 2022-09-17 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 b264f962c196a..30b848192aabf 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-09-16 +date: 2022-09-17 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 36d6da9ceacf3..6c7ff7091753d 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-09-16 +date: 2022-09-17 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 530a96a7a6fbb..fab4e97be3712 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-09-16 +date: 2022-09-17 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 509987352a7f6..af047052f762e 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-09-16 +date: 2022-09-17 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 f97785d9318ac..2598b2711747d 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-09-16 +date: 2022-09-17 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 e947905c7209b..a0a6ffb2f84d4 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-09-16 +date: 2022-09-17 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 ef5ee8d3d836a..8ae1b97d814e9 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-09-16 +date: 2022-09-17 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 35afd71790fb8..c37c3ac652854 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-09-16 +date: 2022-09-17 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 34374dc12fca2..27fc23c24f67b 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-09-16 +date: 2022-09-17 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 7f8b5d041038a..9d9495bad01d4 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-09-16 +date: 2022-09-17 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 cf2d5b3496402..a6f3e9e06de98 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-09-16 +date: 2022-09-17 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 4123ec0dbc6a7..34dfaef4e1f6f 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-09-16 +date: 2022-09-17 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 521d5870e9c05..579112aec45de 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 0775c44509f05..6072741c327f2 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 869efec534b9c..a2bb24f9eb6e8 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-09-16 +date: 2022-09-17 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 355f68a42f8aa..13f613f9f0f9d 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-09-16 +date: 2022-09-17 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 6055c198ad28b..1cefac1611db6 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-09-16 +date: 2022-09-17 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 3fc361d9ec7ac..7a21fd57b96ec 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-09-16 +date: 2022-09-17 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 7194579dec8b8..e6be142b3ced0 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-09-16 +date: 2022-09-17 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 22611b698bee1..e43869fd3b847 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-09-16 +date: 2022-09-17 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 8a56a9a9b3b2d..5498d2322a038 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-09-16 +date: 2022-09-17 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 45c28bd276a9d..e45a59f206527 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-09-16 +date: 2022-09-17 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 1145fb982f00a..c20470a49b74e 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-09-16 +date: 2022-09-17 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 714b16bf8ffb9..12d5de9ce064f 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-09-16 +date: 2022-09-17 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 7d7cb1559a7bc..546b4c10f119f 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-09-16 +date: 2022-09-17 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 31a2cd57d0df5..7ecbd06e84afb 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-09-16 +date: 2022-09-17 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 09f6741bcc4c6..abdd085ec37ff 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-09-16 +date: 2022-09-17 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 07dd72fac01d7..b0eb8fe984dc5 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-09-16 +date: 2022-09-17 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 bf7a4b411f2c3..b2cbee18c3f26 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-09-16 +date: 2022-09-17 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 1ab44b130466d..a10415bd74bc1 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-09-16 +date: 2022-09-17 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 bc98065261d7b..5425785131002 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-09-16 +date: 2022-09-17 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 a28a8a32ed200..9c2679fe0b0e4 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-09-16 +date: 2022-09-17 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 13a7db755d7e7..4c19595404165 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-09-16 +date: 2022-09-17 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 4764376a84da5..908b4626b882a 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-09-16 +date: 2022-09-17 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 44e2e6c125ed2..515828589e043 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-09-16 +date: 2022-09-17 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 0f4ecf3f40759..4eda7b8db8f6a 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-09-16 +date: 2022-09-17 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 1bf5019c79259..e99f9293c6cc3 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-09-16 +date: 2022-09-17 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 634f1526409fe..4ba19919d0e43 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-09-16 +date: 2022-09-17 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 20a8479071810..cac005f4a11b9 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-09-16 +date: 2022-09-17 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 4e41b70db2faa..bad808826efdd 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-09-16 +date: 2022-09-17 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 682776f5a4f1e..b7fbc32cde99b 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-09-16 +date: 2022-09-17 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 c635f1dcddd46..2086a150728ff 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-09-16 +date: 2022-09-17 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 55a565924ee00..a9ca73ba29000 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-09-16 +date: 2022-09-17 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 7d83dc8f56a54..0ac4a1c05aa88 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-09-16 +date: 2022-09-17 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 abd92cec98de6..a5a250737f08f 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-09-16 +date: 2022-09-17 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 fff234fe46ea0..85cee5e4a4e62 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-09-16 +date: 2022-09-17 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 17b42d1c30c27..3e851c74dfc80 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-09-16 +date: 2022-09-17 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 11bbbb8f79fde..f606554733eb7 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-09-16 +date: 2022-09-17 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 d540cc63a74f4..79fdc03a0c1c4 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-09-16 +date: 2022-09-17 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_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index aaf7b14623d43..5d734f9a2af79 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index d5f5748076442..8cfed235dee6a 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 22cd16b80ad07..b0400feb9ae2f 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 7c8986f62ca1c..c8c74b88de04f 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index e38581bcee59a..4f0b321ef9229 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 612826d821278..6dc24ac716141 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 833fb7c15dc44..fa7b8ea3799a5 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-09-16 +date: 2022-09-17 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 e0b3ac2a467e3..a058d4a21b178 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-09-16 +date: 2022-09-17 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 5e84561bd6f03..3fff36e41315d 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-09-16 +date: 2022-09-17 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 2cf1ba0668559..8604d25de70d6 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-09-16 +date: 2022-09-17 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_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 8b936b3484670..de5ff0851bcf8 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 293aad469314b..b5671af23d948 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-09-16 +date: 2022-09-17 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 0dcafd2c3de13..9378c429b063a 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-09-16 +date: 2022-09-17 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 ee036fe6219ff..52451b4316d86 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-09-16 +date: 2022-09-17 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_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index ffecec60dc460..ddf9ee792f99d 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index d2fc4671e596b..6b3949f7b36b6 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index e59bb26dff78f..ec4d2fff19fb7 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-09-16 +date: 2022-09-17 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 85aa24aaa64a7..ed56362c485c8 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-09-16 +date: 2022-09-17 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 38c1258cbe4b9..537fe41a6ebbc 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-09-16 +date: 2022-09-17 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 e243a8374e7b0..8411bd2287ffd 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-09-16 +date: 2022-09-17 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 7c5c57a5fc47b..6be460a2d3d88 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-09-16 +date: 2022-09-17 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 70e4eca4c670d..e597f6c1b1422 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-09-16 +date: 2022-09-17 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_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 812f92ac500f5..041bfa1bf1ce0 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 8b98db26b5ed1..7309e472c9590 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 52540b10640d0..bc4599e0aa207 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-09-16 +date: 2022-09-17 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 e1e4dcb94d4e9..8f8aa4752899b 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-09-16 +date: 2022-09-17 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 3abeab145a839..6449e9735bfc3 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-09-16 +date: 2022-09-17 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 2b9ea0b1dd4a5..6de5804097e2d 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-09-16 +date: 2022-09-17 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 a4484a6b52110..f0ce95b4ffe94 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-09-16 +date: 2022-09-17 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 1335350012a67..b8eafaa661447 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-09-16 +date: 2022-09-17 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 021f63f3fbf97..c5d90defa9163 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-09-16 +date: 2022-09-17 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 4ff02698b021b..cafd85573cd1f 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-09-16 +date: 2022-09-17 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 69f5eadb76281..28cca9e23dd49 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-09-16 +date: 2022-09-17 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 590bb47f1e954..2c8d52e9a4ca6 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-09-16 +date: 2022-09-17 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 6ec364c71a4a0..08e9dadb65f28 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-09-16 +date: 2022-09-17 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 458f73bbdb8ec..325d4eb4bd5c6 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-09-16 +date: 2022-09-17 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 a7124e27368e9..8f98db8e7d1da 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-09-16 +date: 2022-09-17 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 d91c4049f311e..b74f2fda65848 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-09-16 +date: 2022-09-17 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 955a99a896d99..c3bc7e0fa3f92 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-09-16 +date: 2022-09-17 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 60bb6d4986e29..5c58ba021f2c3 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-09-16 +date: 2022-09-17 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 055c3990ce81e..5ba6d91375559 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-09-16 +date: 2022-09-17 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 7a79d4392113e..dbe6163a57f9d 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-09-16 +date: 2022-09-17 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 ac297112a8e63..ba4e87d9d2608 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-09-16 +date: 2022-09-17 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 a3690094609ea..403f81dda9044 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-09-16 +date: 2022-09-17 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 eecf7e4c72281..25a26c7af5e8c 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-09-16 +date: 2022-09-17 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 192f6b0e3f829..0f9200e474fa3 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-09-16 +date: 2022-09-17 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 47f0d7a07fd15..87a63005d0391 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-09-16 +date: 2022-09-17 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 0578097918f02..d182f7c17c747 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-09-16 +date: 2022-09-17 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 6077f843fecd5..72bae699acf21 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-09-16 +date: 2022-09-17 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 34868e10ec19d..c0a5bf5dea964 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-09-16 +date: 2022-09-17 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 97370bb27bf55..10e1e4f799433 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-09-16 +date: 2022-09-17 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 7d73810f93414..98301776169e0 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-09-16 +date: 2022-09-17 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 675f694e2e590..2a54e0cc52b34 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-09-16 +date: 2022-09-17 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 e9f353ce26191..59b0cebe0f4e1 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-09-16 +date: 2022-09-17 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 38ab4de67299f..82e7c8b8a5a56 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-09-16 +date: 2022-09-17 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 b193323f5d9c6..f5632a8823907 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-09-16 +date: 2022-09-17 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_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index b316d261b8393..1fc8a95ad7dfe 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 37981b5304738..bc49942b24372 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 7b9ec8446c34a..ec5a7e021dd69 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index bd9fa9a89ee2d..d9cc8fd6ff1f8 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-09-16 +date: 2022-09-17 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 eac28be734b51..f63ab886d9545 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-09-16 +date: 2022-09-17 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 b398c1f610cd9..7056e3e440e34 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-09-16 +date: 2022-09-17 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 3c7ac76b86c06..3494a45149b4f 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-09-16 +date: 2022-09-17 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 ac8e635c5b4e9..dc95d96396361 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-09-16 +date: 2022-09-17 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 4138c9c371fd1..1eee91716cc21 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-09-16 +date: 2022-09-17 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 e274631349db8..86312186d8a3d 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-09-16 +date: 2022-09-17 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 cf62ce99b1286..2bfcb79ae0081 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-09-16 +date: 2022-09-17 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 60a53c9433b48..8010b75234477 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-09-16 +date: 2022-09-17 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 270f22a951756..db3adcb2ba420 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-09-16 +date: 2022-09-17 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 1a44c130bc4d6..6aaf0d6057a0b 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-09-16 +date: 2022-09-17 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 a4a1029cd20af..5ff4166fd4e2a 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-09-16 +date: 2022-09-17 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 da4a1522d1d43..31a9b9837853d 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-09-16 +date: 2022-09-17 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_node_server.mdx b/api_docs/kbn_core_node_server.mdx index bf6d4a6e7504b..023eb90ab7268 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-09-16 +date: 2022-09-17 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 68a923031fe98..94ae8fc732675 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-09-16 +date: 2022-09-17 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 01f9bca3ef07d..9f9615f5b78f7 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-09-16 +date: 2022-09-17 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 9ccf357419991..fcd5372d4a574 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-09-16 +date: 2022-09-17 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 bda170301c25b..071aa4f4ddcd4 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-09-16 +date: 2022-09-17 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 f75f14c7ff86f..0c04fccc1c4d3 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-09-16 +date: 2022-09-17 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 45dc5afae14d5..bd22ac7302f14 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-09-16 +date: 2022-09-17 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 9891fec77e0b1..af70cbb3acdfb 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-09-16 +date: 2022-09-17 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 b81d8c40eb1a4..3c0ba93a864ba 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-09-16 +date: 2022-09-17 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 e9757dff3607f..b19d32e8cde7c 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-09-16 +date: 2022-09-17 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 15caa83d67230..6736769a16d4c 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-09-16 +date: 2022-09-17 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_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index f5a3a6b516cc1..70f083d700c8b 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_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 a6f101a4af96a..acbb9f398e80d 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-09-16 +date: 2022-09-17 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 3630f06ce6e2d..81a17c8f70566 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-09-16 +date: 2022-09-17 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 a88531fe71928..efefed758979f 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-09-16 +date: 2022-09-17 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 d2450a89ff698..b10a3326bf71f 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-09-16 +date: 2022-09-17 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 94acccf6c6b1e..0e26ade6fab50 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-09-16 +date: 2022-09-17 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 d95a501757644..01103dc71e84d 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-09-16 +date: 2022-09-17 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 4d9902fadb309..10fc46db65b99 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-09-16 +date: 2022-09-17 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 baea1e35d9089..c7a1508a89ab1 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-09-16 +date: 2022-09-17 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 bbb3e0524af62..ef2ab66d590dd 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-09-16 +date: 2022-09-17 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 d638492ac5d37..79ba01fab3578 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-09-16 +date: 2022-09-17 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 f366609197be4..7078b417d105e 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-09-16 +date: 2022-09-17 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 3a874704aa27c..0513e62227022 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-09-16 +date: 2022-09-17 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 39df9a446d526..2e6000d4875ab 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-09-16 +date: 2022-09-17 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 85591412f1874..44e63923d82ff 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-09-16 +date: 2022-09-17 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 36a81d97ad054..41dae38603b2a 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-09-16 +date: 2022-09-17 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 cb98fcb2603c9..20fe02a98e008 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-09-16 +date: 2022-09-17 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 89cf9e3f39f79..c607e2ce2630e 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-09-16 +date: 2022-09-17 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 e388109467e08..ed4b47bf727dc 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-09-16 +date: 2022-09-17 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_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 06f4a07631288..c4260f3132a8c 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index a7438ac98836f..bf118a5581347 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index ae57ebd3447bc..128ad58591e56 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 88c5a8b0de7a6..7968ec06a4fba 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 2a3aac600e632..5f487746d8a8a 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.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 a5b3101b3842e..3df4d2be071d1 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-09-16 +date: 2022-09-17 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 1ed67ac38dede..67bb464191e36 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-09-16 +date: 2022-09-17 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 e67101987a17a..1c4ea460cc63d 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-09-16 +date: 2022-09-17 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 4d81ccf8eb784..8cbe0d27ea212 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-09-16 +date: 2022-09-17 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 bd750e2835de1..5a8247db103d5 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-09-16 +date: 2022-09-17 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 3ab2bd0d074b0..5dd16e4286c28 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-09-16 +date: 2022-09-17 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 416eb676ead0f..a3cfc0f2d969f 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-09-16 +date: 2022-09-17 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 c9c0d40e5c2ac..f3f901c0c44ad 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-09-16 +date: 2022-09-17 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 89a1f5a4a0180..85e10bed4754c 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-09-16 +date: 2022-09-17 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_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index ebadcf0adbfd9..5590c2e5cd86f 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 6e1f4984a620f..959310850b9be 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 63bb3e26d5130..7c7a942b75e6c 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 769d6bca0e3a6..46d0c001a0df8 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-09-16 +date: 2022-09-17 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_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index ba5de9f2e5744..43d074dd34fb1 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 6b565c5b2d7bc..3224100425810 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index d9f9348e45388..d825fd2adbd91 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-09-16 +date: 2022-09-17 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 09db2d3fe1e3b..573af775d4a45 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-09-16 +date: 2022-09-17 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 853472d308052..2b9c8bdd7bc28 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-09-16 +date: 2022-09-17 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 cbdf79d829c82..ab18cd7dbc064 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-09-16 +date: 2022-09-17 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 289c23feb4500..da66ac63076ab 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-09-16 +date: 2022-09-17 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 a7e8d5989c606..3289ce3e422ea 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-09-16 +date: 2022-09-17 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 efd0fe6071d74..c1dac52ffd957 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-09-16 +date: 2022-09-17 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 3ecb932da1929..081df780a8f87 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-09-16 +date: 2022-09-17 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 7a8d06adc0587..346c4ad75d5ee 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-09-16 +date: 2022-09-17 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 e88e3d3f02260..60f78cadbb29e 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-09-16 +date: 2022-09-17 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 88f7fbe513879..d3f9b8c9c7f3a 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-09-16 +date: 2022-09-17 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 ab6c3f52c1661..f17f30860fa15 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index 928f09a685e64..d84edf5ed8652 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -4331,7 +4331,7 @@ "section": "def-common.IFieldSubType", "text": "IFieldSubType" }, - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; esTypes?: string[] | undefined; }" ], "path": "packages/kbn-es-query/src/es_query/types.ts", "deprecated": false, diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 4ea6c4d0270ab..312dd2bba1f6c 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-09-16 +date: 2022-09-17 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 526edd5a7286a..f7ad491e97bd1 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-09-16 +date: 2022-09-17 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 3ba04ac6742cb..34d33e5438eeb 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-09-16 +date: 2022-09-17 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 4556d882753a9..1d3ee28662d30 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-09-16 +date: 2022-09-17 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 266db4346c649..43f2d30875dca 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-09-16 +date: 2022-09-17 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 b87bb2236ad6c..22e51a656161e 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-09-16 +date: 2022-09-17 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 f7514e76fd812..fd2a8234b32dd 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-09-16 +date: 2022-09-17 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 b711db9b8c7dc..5b810510376cf 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-09-16 +date: 2022-09-17 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 aebbc95eed5db..d70e3f35218f2 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-09-16 +date: 2022-09-17 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 20c39682df3ba..3980beef5a011 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-09-16 +date: 2022-09-17 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 559873def41fa..a5752b9149931 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-09-16 +date: 2022-09-17 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 36a47e6fd3665..e34ec279bd69c 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-09-16 +date: 2022-09-17 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 48d4528f89e0b..5ee80044683c1 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-09-16 +date: 2022-09-17 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 0f7e54d2d826c..88001cb71756c 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-09-16 +date: 2022-09-17 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 a7d6436c35074..484c8c203ff97 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 916ac4edece4d..85018c64742bf 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-09-16 +date: 2022-09-17 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 360601743ef63..0f047e04925c7 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-09-16 +date: 2022-09-17 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 08d4bbe9d3e75..a70f9872389f7 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-09-16 +date: 2022-09-17 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 be0b9a952187e..3907630c04b8e 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-09-16 +date: 2022-09-17 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 cbd535c7d2e1a..1afe55a1ceaf4 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-09-16 +date: 2022-09-17 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 704538d039df2..aadb519805bb1 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-09-16 +date: 2022-09-17 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 4b9b4c9ded5d2..a6c8456d3d923 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-09-16 +date: 2022-09-17 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 723f3830281a1..def47a4cd965d 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-09-16 +date: 2022-09-17 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 d6a23470a935e..a67a538100398 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-09-16 +date: 2022-09-17 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 7ceb1ffafd03e..99bdf4a1f2d0c 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-09-16 +date: 2022-09-17 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 0c3525c58b52a..626d84461a239 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-09-16 +date: 2022-09-17 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 29be28fe83bdf..fa2162367add3 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-09-16 +date: 2022-09-17 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 98121d372f387..b001bff457de1 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-09-16 +date: 2022-09-17 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 a9bb61fcb5b32..6743a48767d18 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-09-16 +date: 2022-09-17 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 bbe7eb8a62e3c..41b269883369f 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-09-16 +date: 2022-09-17 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 4a6f148a9b1c8..4f946bfcb80ea 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-09-16 +date: 2022-09-17 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 910663c985ead..a4f0d333272ab 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-09-16 +date: 2022-09-17 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 b46b98aba0108..9405ca2caa31c 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-09-16 +date: 2022-09-17 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 4047a43dc9af4..06c469ec22ddb 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-09-16 +date: 2022-09-17 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 bfd9ca9767ed6..0cf162321992b 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-09-16 +date: 2022-09-17 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 d35ca5d72760c..e73a0be9fd686 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-09-16 +date: 2022-09-17 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 56736882cf4ce..3aae342f7b411 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-09-16 +date: 2022-09-17 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 d2224103ee3bd..aa81259228f4d 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-09-16 +date: 2022-09-17 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 cfb95942dcca9..ac366d918d4f5 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-09-16 +date: 2022-09-17 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 c64310453a4b3..d1d3cb1d8f12f 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-09-16 +date: 2022-09-17 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 acd9158741c3d..f4bd8dc0c2b50 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-09-16 +date: 2022-09-17 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 a27603037a69f..1bf98655d5d87 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-09-16 +date: 2022-09-17 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 8298accc6397f..5064fb2b7635c 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-09-16 +date: 2022-09-17 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 8f673e98e5dd1..dc9260c8de2f6 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-09-16 +date: 2022-09-17 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 aa9defd740b2c..62a11c2d65ceb 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-09-16 +date: 2022-09-17 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 46b43550037fa..e7412860203aa 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-09-16 +date: 2022-09-17 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 2a36ed857d814..7fdbcac90d608 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-09-16 +date: 2022-09-17 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 ac7843c890f96..878db2f1f02f9 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-09-16 +date: 2022-09-17 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 6eae49690a165..33146b82e82b4 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-09-16 +date: 2022-09-17 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 b2bff333aef1c..a66906ecc1240 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-09-16 +date: 2022-09-17 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 0c66e039c92f4..c67eb0131d16a 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-09-16 +date: 2022-09-17 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 a9006d28ec624..f1a4d2c37fb9b 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-09-16 +date: 2022-09-17 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 e245ed34fb036..6801e4bbb5a1f 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-09-16 +date: 2022-09-17 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 99967c11ef8c1..71ac81ad8af75 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-09-16 +date: 2022-09-17 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 40ed36e167fd2..e02d42890eb37 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-09-16 +date: 2022-09-17 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 108ca587099be..4395b1f6d3aa1 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-09-16 +date: 2022-09-17 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 180ce0b2298ee..7ef3e5f67853b 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-09-16 +date: 2022-09-17 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 32005ebac2760..8d62153f2e5ba 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-09-16 +date: 2022-09-17 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 0f026abe9b337..a116f6a3a71cd 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-09-16 +date: 2022-09-17 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 a4e7ef6a79f38..9bb3d200a723f 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-09-16 +date: 2022-09-17 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 f6a859c719bef..6aa290797532d 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-09-16 +date: 2022-09-17 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 5f54ad282b9b1..2da3e73772cef 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-09-16 +date: 2022-09-17 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 cb6f819e530ce..e6074b77b4981 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-09-16 +date: 2022-09-17 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 ddf2d830b3639..14afa3dcab6c8 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-09-16 +date: 2022-09-17 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 0b79e21dbad61..e537d9fc10578 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-09-16 +date: 2022-09-17 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 9f34d093ee138..78b3fccc1ad7a 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-09-16 +date: 2022-09-17 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 0a1c6eb8ec706..92e9757dbd941 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-09-16 +date: 2022-09-17 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_router.mdx b/api_docs/kbn_shared_ux_router.mdx index ac9a7ee52deb1..ef9de112e91e9 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 3771da69028a8..a3f1d5c524d89 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 28a9a2ee000a4..1daf1c414b39a 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 6149e84fc2f9c..d32b1d330358c 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-09-16 +date: 2022-09-17 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 f3fdc4b5ece37..142b184670188 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-09-16 +date: 2022-09-17 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 60dd5fdcc6d55..62f4b998a55c4 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-09-16 +date: 2022-09-17 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 6ee19e42188d0..a7f615e50624d 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-09-16 +date: 2022-09-17 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 8d04fe3a18d9b..083cad183416d 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-09-16 +date: 2022-09-17 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 b4be2245f78c2..291d39ba48d0b 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-09-16 +date: 2022-09-17 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 4fd12bbb026a0..12881eee08aee 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-09-16 +date: 2022-09-17 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 a27871d528a3d..8a2964f9429a0 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-09-16 +date: 2022-09-17 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 1e2286f32139b..0f996e4763cd1 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-09-16 +date: 2022-09-17 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 6d4978ce224d8..da55e129319aa 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.devdocs.json b/api_docs/kbn_test_subj_selector.devdocs.json new file mode 100644 index 0000000000000..78c6606408451 --- /dev/null +++ b/api_docs/kbn_test_subj_selector.devdocs.json @@ -0,0 +1,63 @@ +{ + "id": "@kbn/test-subj-selector", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/test-subj-selector", + "id": "def-server.subj", + "type": "Function", + "tags": [], + "label": "subj", + "description": [ + "\nConverts a testSubject selector into a CSS selector.\n\ntestSubject selector syntax rules:\n\n - `data-test-subj` values can include spaces\n\n - prefixing a value with `~` will allow matching a single word in a `data-test-subj` that uses several space delimited list words\n - example: `~foo`\n - css equivalent: `[data-test-subj~=\"foo\"]`\n\n - the `>` character is used between two values to indicate that the value on the right must match an element inside an element matched by the value on the left\n - example: `foo > bar`\n - css equivalent: `[data-test-subj=foo] [data-test-subj=bar]`\n\n - the `&` character is used between two values to indicate that the value on both sides must both match the element\n - example: `foo & bar`\n - css equivalent: `[data-test-subj=foo][data-test-subj=bar]`" + ], + "signature": [ + "(selector: string) => string" + ], + "path": "packages/kbn-test-subj-selector/test_subj_selector.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/test-subj-selector", + "id": "def-server.subj.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-test-subj-selector/test_subj_selector.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx new file mode 100644 index 0000000000000..e9e587e3b6a25 --- /dev/null +++ b/api_docs/kbn_test_subj_selector.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: kibKbnTestSubjSelectorPluginApi +slug: /kibana-dev-docs/api/kbn-test-subj-selector +title: "@kbn/test-subj-selector" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/test-subj-selector plugin +date: 2022-09-17 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] +--- +import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 1 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index c45a8faa285fe..03ec470800129 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-09-16 +date: 2022-09-17 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 eb7173e0cb905..d37f02dbd5e58 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-09-16 +date: 2022-09-17 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 93ffd8d477656..82ee92f75033b 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-09-16 +date: 2022-09-17 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 efea59e0dc139..e5a31e9a6b0f6 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-09-16 +date: 2022-09-17 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 74fdbd658da86..98ed2471df677 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-09-16 +date: 2022-09-17 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 11af3eaae141e..eb5d76541ed51 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-09-16 +date: 2022-09-17 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 79a0284a5e84d..5cf2bb01e0b14 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-09-16 +date: 2022-09-17 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 c74715ea8c8bf..907cda563684f 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-09-16 +date: 2022-09-17 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 a91ffda96b905..3b4ae743ca90a 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-09-16 +date: 2022-09-17 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 752170e6108d0..8425f13942a5a 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-09-16 +date: 2022-09-17 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 da453725287eb..aae00dc89d1cd 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-09-16 +date: 2022-09-17 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 1c95c60f7ab23..499d91c38a031 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-09-16 +date: 2022-09-17 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 58ffc35483859..7666a1ab4c507 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-09-16 +date: 2022-09-17 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 dd98e7157dd5a..497345694911e 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-09-16 +date: 2022-09-17 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 c909b74ee6064..6e3e2a4c03eda 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-09-16 +date: 2022-09-17 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 a8b0a61e1c78a..f53f2208c326e 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-09-16 +date: 2022-09-17 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 cd388625bfc86..126fa9f032317 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-09-16 +date: 2022-09-17 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 a01d1c44fb7b5..2af3e49c9f46f 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-09-16 +date: 2022-09-17 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 58f3ca655e9be..65b673574ec96 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-09-16 +date: 2022-09-17 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 d29c4bdaa54d6..07c5f563daa7e 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-09-16 +date: 2022-09-17 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 f9b92392acb2b..7cde38f1059df 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-09-16 +date: 2022-09-17 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 ca7bbf80792cd..f724e07954c80 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.devdocs.json b/api_docs/ml.devdocs.json index 2e8827a761114..29882bb5a3289 100644 --- a/api_docs/ml.devdocs.json +++ b/api_docs/ml.devdocs.json @@ -1596,7 +1596,7 @@ "label": "ML_PAGES", "description": [], "signature": [ - "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly TRAINED_MODELS_NODES: \"trained_models/nodes\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly ACCESS_DENIED: \"access-denied\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; }" + "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly TRAINED_MODELS_NODES: \"trained_models/nodes\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly ACCESS_DENIED: \"access-denied\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; readonly AIOPS_LOG_CATEGORIZATION: \"aiops/log_categorization\"; readonly AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: \"aiops/log_categorization_index_select\"; }" ], "path": "x-pack/plugins/ml/common/constants/locator.ts", "deprecated": false, diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 8ca9b074c95ef..1527424124ec4 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-09-16 +date: 2022-09-17 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 80e9179edd11b..36331eb50768f 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-09-16 +date: 2022-09-17 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 972b441cf7221..a22f8136074a3 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-09-16 +date: 2022-09-17 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 c9d1bfcd7a3f2..e94a9382ec935 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-09-16 +date: 2022-09-17 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 0c0b0d0569b1e..efa444d548e0f 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-09-16 +date: 2022-09-17 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 52917c76e918f..7bc0ea5746c26 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-09-16 +date: 2022-09-17 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 e4fecbd1642f7..7a74eb2cef8a5 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-09-16 +date: 2022-09-17 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 acdc7e071f287..72fdde2c2066f 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 458 | 383 | 38 | +| 458 | 384 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 31118 | 182 | 20880 | 975 | +| 31125 | 182 | 20884 | 975 | ## Plugin Directory @@ -29,13 +29,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 214 | 0 | 209 | 19 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 36 | 1 | 32 | 2 | -| | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 7 | 0 | 0 | 1 | +| | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 9 | 0 | 0 | 2 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 370 | 0 | 361 | 22 | | | [APM UI](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 38 | 0 | 38 | 52 | | | [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 | 84 | 0 | 68 | 29 | +| | [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 87 | 0 | 71 | 28 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 264 | 2 | 249 | 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 | @@ -424,6 +424,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Kibana Core | - | 2 | 0 | 2 | 0 | | | Operations | - | 254 | 5 | 213 | 11 | | | [Owner missing] | - | 135 | 8 | 103 | 2 | +| | [Owner missing] | - | 2 | 0 | 1 | 0 | | | [Owner missing] | - | 72 | 0 | 55 | 0 | | | [Owner missing] | - | 8 | 0 | 2 | 0 | | | [Owner missing] | - | 113 | 1 | 65 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index ee28f5d100fe8..22bcbbeaa207b 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index dae070e7441df..44cd0fcf5224f 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index e51170f1ab197..e0d547fac28ce 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-09-16 +date: 2022-09-17 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 c4d4a2ffb81a2..6e9ed9e234164 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-09-16 +date: 2022-09-17 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 5e73ff580bd5a..3cfc50e99d285 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-09-16 +date: 2022-09-17 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 934bed7630e2d..1badcfc29d174 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-09-16 +date: 2022-09-17 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 745a480c42385..1d8d16ac578b8 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-09-16 +date: 2022-09-17 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 67cb74f601542..6ea19a0c2c74b 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index e1fda967a5c19..3b3112cc26dcb 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 25132a284524f..8cae8528e012d 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-09-16 +date: 2022-09-17 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 fa3107a2ba758..ba3b8c2d8b20b 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-09-16 +date: 2022-09-17 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 fbb284821351f..b81a74d39a5d6 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-09-16 +date: 2022-09-17 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 4e018e282a417..bb84b74343bab 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-09-16 +date: 2022-09-17 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 e436d4732f767..ad584e88fec2d 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-09-16 +date: 2022-09-17 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 6afd85ddbe59b..72e70578e27ff 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-09-16 +date: 2022-09-17 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 ccfbdf0a21e6f..26a1326d507f6 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-09-16 +date: 2022-09-17 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 3ebfe809f25a9..b01ca8b68c319 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-09-16 +date: 2022-09-17 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 547bc46121bab..ba418654af041 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-09-16 +date: 2022-09-17 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 45b0f5b0579f4..df5c035c61c66 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-09-16 +date: 2022-09-17 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 0593e0859ffef..4382de1133be4 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-09-16 +date: 2022-09-17 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 221a75452b69a..67ad7b0a2da77 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-09-16 +date: 2022-09-17 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 aef94c8b01b67..c9da7a691ef97 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 12cae65d716b8..016ecd15d42df 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2022-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index e9f4ac32b7639..7a4f3a4aaf918 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-09-16 +date: 2022-09-17 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 5588cb19a211d..8d2abd13fed90 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-09-16 +date: 2022-09-17 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 781c96f70bf98..c2ac77c2b4c0a 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-09-16 +date: 2022-09-17 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 01f55ab9b62ca..54787b697a84a 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-09-16 +date: 2022-09-17 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 d04ab81ff27bb..d83f27ba5e418 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-09-16 +date: 2022-09-17 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 eb65dfd9b33c3..08f51a0cab0d4 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-09-16 +date: 2022-09-17 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 d638c6235b4ef..3af9d3132ec10 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-09-16 +date: 2022-09-17 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 7ebbc1c2b0a1e..b1003107a5d72 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-09-16 +date: 2022-09-17 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 1fa9e73e95bd0..93afca6c1697b 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-09-16 +date: 2022-09-17 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 117c56ce2e4d4..470435f786225 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-09-16 +date: 2022-09-17 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 0645f4175f561..80bf51882bdc9 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-09-16 +date: 2022-09-17 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 614f41e97969b..ba0329a99e467 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-09-16 +date: 2022-09-17 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 36f6fbca5534a..1aab49b0a0b33 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-09-16 +date: 2022-09-17 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 5ea17435303e8..44ab156e77d33 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-09-16 +date: 2022-09-17 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 418745559941b..e3b912d6562fd 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-09-16 +date: 2022-09-17 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 256148aed11ec..a76268b9c0621 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-09-16 +date: 2022-09-17 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 9bf17796bccbf..0458ab86cdc12 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-09-16 +date: 2022-09-17 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 35b2c8731277e..48b030c0a9819 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-09-16 +date: 2022-09-17 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 1ec278381bcce..e2dd552cbf63b 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-09-16 +date: 2022-09-17 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 72aa00f2b862b..c25793cedded5 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-09-16 +date: 2022-09-17 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 9562cf9e49226..4c47a46b88c38 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-09-16 +date: 2022-09-17 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 457d1fbb4325e..90c2246e5fa4c 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-09-16 +date: 2022-09-17 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 2edff681b4c52..3611480d00bb8 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-09-16 +date: 2022-09-17 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 00ee3e122300e..c1413f464de29 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-09-16 +date: 2022-09-17 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 396cb6eea16c3..66969be7e7437 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-09-16 +date: 2022-09-17 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 04e89e5dae11d..4d57d5a7e8796 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-09-16 +date: 2022-09-17 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 a073edea817a1..c00df2d18f797 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-09-16 +date: 2022-09-17 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 e999d94a5796e..849457e94846d 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-09-16 +date: 2022-09-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 4f400771c9feec23c9ca1bb6c87240245cb1cde0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 14:16:57 +0200 Subject: [PATCH 38/79] Update dependency react-hook-form to ^7.35.0 (#140887) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d18b2678a99eb..5ac95b11986e1 100644 --- a/package.json +++ b/package.json @@ -556,7 +556,7 @@ "react-fast-compare": "^2.0.4", "react-focus-on": "^3.6.0", "react-grid-layout": "^1.3.4", - "react-hook-form": "^7.34.2", + "react-hook-form": "^7.35.0", "react-intl": "^2.8.0", "react-is": "^17.0.2", "react-markdown": "^6.0.3", diff --git a/yarn.lock b/yarn.lock index 4fc61a4458015..d7ab8357a85de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22827,10 +22827,10 @@ react-helmet-async@^1.0.7: react-fast-compare "^3.2.0" shallowequal "^1.1.0" -react-hook-form@^7.34.2: - version "7.34.2" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.34.2.tgz#9ac6d1a309a7c4aaa369d1269357a70e9e9bf4de" - integrity sha512-1lYWbEqr0GW7HHUjMScXMidGvV0BE2RJV3ap2BL7G0EJirkqpccTaawbsvBO8GZaB3JjCeFBEbnEWI1P8ZoLRQ== +react-hook-form@^7.35.0: + version "7.35.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.35.0.tgz#b133de48fc84b1e62f9277ba79dfbacd9bb13dd3" + integrity sha512-9CYdOed+Itbiu5VMVxW0PK9mBR3f0gDGJcZEyUSm0eJbDymQ913TRs2gHcQZZmfTC+rtxyDFRuelMxx/+xwMcw== react-input-autosize@^3.0.0: version "3.0.0" From 943675d4fc9807b4589266fcfed36016eea4317c Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 17 Sep 2022 22:38:52 -0600 Subject: [PATCH 39/79] [api-docs] Daily api_docs build (#140893) --- 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/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/guided_onboarding.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_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_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_browser_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_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_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_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.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_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_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_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_rendering_browser_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_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.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_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.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_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_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.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_test_subj_selector.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/profiling.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_finder.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/stack_connectors.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 +- 391 files changed, 391 insertions(+), 391 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 94fc58b05381c..ba16b6349628b 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-09-17 +date: 2022-09-18 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 566f47ec3c580..4a7bf9fe1ed29 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-09-17 +date: 2022-09-18 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 ca92815ccaa68..f7f0f370226dd 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-09-17 +date: 2022-09-18 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 91f1a811f9189..5a96ecdcf9d74 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-09-17 +date: 2022-09-18 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 4ce896985c275..9a0d363ff2a2a 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-09-17 +date: 2022-09-18 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 9f5bd8a93b20f..5704f6a666e68 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-09-17 +date: 2022-09-18 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 333dbc9b9a45d..0cd715153dd2a 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-09-17 +date: 2022-09-18 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 9cc22b1ded6f9..c2f53f24dcc71 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-09-17 +date: 2022-09-18 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 a8a5b958f9fed..fdd9ce529bc02 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-09-17 +date: 2022-09-18 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 c4d9a0c524279..1d6885407f326 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-09-17 +date: 2022-09-18 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 2bc376bac752b..606a1a560e4da 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-09-17 +date: 2022-09-18 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 73d4fbcb51480..ac34b01923bba 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-09-17 +date: 2022-09-18 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 0666787230868..eba3ac4dfb767 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-09-17 +date: 2022-09-18 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 ed27eb22e40fb..e4de850d59bf3 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-09-17 +date: 2022-09-18 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 2630a8ff1787d..9732a81c73006 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 5c5259990b080..96c4fa31d6ff4 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-09-17 +date: 2022-09-18 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 28cacb4f946ff..d707be2855fd6 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-09-17 +date: 2022-09-18 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 106a2ab907f8e..cccddd2fc41ea 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-09-17 +date: 2022-09-18 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 691277770df98..12fbe4e58d6a6 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-09-17 +date: 2022-09-18 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 d036c06e82b1d..d2596ce6d21f6 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-09-17 +date: 2022-09-18 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 eb8d27c975125..654819e5e5538 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-09-17 +date: 2022-09-18 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 0076b80bdc2f8..cc18be96ed940 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-09-17 +date: 2022-09-18 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 5ed09dcd9e98f..2b0a6cc0a2dbc 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-09-17 +date: 2022-09-18 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 6674d4e8aad7a..a5116bbcffe44 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-09-17 +date: 2022-09-18 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 fd98e648fc0fb..b162959db88f8 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-09-17 +date: 2022-09-18 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 b3ba25f3a2139..373a12c08c4ff 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-09-17 +date: 2022-09-18 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 c405ce1cda2ce..d7d75c1241434 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 99ee934d06ec3..0d689a7050ec9 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9b9a2b9be35fa..dddaa8f37c6d0 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 512f4afb40c15..fd0a4409280f9 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-09-17 +date: 2022-09-18 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 6f813741dc3c1..59d5287c7508a 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-09-17 +date: 2022-09-18 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 04e986f7abb49..ea8dcb712b7c5 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-09-17 +date: 2022-09-18 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 94aa652d2d8ff..bcb58ba4e9210 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-09-17 +date: 2022-09-18 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 19035f35a3ad0..289571fb340a6 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-09-17 +date: 2022-09-18 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 e2a8ccab28201..aafc1350dc5b2 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-09-17 +date: 2022-09-18 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 9b0a921aa5785..bca96b4610bd5 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-09-17 +date: 2022-09-18 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 699956e0e31ff..ec4c17f2c5b18 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-09-17 +date: 2022-09-18 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 390d962c755d5..dfb2d1886888d 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-09-17 +date: 2022-09-18 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 45857b1184a6d..4cfea257e98a0 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-09-17 +date: 2022-09-18 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 61ad90851a3eb..7b583512d391a 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-09-17 +date: 2022-09-18 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 1fb1c6cf2e226..ba5c3f2c0fe7f 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-09-17 +date: 2022-09-18 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 b97bd668b471c..e6160329633a6 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-09-17 +date: 2022-09-18 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 38d1a14a08ff2..ade1e36d882f2 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-09-17 +date: 2022-09-18 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 b4ee97a290199..4025a78c90ec1 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-09-17 +date: 2022-09-18 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 b1629fb8f5126..a8520091f7876 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-09-17 +date: 2022-09-18 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 79a4565335b41..78f277ec88f7b 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-09-17 +date: 2022-09-18 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 30b848192aabf..de2f03b158baa 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-09-17 +date: 2022-09-18 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 6c7ff7091753d..c8ddacfa298b5 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-09-17 +date: 2022-09-18 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 fab4e97be3712..7f19fae871779 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-09-17 +date: 2022-09-18 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 af047052f762e..4e2a250c85e96 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-09-17 +date: 2022-09-18 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 2598b2711747d..b87555709f48f 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-09-17 +date: 2022-09-18 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 a0a6ffb2f84d4..c9b61aaa863d2 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-09-17 +date: 2022-09-18 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 8ae1b97d814e9..4b050ff7c5284 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-09-17 +date: 2022-09-18 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 c37c3ac652854..c16f66dfe7e71 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-09-17 +date: 2022-09-18 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 27fc23c24f67b..c50ccb0de1e02 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-09-17 +date: 2022-09-18 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 9d9495bad01d4..ff0330698549a 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-09-17 +date: 2022-09-18 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 a6f3e9e06de98..072274cb3e8f1 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-09-17 +date: 2022-09-18 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 34dfaef4e1f6f..45ed73407624a 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-09-17 +date: 2022-09-18 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 579112aec45de..9b16cbc03cb93 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 6072741c327f2..138d186bb8bde 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index a2bb24f9eb6e8..042dd2f9a464b 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-09-17 +date: 2022-09-18 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 13f613f9f0f9d..29d5bb34dad9f 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-09-17 +date: 2022-09-18 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 1cefac1611db6..738ed32c3e791 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-09-17 +date: 2022-09-18 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 7a21fd57b96ec..a2590f8bfc3f8 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-09-17 +date: 2022-09-18 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 e6be142b3ced0..9347356c2c050 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-09-17 +date: 2022-09-18 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 e43869fd3b847..5f7a53d08f9bb 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-09-17 +date: 2022-09-18 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 5498d2322a038..989059b28fbac 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-09-17 +date: 2022-09-18 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 e45a59f206527..aa284f675e8ee 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-09-17 +date: 2022-09-18 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 c20470a49b74e..36122e9be8fc2 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-09-17 +date: 2022-09-18 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 12d5de9ce064f..cce26e15b3c3e 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-09-17 +date: 2022-09-18 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 546b4c10f119f..e65121565224f 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-09-17 +date: 2022-09-18 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 7ecbd06e84afb..32a7e26e7c8e2 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-09-17 +date: 2022-09-18 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 abdd085ec37ff..6dc2003622eb8 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-09-17 +date: 2022-09-18 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 b0eb8fe984dc5..52c2699c2ea87 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-09-17 +date: 2022-09-18 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 b2cbee18c3f26..f6e56113d2ccb 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-09-17 +date: 2022-09-18 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 a10415bd74bc1..d7b97c7fa3c7b 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-09-17 +date: 2022-09-18 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 5425785131002..ccd70cfad1ae3 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-09-17 +date: 2022-09-18 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 9c2679fe0b0e4..a5f12f4622475 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-09-17 +date: 2022-09-18 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 4c19595404165..c782b8395358d 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-09-17 +date: 2022-09-18 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 908b4626b882a..af8c3a94335b5 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-09-17 +date: 2022-09-18 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 515828589e043..58cd6bccccc04 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-09-17 +date: 2022-09-18 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 4eda7b8db8f6a..21b7f5f589154 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-09-17 +date: 2022-09-18 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 e99f9293c6cc3..911cd4514d44e 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-09-17 +date: 2022-09-18 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 4ba19919d0e43..0a4d4e85c61b4 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-09-17 +date: 2022-09-18 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 cac005f4a11b9..bbb31d72b1259 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-09-17 +date: 2022-09-18 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 bad808826efdd..63faca5e29836 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-09-17 +date: 2022-09-18 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 b7fbc32cde99b..e1e715c8ab31f 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-09-17 +date: 2022-09-18 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 2086a150728ff..d358b94419f0a 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-09-17 +date: 2022-09-18 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 a9ca73ba29000..157db0600145c 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-09-17 +date: 2022-09-18 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 0ac4a1c05aa88..fd0c52123e8e9 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-09-17 +date: 2022-09-18 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 a5a250737f08f..6f76399bbcadc 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-09-17 +date: 2022-09-18 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 85cee5e4a4e62..07328fab1263b 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-09-17 +date: 2022-09-18 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 3e851c74dfc80..06be266cdaa7a 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-09-17 +date: 2022-09-18 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 f606554733eb7..f995bccec7911 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-09-17 +date: 2022-09-18 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 79fdc03a0c1c4..80da2cc5e11dd 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-09-17 +date: 2022-09-18 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_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 5d734f9a2af79..a1b72f2c22ddb 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 8cfed235dee6a..f10f5305fcae2 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index b0400feb9ae2f..6663357dfaa0b 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index c8c74b88de04f..48984bbef42ca 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 4f0b321ef9229..a0a5c60730f29 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 6dc24ac716141..26672bc5ce9a6 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index fa7b8ea3799a5..3117d40d8cb68 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-09-17 +date: 2022-09-18 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 a058d4a21b178..40b8f969ef6f8 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-09-17 +date: 2022-09-18 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 3fff36e41315d..3966c837cf219 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-09-17 +date: 2022-09-18 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 8604d25de70d6..3848c7626e02f 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-09-17 +date: 2022-09-18 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_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index de5ff0851bcf8..282248188264a 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index b5671af23d948..0fa0402abb841 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-09-17 +date: 2022-09-18 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 9378c429b063a..ebcf9644a2b68 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-09-17 +date: 2022-09-18 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 52451b4316d86..32a8e59c03dc6 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-09-17 +date: 2022-09-18 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_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index ddf9ee792f99d..7fd6a0e765659 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 6b3949f7b36b6..6cb6da94cf952 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index ec4d2fff19fb7..92c7907df3284 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-09-17 +date: 2022-09-18 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 ed56362c485c8..b9c92d54bd6c3 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-09-17 +date: 2022-09-18 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 537fe41a6ebbc..e654d156cb37e 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-09-17 +date: 2022-09-18 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 8411bd2287ffd..3cdc9b642c931 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-09-17 +date: 2022-09-18 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 6be460a2d3d88..5e8db3b6af15f 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-09-17 +date: 2022-09-18 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 e597f6c1b1422..6e71707c7866f 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-09-17 +date: 2022-09-18 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_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 041bfa1bf1ce0..025af4ec4132b 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 7309e472c9590..4d79a1009fba2 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index bc4599e0aa207..392b3c6f617b5 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-09-17 +date: 2022-09-18 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 8f8aa4752899b..dbd9bde0ef0c4 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-09-17 +date: 2022-09-18 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 6449e9735bfc3..b59ff01038de4 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-09-17 +date: 2022-09-18 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 6de5804097e2d..3b6b0b26b6a07 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-09-17 +date: 2022-09-18 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 f0ce95b4ffe94..8b923b83f19f5 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-09-17 +date: 2022-09-18 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 b8eafaa661447..44cd8f477fdb1 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-09-17 +date: 2022-09-18 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 c5d90defa9163..97a762c1ce6bb 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-09-17 +date: 2022-09-18 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 cafd85573cd1f..b9371b6d6aacd 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-09-17 +date: 2022-09-18 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 28cca9e23dd49..7837d39c79df6 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-09-17 +date: 2022-09-18 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 2c8d52e9a4ca6..70fed6aa9a61d 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-09-17 +date: 2022-09-18 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 08e9dadb65f28..a166a5154c8b5 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-09-17 +date: 2022-09-18 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 325d4eb4bd5c6..3f09822d0c24b 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-09-17 +date: 2022-09-18 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 8f98db8e7d1da..25f4cebdda8f9 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-09-17 +date: 2022-09-18 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 b74f2fda65848..b6975abb2733f 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-09-17 +date: 2022-09-18 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 c3bc7e0fa3f92..d2dcb6226b5ba 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-09-17 +date: 2022-09-18 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 5c58ba021f2c3..f2944d715f631 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-09-17 +date: 2022-09-18 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 5ba6d91375559..1a69b4a1c0ebc 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-09-17 +date: 2022-09-18 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 dbe6163a57f9d..2487307010fc7 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-09-17 +date: 2022-09-18 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 ba4e87d9d2608..8d49bfa6a66b5 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-09-17 +date: 2022-09-18 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 403f81dda9044..52a883052ca00 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-09-17 +date: 2022-09-18 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 25a26c7af5e8c..5e8493f8134bd 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-09-17 +date: 2022-09-18 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 0f9200e474fa3..a165460f29c49 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-09-17 +date: 2022-09-18 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 87a63005d0391..e24051fec1c89 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-09-17 +date: 2022-09-18 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 d182f7c17c747..8e9ab6271b289 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-09-17 +date: 2022-09-18 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 72bae699acf21..4d5f0c5c53914 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-09-17 +date: 2022-09-18 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 c0a5bf5dea964..0808f74c3cbac 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-09-17 +date: 2022-09-18 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 10e1e4f799433..637d78c9eb6e1 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-09-17 +date: 2022-09-18 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 98301776169e0..0c3ee09a528af 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-09-17 +date: 2022-09-18 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 2a54e0cc52b34..f8354719149b3 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-09-17 +date: 2022-09-18 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 59b0cebe0f4e1..d55a31838f56b 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-09-17 +date: 2022-09-18 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 82e7c8b8a5a56..8a2be8ad74c72 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-09-17 +date: 2022-09-18 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 f5632a8823907..14d4e5fc6a681 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-09-17 +date: 2022-09-18 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_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 1fc8a95ad7dfe..3dbb5066b6c1a 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index bc49942b24372..a4848bda3f17b 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index ec5a7e021dd69..07771cb610b5d 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index d9cc8fd6ff1f8..917abbb8cb948 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-09-17 +date: 2022-09-18 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 f63ab886d9545..a9d4d2af1766d 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-09-17 +date: 2022-09-18 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 7056e3e440e34..72409605643a6 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-09-17 +date: 2022-09-18 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 3494a45149b4f..494207f90ac0b 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-09-17 +date: 2022-09-18 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 dc95d96396361..3d1796ceb5182 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-09-17 +date: 2022-09-18 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 1eee91716cc21..afa4ca5b23ed9 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-09-17 +date: 2022-09-18 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 86312186d8a3d..2bf1fbcee1e08 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-09-17 +date: 2022-09-18 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 2bfcb79ae0081..c6e82806e6989 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-09-17 +date: 2022-09-18 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 8010b75234477..0bfc2ff35d700 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-09-17 +date: 2022-09-18 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 db3adcb2ba420..73fc91b038bd8 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-09-17 +date: 2022-09-18 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 6aaf0d6057a0b..b141bc5e14f61 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-09-17 +date: 2022-09-18 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 5ff4166fd4e2a..d767be7c24792 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-09-17 +date: 2022-09-18 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 31a9b9837853d..c4450061d9417 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-09-17 +date: 2022-09-18 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_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 023eb90ab7268..881411b1c9f00 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-09-17 +date: 2022-09-18 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 94ae8fc732675..4a419fe6a69de 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-09-17 +date: 2022-09-18 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 9f9615f5b78f7..13354e24d468c 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-09-17 +date: 2022-09-18 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 fcd5372d4a574..9e4dcb3ee4428 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-09-17 +date: 2022-09-18 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 071aa4f4ddcd4..526d400e54446 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-09-17 +date: 2022-09-18 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 0c04fccc1c4d3..90c356db2bba6 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-09-17 +date: 2022-09-18 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 bd22ac7302f14..65c5dac146086 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-09-17 +date: 2022-09-18 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 af70cbb3acdfb..406b5a97f49b0 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-09-17 +date: 2022-09-18 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 3c0ba93a864ba..add609d65d7b2 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-09-17 +date: 2022-09-18 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 b19d32e8cde7c..38aa7aeef6261 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-09-17 +date: 2022-09-18 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 6736769a16d4c..15cfd9ee4634e 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-09-17 +date: 2022-09-18 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_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 70f083d700c8b..9ad832cb19024 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_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 acbb9f398e80d..da699f0586dcd 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-09-17 +date: 2022-09-18 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 81a17c8f70566..8de9119236fd0 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-09-17 +date: 2022-09-18 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 efefed758979f..01cf77f7d8c2e 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-09-17 +date: 2022-09-18 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 b10a3326bf71f..e02b87d2efd3b 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-09-17 +date: 2022-09-18 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 0e26ade6fab50..89164e0d98847 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-09-17 +date: 2022-09-18 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 01103dc71e84d..b43580d1222a7 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-09-17 +date: 2022-09-18 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 10fc46db65b99..dae4c0254d4f2 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-09-17 +date: 2022-09-18 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 c7a1508a89ab1..9ded7fe4156a8 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-09-17 +date: 2022-09-18 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 ef2ab66d590dd..b0f3f7bba0254 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-09-17 +date: 2022-09-18 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 79ba01fab3578..264fc9b47188f 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-09-17 +date: 2022-09-18 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 7078b417d105e..e13525f913010 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-09-17 +date: 2022-09-18 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 0513e62227022..1168e6490312f 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-09-17 +date: 2022-09-18 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 2e6000d4875ab..8e15767ed3798 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-09-17 +date: 2022-09-18 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 44e63923d82ff..f31c2a149fa95 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-09-17 +date: 2022-09-18 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 41dae38603b2a..d2b1e0c0bf26c 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-09-17 +date: 2022-09-18 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 20fe02a98e008..b14dd7e28dcf9 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-09-17 +date: 2022-09-18 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 c607e2ce2630e..b8c270ac8e004 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-09-17 +date: 2022-09-18 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 ed4b47bf727dc..3667ba4b055cb 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-09-17 +date: 2022-09-18 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_status_common.mdx b/api_docs/kbn_core_status_common.mdx index c4260f3132a8c..8059aeb995588 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index bf118a5581347..b8cc3ac018f3d 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 128ad58591e56..cd90305e35c74 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 7968ec06a4fba..2e2d8418dee20 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 5f487746d8a8a..e432b2a3f23ed 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.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 3df4d2be071d1..2541f7fcf7d91 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-09-17 +date: 2022-09-18 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 67bb464191e36..2f2077eacc388 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-09-17 +date: 2022-09-18 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 1c4ea460cc63d..c468d539d59e3 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-09-17 +date: 2022-09-18 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 8cbe0d27ea212..d3d9f970a85d0 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-09-17 +date: 2022-09-18 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 5a8247db103d5..cafb1c1551423 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-09-17 +date: 2022-09-18 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 5dd16e4286c28..666c641213b21 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-09-17 +date: 2022-09-18 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 a3cfc0f2d969f..a04d7a23dddbf 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-09-17 +date: 2022-09-18 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 f3f901c0c44ad..d375ee9de7841 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-09-17 +date: 2022-09-18 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 85e10bed4754c..877f6134b53ca 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-09-17 +date: 2022-09-18 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_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 5590c2e5cd86f..475e9fa5cda3b 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 959310850b9be..be96e150fc2a5 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 7c7a942b75e6c..c95f8f1d7021d 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 46d0c001a0df8..1fec670f2045f 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-09-17 +date: 2022-09-18 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_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 43d074dd34fb1..b2ff204ec47ce 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 3224100425810..1a12eda734014 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index d825fd2adbd91..e36fb45bdaf44 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-09-17 +date: 2022-09-18 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 573af775d4a45..a930caf709238 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-09-17 +date: 2022-09-18 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 2b9c8bdd7bc28..62b392d730292 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-09-17 +date: 2022-09-18 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 ab18cd7dbc064..02552a20a9d75 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-09-17 +date: 2022-09-18 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 da66ac63076ab..04920f15901ac 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-09-17 +date: 2022-09-18 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 3289ce3e422ea..d1818b3997882 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-09-17 +date: 2022-09-18 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 c1dac52ffd957..bb34d2435f539 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-09-17 +date: 2022-09-18 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 081df780a8f87..9e68fc39ce781 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-09-17 +date: 2022-09-18 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 346c4ad75d5ee..f8b1b1a540ae7 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-09-17 +date: 2022-09-18 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 60f78cadbb29e..e1ac646ec029b 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-09-17 +date: 2022-09-18 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 d3f9b8c9c7f3a..ef27f80420860 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-09-17 +date: 2022-09-18 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 f17f30860fa15..34c90bafd4b3b 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-09-17 +date: 2022-09-18 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 312dd2bba1f6c..bb77e9d8bd1c6 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-09-17 +date: 2022-09-18 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 f7ad491e97bd1..329ef45d97c7c 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-09-17 +date: 2022-09-18 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 34d33e5438eeb..ab7594e392e9d 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-09-17 +date: 2022-09-18 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 1d3ee28662d30..c35d516d8d452 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-09-17 +date: 2022-09-18 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 43f2d30875dca..431fadac5db65 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-09-17 +date: 2022-09-18 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 22e51a656161e..40013285a6176 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-09-17 +date: 2022-09-18 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 fd2a8234b32dd..76018eddf797a 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-09-17 +date: 2022-09-18 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 5b810510376cf..5b7dc4d56b70b 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-09-17 +date: 2022-09-18 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 d70e3f35218f2..2991c1b80d2e8 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-09-17 +date: 2022-09-18 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 3980beef5a011..d463871de879b 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-09-17 +date: 2022-09-18 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 a5752b9149931..c57246aed5175 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-09-17 +date: 2022-09-18 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 e34ec279bd69c..54d41cfef5a7e 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-09-17 +date: 2022-09-18 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 5ee80044683c1..390d3c63e3c2d 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-09-17 +date: 2022-09-18 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 88001cb71756c..665cc67fbd782 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-09-17 +date: 2022-09-18 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 484c8c203ff97..05c67144fdc1d 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 85018c64742bf..4fbea2c6f5ff2 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-09-17 +date: 2022-09-18 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 0f047e04925c7..0212f0cf5a159 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-09-17 +date: 2022-09-18 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 a70f9872389f7..5f81d9f4f7815 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-09-17 +date: 2022-09-18 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 3907630c04b8e..7953cbab8ece9 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-09-17 +date: 2022-09-18 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 1afe55a1ceaf4..1123b158cef82 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-09-17 +date: 2022-09-18 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 aadb519805bb1..2bdb7564d15e4 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-09-17 +date: 2022-09-18 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 a6c8456d3d923..1405f89acaffc 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-09-17 +date: 2022-09-18 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 def47a4cd965d..a6b857ff7d029 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-09-17 +date: 2022-09-18 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 a67a538100398..d7eebd9f11564 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-09-17 +date: 2022-09-18 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 99bdf4a1f2d0c..b960d0a78a53f 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-09-17 +date: 2022-09-18 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 626d84461a239..540978fc52496 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-09-17 +date: 2022-09-18 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 fa2162367add3..768fa7805635a 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-09-17 +date: 2022-09-18 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 b001bff457de1..9d0329428e2b0 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-09-17 +date: 2022-09-18 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 6743a48767d18..6ebc846462d9c 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-09-17 +date: 2022-09-18 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 41b269883369f..9aabbdd1440e6 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-09-17 +date: 2022-09-18 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 4f946bfcb80ea..4f60f11871fc1 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-09-17 +date: 2022-09-18 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 a4f0d333272ab..8e93470b81f3d 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-09-17 +date: 2022-09-18 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 9405ca2caa31c..83c61c3975cf3 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-09-17 +date: 2022-09-18 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 06c469ec22ddb..77ac13efc3b8c 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-09-17 +date: 2022-09-18 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 0cf162321992b..04ba78e3f5e32 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-09-17 +date: 2022-09-18 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 e73a0be9fd686..ae424cbb6bef9 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-09-17 +date: 2022-09-18 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 3aae342f7b411..85b912484c4ed 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-09-17 +date: 2022-09-18 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 aa81259228f4d..4672334a3f0f3 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-09-17 +date: 2022-09-18 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 ac366d918d4f5..ad826e4f53e02 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-09-17 +date: 2022-09-18 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 d1d3cb1d8f12f..57e666f7e90be 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-09-17 +date: 2022-09-18 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 f4bd8dc0c2b50..3a18a9d2ef6bf 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-09-17 +date: 2022-09-18 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 1bf98655d5d87..fe5880e246154 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-09-17 +date: 2022-09-18 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 5064fb2b7635c..7e2c68d67e6fb 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-09-17 +date: 2022-09-18 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 dc9260c8de2f6..17cba0757e0d4 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-09-17 +date: 2022-09-18 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 62a11c2d65ceb..874fd180ebf82 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-09-17 +date: 2022-09-18 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 e7412860203aa..0394bdcf5e5f3 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-09-17 +date: 2022-09-18 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 7fdbcac90d608..ad4b706e33abc 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-09-17 +date: 2022-09-18 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 878db2f1f02f9..dcd30b00e7705 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-09-17 +date: 2022-09-18 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 33146b82e82b4..c42a38c271d8b 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-09-17 +date: 2022-09-18 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 a66906ecc1240..ea743a548925d 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-09-17 +date: 2022-09-18 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 c67eb0131d16a..6a05091033f66 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-09-17 +date: 2022-09-18 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 f1a4d2c37fb9b..a8bf5f6a3f683 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-09-17 +date: 2022-09-18 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 6801e4bbb5a1f..d05e6258e4f6e 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-09-17 +date: 2022-09-18 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 71ac81ad8af75..8228a409a3850 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-09-17 +date: 2022-09-18 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 e02d42890eb37..53d4a238dc9d2 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-09-17 +date: 2022-09-18 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 4395b1f6d3aa1..fb457f8c1a272 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-09-17 +date: 2022-09-18 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 7ef3e5f67853b..3ce323c06e6c9 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-09-17 +date: 2022-09-18 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 8d62153f2e5ba..d4cf898782a7c 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-09-17 +date: 2022-09-18 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 a116f6a3a71cd..d5b6f6134ebaa 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-09-17 +date: 2022-09-18 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 9bb3d200a723f..ba3fc4a2c83a4 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-09-17 +date: 2022-09-18 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 6aa290797532d..a7182566ff6bb 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-09-17 +date: 2022-09-18 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 2da3e73772cef..e1f4fc7027a98 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-09-17 +date: 2022-09-18 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 e6074b77b4981..21e7f6178a3f8 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-09-17 +date: 2022-09-18 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 14afa3dcab6c8..68449bd130f4e 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-09-17 +date: 2022-09-18 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 e537d9fc10578..c644940555d6a 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-09-17 +date: 2022-09-18 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 78b3fccc1ad7a..fc8bd13eb35cf 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-09-17 +date: 2022-09-18 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 92e9757dbd941..fae6448237fa6 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-09-17 +date: 2022-09-18 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_router.mdx b/api_docs/kbn_shared_ux_router.mdx index ef9de112e91e9..385de6449763e 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index a3f1d5c524d89..fb41460c278e9 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 1daf1c414b39a..c1c4f84a955d8 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index d32b1d330358c..4add31d5cc413 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-09-17 +date: 2022-09-18 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 142b184670188..7edb189d71db9 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-09-17 +date: 2022-09-18 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 62f4b998a55c4..a88a57b4f2682 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-09-17 +date: 2022-09-18 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 a7f615e50624d..450df01584c43 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-09-17 +date: 2022-09-18 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 083cad183416d..be6f90ed8bcc2 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-09-17 +date: 2022-09-18 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 291d39ba48d0b..050a9a51f3ef4 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-09-17 +date: 2022-09-18 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 12881eee08aee..94baf2e884e39 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-09-17 +date: 2022-09-18 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 8a2964f9429a0..c46c257acf584 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-09-17 +date: 2022-09-18 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 0f996e4763cd1..7f5a100a20225 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-09-17 +date: 2022-09-18 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 da55e129319aa..d3f2027fcaa07 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index e9e587e3b6a25..dfba989722898 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 03ec470800129..d96c182cc6853 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-09-17 +date: 2022-09-18 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 d37f02dbd5e58..d9f4b71d09cd9 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-09-17 +date: 2022-09-18 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 82ee92f75033b..7594317adba94 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-09-17 +date: 2022-09-18 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 e5a31e9a6b0f6..801ce428b8924 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-09-17 +date: 2022-09-18 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 98ed2471df677..33043f56f2472 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-09-17 +date: 2022-09-18 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 eb5d76541ed51..18d7dd2fef7dc 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-09-17 +date: 2022-09-18 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 5cf2bb01e0b14..997c7f7bf8e49 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-09-17 +date: 2022-09-18 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 907cda563684f..29188a715d9d7 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-09-17 +date: 2022-09-18 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 3b4ae743ca90a..e1ed60bcf8fec 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-09-17 +date: 2022-09-18 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 8425f13942a5a..b17a8e68df903 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-09-17 +date: 2022-09-18 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 aae00dc89d1cd..f1fd48c9942b3 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-09-17 +date: 2022-09-18 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 499d91c38a031..166edf55380c9 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-09-17 +date: 2022-09-18 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 7666a1ab4c507..b2165180a7748 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-09-17 +date: 2022-09-18 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 497345694911e..82033cef206dc 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-09-17 +date: 2022-09-18 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 6e3e2a4c03eda..4d07d79ee9c1d 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-09-17 +date: 2022-09-18 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 f53f2208c326e..2fc5081edf342 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-09-17 +date: 2022-09-18 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 126fa9f032317..544e792818e32 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-09-17 +date: 2022-09-18 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 2af3e49c9f46f..b0bfc32d0b34d 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-09-17 +date: 2022-09-18 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 65b673574ec96..f4e7476f1117b 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-09-17 +date: 2022-09-18 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 07c5f563daa7e..ebbee217ccf36 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-09-17 +date: 2022-09-18 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 7cde38f1059df..76928421e1704 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-09-17 +date: 2022-09-18 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 f724e07954c80..28d03016ff608 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-09-17 +date: 2022-09-18 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 1527424124ec4..e90ebe9fc1c73 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-09-17 +date: 2022-09-18 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 36331eb50768f..d75ac7fcafed6 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-09-17 +date: 2022-09-18 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 a22f8136074a3..ff307458d2c8f 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-09-17 +date: 2022-09-18 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 e94a9382ec935..f3cd5138d4c04 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-09-17 +date: 2022-09-18 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 efa444d548e0f..615a39c20a69b 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-09-17 +date: 2022-09-18 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 7bc0ea5746c26..48adbe2faafe2 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-09-17 +date: 2022-09-18 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 7a74eb2cef8a5..068216c595905 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-09-17 +date: 2022-09-18 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 72fdde2c2066f..6fda871bf3491 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 22bcbbeaa207b..54eaa7accf01d 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 44cd0fcf5224f..925d4c69e3fd9 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index e0d547fac28ce..ef5437fdfd44c 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-09-17 +date: 2022-09-18 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 6e9ed9e234164..65f665127ee6b 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-09-17 +date: 2022-09-18 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 3cfc50e99d285..91f8c8ddf2e27 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-09-17 +date: 2022-09-18 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 1badcfc29d174..a49956a421728 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-09-17 +date: 2022-09-18 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 1d8d16ac578b8..a365984aea779 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-09-17 +date: 2022-09-18 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 6ea19a0c2c74b..d93c328b7d5dc 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 3b3112cc26dcb..0003142499ed5 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 8cae8528e012d..5d8d90f760e22 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-09-17 +date: 2022-09-18 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 ba3b8c2d8b20b..e7ef289fb0474 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-09-17 +date: 2022-09-18 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 b81a74d39a5d6..7afdc0a0bbe79 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-09-17 +date: 2022-09-18 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 bb84b74343bab..bdaf654bde8a4 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-09-17 +date: 2022-09-18 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 ad584e88fec2d..7d61c781264c3 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-09-17 +date: 2022-09-18 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 72e70578e27ff..6a6ed71b71355 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-09-17 +date: 2022-09-18 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 26a1326d507f6..51cfcead28821 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-09-17 +date: 2022-09-18 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 b01ca8b68c319..35c7f7e2b5f09 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-09-17 +date: 2022-09-18 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 ba418654af041..ea7fbb9e683b7 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-09-17 +date: 2022-09-18 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 df5c035c61c66..658d3e852b27c 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-09-17 +date: 2022-09-18 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 4382de1133be4..e29ba99f13d3a 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-09-17 +date: 2022-09-18 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 67ad7b0a2da77..8611cd23434fd 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-09-17 +date: 2022-09-18 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 c9da7a691ef97..df12ad69f726d 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 016ecd15d42df..4ab817b02a7f9 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2022-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 7a4f3a4aaf918..f4c1a64a7920c 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-09-17 +date: 2022-09-18 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 8d2abd13fed90..28dcb88a73d67 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-09-17 +date: 2022-09-18 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 c2ac77c2b4c0a..c98fcac0c04d1 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-09-17 +date: 2022-09-18 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 54787b697a84a..085978e0045ff 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-09-17 +date: 2022-09-18 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 d83f27ba5e418..97cf2919a3db3 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-09-17 +date: 2022-09-18 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 08f51a0cab0d4..8902121a05998 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-09-17 +date: 2022-09-18 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 3af9d3132ec10..9afbdafc49a7b 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-09-17 +date: 2022-09-18 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 b1003107a5d72..ef22e88e20444 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-09-17 +date: 2022-09-18 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 93afca6c1697b..411859e90fded 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-09-17 +date: 2022-09-18 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 470435f786225..8cc90628932a7 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-09-17 +date: 2022-09-18 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 80bf51882bdc9..2b2daf9e1ac9c 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-09-17 +date: 2022-09-18 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 ba0329a99e467..e7d149953cfb4 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-09-17 +date: 2022-09-18 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 1aab49b0a0b33..6306309fe5abd 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-09-17 +date: 2022-09-18 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 44ab156e77d33..0b8d05a83a42a 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-09-17 +date: 2022-09-18 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 e3b912d6562fd..58273fcab1a0c 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-09-17 +date: 2022-09-18 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 a76268b9c0621..dedbcc3c27b9f 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-09-17 +date: 2022-09-18 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 0458ab86cdc12..a4ba38e928bb7 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-09-17 +date: 2022-09-18 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 48b030c0a9819..9e0c606c1d8fd 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-09-17 +date: 2022-09-18 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 e2dd552cbf63b..35293c49d4ca9 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-09-17 +date: 2022-09-18 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 c25793cedded5..cbb20992991cf 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-09-17 +date: 2022-09-18 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 4c47a46b88c38..8c749c2d8a8df 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-09-17 +date: 2022-09-18 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 90c2246e5fa4c..b6676a9754a42 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-09-17 +date: 2022-09-18 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 3611480d00bb8..3f82e7e368c79 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-09-17 +date: 2022-09-18 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 c1413f464de29..390a21f44d32a 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-09-17 +date: 2022-09-18 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 66969be7e7437..6c23ec61e477d 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-09-17 +date: 2022-09-18 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 4d57d5a7e8796..b7fd734a2bbd6 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-09-17 +date: 2022-09-18 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 c00df2d18f797..d8b22c1581d9b 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-09-17 +date: 2022-09-18 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 849457e94846d..7f3ae83c7f0d9 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-09-17 +date: 2022-09-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From ffd41ef433f093c27a6cdbe66b3d913957494ade Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Sun, 18 Sep 2022 20:24:19 +0100 Subject: [PATCH 40/79] [Security Solution][Alerts] saved query UX improvements (#140064) * initial comment * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * fix some bugs * fix timeline * Update x-pack/plugins/security_solution/public/detections/components/rules/query_bar/index.tsx * Update helpers.ts * add some tests * improvements * fix tests * remove .only in tests * fix typings * fixes * fix typo checks * Update filter_bar.tsx * Update query_bar_top_row.tsx * Update query_string_input.tsx * Update search_bar.tsx * Update query_bar_top_row.tsx * Update query_bar_top_row.tsx * fix removed query * lint * types cleanup * small refactoring * fix type * small fix * fix * refactoring * add e2e test * rule detaails init * Update types.ts * Update index.tsx * refactoring * add tests * fix test * CR: small adjustments * aadd toast * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * fix linitng * remove non needed styled components * form form form * add tests * move to common * fix form(?) * more tests! * more tests * stylings * comments * refactoring * another fix, another test * Update custom_saved_query_rule.spec.ts * fix translations * test name * tests * Delete rules_schema.ts * Delete custom_saved_query_rule.spec.ts * CR: useFetch * rule details page * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * fix typying Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Pedro Jaramillo --- .../custom_saved_query_rule.cy.ts | 237 ++++++++++++++++++ .../security_solution/cypress/objects/rule.ts | 4 + .../cypress/screens/create_new_rule.ts | 18 ++ .../cypress/screens/rule_details.ts | 11 + .../cypress/tasks/api_calls/rules.ts | 34 +++ .../cypress/tasks/api_calls/saved_queries.ts | 35 +++ .../security_solution/cypress/tasks/common.ts | 17 ++ .../cypress/tasks/create_new_rule.ts | 24 ++ .../cypress/tasks/rule_details.ts | 2 +- .../common/components/query_bar/index.tsx | 3 + .../public/common/hooks/translations.ts | 7 + .../common/hooks/use_fetch/request_names.ts | 1 + .../common/hooks/use_get_saved_query.ts | 54 ++++ .../rules/description_step/helpers.test.tsx | 6 +- .../rules/description_step/helpers.tsx | 28 ++- .../rules/description_step/index.tsx | 2 + .../rules/description_step/translations.tsx | 16 +- .../rules/description_step/types.ts | 1 + .../components/rules/query_bar/index.tsx | 91 +++++-- .../rules/step_about_rule/index.test.tsx | 1 + .../rules/step_define_rule/index.tsx | 65 ++++- .../rules/step_define_rule/schema.tsx | 16 +- .../rules/step_define_rule/translations.tsx | 14 ++ .../components/rules/step_panel/index.tsx | 9 +- .../rules/all/__mocks__/mock.ts | 1 + .../rules/create/helpers.test.ts | 195 ++++++++------ .../detection_engine/rules/create/helpers.ts | 14 +- .../detection_engine/rules/details/index.tsx | 20 +- .../detection_engine/rules/helpers.test.tsx | 3 + .../pages/detection_engine/rules/helpers.tsx | 1 + .../pages/detection_engine/rules/types.ts | 1 + .../pages/detection_engine/rules/utils.ts | 1 + .../query/create_query_alert_type.ts | 8 +- .../create_saved_query_alert_type.ts | 10 +- .../detection_engine/schemas/rule_schemas.ts | 6 + .../signals/executors/query.ts | 9 +- .../detection_engine/signals/get_filter.ts | 4 + .../signals/search_after_bulk_create.test.ts | 12 - .../signals/search_after_bulk_create.ts | 1 - .../threat_mapping/create_event_signal.ts | 1 - .../threat_mapping/create_threat_signal.ts | 1 - .../lib/detection_engine/signals/types.ts | 12 +- .../group10/update_rules.ts | 48 ++++ .../utils/get_simple_saved_query_rule.ts | 29 +++ .../utils/index.ts | 1 + 45 files changed, 900 insertions(+), 174 deletions(-) create mode 100644 x-pack/plugins/security_solution/cypress/e2e/detection_rules/custom_saved_query_rule.cy.ts create mode 100644 x-pack/plugins/security_solution/cypress/tasks/api_calls/saved_queries.ts create mode 100644 x-pack/plugins/security_solution/public/common/hooks/use_get_saved_query.ts create mode 100644 x-pack/test/detection_engine_api_integration/utils/get_simple_saved_query_rule.ts diff --git a/x-pack/plugins/security_solution/cypress/e2e/detection_rules/custom_saved_query_rule.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/detection_rules/custom_saved_query_rule.cy.ts new file mode 100644 index 0000000000000..9b1d5c71a6fa9 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/e2e/detection_rules/custom_saved_query_rule.cy.ts @@ -0,0 +1,237 @@ +/* + * 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 { getNewRule } from '../../objects/rule'; + +import { + DEFINE_CONTINUE_BUTTON, + CUSTOM_QUERY_BAR, + LOAD_QUERY_DYNAMICALLY_CHECKBOX, + QUERY_BAR, +} from '../../screens/create_new_rule'; +import { TOASTER } from '../../screens/alerts_detection_rules'; +import { + RULE_NAME_HEADER, + SAVED_QUERY_NAME_DETAILS, + SAVED_QUERY_DETAILS, + SAVED_QUERY_FILTERS_DETAILS, + DEFINE_RULE_PANEL_PROGRESS, + CUSTOM_QUERY_DETAILS, +} from '../../screens/rule_details'; + +import { goToRuleDetails, editFirstRule } from '../../tasks/alerts_detection_rules'; +import { createTimeline } from '../../tasks/api_calls/timelines'; +import { createSavedQuery } from '../../tasks/api_calls/saved_queries'; +import { cleanKibana, deleteAlertsAndRules, deleteSavedQueries } from '../../tasks/common'; +import { + createAndEnableRule, + fillAboutRuleAndContinue, + fillScheduleRuleAndContinue, + selectAndLoadSavedQuery, + getCustomQueryInput, + checkLoadQueryDynamically, + uncheckLoadQueryDynamically, +} from '../../tasks/create_new_rule'; +import { saveEditedRule } from '../../tasks/edit_rule'; +import { login, visit } from '../../tasks/login'; +import { getDetails } from '../../tasks/rule_details'; +import { createSavedQueryRule, createCustomRule } from '../../tasks/api_calls/rules'; + +import { RULE_CREATION, SECURITY_DETECTIONS_RULES_URL } from '../../urls/navigation'; + +const savedQueryName = 'custom saved query'; +const savedQueryQuery = 'process.name: test'; +const savedQueryFilterKey = 'testAgent.value'; + +describe('Custom saved_query rules', () => { + before(() => { + cleanKibana(); + login(); + }); + describe('Custom saved_query detection rule creation', () => { + beforeEach(() => { + deleteAlertsAndRules(); + deleteSavedQueries(); + createTimeline(getNewRule().timeline).then((response) => { + cy.wrap({ + ...getNewRule(), + timeline: { + ...getNewRule().timeline, + id: response.body.data.persistTimeline.timeline.savedObjectId, + }, + }).as('rule'); + }); + }); + + it('Creates saved query rule', function () { + createSavedQuery(savedQueryName, savedQueryQuery, savedQueryFilterKey); + visit(RULE_CREATION); + + selectAndLoadSavedQuery(savedQueryName, savedQueryQuery); + + // edit loaded saved query + getCustomQueryInput() + .type(' AND random query') + .should('have.value', [savedQueryQuery, ' AND random query'].join('')); + + // when clicking load query dynamically checkbox, saved query should be shown in query input and input should be disabled + checkLoadQueryDynamically(); + getCustomQueryInput().should('have.value', savedQueryQuery).should('be.disabled'); + cy.get(QUERY_BAR).should('contain', savedQueryFilterKey); + + cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); + cy.get(DEFINE_CONTINUE_BUTTON).should('not.exist'); + + fillAboutRuleAndContinue(this.rule); + fillScheduleRuleAndContinue(this.rule); + cy.intercept('POST', '/api/detection_engine/rules').as('savedQueryRule'); + createAndEnableRule(); + + cy.wait('@savedQueryRule').then(({ response }) => { + // created rule should have saved_query type + cy.wrap(response?.body.type).should('equal', 'saved_query'); + }); + + goToRuleDetails(); + + cy.get(RULE_NAME_HEADER).should('contain', `${this.rule.name}`); + + cy.get(DEFINE_RULE_PANEL_PROGRESS).should('not.exist'); + + getDetails(SAVED_QUERY_NAME_DETAILS).should('contain', savedQueryName); + getDetails(SAVED_QUERY_DETAILS).should('contain', savedQueryQuery); + getDetails(SAVED_QUERY_FILTERS_DETAILS).should('contain', savedQueryFilterKey); + }); + + context('Non existent saved query', () => { + const FAILED_TO_LOAD_ERROR = 'Failed to load the saved query'; + beforeEach(() => { + createSavedQueryRule({ ...getNewRule(), savedId: 'non-existent' }); + cy.visit(SECURITY_DETECTIONS_RULES_URL); + }); + it('Shows error toast on details page when saved query can not be loaded', function () { + goToRuleDetails(); + + cy.get(TOASTER).should('contain', FAILED_TO_LOAD_ERROR); + }); + + it('Shows validation error on rule edit when saved query can not be loaded', function () { + editFirstRule(); + + cy.get(CUSTOM_QUERY_BAR).should('contain', FAILED_TO_LOAD_ERROR); + }); + }); + + context('Editing', () => { + it('Allows to update query rule as saved_query rule type', () => { + createSavedQuery(savedQueryName, savedQueryQuery); + createCustomRule(getNewRule()); + + cy.visit(SECURITY_DETECTIONS_RULES_URL); + + editFirstRule(); + + selectAndLoadSavedQuery(savedQueryName, savedQueryQuery); + checkLoadQueryDynamically(); + + cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); + saveEditedRule(); + + cy.wait('@editedRule').then(({ response }) => { + // updated rule should be saved as saved_query type once Load query dynamically checkbox was checked + cy.wrap(response?.body.type).should('equal', 'saved_query'); + }); + + cy.get(DEFINE_RULE_PANEL_PROGRESS).should('not.exist'); + + getDetails(SAVED_QUERY_NAME_DETAILS).should('contain', savedQueryName); + getDetails(SAVED_QUERY_DETAILS).should('contain', savedQueryQuery); + }); + + it('Allows to update saved_query rule as query rule type', () => { + const expectedCustomTestQuery = 'random test query'; + createSavedQuery(savedQueryName, savedQueryQuery).then((response) => { + cy.log(JSON.stringify(response.body, null, 2)); + createSavedQueryRule({ ...getNewRule(), savedId: response.body.id }); + }); + + cy.visit(SECURITY_DETECTIONS_RULES_URL); + + editFirstRule(); + + // query input should be disabled and has value of saved query + getCustomQueryInput().should('have.value', savedQueryQuery).should('be.disabled'); + + // after unchecking Load Query Dynamically checkbox, query input becomes enabled, type custom query + uncheckLoadQueryDynamically(); + getCustomQueryInput().should('be.enabled').clear().type(expectedCustomTestQuery); + + cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); + saveEditedRule(); + + cy.wait('@editedRule').then(({ response }) => { + // updated rule should be saved as query type once Load query dynamically checkbox was unchecked + cy.wrap(response?.body.type).should('equal', 'query'); + }); + + getDetails(CUSTOM_QUERY_DETAILS).should('contain', expectedCustomTestQuery); + }); + + it('Allows to update saved_query rule with non-existent query by adding custom query', () => { + const expectedCustomTestQuery = 'random test query'; + createSavedQueryRule({ ...getNewRule(), savedId: 'non-existent' }); + + cy.visit(SECURITY_DETECTIONS_RULES_URL); + + editFirstRule(); + + // type custom query, ensure Load dynamically checkbox is absent, as rule can't be saved win non valid saved query + getCustomQueryInput().type(expectedCustomTestQuery); + cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).should('not.visible'); + + cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); + saveEditedRule(); + + cy.wait('@editedRule').then(({ response }) => { + // updated rule should be saved as query type once Load query dynamically checkbox was unchecked + cy.wrap(response?.body.type).should('equal', 'query'); + }); + + getDetails(CUSTOM_QUERY_DETAILS).should('contain', expectedCustomTestQuery); + }); + + it('Allows to update saved_query rule with non-existent query by selecting another saved query', () => { + createSavedQuery(savedQueryName, savedQueryQuery); + createSavedQueryRule({ ...getNewRule(), savedId: 'non-existent' }); + + cy.visit(SECURITY_DETECTIONS_RULES_URL); + + editFirstRule(); + + // select another saved query, edit query input, which later should be dismissed once Load query dynamically checkbox checked + selectAndLoadSavedQuery(savedQueryName, savedQueryQuery); + getCustomQueryInput().type('AND this part wil be dismissed'); + + checkLoadQueryDynamically(); + getCustomQueryInput().should('have.value', savedQueryQuery); + + cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); + saveEditedRule(); + + cy.wait('@editedRule').then(({ response }) => { + // updated rule type shouldn't change + cy.wrap(response?.body.type).should('equal', 'saved_query'); + }); + + cy.get(DEFINE_RULE_PANEL_PROGRESS).should('not.exist'); + + getDetails(SAVED_QUERY_NAME_DETAILS).should('contain', savedQueryName); + getDetails(SAVED_QUERY_DETAILS).should('contain', savedQueryQuery); + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/cypress/objects/rule.ts b/x-pack/plugins/security_solution/cypress/objects/rule.ts index 6b0051f12bc29..7b9d543e480ee 100644 --- a/x-pack/plugins/security_solution/cypress/objects/rule.ts +++ b/x-pack/plugins/security_solution/cypress/objects/rule.ts @@ -67,6 +67,10 @@ export interface ThresholdRule extends CustomRule { threshold: string; } +export interface SavedQueryRule extends CustomRule { + savedId: string; +} + export interface OverrideRule extends CustomRule { severityOverride: SeverityOverride[]; riskOverride: string; diff --git a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts index 4bf39a8bf1d79..e46e8a75a4341 100644 --- a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts @@ -62,6 +62,8 @@ export const CREATE_AND_ENABLE_BTN = '[data-test-subj="create-enable"]'; export const CUSTOM_QUERY_INPUT = '[data-test-subj="queryInput"]'; +export const CUSTOM_QUERY_BAR = '[data-test-subj="detectionEngineStepDefineRuleQueryBar"]'; + export const THREAT_MAPPING_COMBO_BOX_INPUT = '[data-test-subj="threatMatchInput"] [data-test-subj="fieldAutocompleteComboBox"]'; @@ -238,3 +240,19 @@ export const NEW_TERMS_HISTORY_SIZE = export const NEW_TERMS_HISTORY_TIME_TYPE = '[data-test-subj="detectionEngineStepDefineRuleHistoryWindowSize"] [data-test-subj="timeType"]'; + +export const LOAD_QUERY_DYNAMICALLY_CHECKBOX = + '[data-test-subj="detectionEngineStepDefineRuleShouldLoadQueryDynamically"] input'; + +export const SHOW_QUERY_BAR_BUTTON = '[data-test-subj="showQueryBarMenu"]'; + +export const QUERY_BAR = '[data-test-subj="detectionEngineStepDefineRuleQueryBar"]'; + +export const LOAD_SAVED_QUERIES_LIST_BUTTON = + '[data-test-subj="saved-query-management-load-button"]'; + +export const savedQueryByName = (savedQueryName: string) => + `[data-test-subj="load-saved-query-${savedQueryName}-button"]`; + +export const APPLY_SELECTED_SAVED_QUERY_BUTTON = + '[data-test-subj="saved-query-management-apply-changes-button"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts index 80883d825c18f..0c834c140061c 100644 --- a/x-pack/plugins/security_solution/cypress/screens/rule_details.ts +++ b/x-pack/plugins/security_solution/cypress/screens/rule_details.ts @@ -22,6 +22,14 @@ export const ANOMALY_SCORE_DETAILS = 'Anomaly score'; export const CUSTOM_QUERY_DETAILS = 'Custom query'; +export const SAVED_QUERY_NAME_DETAILS = 'Saved query name'; + +export const SAVED_QUERY_DETAILS = /^Saved query$/; + +export const SAVED_QUERY_FILTERS_DETAILS = 'Saved query filters'; + +export const FILTERS_DETAILS = 'Filters'; + export const DATA_VIEW_DETAILS = 'Data View'; export const DEFINITION_DETAILS = @@ -112,3 +120,6 @@ export const removeExternalLinkText = (str: string) => str.replace(/\(opens in a new tab or window\)/g, ''); export const BACK_TO_RULES = '[data-test-subj="ruleDetailsBackToAllRules"]'; + +export const DEFINE_RULE_PANEL_PROGRESS = + '[data-test-subj="defineRule"] [data-test-subj="stepPanelProgress"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/api_calls/rules.ts b/x-pack/plugins/security_solution/cypress/tasks/api_calls/rules.ts index afee74e1a943b..4fb076f11f445 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/api_calls/rules.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/api_calls/rules.ts @@ -11,6 +11,7 @@ import type { MachineLearningRule, ThresholdRule, NewTermsRule, + SavedQueryRule, } from '../../objects/rule'; export const createMachineLearningRule = (rule: MachineLearningRule, ruleId = 'ml_rule_testing') => @@ -149,6 +150,39 @@ export const createNewTermsRule = (rule: NewTermsRule, ruleId = 'rule_testing') } }; +export const createSavedQueryRule = ( + rule: SavedQueryRule, + ruleId = 'saved_query_rule_testing' +): Cypress.Chainable> => + cy.request({ + method: 'POST', + url: 'api/detection_engine/rules', + body: { + rule_id: ruleId, + risk_score: parseInt(rule.riskScore, 10), + description: rule.description, + interval: rule.interval, + name: rule.name, + severity: rule.severity.toLocaleLowerCase(), + type: 'saved_query', + from: 'now-50000h', + index: rule.dataSource.type === 'indexPatterns' ? rule.dataSource.index : '', + saved_id: rule.savedId, + language: 'kuery', + enabled: false, + exceptions_list: rule.exceptionLists ?? [], + tags: rule.tags, + ...(rule.timeline.id ?? rule.timeline.templateTimelineId + ? { + timeline_id: rule.timeline.id ?? rule.timeline.templateTimelineId, + timeline_title: rule.timeline.title, + } + : {}), + }, + headers: { 'kbn-xsrf': 'cypress-creds' }, + failOnStatusCode: false, + }); + export const createCustomIndicatorRule = (rule: ThreatIndicatorRule, ruleId = 'rule_testing') => { if (rule.dataSource.type === 'indexPatterns') { cy.request({ diff --git a/x-pack/plugins/security_solution/cypress/tasks/api_calls/saved_queries.ts b/x-pack/plugins/security_solution/cypress/tasks/api_calls/saved_queries.ts new file mode 100644 index 0000000000000..8c4aea51ec045 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/tasks/api_calls/saved_queries.ts @@ -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. + */ + +export const createSavedQuery = ( + title: string, + query: string, + filterKey: string = 'agent.hostname' +) => + cy.request({ + method: 'POST', + url: '/api/saved_query/_create', + body: { + title, + description: '', + query: { query, language: 'kuery' }, + filters: [ + { + meta: { + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: filterKey, + params: { query: 'localhost' }, + }, + query: { match_phrase: { [filterKey]: 'localhost' } }, + }, + ], + }, + headers: { 'kbn-xsrf': 'cypress-creds' }, + }); diff --git a/x-pack/plugins/security_solution/cypress/tasks/common.ts b/x-pack/plugins/security_solution/cypress/tasks/common.ts index cd9525e95b0b2..23f04d0fd3c2b 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/common.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/common.ts @@ -179,6 +179,23 @@ export const deleteCases = () => { }); }; +export const deleteSavedQueries = () => { + const kibanaIndexUrl = `${Cypress.env('ELASTICSEARCH_URL')}/.kibana_\*`; + cy.request('POST', `${kibanaIndexUrl}/_delete_by_query?conflicts=proceed`, { + query: { + bool: { + filter: [ + { + match: { + type: 'query', + }, + }, + ], + }, + }, + }); +}; + export const postDataView = (dataSource: string) => { cy.request({ method: 'POST', diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index bd9c549eb0f40..2b7e8e0b3375e 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -24,6 +24,7 @@ import { ADD_REFERENCE_URL_BTN, ADVANCED_SETTINGS_BTN, ANOMALY_THRESHOLD_INPUT, + APPLY_SELECTED_SAVED_QUERY_BUTTON, AT_LEAST_ONE_INDEX_PATTERN, AT_LEAST_ONE_VALID_MATCH, BACK_TO_ALL_RULES_LINK, @@ -43,6 +44,8 @@ import { INPUT, INVALID_MATCH_CONTENT, INVESTIGATION_NOTES_TEXTAREA, + LOAD_QUERY_DYNAMICALLY_CHECKBOX, + LOAD_SAVED_QUERIES_LIST_BUTTON, LOOK_BACK_INTERVAL, LOOK_BACK_TIME_TYPE, MACHINE_LEARNING_DROPDOWN_INPUT, @@ -54,6 +57,7 @@ import { MITRE_ATTACK_TACTIC_DROPDOWN, MITRE_ATTACK_TECHNIQUE_DROPDOWN, MITRE_TACTIC, + QUERY_BAR, QUERY_PREVIEW_BUTTON, REFERENCE_URLS_INPUT, REFRESH_BUTTON, @@ -69,11 +73,13 @@ import { RULES_CREATION_PREVIEW_REFRESH_BUTTON, RUNS_EVERY_INTERVAL, RUNS_EVERY_TIME_TYPE, + savedQueryByName, SCHEDULE_CONTINUE_BUTTON, SCHEDULE_EDIT_TAB, SEVERITY_DROPDOWN, SEVERITY_MAPPING_OVERRIDE_OPTION, SEVERITY_OVERRIDE_ROW, + SHOW_QUERY_BAR_BUTTON, TAGS_INPUT, THREAT_COMBO_BOX_INPUT, THREAT_ITEM_ENTRY_DELETE_BUTTON, @@ -591,3 +597,21 @@ export const waitForTheRuleToBeExecuted = () => { .then((ruleStatus) => ruleStatus === 'succeeded'); }); }; + +export const selectAndLoadSavedQuery = (queryName: string, queryValue: string) => { + cy.get(QUERY_BAR).find(SHOW_QUERY_BAR_BUTTON).click(); + + cy.get(LOAD_SAVED_QUERIES_LIST_BUTTON).click(); + cy.get(savedQueryByName(queryName)).click(); + cy.get(APPLY_SELECTED_SAVED_QUERY_BUTTON).click(); + + cy.get(CUSTOM_QUERY_INPUT).should('have.value', queryValue); +}; + +export const checkLoadQueryDynamically = () => { + cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).click({ force: true }).should('be.checked'); +}; + +export const uncheckLoadQueryDynamically = () => { + cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).click({ force: true }).should('not.be.checked'); +}; diff --git a/x-pack/plugins/security_solution/cypress/tasks/rule_details.ts b/x-pack/plugins/security_solution/cypress/tasks/rule_details.ts index 1cec924eae55a..2a9cf091bb0df 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/rule_details.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/rule_details.ts @@ -155,7 +155,7 @@ export const goBackToAllRulesTable = () => { cy.get(BACK_TO_RULES).click(); }; -export const getDetails = (title: string) => +export const getDetails = (title: string | RegExp) => cy.get(DETAILS_TITLE).contains(title).next(DETAILS_DESCRIPTION); export const hasIndexPatterns = (indexPatterns: string) => { diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx b/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx index e487277ff9a7a..82080ba1ac602 100644 --- a/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx @@ -33,6 +33,7 @@ export interface QueryBarComponentProps { savedQuery?: SavedQuery; onSavedQuery: (savedQuery: SavedQuery | undefined) => void; displayStyle?: SearchBarProps['displayStyle']; + isDisabled?: boolean; } export const QueryBar = memo( @@ -53,6 +54,7 @@ export const QueryBar = memo( onSavedQuery, dataTestSubj, displayStyle, + isDisabled, }) => { const onQuerySubmit = useCallback( (payload: { dateRange: TimeRange; query?: Query }) => { @@ -130,6 +132,7 @@ export const QueryBar = memo( dataTestSubj={dataTestSubj} savedQuery={savedQuery} displayStyle={displayStyle} + isDisabled={isDisabled} /> ); } diff --git a/x-pack/plugins/security_solution/public/common/hooks/translations.ts b/x-pack/plugins/security_solution/public/common/hooks/translations.ts index 54ed3a79d017f..1f939282b5c72 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/translations.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/translations.ts @@ -39,3 +39,10 @@ export const EQL_TIME_INTERVAL_NOT_DEFINED = i18n.translate( defaultMessage: 'Time intervals are not defined.', } ); + +export const SAVED_QUERY_LOAD_ERROR_TOAST = i18n.translate( + 'xpack.securitySolution.hooks.useGetSavedQuery.errorToastMessage', + { + defaultMessage: 'Failed to load the saved query', + } +); diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts b/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts index efaa367884f86..5aa4cbb9f3294 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts @@ -10,6 +10,7 @@ export const REQUEST_NAMES = { SECURITY_DASHBOARDS: `${APP_UI_ID} fetch security dashboards`, ANOMALIES_TABLE: `${APP_UI_ID} fetch anomalies table data`, GET_RISK_SCORE_DEPRECATED: `${APP_UI_ID} fetch is risk score deprecated`, + GET_SAVED_QUERY: `${APP_UI_ID} fetch saved query`, } as const; export type RequestName = typeof REQUEST_NAMES[keyof typeof REQUEST_NAMES]; diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_get_saved_query.ts b/x-pack/plugins/security_solution/public/common/hooks/use_get_saved_query.ts new file mode 100644 index 0000000000000..932fe61e2ce47 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/hooks/use_get_saved_query.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEffect, useMemo } from 'react'; + +import { useSavedQueryServices } from '../utils/saved_query_services'; +import type { DefineStepRule } from '../../detections/pages/detection_engine/rules/types'; + +import { useFetch, REQUEST_NAMES } from './use_fetch'; +import { SAVED_QUERY_LOAD_ERROR_TOAST } from './translations'; +import { useAppToasts } from './use_app_toasts'; + +export const useGetSavedQuery = (savedQueryId: string | undefined) => { + const savedQueryServices = useSavedQueryServices(); + const { addError } = useAppToasts(); + const { fetch, data, isLoading, error } = useFetch( + REQUEST_NAMES.GET_SAVED_QUERY, + savedQueryServices.getSavedQuery + ); + + useEffect(() => { + if (savedQueryId) { + fetch(savedQueryId); + } + }, [savedQueryId, fetch]); + + useEffect(() => { + if (error) { + addError(error, { title: SAVED_QUERY_LOAD_ERROR_TOAST }); + } + }, [error, addError]); + + const savedQueryBar = useMemo( + () => + data + ? { + saved_id: data.id, + filters: data.attributes.filters ?? [], + query: data.attributes.query, + title: data.attributes.title, + } + : null, + [data] + ); + + return { + isSavedQueryLoading: isLoading, + savedQueryBar, + }; +}; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.test.tsx index 0a1a4203bad57..9819ee09dce1e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.test.tsx @@ -179,6 +179,7 @@ describe('helpers', () => { ...mockQueryBar, query: '', filters: [], + title: 'test title', }; const result: ListItems[] = buildQueryBarDescription({ field: 'queryBar', @@ -186,9 +187,10 @@ describe('helpers', () => { filterManager: mockFilterManager, query: mockQueryBarWithSavedId.query, savedId: mockQueryBarWithSavedId.saved_id, + savedQueryName: mockQueryBarWithSavedId.title, }); - expect(result[0].title).toEqual(<>{i18n.SAVED_ID_LABEL} ); - expect(result[0].description).toEqual(<>{mockQueryBarWithSavedId.saved_id} ); + expect(result[0].title).toEqual(<>{i18n.SAVED_QUERY_NAME_LABEL} ); + expect(result[0].description).toEqual(<>{mockQueryBarWithSavedId.title} ); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx index 8de70a8d36c10..fa432af4a9603 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx @@ -78,16 +78,28 @@ export const buildQueryBarDescription = ({ filterManager, query, savedId, + savedQueryName, indexPatterns, queryLabel, }: BuildQueryBarDescription): ListItems[] => { let items: ListItems[] = []; + const isLoadedFromSavedQuery = !isEmpty(savedId) && !isEmpty(savedQueryName); + if (isLoadedFromSavedQuery) { + items = [ + ...items, + { + title: <>{i18n.SAVED_QUERY_NAME_LABEL} , + description: <>{savedQueryName} , + }, + ]; + } + if (!isEmpty(filters)) { filterManager.setFilters(filters); items = [ ...items, { - title: <>{i18n.FILTERS_LABEL} , + title: <>{isLoadedFromSavedQuery ? i18n.SAVED_QUERY_FILTERS_LABEL : i18n.FILTERS_LABEL} , description: ( {filterManager.getFilters().map((filter, index) => ( @@ -114,20 +126,14 @@ export const buildQueryBarDescription = ({ items = [ ...items, { - title: <>{queryLabel ?? i18n.QUERY_LABEL}, + title: ( + <>{isLoadedFromSavedQuery ? i18n.SAVED_QUERY_LABEL : queryLabel ?? i18n.QUERY_LABEL} + ), description: {query}, }, ]; } - if (!isEmpty(savedId)) { - items = [ - ...items, - { - title: <>{i18n.SAVED_ID_LABEL} , - description: <>{savedId} , - }, - ]; - } + return items; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx index da714ae86cf29..ba0359c4fda3e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx @@ -176,12 +176,14 @@ export const getDescriptionItem = ( const filters = addFilterStateIfNotThere(get('queryBar.filters', data) ?? []); const query = get('queryBar.query.query', data); const savedId = get('queryBar.saved_id', data); + const savedQueryName = get('queryBar.title', data); return buildQueryBarDescription({ field, filters, filterManager, query, savedId, + savedQueryName, indexPatterns, }); } else if (field === 'eqlOptions') { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/translations.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/translations.tsx index eea283c93cfe4..9917f34ac9bf8 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/translations.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/translations.tsx @@ -28,13 +28,27 @@ export const THREAT_QUERY_LABEL = i18n.translate( } ); -export const SAVED_ID_LABEL = i18n.translate( +export const SAVED_QUERY_NAME_LABEL = i18n.translate( 'xpack.securitySolution.detectionEngine.createRule.savedIdLabel', { defaultMessage: 'Saved query name', } ); +export const SAVED_QUERY_FILTERS_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.savedQueryFiltersLabel', + { + defaultMessage: 'Saved query filters', + } +); + +export const SAVED_QUERY_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.savedQueryLabel', + { + defaultMessage: 'Saved query', + } +); + export const ML_TYPE_DESCRIPTION = i18n.translate( 'xpack.securitySolution.detectionEngine.createRule.mlRuleTypeDescription', { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts index 70baf0f4f4b3b..3ae093de6d451 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts @@ -23,6 +23,7 @@ export interface BuildQueryBarDescription { savedId: string; indexPatterns?: DataViewBase; queryLabel?: string; + savedQueryName?: string; } export interface BuildThreatDescription { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/query_bar/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/query_bar/index.tsx index 97d7ee804293f..6d96695d3c791 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/query_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/query_bar/index.tsx @@ -8,7 +8,6 @@ import { EuiFormRow, EuiMutationObserver } from '@elastic/eui'; import React, { useCallback, useEffect, useState } from 'react'; import { Subscription } from 'rxjs'; -import styled from 'styled-components'; import deepEqual from 'fast-deep-equal'; import type { DataViewBase, Filter, Query } from '@kbn/es-query'; import type { SavedQuery } from '@kbn/data-plugin/public'; @@ -32,8 +31,9 @@ export interface FieldValueQueryBar { filters: Filter[]; query: Query; saved_id: string | null; + title?: string; } -interface QueryBarDefineRuleProps { +export interface QueryBarDefineRuleProps { browserFields: BrowserFields; dataTestSubj: string; field: FieldHook; @@ -44,13 +44,33 @@ interface QueryBarDefineRuleProps { openTimelineSearch: boolean; resizeParentContainer?: (height: number) => void; onValidityChange?: (arg: boolean) => void; + isDisabled?: boolean; + /** + * if saved query selected, reset query and filters to saved query values + */ + resetToSavedQuery?: boolean; + /** + * called when fetching of saved query fails + */ + onSavedQueryError?: () => void; } const actionTimelineToHide: ActionTimelineToShow[] = ['duplicate', 'createFrom']; -const StyledEuiFormRow = styled(EuiFormRow)``; +const getFieldValueFromEmptySavedQuery = () => ({ + filters: [], + query: { + query: '', + language: 'kuery', + }, + saved_id: null, +}); -// TODO need to add disabled in the SearchBar +const savedQueryToFieldValue = (savedQuery: SavedQuery): FieldValueQueryBar => ({ + filters: savedQuery.attributes.filters ?? [], + query: savedQuery.attributes.query, + saved_id: savedQuery.id, +}); export const QueryBarDefineRule = ({ browserFields, @@ -63,11 +83,15 @@ export const QueryBarDefineRule = ({ openTimelineSearch = false, resizeParentContainer, onValidityChange, + isDisabled, + resetToSavedQuery, + onSavedQueryError, }: QueryBarDefineRuleProps) => { const { value: fieldValue, setValue: setFieldValue } = field as FieldHook; const [originalHeight, setOriginalHeight] = useState(-1); const [loadingTimeline, setLoadingTimeline] = useState(false); const [savedQuery, setSavedQuery] = useState(undefined); + const [isSavedQueryFailedToLoad, setIsSavedQueryFailedToLoad] = useState(false); const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); const { uiSettings } = useKibana().services; @@ -126,8 +150,10 @@ export const QueryBarDefineRule = ({ if (isSubscribed && mySavedQuery != null) { setSavedQuery(mySavedQuery); } + setIsSavedQueryFailedToLoad(false); } catch { setSavedQuery(undefined); + setIsSavedQueryFailedToLoad(true); } } else if (savedId == null && savedQuery != null) { setSavedQuery(undefined); @@ -137,7 +163,28 @@ export const QueryBarDefineRule = ({ return () => { isSubscribed = false; }; - }, [fieldValue, filterManager, savedQuery, savedQueryServices]); + }, [ + fieldValue, + filterManager, + savedQuery, + savedQueryServices, + setIsSavedQueryFailedToLoad, + setFieldValue, + ]); + + useEffect(() => { + if (isSavedQueryFailedToLoad) { + onSavedQueryError?.(); + } + }, [onSavedQueryError, isSavedQueryFailedToLoad]); + + // if saved query fetched, reset values in queryBar input and filters to saved query's values + useEffect(() => { + if (resetToSavedQuery && savedQuery) { + const newFiledValue = savedQueryToFieldValue(savedQuery); + setFieldValue(newFiledValue); + } + }, [resetToSavedQuery, savedQuery, setFieldValue]); const onSubmitQuery = useCallback( (newQuery: Query) => { @@ -153,37 +200,30 @@ export const QueryBarDefineRule = ({ (newQuery: Query) => { const { query } = fieldValue; if (!deepEqual(query, newQuery)) { - setFieldValue({ ...fieldValue, query: newQuery }); + // if saved query failed to load, delete saved_id, when user types custom query + const savedId = isSavedQueryFailedToLoad ? null : fieldValue.saved_id; + + setFieldValue({ ...fieldValue, query: newQuery, saved_id: savedId }); } }, - [fieldValue, setFieldValue] + [fieldValue, setFieldValue, isSavedQueryFailedToLoad] ); const onSavedQuery = useCallback( (newSavedQuery: SavedQuery | undefined) => { if (newSavedQuery != null) { const { saved_id: savedId } = fieldValue; + setIsSavedQueryFailedToLoad(false); + setSavedQuery(newSavedQuery); if (newSavedQuery.id !== savedId) { - setSavedQuery(newSavedQuery); - setFieldValue({ - filters: newSavedQuery.attributes.filters ?? [], - query: newSavedQuery.attributes.query, - saved_id: newSavedQuery.id, - }); + const newFiledValue = savedQueryToFieldValue(newSavedQuery); + setFieldValue(newFiledValue); } else { - setSavedQuery(newSavedQuery); - setFieldValue({ - filters: [], - query: { - query: '', - language: 'kuery', - }, - saved_id: null, - }); + setFieldValue(getFieldValueFromEmptySavedQuery()); } } }, - [fieldValue, setFieldValue] + [fieldValue, setFieldValue, setIsSavedQueryFailedToLoad] ); const onCloseTimelineModal = useCallback(() => { @@ -241,7 +281,7 @@ export const QueryBarDefineRule = ({ return ( <> - )} - + {openTimelineSearch ? ( { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx index b2a3075928fee..e48398fbf4ff5 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx @@ -39,6 +39,7 @@ import { import type { DefineStepRule, RuleStepProps } from '../../../pages/detection_engine/rules/types'; import { RuleStep, DataSourceType } from '../../../pages/detection_engine/rules/types'; import { StepRuleDescription } from '../description_step'; +import type { QueryBarDefineRuleProps } from '../query_bar'; import { QueryBarDefineRule } from '../query_bar'; import { SelectRuleType } from '../select_rule_type'; import { AnomalyThresholdSlider } from '../anomaly_threshold_slider'; @@ -63,6 +64,7 @@ import { isNewTermsRule, isThreatMatchRule, isThresholdRule, + isQueryRule, } from '../../../../../common/detection_engine/utils'; import { EqlQueryBar } from '../eql_query_bar'; import { DataViewSelector } from '../data_view_selector'; @@ -156,6 +158,7 @@ const StepDefineRuleComponent: FC = ({ 'dataSourceType', 'newTermsFields', 'historyWindowSize', + 'shouldLoadQueryDynamically', ], onChange: (data: DefineStepRule) => { if (onRuleDataChange) { @@ -176,6 +179,7 @@ const StepDefineRuleComponent: FC = ({ machineLearningJobId: formMachineLearningJobId, dataSourceType: formDataSourceType, newTermsFields: formNewTermsFields, + shouldLoadQueryDynamically: formShouldLoadQueryDynamically, } = formData; const [isQueryBarValid, setIsQueryBarValid] = useState(false); @@ -360,6 +364,14 @@ const StepDefineRuleComponent: FC = ({ } }, [ruleType, previousRuleType, getFields]); + // if saved query failed to load: + // - reset shouldLoadFormDynamically to false, as non existent query cannot be used for loading and execution + const handleSavedQueryError = useCallback(() => { + if (!isQueryBarValid) { + form.setFieldValue('shouldLoadQueryDynamically', false); + } + }, [isQueryBarValid, form]); + const handleSubmit = useCallback(() => { if (onSubmit) { onSubmit(); @@ -584,24 +596,28 @@ const StepDefineRuleComponent: FC = ({ {i18n.IMPORT_TIMELINE_QUERY} ), }} component={QueryBarDefineRule} - componentProps={{ - browserFields, - // runtimeMappings, - idAria: 'detectionEngineStepDefineRuleQueryBar', - indexPattern, - isDisabled: isLoading, - isLoading: isIndexPatternLoading, - dataTestSubj: 'detectionEngineStepDefineRuleQueryBar', - openTimelineSearch, - onValidityChange: setIsQueryBarValid, - onCloseTimelineSearch: handleCloseTimelineSearch, - }} + componentProps={ + { + browserFields, + idAria: 'detectionEngineStepDefineRuleQueryBar', + indexPattern, + isDisabled: isLoading || formShouldLoadQueryDynamically, + resetToSavedQuery: formShouldLoadQueryDynamically, + isLoading: isIndexPatternLoading, + dataTestSubj: 'detectionEngineStepDefineRuleQueryBar', + openTimelineSearch, + onValidityChange: setIsQueryBarValid, + onCloseTimelineSearch: handleCloseTimelineSearch, + onSavedQueryError: handleSavedQueryError, + } as QueryBarDefineRuleProps + } /> ), [ @@ -612,6 +628,8 @@ const StepDefineRuleComponent: FC = ({ isIndexPatternLoading, isLoading, openTimelineSearch, + formShouldLoadQueryDynamically, + handleSavedQueryError, ] ); const onOptionsChange = useCallback((field: FieldsEqlOptions, value: string | undefined) => { @@ -718,6 +736,29 @@ const StepDefineRuleComponent: FC = ({ )} + + {isQueryRule(ruleType) && ( + <> + + + + + + )} + <> = { @@ -127,7 +128,7 @@ export const schema: FormSchema = { ...args: Parameters ): ReturnType> | undefined => { const [{ value, path, formData }] = args; - const { query, filters } = value as FieldValueQueryBar; + const { query, filters, saved_id: savedId } = value as FieldValueQueryBar; const needsValidation = !isMlRule(formData.ruleType); if (!needsValidation) { return undefined; @@ -136,6 +137,9 @@ export const schema: FormSchema = { if (!isFieldEmpty) { return undefined; } + if (savedId) { + return { code: 'ERR_FIELD_MISSING', path, message: SAVED_QUERY_REQUIRED }; + } const message = isEqlRule(formData.ruleType) ? EQL_QUERY_REQUIRED : CUSTOM_QUERY_REQUIRED; return { code: 'ERR_FIELD_MISSING', path, message }; }, @@ -623,4 +627,14 @@ export const schema: FormSchema = { } ), }, + shouldLoadQueryDynamically: { + type: FIELD_TYPES.CHECKBOX, + label: i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepAboutRule.fieldShouldLoadQueryDynamicallyLabel', + { + defaultMessage: 'Load the saved query dynamically on each rule execution', + } + ), + defaultValue: false, + }, }; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/translations.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/translations.tsx index 458ab73dd1bb8..b28d06777fd3c 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/translations.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/translations.tsx @@ -14,6 +14,13 @@ export const CUSTOM_QUERY_REQUIRED = i18n.translate( } ); +export const SAVED_QUERY_REQUIRED = i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.savedQueryFieldRequiredError', + { + defaultMessage: 'Failed to load the saved query. Select a new one or add a custom query.', + } +); + export const EQL_QUERY_REQUIRED = i18n.translate( 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.eqlQueryFieldRequiredError', { @@ -71,6 +78,13 @@ export const EQL_QUERY_BAR_LABEL = i18n.translate( } ); +export const SAVED_QUERY_CHECKBOX_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.SavedQueryCheckboxLabel', + { + defaultMessage: 'Saved query', + } +); + export const THREAT_MATCH_INDEX_HELPER_TEXT = i18n.translate( 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.threatMatchingIcesHelperDescription', { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_panel/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_panel/index.tsx index ac9a153ad76bf..0eb9e2cbf535d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_panel/index.tsx @@ -25,7 +25,14 @@ MyPanel.displayName = 'MyPanel'; const StepPanelComponent: React.FC = ({ children, loading, title }) => ( - {loading && } + {loading && ( + + )} {children} diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts index fdf1370587638..967ba8a90d4f4 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts @@ -220,6 +220,7 @@ export const mockDefineStepRule = (): DefineStepRule => ({ dataSourceType: DataSourceType.IndexPatterns, newTermsFields: ['host.ip'], historyWindowSize: '7d', + shouldLoadQueryDynamically: false, }); export const mockScheduleStepRule = (): ScheduleStepRule => ({ diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts index ae56e6a525508..2ab0c7ae0b5b2 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts @@ -118,9 +118,8 @@ describe('helpers', () => { language: 'kuery', filters: mockQueryBar.filters, query: 'test query', - saved_id: 'test123', index: ['filebeat-'], - type: 'saved_query', + type: 'query', timeline_id: '86aa74d0-2136-11ea-9864-ebc8cc1cb8c2', timeline_title: 'Titled timeline', }; @@ -128,30 +127,109 @@ describe('helpers', () => { expect(result).toEqual(expected); }); - test('returns formatted object with no saved_id if no savedId provided', () => { - const mockStepData: DefineStepRule = { - ...mockData, - queryBar: { - ...mockData.queryBar, - saved_id: '', - }, - }; - const result = formatDefineStepData(mockStepData); - const expected: DefineStepRuleJson = { - language: 'kuery', - filters: mockQueryBar.filters, - query: 'test query', - index: ['filebeat-'], - saved_id: '', - type: 'query', - timeline_id: '86aa74d0-2136-11ea-9864-ebc8cc1cb8c2', - timeline_title: 'Titled timeline', - }; + describe('saved_query and query rule types', () => { + test('returns query rule if savedId provided but shouldLoadQueryDynamically != true', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: 'mock-test-id', + }, + ruleType: 'query', + }; + const result = formatDefineStepData(mockStepData); - expect(result).toEqual(expected); + expect(result.saved_id).toBeUndefined(); + expect(result.type).toBe('query'); + expect(result.query).toBe('test query'); + }); + + test('returns query rule if shouldLoadQueryDynamically = true and savedId not provided for rule type query', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: null, + }, + ruleType: 'query', + shouldLoadQueryDynamically: true, + }; + const result = formatDefineStepData(mockStepData); + + expect(result.saved_id).toBeUndefined(); + expect(result.type).toBe('query'); + expect(result.query).toBe('test query'); + }); + + test('returns query rule if shouldLoadQueryDynamically = true and savedId not provided for rule type saved_query', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: null, + }, + ruleType: 'saved_query', + shouldLoadQueryDynamically: true, + }; + const result = formatDefineStepData(mockStepData); + + expect(result.saved_id).toBeUndefined(); + expect(result.type).toBe('query'); + expect(result.query).toBe('test query'); + }); + + test('returns query rule type if savedId provided but shouldLoadQueryDynamically != true and rule type is saved_query', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: 'mock-test-id', + }, + ruleType: 'saved_query', + }; + const result = formatDefineStepData(mockStepData); + + expect(result.saved_id).toBeUndefined(); + expect(result.type).toBe('query'); + expect(result.query).toBe('test query'); + }); + + test('returns saved_query rule if shouldLoadQueryDynamically = true and savedId provided for rule type query', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: 'mock-test-id', + }, + ruleType: 'query', + shouldLoadQueryDynamically: true, + }; + const result = formatDefineStepData(mockStepData); + + expect(result.saved_id).toBe('mock-test-id'); + expect(result.type).toBe('saved_query'); + expect(result.query).toBeUndefined(); + }); + + test('returns saved_query rule if shouldLoadQueryDynamically = true and savedId provided for rule type saved_query', () => { + const mockStepData: DefineStepRule = { + ...mockData, + queryBar: { + ...mockData.queryBar, + saved_id: 'mock-test-id', + }, + ruleType: 'saved_query', + shouldLoadQueryDynamically: true, + }; + const result = formatDefineStepData(mockStepData); + + expect(result.saved_id).toBe('mock-test-id'); + expect(result.type).toBe('saved_query'); + expect(result.query).toBeUndefined(); + }); }); - test('returns formatted object without timeline_id and timeline_title if timeline.id is null', () => { + test('returns undefined timeline_id and timeline_title if timeline.id is undefined', () => { const mockStepData: DefineStepRule = { ...mockData, }; @@ -160,19 +238,11 @@ describe('helpers', () => { const result = formatDefineStepData(mockStepData); - const expected: DefineStepRuleJson = { - language: 'kuery', - filters: mockQueryBar.filters, - query: 'test query', - index: ['filebeat-'], - saved_id: 'test123', - type: 'saved_query', - }; - - expect(result).toEqual(expected); + expect(result.timeline_id).toBeUndefined(); + expect(result.timeline_title).toBeUndefined(); }); - test('returns formatted object with timeline_id and timeline_title if timeline.id is "', () => { + test('returns formatted timeline_id and timeline_title if timeline.id is empty string', () => { const mockStepData: DefineStepRule = { ...mockData, timeline: { @@ -182,21 +252,11 @@ describe('helpers', () => { }; const result = formatDefineStepData(mockStepData); - const expected: DefineStepRuleJson = { - language: 'kuery', - filters: mockQueryBar.filters, - query: 'test query', - index: ['filebeat-'], - saved_id: 'test123', - type: 'saved_query', - timeline_id: '', - timeline_title: 'Titled timeline', - }; - - expect(result).toEqual(expected); + expect(result.timeline_id).toBe(''); + expect(result.timeline_title).toEqual('Titled timeline'); }); - test('returns formatted object without timeline_id and timeline_title if timeline.title is null', () => { + test('returns undefined timeline_id and timeline_title if timeline.title is undefined', () => { const mockStepData: DefineStepRule = { ...mockData, timeline: { @@ -208,19 +268,11 @@ describe('helpers', () => { delete mockStepData.timeline.title; const result = formatDefineStepData(mockStepData); - const expected: DefineStepRuleJson = { - language: 'kuery', - filters: mockQueryBar.filters, - query: 'test query', - index: ['filebeat-'], - saved_id: 'test123', - type: 'saved_query', - }; - - expect(result).toEqual(expected); + expect(result.timeline_id).toBeUndefined(); + expect(result.timeline_title).toBeUndefined(); }); - test('returns formatted object with timeline_id and timeline_title if timeline.title is "', () => { + test('returns formatted object with timeline_id and timeline_title if timeline.title is empty string', () => { const mockStepData: DefineStepRule = { ...mockData, timeline: { @@ -230,18 +282,8 @@ describe('helpers', () => { }; const result = formatDefineStepData(mockStepData); - const expected: DefineStepRuleJson = { - language: 'kuery', - filters: mockQueryBar.filters, - query: 'test query', - index: ['filebeat-'], - saved_id: 'test123', - type: 'saved_query', - timeline_id: '86aa74d0-2136-11ea-9864-ebc8cc1cb8c2', - timeline_title: '', - }; - - expect(result).toEqual(expected); + expect(result.timeline_id).toBe('86aa74d0-2136-11ea-9864-ebc8cc1cb8c2'); + expect(result.timeline_title).toEqual(''); }); test('returns ML fields if type is machine_learning', () => { @@ -891,9 +933,20 @@ describe('helpers', () => { mockActions = mockActionsStepRule(); }); - test('returns rule with type of saved_query when saved_id exists', () => { + test('returns rule with type of query when saved_id exists but shouldLoadQueryDynamically=false', () => { const result = formatRule(mockDefine, mockAbout, mockSchedule, mockActions); + expect(result.type).toEqual('query'); + }); + + test('returns rule with type of saved_query when saved_id exists and shouldLoadQueryDynamically=true', () => { + const result = formatRule( + { ...mockDefine, shouldLoadQueryDynamically: true }, + mockAbout, + mockSchedule, + mockActions + ); + expect(result.type).toEqual('saved_query'); }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts index 59f2d0e6fd713..0406369c541ee 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts @@ -435,9 +435,17 @@ export const formatDefineStepData = (defineStepData: DefineStepRule): DefineStep filters: ruleFields.queryBar?.filters, language: ruleFields.queryBar?.query?.language, query: ruleFields.queryBar?.query?.query as string, - saved_id: ruleFields.queryBar?.saved_id ?? undefined, - ...(ruleType === 'query' && - ruleFields.queryBar?.saved_id && { type: 'saved_query' as Type }), + saved_id: undefined, + type: 'query' as Type, + // rule only be updated as saved_query type if it has saved_id and shouldLoadQueryDynamically checkbox checked + ...(['query', 'saved_query'].includes(ruleType) && + ruleFields.queryBar?.saved_id && + ruleFields.shouldLoadQueryDynamically && { + type: 'saved_query' as Type, + query: undefined, + filters: undefined, + saved_id: ruleFields.queryBar.saved_id, + }), }; return { ...baseFields, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx index 7b3c884657707..e91756ce74db4 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx @@ -116,6 +116,7 @@ import { ExecutionLogTable } from './execution_log_table/execution_log_table'; import * as detectionI18n from '../../translations'; import * as ruleI18n from '../translations'; import { RuleDetailsContextProvider } from './rule_details_context'; +import { useGetSavedQuery } from '../../../../../common/hooks/use_get_saved_query'; import * as i18n from './translations'; import { NeedAdminForUpdateRulesCallOut } from '../../../../components/callouts/need_admin_for_update_callout'; import { MissingPrivilegesCallOut } from '../../../../components/callouts/missing_privileges_callout'; @@ -305,6 +306,10 @@ const RuleDetailsPageComponent: React.FC = ({ const [filterGroup, setFilterGroup] = useState(FILTER_OPEN); const [dataViewOptions, setDataViewOptions] = useState<{ [x: string]: DataViewListItem }>({}); + // load saved query only if rule type === 'saved_query', as other rule types still can have saved_id property that is not used + const savedQueryId = rule?.type === 'saved_query' ? rule?.saved_id : undefined; + const { isSavedQueryLoading, savedQueryBar } = useGetSavedQuery(savedQueryId); + const [indicesConfig] = useUiSetting$(DEFAULT_INDEX_KEY); const [threatIndicesConfig] = useUiSetting$(DEFAULT_THREAT_INDEX_KEY); @@ -765,14 +770,21 @@ const RuleDetailsPageComponent: React.FC = ({ - - - {defineRuleData != null && ( + + + {defineRuleData != null && !isSavedQueryLoading && ( { dataViewId: undefined, index: ['auditbeat-*'], machineLearningJobId: [], + shouldLoadQueryDynamically: true, queryBar: { query: { query: 'user.name: root or user.name: admin', @@ -256,6 +257,7 @@ describe('rule helpers', () => { }, newTermsFields: [], historyWindowSize: '7d', + shouldLoadQueryDynamically: true, }; expect(result).toEqual(expected); @@ -309,6 +311,7 @@ describe('rule helpers', () => { }, newTermsFields: [], historyWindowSize: '7d', + shouldLoadQueryDynamically: false, }; expect(result).toEqual(expected); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx index 278ed497d12e8..2479815ad8fbb 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx @@ -126,6 +126,7 @@ export const getDefineStepsData = (rule: Rule): DefineStepRule => ({ historyWindowSize: rule.history_window_start ? convertHistoryStartToSize(rule.history_window_start) : '7d', + shouldLoadQueryDynamically: Boolean(rule.type === 'saved_query' && rule.saved_id), }); const convertHistoryStartToSize = (relativeTime: string) => { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts index d262cd44dadfc..c35f5907901a7 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts @@ -162,6 +162,7 @@ export interface DefineStepRule { dataSourceType: DataSourceType; newTermsFields: string[]; historyWindowSize: string; + shouldLoadQueryDynamically: boolean; } export interface ScheduleStepRule { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts index 806c236fd63cc..26f23bba9591d 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts @@ -139,6 +139,7 @@ export const stepDefineDefaultValue: DefineStepRule = { dataSourceType: DataSourceType.IndexPatterns, newTermsFields: [], historyWindowSize: '7d', + shouldLoadQueryDynamically: false, }; export const stepAboutDefaultValue: AboutStepRule = { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts index 5a940ebe364c5..6777adc5de697 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts @@ -9,14 +9,14 @@ import { validateNonExact } from '@kbn/securitysolution-io-ts-utils'; import { QUERY_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; import { SERVER_APP_ID } from '../../../../../common/constants'; -import type { QueryRuleParams } from '../../schemas/rule_schemas'; -import { queryRuleParams } from '../../schemas/rule_schemas'; +import type { UnifiedQueryRuleParams } from '../../schemas/rule_schemas'; +import { unifiedQueryRuleParams } from '../../schemas/rule_schemas'; import { queryExecutor } from '../../signals/executors/query'; import type { CreateRuleOptions, SecurityAlertType } from '../types'; import { validateIndexPatterns } from '../utils'; export const createQueryAlertType = ( createOptions: CreateRuleOptions -): SecurityAlertType => { +): SecurityAlertType => { const { eventsTelemetry, experimentalFeatures, version } = createOptions; return { id: QUERY_RULE_TYPE_ID, @@ -24,7 +24,7 @@ export const createQueryAlertType = ( validate: { params: { validate: (object: unknown) => { - const [validated, errors] = validateNonExact(object, queryRuleParams); + const [validated, errors] = validateNonExact(object, unifiedQueryRuleParams); if (errors != null) { throw new Error(errors); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_query/create_saved_query_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_query/create_saved_query_alert_type.ts index 325d9adfb1bda..e4ab515b5ff32 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_query/create_saved_query_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_query/create_saved_query_alert_type.ts @@ -9,14 +9,14 @@ import { validateNonExact } from '@kbn/securitysolution-io-ts-utils'; import { SAVED_QUERY_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; import { SERVER_APP_ID } from '../../../../../common/constants'; -import type { CompleteRule, SavedQueryRuleParams } from '../../schemas/rule_schemas'; -import { savedQueryRuleParams } from '../../schemas/rule_schemas'; +import type { CompleteRule, UnifiedQueryRuleParams } from '../../schemas/rule_schemas'; +import { unifiedQueryRuleParams } from '../../schemas/rule_schemas'; import { queryExecutor } from '../../signals/executors/query'; import type { CreateRuleOptions, SecurityAlertType } from '../types'; import { validateIndexPatterns } from '../utils'; export const createSavedQueryAlertType = ( createOptions: CreateRuleOptions -): SecurityAlertType => { +): SecurityAlertType => { const { experimentalFeatures, version } = createOptions; return { id: SAVED_QUERY_RULE_TYPE_ID, @@ -24,7 +24,7 @@ export const createSavedQueryAlertType = ( validate: { params: { validate: (object: unknown) => { - const [validated, errors] = validateNonExact(object, savedQueryRuleParams); + const [validated, errors] = validateNonExact(object, unifiedQueryRuleParams); if (errors != null) { throw new Error(errors); } @@ -82,7 +82,7 @@ export const createSavedQueryAlertType = ( const result = await queryExecutor({ inputIndex, runtimeMappings, - completeRule: completeRule as CompleteRule, + completeRule: completeRule as CompleteRule, tuple, exceptionItems, experimentalFeatures, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts index d879f3dbeda3c..ca44042dc9d65 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts @@ -186,6 +186,12 @@ export const savedQueryRuleParams = t.intersection([baseRuleParams, savedQuerySp export type SavedQuerySpecificRuleParams = t.TypeOf; export type SavedQueryRuleParams = t.TypeOf; +export const unifiedQueryRuleParams = t.intersection([ + baseRuleParams, + t.union([querySpecificRuleParams, savedQuerySpecificRuleParams]), +]); +export type UnifiedQueryRuleParams = t.TypeOf; + const thresholdSpecificRuleParams = t.type({ type: t.literal('threshold'), language: nonEqlLanguages, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts index 48e979472c4c7..aa01b614d6bff 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts @@ -18,11 +18,7 @@ import { getFilter } from '../get_filter'; import { searchAfterAndBulkCreate } from '../search_after_bulk_create'; import type { RuleRangeTuple, BulkCreate, WrapHits } from '../types'; import type { ITelemetryEventsSender } from '../../../telemetry/sender'; -import type { - CompleteRule, - SavedQueryRuleParams, - QueryRuleParams, -} from '../../schemas/rule_schemas'; +import type { CompleteRule, UnifiedQueryRuleParams } from '../../schemas/rule_schemas'; import type { ExperimentalFeatures } from '../../../../../common/experimental_features'; import { buildReasonMessageForQueryAlert } from '../reason_formatters'; import { withSecuritySpan } from '../../../../utils/with_security_span'; @@ -48,7 +44,7 @@ export const queryExecutor = async ({ }: { inputIndex: string[]; runtimeMappings: estypes.MappingRuntimeFields | undefined; - completeRule: CompleteRule | CompleteRule; + completeRule: CompleteRule; tuple: RuleRangeTuple; exceptionItems: ExceptionListItemSchema[]; listClient: ListClient; @@ -79,7 +75,6 @@ export const queryExecutor = async ({ return searchAfterAndBulkCreate({ tuple, - completeRule, services, listClient, exceptionsList: exceptionItems, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts index 7f8cc6bbb38db..6b347ce47688b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts @@ -85,6 +85,10 @@ export const getFilter = async ({ // any additional language, query, filters, etc... if (query != null && language != null && index != null) { return getQueryFilter(query, language, filters || [], index, lists); + } else if (savedId && index != null) { + // if savedId present and we ending up here, then saved query failed to be fetched + // and we also didn't fall back to saved in rule query + throw Error(`Failed to fetch saved query. "${err.message}"`); } else { // user did not give any additional fall back mechanism for generating a rule // rethrow error for activity monitoring diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts index 9561d19fe4378..613104bc7604b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts @@ -201,7 +201,6 @@ describe('searchAfterAndBulkCreate', () => { const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ tuple, - completeRule: queryCompleteRule, listClient, exceptionsList: [exceptionItem], services: mockService, @@ -295,7 +294,6 @@ describe('searchAfterAndBulkCreate', () => { }, ]; const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [exceptionItem], @@ -370,7 +368,6 @@ describe('searchAfterAndBulkCreate', () => { }, ]; const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [exceptionItem], @@ -429,7 +426,6 @@ describe('searchAfterAndBulkCreate', () => { }, ]; const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [exceptionItem], @@ -498,7 +494,6 @@ describe('searchAfterAndBulkCreate', () => { ); const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [], @@ -553,7 +548,6 @@ describe('searchAfterAndBulkCreate', () => { }, ]; const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [exceptionItem], @@ -622,7 +616,6 @@ describe('searchAfterAndBulkCreate', () => { }, ]; const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [exceptionItem], @@ -693,7 +686,6 @@ describe('searchAfterAndBulkCreate', () => { ) ); const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [], @@ -743,7 +735,6 @@ describe('searchAfterAndBulkCreate', () => { listClient, exceptionsList: [exceptionItem], tuple, - completeRule: queryCompleteRule, services: mockService, ruleExecutionLogger, eventsTelemetry: undefined, @@ -789,7 +780,6 @@ describe('searchAfterAndBulkCreate', () => { listClient, exceptionsList: [exceptionItem], tuple, - completeRule: queryCompleteRule, services: mockService, ruleExecutionLogger, eventsTelemetry: undefined, @@ -914,7 +904,6 @@ describe('searchAfterAndBulkCreate', () => { ); const { success, createdSignalsCount, lastLookBackDate, errors } = await searchAfterAndBulkCreate({ - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [], @@ -1001,7 +990,6 @@ describe('searchAfterAndBulkCreate', () => { const mockEnrichment = jest.fn((a) => a); const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({ enrichment: mockEnrichment, - completeRule: queryCompleteRule, tuple, listClient, exceptionsList: [], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts index c941995eb3bc7..eb0bc7e740b2c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts @@ -27,7 +27,6 @@ import { withSecuritySpan } from '../../../utils/with_security_span'; export const searchAfterAndBulkCreate = async ({ buildReasonMessage, bulkCreate, - completeRule, enrichment = identity, eventsTelemetry, exceptionsList, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts index a1a63b2e2493c..460b73b084356 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts @@ -122,7 +122,6 @@ export const createEventSignal = async ({ const result = await searchAfterAndBulkCreate({ buildReasonMessage: buildReasonMessageForThreatMatchAlert, bulkCreate, - completeRule, enrichment: threatEnrichment, eventsTelemetry, exceptionsList: exceptionItems, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts index b063ef87761bc..442f9ce203405 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signal.ts @@ -72,7 +72,6 @@ export const createThreatSignal = async ({ const result = await searchAfterAndBulkCreate({ buildReasonMessage: buildReasonMessageForThreatMatchAlert, bulkCreate, - completeRule, enrichment: threatEnrichment, eventsTelemetry, exceptionsList: exceptionItems, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts index 5609eed4c0801..1e2b6db4b4c81 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts @@ -26,13 +26,7 @@ import type { EqlSequence, } from '../../../../common/detection_engine/types'; import type { ITelemetryEventsSender } from '../../telemetry/sender'; -import type { - CompleteRule, - QueryRuleParams, - ThreatRuleParams, - RuleParams, - SavedQueryRuleParams, -} from '../schemas/rule_schemas'; +import type { RuleParams } from '../schemas/rule_schemas'; import type { GenericBulkCreateResponse } from '../rule_types/factories'; import type { BuildReasonMessage } from './reason_formatters'; import type { @@ -262,10 +256,6 @@ export interface SearchAfterAndBulkCreateParams { from: moment.Moment; maxSignals: number; }; - completeRule: - | CompleteRule - | CompleteRule - | CompleteRule; services: RuleExecutorServices; listClient: ListClient; exceptionsList: ExceptionListItemSchema[]; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts index 1b9dcb5da28fd..a8dc735376f69 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts @@ -22,6 +22,7 @@ import { getSimpleMlRuleOutput, getSimpleRuleUpdate, getSimpleMlRuleUpdate, + getSimpleSavedQueryRule, createRule, getSimpleRule, createLegacyRuleAction, @@ -521,6 +522,53 @@ export default ({ getService }: FtrProviderContext) => { }); }); }); + + describe('saved_query and query rule type', () => { + it('should allow to save a query rule type as a saved_query rule type', async () => { + const ruleId = 'rule-1'; + const savedQueryRule = getSimpleSavedQueryRule(ruleId); + await createRule(supertest, log, getSimpleRule(ruleId)); + + const { body: outputRule } = await supertest + .put(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send(savedQueryRule) + .expect(200); + + expect(outputRule.type).to.be('saved_query'); + expect(outputRule.saved_id).to.be(savedQueryRule.saved_id); + }); + + it('should allow to save a query rule type as a saved_query rule type with undefined query', async () => { + const ruleId = 'rule-1'; + const savedQueryRule = { ...getSimpleSavedQueryRule(ruleId), query: undefined }; + await createRule(supertest, log, getSimpleRule(ruleId)); + + const { body: outputRule } = await supertest + .put(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send(savedQueryRule) + .expect(200); + + expect(outputRule.type).to.be('saved_query'); + expect(outputRule.saved_id).to.be(savedQueryRule.saved_id); + }); + + it('should allow to save a saved_query rule type as a query rule type', async () => { + const ruleId = 'rule-1'; + const queryRule = getSimpleRule(ruleId); + await createRule(supertest, log, getSimpleSavedQueryRule(ruleId)); + + const { body: outputRule } = await supertest + .put(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send(queryRule) + .expect(200); + + expect(outputRule.type).to.be('query'); + expect(outputRule.saved_id).to.be(undefined); + }); + }); }); }); }; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_simple_saved_query_rule.ts b/x-pack/test/detection_engine_api_integration/utils/get_simple_saved_query_rule.ts new file mode 100644 index 0000000000000..2fdd157c9c0d4 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_simple_saved_query_rule.ts @@ -0,0 +1,29 @@ +/* + * 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 { SavedQueryCreateSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request'; + +/** + * This is a typical simple saved_query rule for e2e testing + * @param ruleId + * @param enabled Enables the rule on creation or not. Defaulted to true. + */ +export const getSimpleSavedQueryRule = ( + ruleId = 'rule-1', + enabled = false +): SavedQueryCreateSchema => ({ + name: 'Simple Saved Query Rule', + description: 'Simple Saved Query Rule', + enabled, + risk_score: 1, + rule_id: ruleId, + severity: 'high', + index: ['auditbeat-*'], + type: 'saved_query', + saved_id: 'mock_id', + query: 'user.name: root or user.name: admin', +}); diff --git a/x-pack/test/detection_engine_api_integration/utils/index.ts b/x-pack/test/detection_engine_api_integration/utils/index.ts index 81bad1b1b583b..31d13a52f72da 100644 --- a/x-pack/test/detection_engine_api_integration/utils/index.ts +++ b/x-pack/test/detection_engine_api_integration/utils/index.ts @@ -69,6 +69,7 @@ export * from './get_simple_rule_output_without_rule_id'; export * from './get_simple_rule_preview_output'; export * from './get_simple_rule_update'; export * from './get_simple_rule_without_rule_id'; +export * from './get_simple_saved_query_rule'; export * from './get_simple_threat_match'; export * from './get_stats'; export * from './get_stats_url'; From 2c4e1fb5473aa349004f70025e5dc5d03824fd98 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 18 Sep 2022 22:39:47 -0600 Subject: [PATCH 41/79] [api-docs] Daily api_docs build (#140899) --- 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/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/guided_onboarding.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_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_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_browser_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_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_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_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.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_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_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_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_rendering_browser_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_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.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_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.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_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_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.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_test_subj_selector.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/profiling.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_finder.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/stack_connectors.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 +- 391 files changed, 391 insertions(+), 391 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index ba16b6349628b..d48c8417ef3db 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-09-18 +date: 2022-09-19 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 4a7bf9fe1ed29..b7790d2d87008 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-09-18 +date: 2022-09-19 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 f7f0f370226dd..0ad6026250b02 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-09-18 +date: 2022-09-19 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 5a96ecdcf9d74..f76270693f647 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-09-18 +date: 2022-09-19 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 9a0d363ff2a2a..2dcea78f1ea31 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-09-18 +date: 2022-09-19 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 5704f6a666e68..5b4a383c73f2c 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-09-18 +date: 2022-09-19 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 0cd715153dd2a..2dbcf0cea30e0 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-09-18 +date: 2022-09-19 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 c2f53f24dcc71..f7721e9bcda58 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-09-18 +date: 2022-09-19 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 fdd9ce529bc02..feaeaa1eb2f58 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-09-18 +date: 2022-09-19 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 1d6885407f326..c23a16b997363 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-09-18 +date: 2022-09-19 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 606a1a560e4da..610ff7c5905c1 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-09-18 +date: 2022-09-19 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 ac34b01923bba..3c00446801d9b 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-09-18 +date: 2022-09-19 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 eba3ac4dfb767..a531c850483d4 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-09-18 +date: 2022-09-19 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 e4de850d59bf3..080de25c872ce 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-09-18 +date: 2022-09-19 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 9732a81c73006..e79d69afe2deb 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 96c4fa31d6ff4..45a19d534d16a 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-09-18 +date: 2022-09-19 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 d707be2855fd6..9d091d4b46aab 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-09-18 +date: 2022-09-19 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 cccddd2fc41ea..2fcb802179500 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-09-18 +date: 2022-09-19 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 12fbe4e58d6a6..0f32f3ecebcbf 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-09-18 +date: 2022-09-19 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 d2596ce6d21f6..d3ba9f3fb8120 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-09-18 +date: 2022-09-19 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 654819e5e5538..4374fd3bfa996 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-09-18 +date: 2022-09-19 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 cc18be96ed940..8d75cc2718001 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-09-18 +date: 2022-09-19 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 2b0a6cc0a2dbc..84bb8bca2a35b 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-09-18 +date: 2022-09-19 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 a5116bbcffe44..022be47d5a96d 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-09-18 +date: 2022-09-19 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 b162959db88f8..b05f4fab83e7d 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-09-18 +date: 2022-09-19 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 373a12c08c4ff..0665713d3a486 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-09-18 +date: 2022-09-19 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 d7d75c1241434..91fd9b7dd580e 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 0d689a7050ec9..ba5af63634077 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index dddaa8f37c6d0..3c7dcbd2d9a03 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index fd0a4409280f9..cf4c7e01b4440 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-09-18 +date: 2022-09-19 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 59d5287c7508a..39d6a57c4f43b 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-09-18 +date: 2022-09-19 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 ea8dcb712b7c5..1ae9dbbe468f3 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-09-18 +date: 2022-09-19 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 bcb58ba4e9210..2891c863f698d 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-09-18 +date: 2022-09-19 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 289571fb340a6..9167009b0103d 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-09-18 +date: 2022-09-19 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 aafc1350dc5b2..383050dcd12d8 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-09-18 +date: 2022-09-19 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 bca96b4610bd5..28683ea8873e3 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-09-18 +date: 2022-09-19 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 ec4c17f2c5b18..1c6adb7d61a93 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-09-18 +date: 2022-09-19 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 dfb2d1886888d..156ba659bc231 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-09-18 +date: 2022-09-19 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 4cfea257e98a0..5e8b28fd6c54b 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-09-18 +date: 2022-09-19 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 7b583512d391a..e6a2cc0692b41 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-09-18 +date: 2022-09-19 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 ba5c3f2c0fe7f..095b4f4491e56 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-09-18 +date: 2022-09-19 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 e6160329633a6..c9ca9e05d26e5 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-09-18 +date: 2022-09-19 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 ade1e36d882f2..f497ba9aa3650 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-09-18 +date: 2022-09-19 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 4025a78c90ec1..7f2fadbf83652 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-09-18 +date: 2022-09-19 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 a8520091f7876..90988b5449313 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-09-18 +date: 2022-09-19 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 78f277ec88f7b..5a7f301cfc038 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-09-18 +date: 2022-09-19 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 de2f03b158baa..4f22aec2a208f 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-09-18 +date: 2022-09-19 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 c8ddacfa298b5..bd4fead35a4bc 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-09-18 +date: 2022-09-19 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 7f19fae871779..cd4122c979291 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-09-18 +date: 2022-09-19 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 4e2a250c85e96..37584f22212f3 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-09-18 +date: 2022-09-19 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 b87555709f48f..36ec5f95939b0 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-09-18 +date: 2022-09-19 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 c9b61aaa863d2..2ca4734300253 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-09-18 +date: 2022-09-19 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 4b050ff7c5284..b6f097c876fb7 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-09-18 +date: 2022-09-19 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 c16f66dfe7e71..a87cd35e835b3 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-09-18 +date: 2022-09-19 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 c50ccb0de1e02..f40931c866756 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-09-18 +date: 2022-09-19 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 ff0330698549a..bcfba3cac7aef 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-09-18 +date: 2022-09-19 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 072274cb3e8f1..a4158f19eddb5 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-09-18 +date: 2022-09-19 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 45ed73407624a..eadfc73e23429 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-09-18 +date: 2022-09-19 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 9b16cbc03cb93..6354e09d87ad0 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 138d186bb8bde..b98c4341430a6 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 042dd2f9a464b..7dac1a970a92e 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-09-18 +date: 2022-09-19 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 29d5bb34dad9f..f8eefe8bf4ad6 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-09-18 +date: 2022-09-19 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 738ed32c3e791..53c74db215e23 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-09-18 +date: 2022-09-19 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 a2590f8bfc3f8..3a0f894214867 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-09-18 +date: 2022-09-19 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 9347356c2c050..f2b4a61485205 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-09-18 +date: 2022-09-19 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 5f7a53d08f9bb..599700b0a3f5d 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-09-18 +date: 2022-09-19 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 989059b28fbac..cf9015e67273d 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-09-18 +date: 2022-09-19 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 aa284f675e8ee..f0771d4b5f804 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-09-18 +date: 2022-09-19 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 36122e9be8fc2..7b49f322afd2c 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-09-18 +date: 2022-09-19 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 cce26e15b3c3e..1c1d84479c938 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-09-18 +date: 2022-09-19 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 e65121565224f..b7d1fc106508f 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-09-18 +date: 2022-09-19 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 32a7e26e7c8e2..777c7aad48330 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-09-18 +date: 2022-09-19 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 6dc2003622eb8..c31befc1b7cb0 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-09-18 +date: 2022-09-19 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 52c2699c2ea87..a2b6256f28d04 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-09-18 +date: 2022-09-19 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 f6e56113d2ccb..36826f52d6437 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-09-18 +date: 2022-09-19 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 d7b97c7fa3c7b..a040b38ad1ed9 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-09-18 +date: 2022-09-19 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 ccd70cfad1ae3..37dce3b4f3368 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-09-18 +date: 2022-09-19 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 a5f12f4622475..51a1ee17b9115 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-09-18 +date: 2022-09-19 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 c782b8395358d..05a6955122d97 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-09-18 +date: 2022-09-19 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 af8c3a94335b5..1b087de6ae21f 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-09-18 +date: 2022-09-19 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 58cd6bccccc04..7061986c8f12c 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-09-18 +date: 2022-09-19 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 21b7f5f589154..a38b2f8b7463d 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-09-18 +date: 2022-09-19 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 911cd4514d44e..0fc81d89278aa 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-09-18 +date: 2022-09-19 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 0a4d4e85c61b4..1c64d868f468a 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-09-18 +date: 2022-09-19 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 bbb31d72b1259..162874ebcc382 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-09-18 +date: 2022-09-19 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 63faca5e29836..d6d0f22cc201b 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-09-18 +date: 2022-09-19 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 e1e715c8ab31f..7bf78620a8feb 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-09-18 +date: 2022-09-19 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 d358b94419f0a..735b2940d457f 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-09-18 +date: 2022-09-19 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 157db0600145c..4411edb9b4b0e 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-09-18 +date: 2022-09-19 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 fd0c52123e8e9..063a8e5ac81fa 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-09-18 +date: 2022-09-19 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 6f76399bbcadc..e468b04c8d7e3 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-09-18 +date: 2022-09-19 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 07328fab1263b..c726d99414732 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-09-18 +date: 2022-09-19 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 06be266cdaa7a..6c2306eeae323 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-09-18 +date: 2022-09-19 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 f995bccec7911..0382b4968171a 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-09-18 +date: 2022-09-19 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 80da2cc5e11dd..f782fd23f0b8a 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-09-18 +date: 2022-09-19 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_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index a1b72f2c22ddb..842f44d2458a8 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index f10f5305fcae2..eac3abd124a04 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 6663357dfaa0b..e4bbac7e7ef22 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 48984bbef42ca..78172ef70918c 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index a0a5c60730f29..2fd5f53a8515a 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 26672bc5ce9a6..2c918292eac64 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 3117d40d8cb68..f6e2ec8ac6a86 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-09-18 +date: 2022-09-19 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 40b8f969ef6f8..b75a290d38b9b 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-09-18 +date: 2022-09-19 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 3966c837cf219..f27a81c0bad1f 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-09-18 +date: 2022-09-19 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 3848c7626e02f..c48e9edb7d4e1 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-09-18 +date: 2022-09-19 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_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 282248188264a..974d0a03d4151 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 0fa0402abb841..3e0493173f170 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-09-18 +date: 2022-09-19 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 ebcf9644a2b68..7b840e86b134a 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-09-18 +date: 2022-09-19 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 32a8e59c03dc6..972d5d68ab911 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-09-18 +date: 2022-09-19 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_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 7fd6a0e765659..e8623f0c05f6f 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 6cb6da94cf952..04e3666adc183 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 92c7907df3284..5315919d0c106 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-09-18 +date: 2022-09-19 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 b9c92d54bd6c3..fc52edec60b65 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-09-18 +date: 2022-09-19 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 e654d156cb37e..3185fc2880e04 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-09-18 +date: 2022-09-19 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 3cdc9b642c931..803edcdb542d4 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-09-18 +date: 2022-09-19 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 5e8db3b6af15f..3c66778540176 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-09-18 +date: 2022-09-19 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 6e71707c7866f..ccd11240aaf39 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-09-18 +date: 2022-09-19 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_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 025af4ec4132b..70ab9a5665bdb 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 4d79a1009fba2..804a7ca075696 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 392b3c6f617b5..1389d27cd3777 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-09-18 +date: 2022-09-19 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 dbd9bde0ef0c4..d34d1176ff24f 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-09-18 +date: 2022-09-19 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 b59ff01038de4..b5e85f32608fa 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-09-18 +date: 2022-09-19 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 3b6b0b26b6a07..00ac807b1a24c 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-09-18 +date: 2022-09-19 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 8b923b83f19f5..397da70c91a47 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-09-18 +date: 2022-09-19 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 44cd8f477fdb1..f41398f5dea8e 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-09-18 +date: 2022-09-19 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 97a762c1ce6bb..93cd2d6d22ee4 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-09-18 +date: 2022-09-19 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 b9371b6d6aacd..f4ca963c49813 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-09-18 +date: 2022-09-19 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 7837d39c79df6..6ff323a22e364 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-09-18 +date: 2022-09-19 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 70fed6aa9a61d..29255cf8c549a 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-09-18 +date: 2022-09-19 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 a166a5154c8b5..cce830ea74a44 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-09-18 +date: 2022-09-19 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 3f09822d0c24b..76bf550dc69c3 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-09-18 +date: 2022-09-19 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 25f4cebdda8f9..26a93ff03f157 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-09-18 +date: 2022-09-19 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 b6975abb2733f..87dff478e355a 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-09-18 +date: 2022-09-19 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 d2dcb6226b5ba..9cb56f4ca1d7c 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-09-18 +date: 2022-09-19 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 f2944d715f631..e3e28e067bd1a 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-09-18 +date: 2022-09-19 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 1a69b4a1c0ebc..15afc420560ee 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-09-18 +date: 2022-09-19 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 2487307010fc7..14e79479e149a 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-09-18 +date: 2022-09-19 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 8d49bfa6a66b5..6fcb37a18bf2e 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-09-18 +date: 2022-09-19 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 52a883052ca00..b7a113051c2ca 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-09-18 +date: 2022-09-19 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 5e8493f8134bd..75a604a03dbe1 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-09-18 +date: 2022-09-19 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 a165460f29c49..003bc1ffb00f7 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-09-18 +date: 2022-09-19 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 e24051fec1c89..c52b818c8c93d 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-09-18 +date: 2022-09-19 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 8e9ab6271b289..d21e9cea15181 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-09-18 +date: 2022-09-19 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 4d5f0c5c53914..b0fb30c02ff62 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-09-18 +date: 2022-09-19 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 0808f74c3cbac..c8827b75457b4 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-09-18 +date: 2022-09-19 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 637d78c9eb6e1..8d8598e43e97d 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-09-18 +date: 2022-09-19 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 0c3ee09a528af..1f70ec50f8250 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-09-18 +date: 2022-09-19 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 f8354719149b3..3b1f1a5751710 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-09-18 +date: 2022-09-19 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 d55a31838f56b..377d760c606d0 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-09-18 +date: 2022-09-19 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 8a2be8ad74c72..914a823003e3d 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-09-18 +date: 2022-09-19 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 14d4e5fc6a681..2d8ec30386de6 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-09-18 +date: 2022-09-19 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_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 3dbb5066b6c1a..3662bfa9649bf 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index a4848bda3f17b..d428a0dd8cbb9 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 07771cb610b5d..190adb30ef63d 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 917abbb8cb948..7ae978f141a96 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-09-18 +date: 2022-09-19 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 a9d4d2af1766d..4d0cac6b89de8 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-09-18 +date: 2022-09-19 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 72409605643a6..f5c8643810032 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-09-18 +date: 2022-09-19 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 494207f90ac0b..f024e58377172 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-09-18 +date: 2022-09-19 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 3d1796ceb5182..94f5e4a359d1f 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-09-18 +date: 2022-09-19 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 afa4ca5b23ed9..55f1e66556208 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-09-18 +date: 2022-09-19 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 2bf1fbcee1e08..3e6512d89ac82 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-09-18 +date: 2022-09-19 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 c6e82806e6989..d4a237f0fa7bc 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-09-18 +date: 2022-09-19 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 0bfc2ff35d700..8fc40fd71a703 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-09-18 +date: 2022-09-19 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 73fc91b038bd8..83ffc4237e8e8 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-09-18 +date: 2022-09-19 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 b141bc5e14f61..6774e9f22ae89 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-09-18 +date: 2022-09-19 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 d767be7c24792..c2b10997cb445 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-09-18 +date: 2022-09-19 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 c4450061d9417..8adb96d6d45b0 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-09-18 +date: 2022-09-19 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_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 881411b1c9f00..66c671d1b05d6 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-09-18 +date: 2022-09-19 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 4a419fe6a69de..2c82e4ab5ea7a 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-09-18 +date: 2022-09-19 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 13354e24d468c..a268a5b99f785 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-09-18 +date: 2022-09-19 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 9e4dcb3ee4428..dcf1f7a1eebdb 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-09-18 +date: 2022-09-19 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 526d400e54446..465ddca705a4d 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-09-18 +date: 2022-09-19 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 90c356db2bba6..db310d20c58c2 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-09-18 +date: 2022-09-19 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 65c5dac146086..807d993ef3133 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-09-18 +date: 2022-09-19 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 406b5a97f49b0..c31121fbc086b 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-09-18 +date: 2022-09-19 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 add609d65d7b2..dce641084de13 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-09-18 +date: 2022-09-19 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 38aa7aeef6261..7ad26210b5492 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-09-18 +date: 2022-09-19 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 15cfd9ee4634e..2a7591021ba8e 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-09-18 +date: 2022-09-19 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_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 9ad832cb19024..72e272801b088 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_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 da699f0586dcd..e020ec6af3202 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-09-18 +date: 2022-09-19 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 8de9119236fd0..761049aee440a 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-09-18 +date: 2022-09-19 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 01cf77f7d8c2e..1ffc44b6ef8b2 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-09-18 +date: 2022-09-19 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 e02b87d2efd3b..e7e2ac7cb4742 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-09-18 +date: 2022-09-19 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 89164e0d98847..2197b5a0c5863 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-09-18 +date: 2022-09-19 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 b43580d1222a7..61188e8210cf6 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-09-18 +date: 2022-09-19 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 dae4c0254d4f2..7fddba4ee207c 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-09-18 +date: 2022-09-19 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 9ded7fe4156a8..1c463947f1554 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-09-18 +date: 2022-09-19 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 b0f3f7bba0254..52b683a980720 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-09-18 +date: 2022-09-19 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 264fc9b47188f..b0345cb975f1c 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-09-18 +date: 2022-09-19 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 e13525f913010..d8fb0828c456c 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-09-18 +date: 2022-09-19 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 1168e6490312f..6ab8e2c871f8c 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-09-18 +date: 2022-09-19 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 8e15767ed3798..13dcb52b07bfc 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-09-18 +date: 2022-09-19 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 f31c2a149fa95..8d0beb25f45d5 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-09-18 +date: 2022-09-19 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 d2b1e0c0bf26c..df8753330255e 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-09-18 +date: 2022-09-19 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 b14dd7e28dcf9..a3b32ceac3b7d 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-09-18 +date: 2022-09-19 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 b8c270ac8e004..707407dd7004d 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-09-18 +date: 2022-09-19 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 3667ba4b055cb..d2d754456d37f 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-09-18 +date: 2022-09-19 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_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 8059aeb995588..c9f2e65ab67c3 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index b8cc3ac018f3d..488b3c8a2605a 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index cd90305e35c74..0b27508c68edd 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 2e2d8418dee20..9a0057e42b986 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index e432b2a3f23ed..0dbe9e78950f7 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.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 2541f7fcf7d91..1523d612a7837 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-09-18 +date: 2022-09-19 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 2f2077eacc388..0c6f38bf54a27 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-09-18 +date: 2022-09-19 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 c468d539d59e3..1869e29fb1d2b 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-09-18 +date: 2022-09-19 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 d3d9f970a85d0..b0233f028d7da 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-09-18 +date: 2022-09-19 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 cafb1c1551423..c62f97e17719b 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-09-18 +date: 2022-09-19 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 666c641213b21..0274ba8b5e69b 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-09-18 +date: 2022-09-19 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 a04d7a23dddbf..36c149be6a180 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-09-18 +date: 2022-09-19 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 d375ee9de7841..3bb84e0a077d6 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-09-18 +date: 2022-09-19 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 877f6134b53ca..36179e35cda0e 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-09-18 +date: 2022-09-19 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_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 475e9fa5cda3b..9fac63e1d19e7 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index be96e150fc2a5..7c2966c9a7b97 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index c95f8f1d7021d..2917ed2413679 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 1fec670f2045f..8511c4d60c8f0 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-09-18 +date: 2022-09-19 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_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index b2ff204ec47ce..f39dc7ab050c2 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 1a12eda734014..39fe406cbf031 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index e36fb45bdaf44..c50536bf58218 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-09-18 +date: 2022-09-19 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 a930caf709238..12f73977cba86 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-09-18 +date: 2022-09-19 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 62b392d730292..356818ed5f36c 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-09-18 +date: 2022-09-19 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 02552a20a9d75..626e9a0fcc7bd 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-09-18 +date: 2022-09-19 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 04920f15901ac..3ef66e2d8aeec 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-09-18 +date: 2022-09-19 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 d1818b3997882..692f57dff7d9e 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-09-18 +date: 2022-09-19 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 bb34d2435f539..f93c29b319dea 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-09-18 +date: 2022-09-19 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 9e68fc39ce781..17579aee87fd5 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-09-18 +date: 2022-09-19 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 f8b1b1a540ae7..c0b2e012e728e 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-09-18 +date: 2022-09-19 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 e1ac646ec029b..ad69eb609008b 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-09-18 +date: 2022-09-19 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 ef27f80420860..17480753e686b 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-09-18 +date: 2022-09-19 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 34c90bafd4b3b..35c26c35c9dfc 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-09-18 +date: 2022-09-19 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 bb77e9d8bd1c6..aa1a45fcb68ae 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-09-18 +date: 2022-09-19 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 329ef45d97c7c..46f816dd62135 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-09-18 +date: 2022-09-19 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 ab7594e392e9d..b588da3be6228 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-09-18 +date: 2022-09-19 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 c35d516d8d452..0b990055b579b 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-09-18 +date: 2022-09-19 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 431fadac5db65..e213382426a76 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-09-18 +date: 2022-09-19 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 40013285a6176..763050b79c962 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-09-18 +date: 2022-09-19 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 76018eddf797a..2daaf33255549 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-09-18 +date: 2022-09-19 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 5b7dc4d56b70b..bbe1e97fe4131 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-09-18 +date: 2022-09-19 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 2991c1b80d2e8..120794f11271e 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-09-18 +date: 2022-09-19 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 d463871de879b..b6e2fa6aa6a4a 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-09-18 +date: 2022-09-19 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 c57246aed5175..3eedaa3fe216b 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-09-18 +date: 2022-09-19 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 54d41cfef5a7e..1fa3617bfd175 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-09-18 +date: 2022-09-19 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 390d3c63e3c2d..6d923c8b57f44 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-09-18 +date: 2022-09-19 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 665cc67fbd782..3c6223096886a 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-09-18 +date: 2022-09-19 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 05c67144fdc1d..a383cf7591cb7 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 4fbea2c6f5ff2..d5f0fc06da61f 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-09-18 +date: 2022-09-19 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 0212f0cf5a159..bcd5272b67ffb 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-09-18 +date: 2022-09-19 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 5f81d9f4f7815..996dbf861d989 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-09-18 +date: 2022-09-19 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 7953cbab8ece9..b14359bb4fad6 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-09-18 +date: 2022-09-19 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 1123b158cef82..06d6b1da8681a 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-09-18 +date: 2022-09-19 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 2bdb7564d15e4..de1260af1c1bc 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-09-18 +date: 2022-09-19 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 1405f89acaffc..7852eb26ac349 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-09-18 +date: 2022-09-19 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 a6b857ff7d029..d0a12054e9367 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-09-18 +date: 2022-09-19 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 d7eebd9f11564..458c954565ad6 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-09-18 +date: 2022-09-19 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 b960d0a78a53f..517cb2fb3d593 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-09-18 +date: 2022-09-19 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 540978fc52496..1b23888838c8f 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-09-18 +date: 2022-09-19 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 768fa7805635a..d6eeba5dfc4a2 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-09-18 +date: 2022-09-19 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 9d0329428e2b0..2460bdc0064f1 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-09-18 +date: 2022-09-19 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 6ebc846462d9c..f90d5d93543c3 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-09-18 +date: 2022-09-19 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 9aabbdd1440e6..05464fe2d2a16 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-09-18 +date: 2022-09-19 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 4f60f11871fc1..31105d93eb76e 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-09-18 +date: 2022-09-19 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 8e93470b81f3d..3ca2046b79033 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-09-18 +date: 2022-09-19 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 83c61c3975cf3..cc2ca2c9d734e 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-09-18 +date: 2022-09-19 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 77ac13efc3b8c..dfe3c9f177c65 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-09-18 +date: 2022-09-19 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 04ba78e3f5e32..5c0817d2e4aa9 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-09-18 +date: 2022-09-19 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 ae424cbb6bef9..e6b75cfaf109d 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-09-18 +date: 2022-09-19 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 85b912484c4ed..12f99ffdb86f8 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-09-18 +date: 2022-09-19 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 4672334a3f0f3..d65fdc91a4c3c 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-09-18 +date: 2022-09-19 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 ad826e4f53e02..11a9c5dedfdac 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-09-18 +date: 2022-09-19 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 57e666f7e90be..bfe4914773e8f 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-09-18 +date: 2022-09-19 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 3a18a9d2ef6bf..186c83d4ff977 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-09-18 +date: 2022-09-19 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 fe5880e246154..76c559246ccd4 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-09-18 +date: 2022-09-19 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 7e2c68d67e6fb..8b4da1d697f90 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-09-18 +date: 2022-09-19 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 17cba0757e0d4..824af05b6e214 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-09-18 +date: 2022-09-19 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 874fd180ebf82..199bf0dfd74b9 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-09-18 +date: 2022-09-19 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 0394bdcf5e5f3..68fd197ec7eb5 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-09-18 +date: 2022-09-19 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 ad4b706e33abc..8938c74261d4f 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-09-18 +date: 2022-09-19 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 dcd30b00e7705..009b8a1950acb 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-09-18 +date: 2022-09-19 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 c42a38c271d8b..c597bf2642663 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-09-18 +date: 2022-09-19 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 ea743a548925d..729e2e9531990 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-09-18 +date: 2022-09-19 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 6a05091033f66..2af32012cb350 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-09-18 +date: 2022-09-19 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 a8bf5f6a3f683..4702ae356277c 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-09-18 +date: 2022-09-19 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 d05e6258e4f6e..d2fa0b6b4595d 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-09-18 +date: 2022-09-19 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 8228a409a3850..62db567f3b5b6 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-09-18 +date: 2022-09-19 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 53d4a238dc9d2..a145dcbdb058f 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-09-18 +date: 2022-09-19 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 fb457f8c1a272..ed9f0d42a0543 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-09-18 +date: 2022-09-19 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 3ce323c06e6c9..c37e0c0dbb0ae 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-09-18 +date: 2022-09-19 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 d4cf898782a7c..cb81d18958901 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-09-18 +date: 2022-09-19 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 d5b6f6134ebaa..2df2b74c94da7 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-09-18 +date: 2022-09-19 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 ba3fc4a2c83a4..7d294b40b381f 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-09-18 +date: 2022-09-19 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 a7182566ff6bb..f85f7077c84fe 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-09-18 +date: 2022-09-19 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 e1f4fc7027a98..25684c8bdf4c4 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-09-18 +date: 2022-09-19 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 21e7f6178a3f8..b9479e327b237 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-09-18 +date: 2022-09-19 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 68449bd130f4e..1f708c075e88c 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-09-18 +date: 2022-09-19 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 c644940555d6a..80d394a102640 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-09-18 +date: 2022-09-19 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 fc8bd13eb35cf..a2866a6f4524f 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-09-18 +date: 2022-09-19 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 fae6448237fa6..a19912d3a3df0 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-09-18 +date: 2022-09-19 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_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 385de6449763e..f072025a4cf51 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index fb41460c278e9..a9e46bf904d80 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index c1c4f84a955d8..961bc58fdd077 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 4add31d5cc413..5398e386a4913 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-09-18 +date: 2022-09-19 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 7edb189d71db9..de7774bc26696 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-09-18 +date: 2022-09-19 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 a88a57b4f2682..5c564fa33e8ab 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-09-18 +date: 2022-09-19 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 450df01584c43..cd6dc31d72879 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-09-18 +date: 2022-09-19 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 be6f90ed8bcc2..3071ecc45f67a 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-09-18 +date: 2022-09-19 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 050a9a51f3ef4..1ebb74d40c591 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-09-18 +date: 2022-09-19 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 94baf2e884e39..b9282c5b88859 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-09-18 +date: 2022-09-19 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 c46c257acf584..de8d564bfadf4 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-09-18 +date: 2022-09-19 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 7f5a100a20225..a2d1023a8dc98 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-09-18 +date: 2022-09-19 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 d3f2027fcaa07..f1cd2fd270fcc 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index dfba989722898..902aebbe1721a 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index d96c182cc6853..81c9b185ee15c 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-09-18 +date: 2022-09-19 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 d9f4b71d09cd9..a8d37319902b4 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-09-18 +date: 2022-09-19 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 7594317adba94..9bf08b58d420c 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-09-18 +date: 2022-09-19 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 801ce428b8924..999035cb138b9 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-09-18 +date: 2022-09-19 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 33043f56f2472..97dc78902c70c 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-09-18 +date: 2022-09-19 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 18d7dd2fef7dc..d0f66724f05da 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-09-18 +date: 2022-09-19 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 997c7f7bf8e49..a56ecedf0080b 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-09-18 +date: 2022-09-19 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 29188a715d9d7..a86a480d31aab 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-09-18 +date: 2022-09-19 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 e1ed60bcf8fec..02baee6fb676c 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-09-18 +date: 2022-09-19 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 b17a8e68df903..3cb146566fbff 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-09-18 +date: 2022-09-19 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 f1fd48c9942b3..d3e569bc6d95b 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-09-18 +date: 2022-09-19 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 166edf55380c9..6ee12695882dd 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-09-18 +date: 2022-09-19 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 b2165180a7748..466d4a15b17e0 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-09-18 +date: 2022-09-19 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 82033cef206dc..26ff516ff228b 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-09-18 +date: 2022-09-19 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 4d07d79ee9c1d..9aac73f2cfdc1 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-09-18 +date: 2022-09-19 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 2fc5081edf342..ee4ec9fb3cda8 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-09-18 +date: 2022-09-19 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 544e792818e32..6f35b4a005143 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-09-18 +date: 2022-09-19 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 b0bfc32d0b34d..b6df7573f3cc3 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-09-18 +date: 2022-09-19 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 f4e7476f1117b..fcda65e552d5e 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-09-18 +date: 2022-09-19 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 ebbee217ccf36..c3f29f0bd1b0f 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-09-18 +date: 2022-09-19 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 76928421e1704..d82e21faea07b 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-09-18 +date: 2022-09-19 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 28d03016ff608..e14518b58ee85 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-09-18 +date: 2022-09-19 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 e90ebe9fc1c73..7a0d0fd31ca6a 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-09-18 +date: 2022-09-19 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 d75ac7fcafed6..9ca08f60c1a31 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-09-18 +date: 2022-09-19 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 ff307458d2c8f..afcda51989455 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-09-18 +date: 2022-09-19 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 f3cd5138d4c04..5689584f917a7 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-09-18 +date: 2022-09-19 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 615a39c20a69b..066ad2b4b2fb0 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-09-18 +date: 2022-09-19 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 48adbe2faafe2..bb2bcdb3286d5 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-09-18 +date: 2022-09-19 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 068216c595905..a335b787eb7c6 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-09-18 +date: 2022-09-19 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 6fda871bf3491..d2deb071ca5da 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 54eaa7accf01d..10e47b145b6a9 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 925d4c69e3fd9..6feb509ba7a56 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index ef5437fdfd44c..3cb4537c8c597 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-09-18 +date: 2022-09-19 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 65f665127ee6b..a85f36646abc2 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-09-18 +date: 2022-09-19 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 91f8c8ddf2e27..daacd093e41ed 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-09-18 +date: 2022-09-19 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 a49956a421728..e74b4d9a4761e 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-09-18 +date: 2022-09-19 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 a365984aea779..8afc5bfce8623 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-09-18 +date: 2022-09-19 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 d93c328b7d5dc..548b209cca4d7 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 0003142499ed5..e5ee6465eeb50 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 5d8d90f760e22..811eda25dc426 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-09-18 +date: 2022-09-19 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 e7ef289fb0474..a8774a99de855 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-09-18 +date: 2022-09-19 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 7afdc0a0bbe79..136082f983427 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-09-18 +date: 2022-09-19 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 bdaf654bde8a4..f77a033e025a5 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-09-18 +date: 2022-09-19 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 7d61c781264c3..26f13dff94fb6 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-09-18 +date: 2022-09-19 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 6a6ed71b71355..cc7404d88949f 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-09-18 +date: 2022-09-19 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 51cfcead28821..58739f9635858 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-09-18 +date: 2022-09-19 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 35c7f7e2b5f09..cffbb73835c6a 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-09-18 +date: 2022-09-19 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 ea7fbb9e683b7..2e2273c7c835d 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-09-18 +date: 2022-09-19 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 658d3e852b27c..015dc2f286af7 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-09-18 +date: 2022-09-19 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 e29ba99f13d3a..b93d20e96b60f 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-09-18 +date: 2022-09-19 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 8611cd23434fd..4d1caa1e75435 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-09-18 +date: 2022-09-19 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 df12ad69f726d..cfe1cb1abbca1 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 4ab817b02a7f9..dcb14bb1fa146 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2022-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index f4c1a64a7920c..4760c73769ea6 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-09-18 +date: 2022-09-19 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 28dcb88a73d67..ae4f8095f6dd0 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-09-18 +date: 2022-09-19 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 c98fcac0c04d1..206c000c79c51 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-09-18 +date: 2022-09-19 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 085978e0045ff..c87118b1a050c 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-09-18 +date: 2022-09-19 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 97cf2919a3db3..7f9fc5ae819a2 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-09-18 +date: 2022-09-19 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 8902121a05998..a7be907819ce0 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-09-18 +date: 2022-09-19 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 9afbdafc49a7b..a56ad276b24ae 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-09-18 +date: 2022-09-19 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 ef22e88e20444..b13bda50369f9 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-09-18 +date: 2022-09-19 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 411859e90fded..7e4fffb99a651 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-09-18 +date: 2022-09-19 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 8cc90628932a7..9a66d5e877250 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-09-18 +date: 2022-09-19 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 2b2daf9e1ac9c..35aa624102ffb 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-09-18 +date: 2022-09-19 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 e7d149953cfb4..204d946fd0e2f 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-09-18 +date: 2022-09-19 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 6306309fe5abd..fd8b1dd43f3f4 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-09-18 +date: 2022-09-19 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 0b8d05a83a42a..910f357fd4217 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-09-18 +date: 2022-09-19 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 58273fcab1a0c..944cd04679c36 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-09-18 +date: 2022-09-19 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 dedbcc3c27b9f..e8e459528f17a 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-09-18 +date: 2022-09-19 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 a4ba38e928bb7..bbaddcb945c01 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-09-18 +date: 2022-09-19 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 9e0c606c1d8fd..a818f4855f16e 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-09-18 +date: 2022-09-19 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 35293c49d4ca9..85f000be9bc0f 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-09-18 +date: 2022-09-19 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 cbb20992991cf..5f0cfaae3a14c 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-09-18 +date: 2022-09-19 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 8c749c2d8a8df..4f2deb0511886 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-09-18 +date: 2022-09-19 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 b6676a9754a42..d28039b1456fd 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-09-18 +date: 2022-09-19 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 3f82e7e368c79..c1a6e6872720b 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-09-18 +date: 2022-09-19 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 390a21f44d32a..e1763f4d1fede 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-09-18 +date: 2022-09-19 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 6c23ec61e477d..e5d74082cbe79 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-09-18 +date: 2022-09-19 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 b7fd734a2bbd6..bc87e33e2fc83 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-09-18 +date: 2022-09-19 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 d8b22c1581d9b..56b776e420bfb 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-09-18 +date: 2022-09-19 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 7f3ae83c7f0d9..cffd0e805a392 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-09-18 +date: 2022-09-19 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From d0a43c9688a78f11a33f22b4583cca09468d4965 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Mon, 19 Sep 2022 08:56:15 +0200 Subject: [PATCH 42/79] [Discover] Refactor default appState generation (#140572) --- .../discover/public/__mocks__/data_view.ts | 1 + .../discover/public/__mocks__/saved_search.ts | 8 ++ .../discover/public/__mocks__/services.ts | 2 +- .../components/top_nav/on_save_search.tsx | 2 +- .../application/main/discover_main_route.tsx | 11 +- .../main/hooks/use_discover_state.ts | 22 +--- .../main/hooks/use_saved_search.test.ts | 29 ++--- .../main/hooks/use_search_session.test.ts | 5 +- .../main/services/discover_state.test.ts | 103 ++++++++---------- .../main/services/discover_state.ts | 48 +++----- .../main/utils/get_state_defaults.test.ts | 13 +-- .../main/utils/get_state_defaults.ts | 27 +++-- 12 files changed, 117 insertions(+), 154 deletions(-) diff --git a/src/plugins/discover/public/__mocks__/data_view.ts b/src/plugins/discover/public/__mocks__/data_view.ts index c4935d2f41f91..8a69435949d4d 100644 --- a/src/plugins/discover/public/__mocks__/data_view.ts +++ b/src/plugins/discover/public/__mocks__/data_view.ts @@ -46,6 +46,7 @@ const fields = [ scripted: false, filterable: true, aggregatable: true, + sortable: true, }, { name: 'scripted', diff --git a/src/plugins/discover/public/__mocks__/saved_search.ts b/src/plugins/discover/public/__mocks__/saved_search.ts index 1f430de118317..de97a31d65632 100644 --- a/src/plugins/discover/public/__mocks__/saved_search.ts +++ b/src/plugins/discover/public/__mocks__/saved_search.ts @@ -20,3 +20,11 @@ export const savedSearchMockWithTimeField = { id: 'the-saved-search-id-with-timefield', searchSource: createSearchSourceMock({ index: dataViewWithTimefieldMock }), } as unknown as SavedSearch; + +export const savedSearchMockWithSQL = { + id: 'the-saved-search-id-sql', + searchSource: createSearchSourceMock({ + index: dataViewWithTimefieldMock, + query: { sql: 'SELECT * FROM "the-saved-search-id-sql"' }, + }), +} as unknown as SavedSearch; diff --git a/src/plugins/discover/public/__mocks__/services.ts b/src/plugins/discover/public/__mocks__/services.ts index ebec857a80b2d..953422acc9291 100644 --- a/src/plugins/discover/public/__mocks__/services.ts +++ b/src/plugins/discover/public/__mocks__/services.ts @@ -63,7 +63,7 @@ export const discoverServiceMock = { if (key === 'fields:popularLimit') { return 5; } else if (key === DEFAULT_COLUMNS_SETTING) { - return []; + return ['default_column']; } else if (key === UI_SETTINGS.META_FIELDS) { return []; } else if (key === DOC_HIDE_TIME_COLUMN_SETTING) { diff --git a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx index dc0b981273c72..d65debc53a0b8 100644 --- a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx +++ b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx @@ -53,7 +53,7 @@ async function saveDataSource({ navigateTo(`/view/${encodeURIComponent(id)}`); } else { // Update defaults so that "reload saved query" functions correctly - state.resetAppState(); + state.resetAppState(savedSearch); services.chrome.docTitle.change(savedSearch.title!); setBreadcrumbsTitle( diff --git a/src/plugins/discover/public/application/main/discover_main_route.tsx b/src/plugins/discover/public/application/main/discover_main_route.tsx index 696284852c15c..d5f693d7f5fb0 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.tsx @@ -8,7 +8,6 @@ import React, { useEffect, useState, memo, useCallback } from 'react'; import { useParams, useHistory } from 'react-router-dom'; import { DataViewListItem } from '@kbn/data-plugin/public'; -import { ISearchSource } from '@kbn/data-plugin/public'; import { DataViewSavedObjectConflictError } from '@kbn/data-views-plugin/public'; import { redirectWhenMissing } from '@kbn/kibana-utils-plugin/public'; import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; @@ -70,7 +69,7 @@ export function DiscoverMainRoute(props: Props) { }); const loadDefaultOrCurrentDataView = useCallback( - async (searchSource: ISearchSource) => { + async (nextSavedSearch: SavedSearch) => { try { const hasUserDataViewValue = await data.dataViews.hasData .hasUserDataView() @@ -92,12 +91,12 @@ export function DiscoverMainRoute(props: Props) { return; } - const { appStateContainer } = getState({ history, uiSettings: config }); + const { appStateContainer } = getState({ history, savedSearch: nextSavedSearch, services }); const { index } = appStateContainer.getState(); const ip = await loadDataView(data.dataViews, config, index); const ipList = ip.list; - const dataViewData = resolveDataView(ip, searchSource, toastNotifications); + const dataViewData = resolveDataView(ip, nextSavedSearch.searchSource, toastNotifications); await data.dataViews.refreshFields(dataViewData); setDataViewList(ipList); @@ -106,7 +105,7 @@ export function DiscoverMainRoute(props: Props) { setError(e); } }, - [config, data.dataViews, history, isDev, toastNotifications] + [config, data.dataViews, history, isDev, toastNotifications, services] ); const loadSavedSearch = useCallback(async () => { @@ -118,7 +117,7 @@ export function DiscoverMainRoute(props: Props) { savedObjectsTagging: services.savedObjectsTagging, }); - const currentDataView = await loadDefaultOrCurrentDataView(currentSavedSearch.searchSource); + const currentDataView = await loadDefaultOrCurrentDataView(currentSavedSearch); if (!currentDataView) { return; diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index c52dd7b1635cf..8ad0d7ff7b590 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -44,7 +44,7 @@ export function useDiscoverState({ setExpandedDoc: (doc?: DataTableRecord) => void; dataViewList: DataViewListItem[]; }) { - const { uiSettings, data, filterManager, dataViews, storage } = services; + const { uiSettings, data, filterManager, dataViews } = services; const useNewFieldsApi = useMemo(() => !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE), [uiSettings]); const { timefilter } = data.query.timefilter; @@ -60,19 +60,11 @@ export function useDiscoverState({ const stateContainer = useMemo( () => getState({ - getStateDefaults: () => - getStateDefaults({ - config: uiSettings, - data, - savedSearch, - storage, - }), - storeInSessionStorage: uiSettings.get('state:storeInSessionStorage'), history, - toasts: services.core.notifications.toasts, - uiSettings, + savedSearch, + services, }), - [uiSettings, data, history, savedSearch, services.core.notifications.toasts, storage] + [history, savedSearch, services] ); const { appStateContainer } = stateContainer; @@ -231,10 +223,8 @@ export function useDiscoverState({ const newDataView = newSavedSearch.searchSource.getField('index') || dataView; newSavedSearch.searchSource.setField('index', newDataView); const newAppState = getStateDefaults({ - config: uiSettings, - data, savedSearch: newSavedSearch, - storage, + services, }); restoreStateFromSavedSearch({ @@ -245,7 +235,7 @@ export function useDiscoverState({ await stateContainer.replaceUrlAppState(newAppState); setState(newAppState); }, - [services, dataView, uiSettings, data, storage, stateContainer] + [services, dataView, stateContainer] ); /** diff --git a/src/plugins/discover/public/application/main/hooks/use_saved_search.test.ts b/src/plugins/discover/public/application/main/hooks/use_saved_search.test.ts index bacdbc906d724..34cdeb232be88 100644 --- a/src/plugins/discover/public/application/main/hooks/use_saved_search.test.ts +++ b/src/plugins/discover/public/application/main/hooks/use_saved_search.test.ts @@ -9,10 +9,9 @@ import { Subject } from 'rxjs'; import { renderHook } from '@testing-library/react-hooks'; import { createSearchSessionMock } from '../../../__mocks__/search_session'; import { discoverServiceMock } from '../../../__mocks__/services'; -import { savedSearchMock } from '../../../__mocks__/saved_search'; +import { savedSearchMock, savedSearchMockWithSQL } from '../../../__mocks__/saved_search'; import { RecordRawType, useSavedSearch } from './use_saved_search'; -import { getState, AppState } from '../services/discover_state'; -import { uiSettingsMock } from '../../../__mocks__/ui_settings'; +import { getState } from '../services/discover_state'; import { useDiscoverState } from './use_discover_state'; import { FetchStatus } from '../../types'; import { dataViewMock } from '../../../__mocks__/data_view'; @@ -25,9 +24,9 @@ describe('test useSavedSearch', () => { test('useSavedSearch return is valid', async () => { const { history, searchSessionManager } = createSearchSessionMock(); const stateContainer = getState({ - getStateDefaults: () => ({ index: 'the-data-view-id' }), + savedSearch: savedSearchMock, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); const { result } = renderHook(() => { @@ -51,9 +50,9 @@ describe('test useSavedSearch', () => { test('refetch$ triggers a search', async () => { const { history, searchSessionManager } = createSearchSessionMock(); const stateContainer = getState({ - getStateDefaults: () => ({ index: 'the-data-view-id' }), + savedSearch: savedSearchMock, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); discoverServiceMock.data.query.timefilter.timefilter.getTime = jest.fn(() => { @@ -95,9 +94,9 @@ describe('test useSavedSearch', () => { test('reset sets back to initial state', async () => { const { history, searchSessionManager } = createSearchSessionMock(); const stateContainer = getState({ - getStateDefaults: () => ({ index: 'the-data-view-id' }), + savedSearch: savedSearchMock, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); discoverServiceMock.data.query.timefilter.timefilter.getTime = jest.fn(() => { @@ -139,21 +138,17 @@ describe('test useSavedSearch', () => { test('useSavedSearch returns plain record raw type', async () => { const { history, searchSessionManager } = createSearchSessionMock(); const stateContainer = getState({ - getStateDefaults: () => - ({ - index: 'the-index-pattern-id', - query: { sql: 'SELECT * FROM test' }, - } as unknown as AppState), + savedSearch: savedSearchMockWithSQL, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); const { result } = renderHook(() => { return useSavedSearch({ initialFetchStatus: FetchStatus.LOADING, - savedSearch: savedSearchMock, + savedSearch: savedSearchMockWithSQL, searchSessionManager, - searchSource: savedSearchMock.searchSource.createCopy(), + searchSource: savedSearchMockWithSQL.searchSource.createCopy(), services: discoverServiceMock, stateContainer, useNewFieldsApi: true, diff --git a/src/plugins/discover/public/application/main/hooks/use_search_session.test.ts b/src/plugins/discover/public/application/main/hooks/use_search_session.test.ts index bc9af1001aa77..f29d1414b51d3 100644 --- a/src/plugins/discover/public/application/main/hooks/use_search_session.test.ts +++ b/src/plugins/discover/public/application/main/hooks/use_search_session.test.ts @@ -12,15 +12,14 @@ import { createSearchSessionMock } from '../../../__mocks__/search_session'; import { discoverServiceMock } from '../../../__mocks__/services'; import { savedSearchMock } from '../../../__mocks__/saved_search'; import { getState } from '../services/discover_state'; -import { uiSettingsMock } from '../../../__mocks__/ui_settings'; describe('test useSearchSession', () => { test('getting the next session id', async () => { const { history } = createSearchSessionMock(); const stateContainer = getState({ - getStateDefaults: () => ({ index: 'test' }), + savedSearch: savedSearchMock, history, - uiSettings: uiSettingsMock, + services: discoverServiceMock, }); const nextId = 'id'; diff --git a/src/plugins/discover/public/application/main/services/discover_state.test.ts b/src/plugins/discover/public/application/main/services/discover_state.test.ts index ccec7582ce8d3..aef263b23cec9 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.test.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.test.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import { IUiSettingsClient } from '@kbn/core/public'; import { getState, GetStateReturn, @@ -14,17 +13,14 @@ import { } from './discover_state'; import { createBrowserHistory, History } from 'history'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import type { SavedSearch } from '@kbn/saved-search-plugin/public'; -import { SEARCH_FIELDS_FROM_SOURCE } from '../../../../common'; +import type { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; +import { savedSearchMock, savedSearchMockWithTimeField } from '../../../__mocks__/saved_search'; +import { discoverServiceMock } from '../../../__mocks__/services'; let history: History; let state: GetStateReturn; const getCurrentUrl = () => history.createHref(history.location); -const uiSettingsMock = { - get: (key: string) => (key === SEARCH_FIELDS_FROM_SOURCE ? true : ['_source']) as unknown as T, -} as IUiSettingsClient; - describe('Test discover state', () => { let stopSync = () => {}; @@ -32,9 +28,9 @@ describe('Test discover state', () => { history = createBrowserHistory(); history.push('/'); state = getState({ - getStateDefaults: () => ({ index: 'test' }), + savedSearch: savedSearchMock, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); await state.replaceUrlAppState({}); stopSync = state.startSync(); @@ -46,7 +42,9 @@ describe('Test discover state', () => { test('setting app state and syncing to URL', async () => { state.setAppState({ index: 'modified' }); state.flushToUrl(); - expect(getCurrentUrl()).toMatchInlineSnapshot(`"/#?_a=(index:modified)"`); + expect(getCurrentUrl()).toMatchInlineSnapshot( + `"/#?_a=(columns:!(default_column),index:modified,interval:auto,sort:!())"` + ); }); test('changing URL to be propagated to appState', async () => { @@ -60,11 +58,9 @@ describe('Test discover state', () => { test('URL navigation to url without _a, state should not change', async () => { history.push('/#?_a=(index:modified)'); history.push('/'); - expect(state.appStateContainer.getState()).toMatchInlineSnapshot(` - Object { - "index": "modified", - } - `); + expect(state.appStateContainer.getState()).toEqual({ + index: 'modified', + }); }); test('isAppStateDirty returns whether the current state has changed', async () => { @@ -89,46 +85,45 @@ describe('Test discover state', () => { }); }); describe('Test discover initial state sort handling', () => { - test('Non-empty sort in URL should not fallback to state defaults', async () => { + test('Non-empty sort in URL should not be overwritten by saved search sort', async () => { history = createBrowserHistory(); history.push('/#?_a=(sort:!(!(order_date,desc)))'); state = getState({ - getStateDefaults: () => ({ sort: [['fallback', 'desc']] }), + savedSearch: { ...savedSearchMock, ...{ sort: [['bytes', 'desc']] } }, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); await state.replaceUrlAppState({}); const stopSync = state.startSync(); - expect(state.appStateContainer.getState().sort).toMatchInlineSnapshot(` - Array [ - Array [ - "order_date", - "desc", - ], - ] - `); + expect(state.appStateContainer.getState().sort).toEqual([['order_date', 'desc']]); stopSync(); }); - test('Empty sort in URL should allow fallback state defaults', async () => { + test('Empty sort in URL should use saved search sort for state', async () => { history = createBrowserHistory(); history.push('/#?_a=(sort:!())'); - + const nextSavedSearch = { ...savedSearchMock, ...{ sort: [['bytes', 'desc']] as SortOrder[] } }; state = getState({ - getStateDefaults: () => ({ sort: [['fallback', 'desc']] }), + savedSearch: nextSavedSearch, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); await state.replaceUrlAppState({}); const stopSync = state.startSync(); - expect(state.appStateContainer.getState().sort).toMatchInlineSnapshot(` - Array [ - Array [ - "fallback", - "desc", - ], - ] - `); + expect(state.appStateContainer.getState().sort).toEqual([['bytes', 'desc']]); + stopSync(); + }); + test('Empty sort in URL and saved search should sort by timestamp', async () => { + history = createBrowserHistory(); + history.push('/#?_a=(sort:!())'); + state = getState({ + savedSearch: savedSearchMockWithTimeField, + services: discoverServiceMock, + history, + }); + await state.replaceUrlAppState({}); + const stopSync = state.startSync(); + expect(state.appStateContainer.getState().sort).toEqual([['timestamp', 'desc']]); stopSync(); }); }); @@ -140,20 +135,17 @@ describe('Test discover state with legacy migration', () => { "/#?_a=(query:(query_string:(analyze_wildcard:!t,query:'type:nice%20name:%22yeah%22')))" ); state = getState({ - getStateDefaults: () => ({ index: 'test' }), + savedSearch: savedSearchMock, + services: discoverServiceMock, history, - uiSettings: uiSettingsMock, }); - expect(state.appStateContainer.getState()).toMatchInlineSnapshot(` + expect(state.appStateContainer.getState().query).toMatchInlineSnapshot(` Object { - "index": "test", + "language": "lucene", "query": Object { - "language": "lucene", - "query": Object { - "query_string": Object { - "analyze_wildcard": true, - "query": "type:nice name:\\"yeah\\"", - }, + "query_string": Object { + "analyze_wildcard": true, + "query": "type:nice name:\\"yeah\\"", }, }, } @@ -167,8 +159,9 @@ describe('createSearchSessionRestorationDataProvider', () => { const searchSessionInfoProvider = createSearchSessionRestorationDataProvider({ data: mockDataPlugin, appStateContainer: getState({ - history: createBrowserHistory(), - uiSettings: uiSettingsMock, + savedSearch: savedSearchMock, + services: discoverServiceMock, + history, }).appStateContainer, getSavedSearch: () => mockSavedSearch, }); @@ -217,12 +210,10 @@ describe('createSearchSessionRestorationDataProvider', () => { test('restoreState has paused autoRefresh', async () => { const { initialState, restoreState } = await searchSessionInfoProvider.getLocatorData(); expect(initialState.refreshInterval).toBe(undefined); - expect(restoreState.refreshInterval).toMatchInlineSnapshot(` - Object { - "pause": true, - "value": 0, - } - `); + expect(restoreState.refreshInterval).toEqual({ + pause: true, + value: 0, + }); }); }); }); diff --git a/src/plugins/discover/public/application/main/services/discover_state.ts b/src/plugins/discover/public/application/main/services/discover_state.ts index 568a219b952e7..611b59eacdc79 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.ts @@ -9,7 +9,6 @@ import { cloneDeep, isEqual } from 'lodash'; import { i18n } from '@kbn/i18n'; import { History } from 'history'; -import { NotificationsStart, IUiSettingsClient } from '@kbn/core/public'; import { Filter, FilterStateStore, @@ -37,6 +36,8 @@ import { } from '@kbn/data-plugin/public'; import { DataView } from '@kbn/data-views-plugin/public'; import { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { getStateDefaults } from '../utils/get_state_defaults'; +import { DiscoverServices } from '../../../build_services'; import { DiscoverGridSettings } from '../../../components/discover_grid/types'; import { handleSourceColumnState } from '../../../utils/state_helpers'; import { DISCOVER_APP_LOCATOR, DiscoverAppLocatorParams } from '../../../locator'; @@ -107,30 +108,18 @@ export interface AppStateUrl extends Omit { } interface GetStateParams { - /** - * Default state used for merging with with URL state to get the initial state - */ - getStateDefaults?: () => AppState; - /** - * Determins the use of long vs. short/hashed urls - */ - storeInSessionStorage?: boolean; /** * Browser history */ history: History; - /** - * Core's notifications.toasts service - * In case it is passed in, - * kbnUrlStateStorage will use it notifying about inner errors + * The current savedSearch */ - toasts?: NotificationsStart['toasts']; - + savedSearch: SavedSearch; /** * core ui settings service */ - uiSettings: IUiSettingsClient; + services: DiscoverServices; } export interface GetStateReturn { @@ -179,9 +168,9 @@ export interface GetStateReturn { */ isAppStateDirty: () => boolean; /** - * Reset AppState to default, discarding all changes + * Reset AppState by the given savedSearch discarding all changes */ - resetAppState: () => void; + resetAppState: (nextSavedSearch: SavedSearch) => void; /** * Pause the auto refresh interval without pushing an entry to history */ @@ -195,14 +184,13 @@ const GLOBAL_STATE_URL_KEY = '_g'; * Builds and returns appState and globalState containers and helper functions * Used to sync URL with UI state */ -export function getState({ - getStateDefaults, - storeInSessionStorage = false, - history, - toasts, - uiSettings, -}: GetStateParams): GetStateReturn { - const defaultAppState = getStateDefaults ? getStateDefaults() : {}; +export function getState({ history, savedSearch, services }: GetStateParams): GetStateReturn { + const storeInSessionStorage = services.uiSettings.get('state:storeInSessionStorage'); + const toasts = services.core.notifications.toasts; + const defaultAppState = getStateDefaults({ + savedSearch, + services, + }); const stateStorage = createKbnUrlStateStorage({ useHash: storeInSessionStorage, history, @@ -216,7 +204,7 @@ export function getState({ ...defaultAppState, ...appStateFromUrl, }, - uiSettings + services.uiSettings ); // todo filter source depending on fields fetching flag (if no columns remain and source fetching is enabled, use default columns) @@ -275,10 +263,10 @@ export function getState({ resetInitialAppState: () => { initialAppState = appStateContainer.getState(); }, - resetAppState: () => { + resetAppState: (nextSavedSearch: SavedSearch) => { const defaultState = handleSourceColumnState( - getStateDefaults ? getStateDefaults() : {}, - uiSettings + getStateDefaults({ savedSearch: nextSavedSearch, services }), + services.uiSettings ); setState(appStateContainerModified, defaultState); }, diff --git a/src/plugins/discover/public/application/main/utils/get_state_defaults.test.ts b/src/plugins/discover/public/application/main/utils/get_state_defaults.test.ts index 17cb547055a87..1d5cf07446d60 100644 --- a/src/plugins/discover/public/application/main/utils/get_state_defaults.test.ts +++ b/src/plugins/discover/public/application/main/utils/get_state_defaults.test.ts @@ -7,23 +7,18 @@ */ import { getStateDefaults } from './get_state_defaults'; -import { createSearchSourceMock, dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { uiSettingsMock } from '../../../__mocks__/ui_settings'; +import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks'; import { dataViewWithTimefieldMock } from '../../../__mocks__/data_view_with_timefield'; import { savedSearchMock } from '../../../__mocks__/saved_search'; import { dataViewMock } from '../../../__mocks__/data_view'; import { discoverServiceMock } from '../../../__mocks__/services'; describe('getStateDefaults', () => { - const storage = discoverServiceMock.storage; - test('data view with timefield', () => { savedSearchMock.searchSource = createSearchSourceMock({ index: dataViewWithTimefieldMock }); const actual = getStateDefaults({ - config: uiSettingsMock, - data: dataPluginMock.createStartContract(), + services: discoverServiceMock, savedSearch: savedSearchMock, - storage, }); expect(actual).toMatchInlineSnapshot(` Object { @@ -55,10 +50,8 @@ describe('getStateDefaults', () => { savedSearchMock.searchSource = createSearchSourceMock({ index: dataViewMock }); const actual = getStateDefaults({ - config: uiSettingsMock, - data: dataPluginMock.createStartContract(), + services: discoverServiceMock, savedSearch: savedSearchMock, - storage, }); expect(actual).toMatchInlineSnapshot(` Object { diff --git a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts index f058c473127d4..a4a43fa342715 100644 --- a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts +++ b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts @@ -8,9 +8,8 @@ import { cloneDeep, isEqual } from 'lodash'; import { IUiSettingsClient } from '@kbn/core/public'; -import { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import { Storage } from '@kbn/kibana-utils-plugin/public'; import { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { DiscoverServices } from '../../../build_services'; import { getDefaultSort, getSortArray } from '../../../utils/sorting'; import { DEFAULT_COLUMNS_SETTING, @@ -22,33 +21,33 @@ import { import { AppState } from '../services/discover_state'; import { CHART_HIDDEN_KEY } from '../components/chart/discover_chart'; -function getDefaultColumns(savedSearch: SavedSearch, config: IUiSettingsClient) { +function getDefaultColumns(savedSearch: SavedSearch, uiSettings: IUiSettingsClient) { if (savedSearch.columns && savedSearch.columns.length > 0) { return [...savedSearch.columns]; } - if (config.get(SEARCH_FIELDS_FROM_SOURCE) && isEqual(config.get(DEFAULT_COLUMNS_SETTING), [])) { + if ( + uiSettings.get(SEARCH_FIELDS_FROM_SOURCE) && + isEqual(uiSettings.get(DEFAULT_COLUMNS_SETTING), []) + ) { return ['_source']; } - return [...config.get(DEFAULT_COLUMNS_SETTING)]; + return [...uiSettings.get(DEFAULT_COLUMNS_SETTING)]; } export function getStateDefaults({ - config, - data, savedSearch, - storage, + services, }: { - config: IUiSettingsClient; - data: DataPublicPluginStart; savedSearch: SavedSearch; - storage: Storage; + services: DiscoverServices; }) { const { searchSource } = savedSearch; + const { data, uiSettings, storage } = services; const dataView = searchSource.getField('index'); const query = searchSource.getField('query') || data.query.queryString.getDefaultQuery(); const sort = getSortArray(savedSearch.sort ?? [], dataView!); - const columns = getDefaultColumns(savedSearch, config); + const columns = getDefaultColumns(savedSearch, uiSettings); const chartHidden = storage.get(CHART_HIDDEN_KEY); const defaultState: AppState = { @@ -56,8 +55,8 @@ export function getStateDefaults({ sort: !sort.length ? getDefaultSort( dataView, - config.get(SORT_DEFAULT_ORDER_SETTING, 'desc'), - config.get(DOC_HIDE_TIME_COLUMN_SETTING, false) + uiSettings.get(SORT_DEFAULT_ORDER_SETTING, 'desc'), + uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false) ) : sort, columns, From 416a4733e19beb770e65327fff814799cce45c44 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Mon, 19 Sep 2022 09:05:51 +0200 Subject: [PATCH 43/79] [Profiling] Open flyout instead of adding filter for traces (#140845) --- .../profiling/public/components/subchart.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx index 1d20213f24982..e8d71559e9033 100644 --- a/x-pack/plugins/profiling/public/components/subchart.tsx +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -160,7 +160,7 @@ export const SubChart: React.FC = ({ @@ -170,10 +170,16 @@ export const SubChart: React.FC = ({ - - - {category} - + + {showFrames ? ( + onShowMoreClick?.()}> + {category} + + ) : ( + + {category} + + )} {asPercentage(percentage / 100, 2)} From 2b0dddb8de61859fc79073dd5a82d64d2f7f0357 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Mon, 19 Sep 2022 09:11:33 +0200 Subject: [PATCH 44/79] [Profiling] Update coloring logic (#140846) --- .../get_interpolation_value.test.ts | 33 +++++++------ .../get_interpolation_value.ts | 17 ++++--- .../utils/get_flamegraph_model/index.ts | 46 +++++++++++++------ 3 files changed, 57 insertions(+), 39 deletions(-) diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts index 07b3e9ded9230..c9f123c020675 100644 --- a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.test.ts @@ -8,35 +8,38 @@ import { getInterpolationValue } from './get_interpolation_value'; describe('getInterpolationValue', () => { it('returns 0 for no change', () => { - expect(getInterpolationValue(100, 100)).toBe(0); + expect(getInterpolationValue(8, 8)).toBe(0); }); it('returns -1 when the background is undefined', () => { - expect(getInterpolationValue(100, undefined)).toBe(-1); + expect(getInterpolationValue(8, undefined)).toBe(1); }); it('returns -1 when the background is 0', () => { - expect(getInterpolationValue(100, 0)).toBe(-1); + expect(getInterpolationValue(8, 0)).toBe(1); }); - it('returns 0 when both values are 0', () => { - expect(getInterpolationValue(0, 0)).toBe(0); + it('returns 0 when both values are equal', () => { + expect(getInterpolationValue(1, 1)).toBe(0); }); - it('returns the correct value on positive changes', () => { - expect(getInterpolationValue(100, 120)).toBeCloseTo(0.1); - expect(getInterpolationValue(80, 100)).toBeCloseTo(0.125); + it('returns the correct positive change', () => { + expect(getInterpolationValue(8, 5)).toBe(0.375); + }); + + it('returns the correct negative change', () => { + expect(getInterpolationValue(5, 8)).toBe(-0.6); + }); - expect(getInterpolationValue(90, 270)).toBeCloseTo(1); + it('returns the correct positive change with a denominator', () => { + expect(getInterpolationValue(10, 8, 50)).toBe(0.04); }); - it('returns the correct value on negative changes', () => { - expect(getInterpolationValue(160, 120)).toBeCloseTo(-0.5); - expect(getInterpolationValue(150, 100)).toBeCloseTo(-2 / 3); + it('returns the correct negative change with a denominator', () => { + expect(getInterpolationValue(8, 10, 50)).toBe(-0.04); }); - it('clamps the value', () => { - expect(getInterpolationValue(90, 360)).toBeCloseTo(1); - expect(getInterpolationValue(360, 90)).toBeCloseTo(-1); + it('clamps changes', () => { + expect(getInterpolationValue(5, 12)).toBe(-1); }); }); diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts index 66c325869cfd3..9abaa07dd0c62 100644 --- a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/get_interpolation_value.ts @@ -7,15 +7,14 @@ import { clamp } from 'lodash'; -const MAX_POSITIVE_CHANGE = 2; -const MAX_NEGATIVE_CHANGE = 0.5; - -export function getInterpolationValue(foreground: number, background: number | null | undefined) { - if (background === null || background === undefined) { - return -1; +export function getInterpolationValue( + foreground: number, + background: number | undefined, + denominator: number = foreground +) { + if (background === undefined) { + return 1; } - const change = clamp(background / foreground - 1, -MAX_NEGATIVE_CHANGE, MAX_POSITIVE_CHANGE) || 0; - - return change >= 0 ? change / MAX_POSITIVE_CHANGE : change / MAX_NEGATIVE_CHANGE; + return clamp((foreground - background) / denominator, -1, 1); } diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts index 0b779c8ccac87..3cf4b0807fbd9 100644 --- a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts @@ -6,7 +6,7 @@ */ import { ColumnarViewModel } from '@elastic/charts'; import d3 from 'd3'; -import { uniqueId } from 'lodash'; +import { sum, uniqueId } from 'lodash'; import { ElasticFlameGraph, FlameGraphComparisonMode, rgbToRGBA } from '../../../common/flamegraph'; import { getInterpolationValue } from './get_interpolation_value'; @@ -57,28 +57,44 @@ export function getFlamegraphModel({ }; }); - const positiveChangeInterpolator = d3.interpolateRgb(colorNeutral, colorDanger); + const positiveChangeInterpolator = d3.interpolateRgb(colorNeutral, colorSuccess); - const negativeChangeInterpolator = d3.interpolateRgb(colorNeutral, colorSuccess); + const negativeChangeInterpolator = d3.interpolateRgb(colorNeutral, colorDanger); - const comparisonExclusive: number[] = []; - const comparisonInclusive: number[] = []; + // per @thomasdullien: + // In "relative" mode: Take the percentage of CPU time consumed by block A and subtract + // the percentage of CPU time consumed by block B. If the number is positive, linearly + // interpolate a color between grey and green, with the delta relative to the size of + // block A as percentage. - primaryFlamegraph.ID.forEach((nodeID, index) => { - const countInclusive = primaryFlamegraph.CountInclusive[index]; - const countExclusive = primaryFlamegraph.CountExclusive[index]; + // Example 1: BlockA 8%, BlockB 5%, delta 3%. This represents a 3/8th reduction, 37.5% + // of the original time, so the color should be 37.5% "green". + + // Example 2: BlockA 5%, BlockB 8%, delta -3%. This represents a 3/5th worsening of BlockA, + // so the color should be 62.5% "red". In "absolute" mode: Take the number of samples in + // blockA, subtract the number of samples in blockB. Divide the result by the number of + // samples in the first graph. The result is the amount of saturation for the color. + // Example 3: BlockA 10k samples, BlockB 8k samples, total samples 50k. 10k-8k = 2k, 2k/50k + // = 4%, therefore 4% "green". - const comparisonNode = comparisonNodesById[nodeID]; + const totalSamples = sum(primaryFlamegraph.CountExclusive); + const comparisonTotalSamples = sum(comparisonFlamegraph.CountExclusive); - comparisonExclusive![index] = comparisonNode?.CountExclusive; - comparisonInclusive![index] = comparisonNode?.CountInclusive; + primaryFlamegraph.ID.forEach((nodeID, index) => { + const samples = primaryFlamegraph.Value[index]; + const comparisonSamples = comparisonNodesById[nodeID]?.Value as number | undefined; - const [foreground, background] = + const foreground = + comparisonMode === FlameGraphComparisonMode.Absolute ? samples : samples / totalSamples; + const background = comparisonMode === FlameGraphComparisonMode.Absolute - ? [countInclusive, comparisonNode?.CountInclusive] - : [countExclusive, comparisonNode?.CountExclusive]; + ? comparisonSamples + : (comparisonSamples ?? 0) / comparisonTotalSamples; + + const denominator = + comparisonMode === FlameGraphComparisonMode.Absolute ? totalSamples : foreground; - const interpolationValue = getInterpolationValue(foreground, background); + const interpolationValue = getInterpolationValue(foreground, background, denominator); const nodeColor = interpolationValue >= 0 From cd52a2e6415f3e2b347d6e8806d3a48e4eacdf15 Mon Sep 17 00:00:00 2001 From: Muhammad Ibragimov <53621505+mibragimov@users.noreply.github.com> Date: Mon, 19 Sep 2022 12:48:26 +0500 Subject: [PATCH 45/79] [Console] Fix status badges not showing on cloud (#140873) * Fix status badges not showing up in cloud * Unskip related test file Co-authored-by: Muhammad Ibragimov Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../mode/output_highlight_rules.ts | 12 ++++++++---- test/functional/apps/console/_console.ts | 3 --- test/functional/page_objects/console_page.ts | 14 ++------------ 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/plugins/console/public/application/models/legacy_core_editor/mode/output_highlight_rules.ts b/src/plugins/console/public/application/models/legacy_core_editor/mode/output_highlight_rules.ts index 925bcde746b85..c9c76c562eeff 100644 --- a/src/plugins/console/public/application/models/legacy_core_editor/mode/output_highlight_rules.ts +++ b/src/plugins/console/public/application/models/legacy_core_editor/mode/output_highlight_rules.ts @@ -12,8 +12,8 @@ import { addXJsonToRules } from '@kbn/ace'; const JsonHighlightRules = ace.acequire('ace/mode/json_highlight_rules').JsonHighlightRules; -export const mapStatusCodeToBadge = (value: string) => { - const regExpMatchArray = value.match(/\d+/); +export const mapStatusCodeToBadge = (value?: string) => { + const regExpMatchArray = value?.match(/\d+/); if (regExpMatchArray) { const status = parseInt(regExpMatchArray[0], 10); if (status <= 199) { @@ -44,11 +44,15 @@ export class OutputJsonHighlightRules extends JsonHighlightRules { }, { token: 'comment', - regex: /#(.*?)(?=\d+\s(?:[\sA-Za-z]+)|$)/, + // match a comment starting with a hash at the start of the line + // ignore status codes and status texts at the end of the line (e.g. # GET _search/foo 200, # GET _search/foo 200 OK) + regex: /#(.*?)(?=[1-5][0-9][0-9]\s(?:[\sA-Za-z]+)|(?:[1-5][0-9][0-9])|$)/, }, { token: mapStatusCodeToBadge, - regex: /(\d+\s[\sA-Za-z]+$)/, + // match status codes and status texts at the end of the line (e.g. # GET _search/foo 200, # GET _search/foo 200 OK) + // this rule allows us to highlight them with the corresponding badge color (e.g. 200 OK -> badge.badge--success) + regex: /([1-5][0-9][0-9]\s?[\sA-Za-z]+$)/, } ); diff --git a/test/functional/apps/console/_console.ts b/test/functional/apps/console/_console.ts index 2fa8977868b6b..65511e80e5457 100644 --- a/test/functional/apps/console/_console.ts +++ b/test/functional/apps/console/_console.ts @@ -144,10 +144,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - // Skip on cloud until issue is fixed - // Issue: https://github.com/elastic/kibana/issues/138762 describe('multiple requests output', function () { - this.tags(['skipCloudFailedTest']); const sendMultipleRequests = async (requests: string[]) => { await asyncForEach(requests, async (request) => { await PageObjects.console.enterRequest(request); diff --git a/test/functional/page_objects/console_page.ts b/test/functional/page_objects/console_page.ts index d4079012bd51e..f7b5a5b13c87d 100644 --- a/test/functional/page_objects/console_page.ts +++ b/test/functional/page_objects/console_page.ts @@ -211,21 +211,11 @@ export class ConsolePageObject extends FtrService { } public async hasSuccessBadge() { - try { - const responseEditor = await this.testSubjects.find('response-editor'); - return Boolean(await responseEditor.findByCssSelector('.ace_badge--success')); - } catch (e) { - return false; - } + return await this.find.existsByCssSelector('.ace_badge--success'); } public async hasWarningBadge() { - try { - const responseEditor = await this.testSubjects.find('response-editor'); - return Boolean(await responseEditor.findByCssSelector('.ace_badge--warning')); - } catch (e) { - return false; - } + return await this.find.existsByCssSelector('.ace_badge--warning'); } public async hasInvalidSyntax() { From e90ab44dc12a47470b7b4b6e786ce6cf7b0c9259 Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:04:00 +0200 Subject: [PATCH 46/79] Collect new alerting telemetry data from Kibana index (#139901) * Collect new alerting telemetry data from kibana index count_rules_by_execution_status, count_rules_with_tags, count_rules_by_notify_when, count_rules_snoozed, count_rules_muted, count_rules_with_muted_alerts --- .../server/usage/alerting_usage_collector.ts | 34 +++++ .../lib/get_telemetry_from_kibana.test.ts | 126 ++++++++++++++++ .../usage/lib/get_telemetry_from_kibana.ts | 137 ++++++++++++++++++ .../lib/group_connectors_by_consumers.ts | 27 ++++ .../lib/group_rules_by_notify_when.test.ts | 33 +++++ .../usage/lib/group_rules_by_notify_when.ts | 18 +++ .../usage/lib/group_rules_by_status.test.ts | 28 ++++ .../server/usage/lib/group_rules_by_status.ts | 21 +++ x-pack/plugins/alerting/server/usage/task.ts | 10 ++ x-pack/plugins/alerting/server/usage/types.ts | 15 ++ .../schema/xpack_plugins.json | 49 +++++++ .../alerting_and_actions_telemetry.ts | 26 ++++ 12 files changed, 524 insertions(+) create mode 100644 x-pack/plugins/alerting/server/usage/lib/group_connectors_by_consumers.ts create mode 100644 x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.test.ts create mode 100644 x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.ts create mode 100644 x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.test.ts create mode 100644 x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.ts diff --git a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts index d03faa3aaf65f..6e6eb3cb43f0d 100644 --- a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts +++ b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts @@ -110,6 +110,18 @@ const byTaskStatusSchemaByType: MakeSchemaFrom['count_failed_and_ unrecognized: byTypeSchema, }; +const byStatusSchema: MakeSchemaFrom['count_rules_by_execution_status'] = { + success: { type: 'long' }, + error: { type: 'long' }, + warning: { type: 'long' }, +}; + +const byNotifyWhenSchema: MakeSchemaFrom['count_rules_by_notify_when'] = { + on_action_group_change: { type: 'long' }, + on_active_alert: { type: 'long' }, + on_throttle_interval: { type: 'long' }, +}; + export function createAlertingUsageCollector( usageCollection: UsageCollectionSetup, taskManager: Promise @@ -173,6 +185,21 @@ export function createAlertingUsageCollector( count_failed_and_unrecognized_rule_tasks_per_day: 0, count_failed_and_unrecognized_rule_tasks_by_status_per_day: {}, count_failed_and_unrecognized_rule_tasks_by_status_by_type_per_day: {}, + count_rules_by_execution_status: { + success: 0, + warning: 0, + error: 0, + }, + count_rules_by_notify_when: { + on_action_group_change: 0, + on_active_alert: 0, + on_throttle_interval: 0, + }, + count_rules_with_tags: 0, + count_rules_snoozed: 0, + count_rules_muted: 0, + count_rules_with_muted_alerts: 0, + count_connector_types_by_consumers: {}, avg_execution_time_per_day: 0, avg_execution_time_by_type_per_day: {}, avg_es_search_duration_per_day: 0, @@ -249,6 +276,13 @@ export function createAlertingUsageCollector( count_failed_and_unrecognized_rule_tasks_per_day: { type: 'long' }, count_failed_and_unrecognized_rule_tasks_by_status_per_day: byTaskStatusSchema, count_failed_and_unrecognized_rule_tasks_by_status_by_type_per_day: byTaskStatusSchemaByType, + count_rules_by_execution_status: byStatusSchema, + count_rules_with_tags: { type: 'long' }, + count_rules_by_notify_when: byNotifyWhenSchema, + count_rules_snoozed: { type: 'long' }, + count_rules_muted: { type: 'long' }, + count_rules_with_muted_alerts: { type: 'long' }, + count_connector_types_by_consumers: { DYNAMIC_KEY: { DYNAMIC_KEY: { type: 'long' } } }, avg_execution_time_per_day: { type: 'long' }, avg_execution_time_by_type_per_day: byTypeSchema, avg_es_search_duration_per_day: { type: 'long' }, diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts index 79b5d473ebe05..d16b76d91afa9 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts @@ -55,6 +55,90 @@ describe('kibana index telemetry', () => { }, ], }, + by_execution_status: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'unknown', + doc_count: 0, + }, + { + key: 'ok', + doc_count: 1, + }, + { + key: 'active', + doc_count: 2, + }, + { + key: 'pending', + doc_count: 3, + }, + { + key: 'error', + doc_count: 4, + }, + { + key: 'warning', + doc_count: 5, + }, + ], + }, + by_notify_when: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'onActionGroupChange', + doc_count: 5, + }, + { + key: 'onActiveAlert', + doc_count: 6, + }, + { + key: 'onThrottleInterval', + doc_count: 7, + }, + ], + }, + connector_types_by_consumers: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { + key: 'alerts', + actions: { + connector_types: { + buckets: [ + { + key: '.server-log', + doc_count: 2, + }, + { + key: '.email', + doc_count: 3, + }, + ], + }, + }, + }, + { + key: 'siem', + actions: { + connector_types: { + buckets: [ + { + key: '.index', + doc_count: 4, + }, + ], + }, + }, + }, + ], + }, max_throttle_time: { value: 60 }, min_throttle_time: { value: 0 }, avg_throttle_time: { value: 30 }, @@ -64,6 +148,10 @@ describe('kibana index telemetry', () => { max_actions_count: { value: 4 }, min_actions_count: { value: 0 }, avg_actions_count: { value: 2.5 }, + sum_rules_with_tags: { value: 10 }, + sum_rules_snoozed: { value: 11 }, + sum_rules_muted: { value: 12 }, + sum_rules_with_muted_alerts: { value: 13 }, }, }); @@ -109,6 +197,29 @@ describe('kibana index telemetry', () => { max: 60, min: 0, }, + count_rules_by_execution_status: { + success: 3, + error: 4, + warning: 5, + }, + count_rules_with_tags: 10, + count_rules_by_notify_when: { + on_action_group_change: 5, + on_active_alert: 6, + on_throttle_interval: 7, + }, + count_rules_snoozed: 11, + count_rules_muted: 12, + count_rules_with_muted_alerts: 13, + count_connector_types_by_consumers: { + alerts: { + __email: 3, + '__server-log': 2, + }, + siem: { + __index: 4, + }, + }, }); }); @@ -138,6 +249,20 @@ describe('kibana index telemetry', () => { min: 0, }, count_by_type: {}, + count_rules_by_execution_status: { + success: 0, + error: 0, + warning: 0, + }, + count_rules_with_tags: 0, + count_rules_by_notify_when: { + on_action_group_change: 0, + on_active_alert: 0, + on_throttle_interval: 0, + }, + count_rules_snoozed: 0, + count_rules_muted: 0, + count_rules_with_muted_alerts: 0, count_total: 0, schedule_time: { avg: '0s', @@ -159,6 +284,7 @@ describe('kibana index telemetry', () => { max: 0, min: 0, }, + count_connector_types_by_consumers: {}, }); }); }); diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts index 5443fb91e2e1f..0c6d01016c313 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts @@ -12,6 +12,13 @@ import type { AggregationsStringTermsBucketKeys, } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; + +import { + ConnectorsByConsumersBucket, + groupConnectorsByConsumers, +} from './group_connectors_by_consumers'; +import { groupRulesByNotifyWhen } from './group_rules_by_notify_when'; +import { groupRulesByStatus } from './group_rules_by_status'; import { AlertingUsage } from '../types'; import { NUM_ALERTING_RULE_TYPES } from '../alerting_usage_collector'; import { parseSimpleRuleTypeBucket } from './parse_simple_rule_type_bucket'; @@ -26,6 +33,13 @@ type GetTotalCountsResults = Pick< AlertingUsage, | 'count_total' | 'count_by_type' + | 'count_rules_by_execution_status' + | 'count_rules_by_notify_when' + | 'count_rules_with_tags' + | 'count_rules_snoozed' + | 'count_rules_muted' + | 'count_rules_with_muted_alerts' + | 'count_connector_types_by_consumers' | 'throttle_time' | 'schedule_time' | 'throttle_time_number_s' @@ -145,6 +159,59 @@ export async function getTotalCountAggregations({ `, }, }, + rule_with_tags: { + type: 'long', + script: { + source: ` + def rule = params._source['alert']; + if (rule != null && rule.tags != null) { + if (rule.tags.size() > 0) { + emit(1); + } else { + emit(0); + } + }`, + }, + }, + rule_snoozed: { + type: 'long', + script: { + source: ` + def rule = params._source['alert']; + if (rule != null && rule.snoozeSchedule != null) { + if (rule.snoozeSchedule.size() > 0) { + emit(1); + } else { + emit(0); + } + }`, + }, + }, + rule_muted: { + type: 'long', + script: { + source: ` + if (doc['alert.muteAll'].value == true) { + emit(1); + } else { + emit(0); + }`, + }, + }, + rule_with_muted_alerts: { + type: 'long', + script: { + source: ` + def rule = params._source['alert']; + if (rule != null && rule.mutedInstanceIds != null) { + if (rule.mutedInstanceIds.size() > 0) { + emit(1); + } else { + emit(0); + } + }`, + }, + }, }, aggs: { by_rule_type_id: { @@ -162,6 +229,39 @@ export async function getTotalCountAggregations({ max_actions_count: { max: { field: 'rule_action_count' } }, min_actions_count: { min: { field: 'rule_action_count' } }, avg_actions_count: { avg: { field: 'rule_action_count' } }, + by_execution_status: { + terms: { + field: 'alert.executionStatus.status', + }, + }, + by_notify_when: { + terms: { + field: 'alert.notifyWhen', + }, + }, + connector_types_by_consumers: { + terms: { + field: 'alert.consumer', + }, + aggs: { + actions: { + nested: { + path: 'alert.actions', + }, + aggs: { + connector_types: { + terms: { + field: 'alert.actions.actionTypeId', + }, + }, + }, + }, + }, + }, + sum_rules_with_tags: { sum: { field: 'rule_with_tags' } }, + sum_rules_snoozed: { sum: { field: 'rule_snoozed' } }, + sum_rules_muted: { sum: { field: 'rule_muted' } }, + sum_rules_with_muted_alerts: { sum: { field: 'rule_with_muted_alerts' } }, }, }, }; @@ -182,15 +282,41 @@ export async function getTotalCountAggregations({ max_actions_count: AggregationsSingleMetricAggregateBase; min_actions_count: AggregationsSingleMetricAggregateBase; avg_actions_count: AggregationsSingleMetricAggregateBase; + by_execution_status: AggregationsTermsAggregateBase; + by_notify_when: AggregationsTermsAggregateBase; + connector_types_by_consumers: AggregationsTermsAggregateBase; + sum_rules_with_tags: AggregationsSingleMetricAggregateBase; + sum_rules_snoozed: AggregationsSingleMetricAggregateBase; + sum_rules_muted: AggregationsSingleMetricAggregateBase; + sum_rules_with_muted_alerts: AggregationsSingleMetricAggregateBase; }; const totalRulesCount = typeof results.hits.total === 'number' ? results.hits.total : results.hits.total?.value; + const countRulesByExecutionStatus = groupRulesByStatus( + parseSimpleRuleTypeBucket(aggregations.by_execution_status.buckets) + ); + + const countRulesByNotifyWhen = groupRulesByNotifyWhen( + parseSimpleRuleTypeBucket(aggregations.by_notify_when.buckets) + ); + + const countConnectorTypesByConsumers = groupConnectorsByConsumers( + aggregations.connector_types_by_consumers.buckets + ); + return { hasErrors: false, count_total: totalRulesCount ?? 0, count_by_type: parseSimpleRuleTypeBucket(aggregations.by_rule_type_id.buckets), + count_rules_by_execution_status: countRulesByExecutionStatus, + count_rules_with_tags: aggregations.sum_rules_with_tags.value ?? 0, + count_rules_by_notify_when: countRulesByNotifyWhen, + count_rules_snoozed: aggregations.sum_rules_snoozed.value ?? 0, + count_rules_muted: aggregations.sum_rules_muted.value ?? 0, + count_rules_with_muted_alerts: aggregations.sum_rules_with_muted_alerts.value ?? 0, + count_connector_types_by_consumers: countConnectorTypesByConsumers, throttle_time: { min: `${aggregations.min_throttle_time.value ?? 0}s`, avg: `${aggregations.avg_throttle_time.value ?? 0}s`, @@ -232,6 +358,17 @@ export async function getTotalCountAggregations({ errorMessage, count_total: 0, count_by_type: {}, + count_rules_by_execution_status: { success: 0, error: 0, warning: 0 }, + count_rules_by_notify_when: { + on_throttle_interval: 0, + on_active_alert: 0, + on_action_group_change: 0, + }, + count_rules_with_tags: 0, + count_rules_snoozed: 0, + count_rules_muted: 0, + count_rules_with_muted_alerts: 0, + count_connector_types_by_consumers: {}, throttle_time: { min: '0s', avg: '0s', diff --git a/x-pack/plugins/alerting/server/usage/lib/group_connectors_by_consumers.ts b/x-pack/plugins/alerting/server/usage/lib/group_connectors_by_consumers.ts new file mode 100644 index 0000000000000..b189e2868b418 --- /dev/null +++ b/x-pack/plugins/alerting/server/usage/lib/group_connectors_by_consumers.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 { AggregationsBuckets } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { replaceDotSymbols } from './replace_dots_with_underscores'; + +export interface ConnectorsByConsumersBucket { + key: string; + actions: { connector_types: { buckets: Array<{ key: string; doc_count: number }> } }; +} + +export function groupConnectorsByConsumers( + consumers: AggregationsBuckets +) { + return (consumers as ConnectorsByConsumersBucket[]).reduce((acc, consumer) => { + return { + ...acc, + [consumer.key]: consumer.actions.connector_types.buckets.reduce((accBucket, bucket) => { + return { ...accBucket, [replaceDotSymbols(bucket.key)]: bucket.doc_count }; + }, {}), + }; + }, {}); +} diff --git a/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.test.ts b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.test.ts new file mode 100644 index 0000000000000..bacb5114b8ddd --- /dev/null +++ b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.test.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { groupRulesByNotifyWhen } from './group_rules_by_notify_when'; + +describe('groupRulesByNotifyWhen', () => { + test('should correctly group rules by combining ok and active statuses', () => { + expect( + groupRulesByNotifyWhen({ + onActionGroupChange: 1, + onActiveAlert: 2, + onThrottleInterval: 3, + foo: 5, + }) + ).toEqual({ + on_action_group_change: 1, + on_active_alert: 2, + on_throttle_interval: 3, + }); + }); + + test('should fallback to 0 if any of the expected statuses are absent', () => { + expect(groupRulesByNotifyWhen({ unknown: 100, bar: 300 })).toEqual({ + on_action_group_change: 0, + on_active_alert: 0, + on_throttle_interval: 0, + }); + }); +}); diff --git a/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.ts b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.ts new file mode 100644 index 0000000000000..3adc9c73f9a72 --- /dev/null +++ b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_notify_when.ts @@ -0,0 +1,18 @@ +/* + * 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 { AlertingUsage } from '../types'; + +export function groupRulesByNotifyWhen( + rulesByNotifyWhen: Record +): AlertingUsage['count_rules_by_notify_when'] { + return { + on_action_group_change: rulesByNotifyWhen.onActionGroupChange ?? 0, + on_active_alert: rulesByNotifyWhen.onActiveAlert ?? 0, + on_throttle_interval: rulesByNotifyWhen.onThrottleInterval ?? 0, + }; +} diff --git a/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.test.ts b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.test.ts new file mode 100644 index 0000000000000..f5f24908a3d12 --- /dev/null +++ b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.test.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { groupRulesByStatus } from './group_rules_by_status'; + +describe('groupRulesByStatus', () => { + test('should correctly group rules by combining ok and active statuses', () => { + expect( + groupRulesByStatus({ ok: 3, active: 3, error: 4, warning: 5, unknown: 100, pending: 300 }) + ).toEqual({ + success: 6, + error: 4, + warning: 5, + }); + }); + + test('should fallback to 0 if any of the expected statuses are absent', () => { + expect(groupRulesByStatus({ unknown: 100, pending: 300 })).toEqual({ + success: 0, + error: 0, + warning: 0, + }); + }); +}); diff --git a/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.ts b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.ts new file mode 100644 index 0000000000000..a4b114b0cb85f --- /dev/null +++ b/x-pack/plugins/alerting/server/usage/lib/group_rules_by_status.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertingUsage } from '../types'; + +export function groupRulesByStatus( + rulesByStatus: Record +): AlertingUsage['count_rules_by_execution_status'] { + const ok = rulesByStatus.ok || 0; + const active = rulesByStatus.active || 0; + + return { + success: ok + active, + error: rulesByStatus.error || 0, + warning: rulesByStatus.warning || 0, + }; +} diff --git a/x-pack/plugins/alerting/server/usage/task.ts b/x-pack/plugins/alerting/server/usage/task.ts index 0bbfab30f0796..4f835f3c4a64f 100644 --- a/x-pack/plugins/alerting/server/usage/task.ts +++ b/x-pack/plugins/alerting/server/usage/task.ts @@ -141,6 +141,16 @@ export function telemetryTaskRunner( count_active_by_type: totalInUse.countByType, count_active_total: totalInUse.countTotal, count_disabled_total: totalCountAggregations.count_total - totalInUse.countTotal, + count_rules_by_execution_status: + totalCountAggregations.count_rules_by_execution_status, + count_rules_with_tags: totalCountAggregations.count_rules_with_tags, + count_rules_by_notify_when: totalCountAggregations.count_rules_by_notify_when, + count_rules_snoozed: totalCountAggregations.count_rules_snoozed, + count_rules_muted: totalCountAggregations.count_rules_muted, + count_rules_with_muted_alerts: + totalCountAggregations.count_rules_with_muted_alerts, + count_connector_types_by_consumers: + totalCountAggregations.count_connector_types_by_consumers, count_rules_namespaces: totalInUse.countNamespaces, count_rules_executions_per_day: dailyExecutionCounts.countTotalRuleExecutions, count_rules_executions_by_type_per_day: diff --git a/x-pack/plugins/alerting/server/usage/types.ts b/x-pack/plugins/alerting/server/usage/types.ts index a0f45d1932309..29a32de29bc1a 100644 --- a/x-pack/plugins/alerting/server/usage/types.ts +++ b/x-pack/plugins/alerting/server/usage/types.ts @@ -27,6 +27,21 @@ export interface AlertingUsage { string, Record >; + count_rules_by_execution_status: { + success: number; + error: number; + warning: number; + }; + count_rules_with_tags: number; + count_rules_by_notify_when: { + on_action_group_change: number; + on_active_alert: number; + on_throttle_interval: number; + }; + count_connector_types_by_consumers: Record>; + count_rules_snoozed: number; + count_rules_muted: number; + count_rules_with_muted_alerts: number; percentile_num_generated_actions_per_day: { p50: number; p90: number; diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 3cbe97e096ac5..797b290d245c5 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -1651,6 +1651,55 @@ } } }, + "count_rules_by_execution_status": { + "properties": { + "success": { + "type": "long" + }, + "error": { + "type": "long" + }, + "warning": { + "type": "long" + } + } + }, + "count_rules_with_tags": { + "type": "long" + }, + "count_rules_by_notify_when": { + "properties": { + "on_action_group_change": { + "type": "long" + }, + "on_active_alert": { + "type": "long" + }, + "on_throttle_interval": { + "type": "long" + } + } + }, + "count_rules_snoozed": { + "type": "long" + }, + "count_rules_muted": { + "type": "long" + }, + "count_rules_with_muted_alerts": { + "type": "long" + }, + "count_connector_types_by_consumers": { + "properties": { + "DYNAMIC_KEY": { + "properties": { + "DYNAMIC_KEY": { + "type": "long" + } + } + } + } + }, "avg_execution_time_per_day": { "type": "long" }, diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts index d77c8858feaf5..7e6aec1347753 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts @@ -502,6 +502,32 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F expect( telemetry.percentile_num_alerts_by_type_per_day.p99['test__cumulative-firing'] ).to.be.greaterThan(0); + + // rules grouped by execution status + expect(telemetry.count_rules_by_execution_status).to.eql({ + success: 15, + error: 3, + warning: 0, + }); + // number of rules that has tags + expect(telemetry.count_rules_with_tags).to.be(21); + // rules grouped by notify when + expect(telemetry.count_rules_by_notify_when).to.eql({ + on_action_group_change: 0, + on_active_alert: 6, + on_throttle_interval: 15, + }); + // rules snoozed + expect(telemetry.count_rules_snoozed).to.be(0); + // rules muted + expect(telemetry.count_rules_muted).to.be(0); + // rules with muted alerts + expect(telemetry.count_rules_with_muted_alerts).to.be(0); + // Connector types grouped by consumers + expect(telemetry.count_connector_types_by_consumers).to.eql({ + // eslint-disable-next-line @typescript-eslint/naming-convention + alertsFixture: { test__noop: 9, test__throw: 9, __slack: 3 }, + }); } it('should retrieve telemetry data in the expected format', async () => { From 1d2aa8a5311f4230f81f26394b1c403245d43d0e Mon Sep 17 00:00:00 2001 From: Irina Truong Date: Mon, 19 Sep 2022 02:16:42 -0700 Subject: [PATCH 47/79] [Enterprise Search] Remove processor from ML Inference Pipeline (#140560) * Started on deleting ml inference pipelines. * Add more tests and handle edge cases. * Fixed comment. * Hopefully correctly mock error being raised by Elasticsearch. * Don't update pipeline if nothing changed. * Use underscore in route path, to aligh with other routes. * Update x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.ts Co-authored-by: Rodney Norris * Make sure id is included when updating pipeline. * Reword. * Attempt at testing the route - fail. * Also test pipeline missing case. * Fix test. Co-authored-by: Rodney Norris --- .../delete_ml_inference_pipeline.test.ts | 118 ++++++++++++++++++ .../indices/delete_ml_inference_pipeline.ts | 72 +++++++++++ .../routes/enterprise_search/indices.test.ts | 74 +++++++++++ .../routes/enterprise_search/indices.ts | 48 ++++++- .../server/utils/identify_exceptions.ts | 5 +- 5 files changed, 315 insertions(+), 2 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.test.ts create mode 100644 x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.ts diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.test.ts new file mode 100644 index 0000000000000..8782dcc772d75 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.test.ts @@ -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 { errors } from '@elastic/elasticsearch'; +import { ElasticsearchClient } from '@kbn/core/server'; + +import { deleteMlInferencePipeline } from './delete_ml_inference_pipeline'; + +describe('deleteMlInferencePipeline lib function', () => { + const mockClient = { + ingest: { + deletePipeline: jest.fn(), + getPipeline: jest.fn(), + putPipeline: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + const anyObject: any = {}; + const notFoundResponse = { meta: { statusCode: 404 } }; + const notFoundError = new errors.ResponseError({ + body: notFoundResponse, + statusCode: 404, + headers: {}, + meta: anyObject, + warnings: [], + }); + const mockGetPipeline = { + 'my-index@ml-inference': { + id: 'my-index@ml-inference', + processors: [ + { + pipeline: { + name: 'my-ml-pipeline', + }, + }, + ], + }, + }; + + it('should delete pipeline', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.resolve(mockGetPipeline)); + mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); + mockClient.ingest.deletePipeline.mockImplementation(() => + Promise.resolve({ acknowledged: true }) + ); + + const expectedResponse = { deleted: 'my-ml-pipeline', updated: 'my-index@ml-inference' }; + + const response = await deleteMlInferencePipeline( + 'my-index', + 'my-ml-pipeline', + mockClient as unknown as ElasticsearchClient + ); + + expect(response).toEqual(expectedResponse); + + expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith({ + id: 'my-index@ml-inference', + processors: [], + }); + expect(mockClient.ingest.deletePipeline).toHaveBeenCalledWith({ + id: 'my-ml-pipeline', + }); + }); + + it('should succeed when parent pipeline is missing', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject(notFoundError)); + mockClient.ingest.deletePipeline.mockImplementation(() => + Promise.resolve({ acknowledged: true }) + ); + + const expectedResponse = { + deleted: 'my-ml-pipeline', + }; + + const response = await deleteMlInferencePipeline( + 'my-index', + 'my-ml-pipeline', + mockClient as unknown as ElasticsearchClient + ); + + expect(response).toEqual(expectedResponse); + + expect(mockClient.ingest.putPipeline).toHaveBeenCalledTimes(0); + expect(mockClient.ingest.deletePipeline).toHaveBeenCalledWith({ + id: 'my-ml-pipeline', + }); + }); + + it('should fail when pipeline is missing', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.resolve(mockGetPipeline)); + mockClient.ingest.deletePipeline.mockImplementation(() => Promise.reject(notFoundError)); + + await expect( + deleteMlInferencePipeline( + 'my-index', + 'my-ml-pipeline', + mockClient as unknown as ElasticsearchClient + ) + ).rejects.toThrow(Error); + + expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith({ + id: 'my-index@ml-inference', + processors: [], + }); + expect(mockClient.ingest.deletePipeline).toHaveBeenCalledWith({ + id: 'my-ml-pipeline', + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.ts new file mode 100644 index 0000000000000..282487e62f023 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/indices/delete_ml_inference_pipeline.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IngestPutPipelineRequest } from '@elastic/elasticsearch/lib/api/types'; +import { ElasticsearchClient } from '@kbn/core/server'; + +/** + * Response for deleting sub-pipeline from @ml-inference pipeline. + * If sub-pipeline was deleted successfully, 'deleted' field contains its name. + * If parent pipeline was updated successfully, 'updated' field contains its name. + */ +export interface DeleteMlInferencePipelineResponse { + deleted?: string; + updated?: string; +} + +export const deleteMlInferencePipeline = async ( + indexName: string, + pipelineName: string, + client: ElasticsearchClient +) => { + const response: DeleteMlInferencePipelineResponse = {}; + const parentPipelineId = `${indexName}@ml-inference`; + + // find parent pipeline + try { + const pipelineResponse = await client.ingest.getPipeline({ + id: parentPipelineId, + }); + + const parentPipeline = pipelineResponse[parentPipelineId]; + + if (parentPipeline !== undefined) { + // remove sub-pipeline from parent pipeline + if (parentPipeline.processors !== undefined) { + const updatedProcessors = parentPipeline.processors.filter( + (p) => !(p.pipeline !== undefined && p.pipeline.name === pipelineName) + ); + // only update if we changed something + if (updatedProcessors.length !== parentPipeline.processors.length) { + const updatedPipeline: IngestPutPipelineRequest = { + ...parentPipeline, + id: parentPipelineId, + processors: updatedProcessors, + }; + + const updateResponse = await client.ingest.putPipeline(updatedPipeline); + if (updateResponse.acknowledged === true) { + response.updated = parentPipelineId; + } + } + } + } + } catch (error) { + // only suppress Not Found error + if (error.meta?.statusCode !== 404) { + throw error; + } + } + + // finally, delete pipeline + const deleteResponse = await client.ingest.deletePipeline({ id: pipelineName }); + if (deleteResponse.acknowledged === true) { + response.deleted = pipelineName; + } + + return response; +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts index 377d8cb0793b0..c59b1081e86cb 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts @@ -17,8 +17,14 @@ jest.mock('../../lib/indices/fetch_ml_inference_pipeline_processors', () => ({ jest.mock('../../utils/create_ml_inference_pipeline', () => ({ createAndReferenceMlInferencePipeline: jest.fn(), })); +jest.mock('../../lib/indices/delete_ml_inference_pipeline', () => ({ + deleteMlInferencePipeline: jest.fn(), +})); + +import { deleteMlInferencePipeline } from '../../lib/indices/delete_ml_inference_pipeline'; import { fetchMlInferencePipelineProcessors } from '../../lib/indices/fetch_ml_inference_pipeline_processors'; import { createAndReferenceMlInferencePipeline } from '../../utils/create_ml_inference_pipeline'; +import { ElasticsearchResponseError } from '../../utils/identify_exceptions'; import { registerIndexRoutes } from './indices'; @@ -168,4 +174,72 @@ describe('Enterprise Search Managed Indices', () => { ); }); }); + + describe('DELETE /internal/enterprise_search/indices/{indexName}/ml_inference/pipelines/{pipelineName}', () => { + const indexName = 'my-index'; + const pipelineName = 'my-pipeline'; + + beforeEach(() => { + const context = { + core: Promise.resolve({ elasticsearch: { client: mockClient } }), + } as jest.Mocked; + + mockRouter = new MockRouter({ + context, + method: 'delete', + path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipelines/{pipelineName}', + }); + + registerIndexRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('fails validation without index_name', () => { + const request = { params: {} }; + mockRouter.shouldThrow(request); + }); + + it('deletes pipeline', async () => { + const mockResponse = { deleted: pipelineName }; + + (deleteMlInferencePipeline as jest.Mock).mockImplementationOnce(() => { + return Promise.resolve(mockResponse); + }); + + await mockRouter.callRoute({ + params: { indexName, pipelineName }, + }); + + expect(deleteMlInferencePipeline).toHaveBeenCalledWith(indexName, pipelineName, {}); + + expect(mockRouter.response.ok).toHaveBeenCalledWith({ + body: mockResponse, + headers: { 'content-type': 'application/json' }, + }); + }); + + it('raises error if deletion failed', async () => { + const errorReason = `pipeline is missing: [${pipelineName}]`; + const mockError = new Error(errorReason) as ElasticsearchResponseError; + mockError.meta = { + body: { + error: { + type: 'resource_not_found_exception', + }, + }, + }; + (deleteMlInferencePipeline as jest.Mock).mockImplementationOnce(() => { + return Promise.reject(mockError); + }); + + await mockRouter.callRoute({ + params: { indexName, pipelineName }, + }); + + expect(deleteMlInferencePipeline).toHaveBeenCalledWith(indexName, pipelineName, {}); + expect(mockRouter.response.customError).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index b3f033ba9507f..088659d73dcfd 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -16,6 +16,7 @@ import { fetchConnectorByIndexName, fetchConnectors } from '../../lib/connectors import { fetchCrawlerByIndexName, fetchCrawlers } from '../../lib/crawler/fetch_crawlers'; import { createIndex } from '../../lib/indices/create_index'; +import { deleteMlInferencePipeline } from '../../lib/indices/delete_ml_inference_pipeline'; import { fetchIndex } from '../../lib/indices/fetch_index'; import { fetchIndices } from '../../lib/indices/fetch_indices'; import { fetchMlInferencePipelineProcessors } from '../../lib/indices/fetch_ml_inference_pipeline_processors'; @@ -29,7 +30,10 @@ import { CreatedPipeline, } from '../../utils/create_ml_inference_pipeline'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; -import { isIndexNotFoundException } from '../../utils/identify_exceptions'; +import { + isIndexNotFoundException, + isResourceNotFoundException, +} from '../../utils/identify_exceptions'; export function registerIndexRoutes({ router, @@ -448,4 +452,46 @@ export function registerIndexRoutes({ }); }) ); + + router.delete( + { + path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipelines/{pipelineName}', + validate: { + params: schema.object({ + indexName: schema.string(), + pipelineName: schema.string(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const indexName = decodeURIComponent(request.params.indexName); + const pipelineName = decodeURIComponent(request.params.pipelineName); + const { client } = (await context.core).elasticsearch; + + try { + const deleteResult = await deleteMlInferencePipeline( + indexName, + pipelineName, + client.asCurrentUser + ); + + return response.ok({ + body: deleteResult, + headers: { 'content-type': 'application/json' }, + }); + } catch (error) { + if (isResourceNotFoundException(error)) { + // return specific message if pipeline doesn't exist + return createError({ + errorCode: ErrorCode.RESOURCE_NOT_FOUND, + message: error.meta?.body?.error?.reason, + response, + statusCode: 404, + }); + } + // otherwise, let the default handler wrap it + throw error; + } + }) + ); } diff --git a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts index 7bc13135343dc..d65f2918275d2 100644 --- a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts +++ b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts @@ -5,7 +5,7 @@ * 2.0. */ -interface ElasticsearchResponseError { +export interface ElasticsearchResponseError { meta?: { body?: { error?: { @@ -23,5 +23,8 @@ export const isIndexNotFoundException = (error: ElasticsearchResponseError) => export const isResourceAlreadyExistsException = (error: ElasticsearchResponseError) => error?.meta?.body?.error?.type === 'resource_already_exists_exception'; +export const isResourceNotFoundException = (error: ElasticsearchResponseError) => + error?.meta?.body?.error?.type === 'resource_not_found_exception'; + export const isUnauthorizedException = (error: ElasticsearchResponseError) => error.meta?.statusCode === 403; From fabdee3dde1b20020cedf298b19c9357e19491a9 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Mon, 19 Sep 2022 11:21:14 +0200 Subject: [PATCH 48/79] [Profiling] Use 'Universal Profiling' everywhere (#140906) --- .../public/components/profiling_app_page_template/index.tsx | 2 +- x-pack/plugins/profiling/public/plugin.tsx | 4 ++-- x-pack/plugins/profiling/public/routing/index.tsx | 2 +- x-pack/plugins/profiling/server/feature.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx index d2eef22ba9226..ac16bdc5df6c6 100644 --- a/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx +++ b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx @@ -37,7 +37,7 @@ export function ProfilingAppPageTemplate({ { return { @@ -78,7 +78,7 @@ export class ProfilingPlugin implements Plugin { coreSetup.application.register({ id: 'profiling', - title: 'Profiling', + title: 'Universal Profiling', euiIconType: 'logoObservability', appRoute: '/app/profiling', category: DEFAULT_APP_CATEGORIES.observability, diff --git a/x-pack/plugins/profiling/public/routing/index.tsx b/x-pack/plugins/profiling/public/routing/index.tsx index 221ff10a5dad0..d44f4a0655c00 100644 --- a/x-pack/plugins/profiling/public/routing/index.tsx +++ b/x-pack/plugins/profiling/public/routing/index.tsx @@ -23,7 +23,7 @@ const routes = { element: ( diff --git a/x-pack/plugins/profiling/server/feature.ts b/x-pack/plugins/profiling/server/feature.ts index 86e9e70b55a95..e6d9c3098dc03 100644 --- a/x-pack/plugins/profiling/server/feature.ts +++ b/x-pack/plugins/profiling/server/feature.ts @@ -13,7 +13,7 @@ export const PROFILING_SERVER_FEATURE_ID = 'profiling'; export const PROFILING_FEATURE = { id: PROFILING_SERVER_FEATURE_ID, name: i18n.translate('xpack.profiling.featureRegistry.profilingFeatureName', { - defaultMessage: 'Profiling', + defaultMessage: 'Universal Profiling', }), order: 1200, category: DEFAULT_APP_CATEGORIES.observability, From d05b534350bdf780c8c85e67ecc4abf433a7ebd7 Mon Sep 17 00:00:00 2001 From: Julia Rechkunova Date: Mon, 19 Sep 2022 11:46:22 +0200 Subject: [PATCH 49/79] [Discover] Fix fields flaky test (#140872) Co-authored-by: Joe Reuter --- test/api_integration/apis/unified_field_list/field_stats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/api_integration/apis/unified_field_list/field_stats.ts b/test/api_integration/apis/unified_field_list/field_stats.ts index 1a359c09f146b..5d41d412dbb06 100644 --- a/test/api_integration/apis/unified_field_list/field_stats.ts +++ b/test/api_integration/apis/unified_field_list/field_stats.ts @@ -411,7 +411,7 @@ export default ({ getService }: FtrProviderContext) => { expect(body.totalDocuments).to.eql(4634); expect(body.sampledDocuments).to.eql(100); expect(body.sampledValues).to.eql(100); - expect(body.topValues.buckets.length).to.eql(5); + expect(body.topValues.buckets.length).to.be.greaterThan(0); }); it('should return top values for index pattern runtime string fields', async () => { From 189196181c975b620ab18ea9d7662aa38d0e9294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loix?= Date: Mon, 19 Sep 2022 11:29:23 +0100 Subject: [PATCH 50/79] [Table list view] Improve UX (phase 1) (#135892) --- .github/CODEOWNERS | 1 + .i18nrc.json | 1 + package.json | 2 + packages/BUILD.bazel | 2 + .../content-management/.storybook/main.js | 17 + .../content-management/.storybook/manager.js | 19 + .../content-management/table_list/BUILD.bazel | 160 ++++ .../content-management/table_list/README.mdx | 20 + .../content-management/table_list/index.ts | 11 + .../table_list/jest.config.js | 13 + .../table_list/kibana.jsonc | 7 + .../table_list/package.json | 8 + .../table_list/src/__jest__}/index.ts | 2 +- .../table_list/src/__jest__/tests.helpers.tsx | 36 + .../table_list/src/actions.ts | 74 ++ .../src/components/confirm_delete_modal.tsx | 94 +++ .../table_list/src/components/index.ts | 12 + .../src/components/listing_limit_warning.tsx | 78 ++ .../table_list/src/components/table.tsx | 131 ++++ .../src/components/updated_at_field.tsx | 52 ++ .../table_list/src/index.ts | 17 + .../table_list/src/mocks.ts | 99 +++ .../table_list/src/reducer.tsx | 152 ++++ .../table_list/src/services.tsx | 191 +++++ .../src/table_list_view.stories.tsx | 108 +++ .../table_list/src}/table_list_view.test.tsx | 241 +++--- .../table_list/src/table_list_view.tsx | 526 ++++++++++++++ .../table_list/tsconfig.json | 21 + .../src/bazel_package_dirs.js | 1 + .../src/testbed/testbed.ts | 14 +- .../src/testbed/types.ts | 6 +- src/dev/storybook/aliases.ts | 1 + .../public/application/dashboard_router.tsx | 74 +- .../dashboard_listing.test.tsx.snap | 455 +++--------- .../listing/dashboard_listing.test.tsx | 25 +- .../application/listing/dashboard_listing.tsx | 125 ++-- .../get_dashboard_list_item_link.test.ts | 10 +- .../listing/get_dashboard_list_item_link.ts | 3 +- .../test_helpers/make_default_services.ts | 7 + .../dashboard/public/dashboard_strings.ts | 9 - src/plugins/kibana_react/public/index.ts | 3 - .../table_list_view.test.tsx.snap | 163 ----- .../table_list_view/table_list_view.tsx | 686 ------------------ src/plugins/saved_objects/public/types.ts | 6 +- .../components/visualize_listing.tsx | 91 ++- .../public/visualize_app/index.tsx | 19 +- .../visualize_app/utils/get_table_columns.tsx | 97 +-- .../utils/get_visualize_list_item_link.ts | 7 +- test/scripts/jenkins_storybook.sh | 1 + x-pack/plugins/graph/public/application.tsx | 18 +- .../graph/public/apps/listing_route.tsx | 87 +-- .../plugins/graph/public/types/persistence.ts | 3 + .../home/data_streams_tab.test.ts | 4 +- x-pack/plugins/maps/public/kibana_services.ts | 2 +- .../maps/public/lazy_load_bundle/index.ts | 12 +- x-pack/plugins/maps/public/plugin.ts | 3 +- x-pack/plugins/maps/public/render_app.tsx | 68 +- .../routes/list_page/maps_list_view.tsx | 100 +-- .../translations/translations/fr-FR.json | 28 - .../translations/translations/ja-JP.json | 30 - .../translations/translations/zh-CN.json | 30 - .../dashboard/group2/dashboard_tagging.ts | 2 +- .../apps/lens/group3/lens_tagging.ts | 2 +- .../functional/tests/dashboard_integration.ts | 2 +- .../functional/tests/maps_integration.ts | 2 +- .../functional/tests/visualize_integration.ts | 2 +- yarn.lock | 8 + 67 files changed, 2449 insertions(+), 1852 deletions(-) create mode 100644 packages/content-management/.storybook/main.js create mode 100644 packages/content-management/.storybook/manager.js create mode 100644 packages/content-management/table_list/BUILD.bazel create mode 100644 packages/content-management/table_list/README.mdx create mode 100644 packages/content-management/table_list/index.ts create mode 100644 packages/content-management/table_list/jest.config.js create mode 100644 packages/content-management/table_list/kibana.jsonc create mode 100644 packages/content-management/table_list/package.json rename {src/plugins/kibana_react/public/table_list_view => packages/content-management/table_list/src/__jest__}/index.ts (88%) create mode 100644 packages/content-management/table_list/src/__jest__/tests.helpers.tsx create mode 100644 packages/content-management/table_list/src/actions.ts create mode 100644 packages/content-management/table_list/src/components/confirm_delete_modal.tsx create mode 100644 packages/content-management/table_list/src/components/index.ts create mode 100644 packages/content-management/table_list/src/components/listing_limit_warning.tsx create mode 100644 packages/content-management/table_list/src/components/table.tsx create mode 100644 packages/content-management/table_list/src/components/updated_at_field.tsx create mode 100644 packages/content-management/table_list/src/index.ts create mode 100644 packages/content-management/table_list/src/mocks.ts create mode 100644 packages/content-management/table_list/src/reducer.tsx create mode 100644 packages/content-management/table_list/src/services.tsx create mode 100644 packages/content-management/table_list/src/table_list_view.stories.tsx rename {src/plugins/kibana_react/public/table_list_view => packages/content-management/table_list/src}/table_list_view.test.tsx (53%) create mode 100644 packages/content-management/table_list/src/table_list_view.tsx create mode 100644 packages/content-management/table_list/tsconfig.json delete mode 100644 src/plugins/kibana_react/public/table_list_view/__snapshots__/table_list_view.test.tsx.snap delete mode 100644 src/plugins/kibana_react/public/table_list_view/table_list_view.tsx diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 514effa288865..1b6ace5538262 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -665,6 +665,7 @@ packages/analytics/shippers/elastic_v3/browser @elastic/kibana-core packages/analytics/shippers/elastic_v3/common @elastic/kibana-core packages/analytics/shippers/elastic_v3/server @elastic/kibana-core packages/analytics/shippers/fullstory @elastic/kibana-core +packages/content-management/table_list @elastic/shared-ux packages/core/analytics/core-analytics-browser @elastic/kibana-core packages/core/analytics/core-analytics-browser-internal @elastic/kibana-core packages/core/analytics/core-analytics-browser-mocks @elastic/kibana-core diff --git a/.i18nrc.json b/.i18nrc.json index dbe3715bc7556..20b2588ca2fab 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -7,6 +7,7 @@ "bfetch": "src/plugins/bfetch", "charts": "src/plugins/charts", "console": "src/plugins/console", + "contentManagement": "packages/content-management", "core": [ "src/core", "packages/core" diff --git a/package.json b/package.json index 5ac95b11986e1..e1d0340c23da5 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "@kbn/config": "link:bazel-bin/packages/kbn-config", "@kbn/config-mocks": "link:bazel-bin/packages/kbn-config-mocks", "@kbn/config-schema": "link:bazel-bin/packages/kbn-config-schema", + "@kbn/content-management-table-list": "link:bazel-bin/packages/content-management/table_list", "@kbn/core-analytics-browser": "link:bazel-bin/packages/core/analytics/core-analytics-browser", "@kbn/core-analytics-browser-internal": "link:bazel-bin/packages/core/analytics/core-analytics-browser-internal", "@kbn/core-analytics-browser-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-browser-mocks", @@ -843,6 +844,7 @@ "@types/kbn__config": "link:bazel-bin/packages/kbn-config/npm_module_types", "@types/kbn__config-mocks": "link:bazel-bin/packages/kbn-config-mocks/npm_module_types", "@types/kbn__config-schema": "link:bazel-bin/packages/kbn-config-schema/npm_module_types", + "@types/kbn__content-management-table-list": "link:bazel-bin/packages/content-management/table_list/npm_module_types", "@types/kbn__core-analytics-browser": "link:bazel-bin/packages/core/analytics/core-analytics-browser/npm_module_types", "@types/kbn__core-analytics-browser-internal": "link:bazel-bin/packages/core/analytics/core-analytics-browser-internal/npm_module_types", "@types/kbn__core-analytics-browser-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-browser-mocks/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 0d697c2852c2a..f55c3c39befb1 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -14,6 +14,7 @@ filegroup( "//packages/analytics/shippers/elastic_v3/common:build", "//packages/analytics/shippers/elastic_v3/server:build", "//packages/analytics/shippers/fullstory:build", + "//packages/content-management/table_list:build", "//packages/core/analytics/core-analytics-browser:build", "//packages/core/analytics/core-analytics-browser-internal:build", "//packages/core/analytics/core-analytics-browser-mocks:build", @@ -327,6 +328,7 @@ filegroup( "//packages/analytics/shippers/elastic_v3/common:build_types", "//packages/analytics/shippers/elastic_v3/server:build_types", "//packages/analytics/shippers/fullstory:build_types", + "//packages/content-management/table_list:build_types", "//packages/core/analytics/core-analytics-browser:build_types", "//packages/core/analytics/core-analytics-browser-internal:build_types", "//packages/core/analytics/core-analytics-browser-mocks:build_types", diff --git a/packages/content-management/.storybook/main.js b/packages/content-management/.storybook/main.js new file mode 100644 index 0000000000000..0aaf1046299de --- /dev/null +++ b/packages/content-management/.storybook/main.js @@ -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. + */ + +const defaultConfig = require('@kbn/storybook').defaultConfig; + +module.exports = { + ...defaultConfig, + stories: ['../**/*.stories.tsx'], + reactOptions: { + strictMode: true, + }, +}; diff --git a/packages/content-management/.storybook/manager.js b/packages/content-management/.storybook/manager.js new file mode 100644 index 0000000000000..bc576ed60a8aa --- /dev/null +++ b/packages/content-management/.storybook/manager.js @@ -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 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. + */ +const { addons } = require('@storybook/addons'); +const { create } = require('@storybook/theming'); +const { PANEL_ID } = require('@storybook/addon-actions'); + +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'Content Management Storybook', + }), + showPanel: () => true, + selectedPanel: PANEL_ID, +}); diff --git a/packages/content-management/table_list/BUILD.bazel b/packages/content-management/table_list/BUILD.bazel new file mode 100644 index 0000000000000..36d84a426a017 --- /dev/null +++ b/packages/content-management/table_list/BUILD.bazel @@ -0,0 +1,160 @@ +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 = "table_list" +PKG_REQUIRE_NAME = "@kbn/content-management-table-list" + +SOURCE_FILES = glob( + [ + "**/*.ts", + "**/*.tsx", + ], + 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", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "//packages/kbn-i18n-react", + "//packages/kbn-i18n", + "//packages/core/http/core-http-browser", + "//packages/core/theme/core-theme-browser", + "//packages/kbn-safer-lodash-set", + "//packages/shared-ux/page/kibana_template/impl", + "@npm//@elastic/eui", + "@npm//@emotion/react", + "@npm//@emotion/css", + "@npm//lodash", + "@npm//moment", + "@npm//react-use", + "@npm//react", + "@npm//rxjs", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "//packages/kbn-i18n:npm_module_types", + "//packages/kbn-i18n-react:npm_module_types", + "//packages/core/http/core-http-browser:npm_module_types", + "//packages/core/theme/core-theme-browser:npm_module_types", + "//packages/kbn-ambient-storybook-types", + "//packages/kbn-ambient-ui-types", + "//packages/kbn-safer-lodash-set:npm_module_types", + "//packages/shared-ux/page/kibana_template/impl:npm_module_types", + "//packages/shared-ux/page/kibana_template/types", + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/react", + "@npm//@elastic/eui", + "@npm//react-use", + "@npm//rxjs", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +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", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + 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/content-management/table_list/README.mdx b/packages/content-management/table_list/README.mdx new file mode 100644 index 0000000000000..1847207c3bdcd --- /dev/null +++ b/packages/content-management/table_list/README.mdx @@ -0,0 +1,20 @@ +--- +id: sharedUX/contentManagement/TableList +slug: /shared-ux/content-management/table-list +title: Table list view +summary: A table to render user generated saved objects. +tags: ['shared-ux', 'content-management'] +date: 2022-08-09 +--- + +The `` render a eui page to display a list of user content saved object. + +**Uncomplete documentation**. Will be updated. + +## API + +TODO + +## EUI Promotion Status + +This component is not currently considered for promotion to EUI. diff --git a/packages/content-management/table_list/index.ts b/packages/content-management/table_list/index.ts new file mode 100644 index 0000000000000..c6550a12da30a --- /dev/null +++ b/packages/content-management/table_list/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 { TableListView, TableListViewProvider, TableListViewKibanaProvider } from './src'; + +export type { UserContentCommonSchema } from './src'; diff --git a/packages/content-management/table_list/jest.config.js b/packages/content-management/table_list/jest.config.js new file mode 100644 index 0000000000000..546d16dd86cf0 --- /dev/null +++ b/packages/content-management/table_list/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/packages/content-management/table_list'], +}; diff --git a/packages/content-management/table_list/kibana.jsonc b/packages/content-management/table_list/kibana.jsonc new file mode 100644 index 0000000000000..7f22b8c8f56c4 --- /dev/null +++ b/packages/content-management/table_list/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-common", + "id": "@kbn/content-management-table-list", + "owner": "@elastic/shared-ux", + "runtimeDeps": [], + "typeDeps": [] +} diff --git a/packages/content-management/table_list/package.json b/packages/content-management/table_list/package.json new file mode 100644 index 0000000000000..f4cc8ba690d20 --- /dev/null +++ b/packages/content-management/table_list/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/content-management-table-list", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/plugins/kibana_react/public/table_list_view/index.ts b/packages/content-management/table_list/src/__jest__/index.ts similarity index 88% rename from src/plugins/kibana_react/public/table_list_view/index.ts rename to packages/content-management/table_list/src/__jest__/index.ts index 8fdc5a27df01c..2f3d8863ff1d6 100644 --- a/src/plugins/kibana_react/public/table_list_view/index.ts +++ b/packages/content-management/table_list/src/__jest__/index.ts @@ -6,4 +6,4 @@ * Side Public License, v 1. */ -export * from './table_list_view'; +export { WithServices } from './tests.helpers'; diff --git a/packages/content-management/table_list/src/__jest__/tests.helpers.tsx b/packages/content-management/table_list/src/__jest__/tests.helpers.tsx new file mode 100644 index 0000000000000..381e4974b4e36 --- /dev/null +++ b/packages/content-management/table_list/src/__jest__/tests.helpers.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 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 React from 'react'; +import type { ComponentType } from 'react'; +import { from } from 'rxjs'; + +import { TableListViewProvider, Services } from '../services'; + +export const getMockServices = (overrides?: Partial) => { + const services: Services = { + canEditAdvancedSettings: true, + getListingLimitSettingsUrl: () => 'http://elastic.co', + notifyError: () => undefined, + currentAppId$: from('mockedApp'), + navigateToUrl: () => undefined, + ...overrides, + }; + + return services; +}; + +export function WithServices

(Comp: ComponentType

, overrides: Partial = {}) { + return (props: P) => { + const services = getMockServices(overrides); + return ( + + + + ); + }; +} diff --git a/packages/content-management/table_list/src/actions.ts b/packages/content-management/table_list/src/actions.ts new file mode 100644 index 0000000000000..ad82aa7379812 --- /dev/null +++ b/packages/content-management/table_list/src/actions.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import type { CriteriaWithPagination } from '@elastic/eui'; + +/** Action to trigger a fetch of the table items */ +export interface OnFetchItemsAction { + type: 'onFetchItems'; +} + +/** Action to return the fetched table items */ +export interface OnFetchItemsSuccessAction { + type: 'onFetchItemsSuccess'; + data: { + response: { + total: number; + hits: T[]; + }; + }; +} + +/** Action to return any error while fetching the table items */ +export interface OnFetchItemsErrorAction { + type: 'onFetchItemsError'; + data: IHttpFetchError; +} + +/** + * Actions to update the state of items deletions + * - onDeleteItems: emit before deleting item(s) + * - onItemsDeleted: emit after deleting item(s) + * - onCancelDeleteItems: emit to cancel deleting items (and close the modal) + */ +export interface DeleteItemsActions { + type: 'onCancelDeleteItems' | 'onDeleteItems' | 'onItemsDeleted'; +} + +/** Action to update the selection of items in the table (for batch operations) */ +export interface OnSelectionChangeAction { + type: 'onSelectionChange'; + data: T[]; +} + +/** Action to update the state of the table whenever the sort or page size changes */ +export interface OnTableChangeAction { + type: 'onTableChange'; + data: CriteriaWithPagination; +} + +/** Action to display the delete confirmation modal */ +export interface ShowConfirmDeleteItemsModalAction { + type: 'showConfirmDeleteItemsModal'; +} + +/** Action to update the search bar query text */ +export interface OnSearchQueryChangeAction { + type: 'onSearchQueryChange'; + data: string; +} + +export type Action = + | OnFetchItemsAction + | OnFetchItemsSuccessAction + | OnFetchItemsErrorAction + | DeleteItemsActions + | OnSelectionChangeAction + | OnTableChangeAction + | ShowConfirmDeleteItemsModalAction + | OnSearchQueryChangeAction; diff --git a/packages/content-management/table_list/src/components/confirm_delete_modal.tsx b/packages/content-management/table_list/src/components/confirm_delete_modal.tsx new file mode 100644 index 0000000000000..af2585788701a --- /dev/null +++ b/packages/content-management/table_list/src/components/confirm_delete_modal.tsx @@ -0,0 +1,94 @@ +/* + * 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 React from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +function getI18nTexts(items: unknown[], entityName: string, entityNamePlural: string) { + return { + deleteBtnLabel: i18n.translate( + 'contentManagement.tableList.listing.deleteSelectedItemsConfirmModal.confirmButtonLabel', + { + defaultMessage: 'Delete', + } + ), + deletingBtnLabel: i18n.translate( + 'contentManagement.tableList.listing.deleteSelectedItemsConfirmModal.confirmButtonLabelDeleting', + { + defaultMessage: 'Deleting', + } + ), + title: i18n.translate('contentManagement.tableList.listing.deleteSelectedConfirmModal.title', { + defaultMessage: 'Delete {itemCount} {entityName}?', + values: { + itemCount: items.length, + entityName: items.length === 1 ? entityName : entityNamePlural, + }, + }), + description: i18n.translate( + 'contentManagement.tableList.listing.deleteConfirmModalDescription', + { + defaultMessage: `You can't recover deleted {entityNamePlural}.`, + values: { + entityNamePlural, + }, + } + ), + cancelBtnLabel: i18n.translate( + 'contentManagement.tableList.listing.deleteSelectedItemsConfirmModal.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } + ), + }; +} + +interface Props { + /** Flag to indicate if the items are being deleted */ + isDeletingItems: boolean; + /** Array of items to delete */ + items: T[]; + /** The name of the entity to delete (singular) */ + entityName: string; + /** The name of the entity to delete (plural) */ + entityNamePlural: string; + /** Handler to be called when clicking the "Cancel" button */ + onCancel: () => void; + /** Handler to be called when clicking the "Confirm" button */ + onConfirm: () => void; +} + +export function ConfirmDeleteModal({ + isDeletingItems, + items, + entityName, + entityNamePlural, + onCancel, + onConfirm, +}: Props) { + const { deleteBtnLabel, deletingBtnLabel, title, description, cancelBtnLabel } = getI18nTexts( + items, + entityName, + entityNamePlural + ); + + return ( + +

{description}

+ + ); +} diff --git a/packages/content-management/table_list/src/components/index.ts b/packages/content-management/table_list/src/components/index.ts new file mode 100644 index 0000000000000..b9226155ba44d --- /dev/null +++ b/packages/content-management/table_list/src/components/index.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 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 { Table } from './table'; +export { UpdatedAtField } from './updated_at_field'; +export { ConfirmDeleteModal } from './confirm_delete_modal'; +export { ListingLimitWarning } from './listing_limit_warning'; diff --git a/packages/content-management/table_list/src/components/listing_limit_warning.tsx b/packages/content-management/table_list/src/components/listing_limit_warning.tsx new file mode 100644 index 0000000000000..f5317a9598baa --- /dev/null +++ b/packages/content-management/table_list/src/components/listing_limit_warning.tsx @@ -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 React from 'react'; +import { EuiCallOut, EuiLink, EuiSpacer } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; + +interface Props { + entityNamePlural: string; + canEditAdvancedSettings: boolean; + advancedSettingsLink: string; + totalItems: number; + listingLimit: number; +} + +export function ListingLimitWarning({ + entityNamePlural, + totalItems, + listingLimit, + canEditAdvancedSettings, + advancedSettingsLink, +}: Props) { + return ( + <> + + } + color="warning" + iconType="help" + > +

+ listingLimit, + }} + />{' '} + {canEditAdvancedSettings ? ( + + + + ), + }} + /> + ) : ( + + )} +

+
+ + + ); +} diff --git a/packages/content-management/table_list/src/components/table.tsx b/packages/content-management/table_list/src/components/table.tsx new file mode 100644 index 0000000000000..feb83dbc30a40 --- /dev/null +++ b/packages/content-management/table_list/src/components/table.tsx @@ -0,0 +1,131 @@ +/* + * 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 React, { Dispatch, useCallback } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiBasicTableColumn, + EuiButton, + EuiInMemoryTable, + CriteriaWithPagination, + PropertySort, +} from '@elastic/eui'; + +import { useServices } from '../services'; +import type { Action } from '../actions'; +import type { + State as TableListViewState, + Props as TableListViewProps, + UserContentCommonSchema, +} from '../table_list_view'; + +type State = Pick< + TableListViewState, + 'items' | 'selectedIds' | 'searchQuery' | 'tableSort' | 'pagination' +>; + +interface Props extends State { + dispatch: Dispatch>; + entityName: string; + entityNamePlural: string; + isFetchingItems: boolean; + tableCaption: string; + tableColumns: Array>; + deleteItems: TableListViewProps['deleteItems']; +} + +export function Table({ + dispatch, + items, + isFetchingItems, + searchQuery, + selectedIds, + pagination, + tableColumns, + tableSort, + entityName, + entityNamePlural, + deleteItems, + tableCaption, +}: Props) { + const { getSearchBarFilters } = useServices(); + + const renderToolsLeft = useCallback(() => { + if (!deleteItems || selectedIds.length === 0) { + return; + } + + return ( + dispatch({ type: 'showConfirmDeleteItemsModal' })} + data-test-subj="deleteSelectedItems" + > + + + ); + }, [deleteItems, dispatch, entityName, entityNamePlural, selectedIds.length]); + + const selection = deleteItems + ? { + onSelectionChange: (obj: T[]) => { + dispatch({ type: 'onSelectionChange', data: obj }); + }, + } + : undefined; + + const searchFilters = getSearchBarFilters ? getSearchBarFilters() : []; + + const search = { + onChange: ({ queryText }: { queryText: string }) => + dispatch({ type: 'onSearchQueryChange', data: queryText }), + toolsLeft: renderToolsLeft(), + defaultQuery: searchQuery, + box: { + incremental: true, + 'data-test-subj': 'tableListSearchBox', + }, + filters: searchFilters, + }; + + const noItemsMessage = ( + + ); + + return ( + + itemId="id" + items={items} + columns={tableColumns} + pagination={pagination} + loading={isFetchingItems} + message={noItemsMessage} + selection={selection} + search={search} + sorting={tableSort ? { sort: tableSort as PropertySort } : undefined} + onChange={(criteria: CriteriaWithPagination) => + dispatch({ type: 'onTableChange', data: criteria }) + } + data-test-subj="itemsInMemTable" + rowHeader="attributes.title" + tableCaption={tableCaption} + /> + ); +} diff --git a/packages/content-management/table_list/src/components/updated_at_field.tsx b/packages/content-management/table_list/src/components/updated_at_field.tsx new file mode 100644 index 0000000000000..76055c63f00e4 --- /dev/null +++ b/packages/content-management/table_list/src/components/updated_at_field.tsx @@ -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 React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiToolTip } from '@elastic/eui'; +import moment from 'moment'; + +import { DateFormatter } from '../services'; + +const DefaultDateFormatter: DateFormatter = ({ value, children }) => + children(new Date(value).toDateString()); + +export const UpdatedAtField: FC<{ dateTime?: string; DateFormatterComp?: DateFormatter }> = ({ + dateTime, + DateFormatterComp = DefaultDateFormatter, +}) => { + if (!dateTime) { + return ( + + - + + ); + } + const updatedAt = moment(dateTime); + + if (updatedAt.diff(moment(), 'days') > -7) { + return ( + + {(formattedDate: string) => ( + + {formattedDate} + + )} + + ); + } + return ( + + {updatedAt.format('LL')} + + ); +}; diff --git a/packages/content-management/table_list/src/index.ts b/packages/content-management/table_list/src/index.ts new file mode 100644 index 0000000000000..df0d1e22bc106 --- /dev/null +++ b/packages/content-management/table_list/src/index.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 { TableListView } from './table_list_view'; + +export type { + Props as TableListViewProps, + State as TableListViewState, + UserContentCommonSchema, +} from './table_list_view'; + +export { TableListViewProvider, TableListViewKibanaProvider } from './services'; diff --git a/packages/content-management/table_list/src/mocks.ts b/packages/content-management/table_list/src/mocks.ts new file mode 100644 index 0000000000000..3c6bb3c68cad1 --- /dev/null +++ b/packages/content-management/table_list/src/mocks.ts @@ -0,0 +1,99 @@ +/* + * 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 { from } from 'rxjs'; + +import { Services } from './services'; + +/** + * Parameters drawn from the Storybook arguments collection that customize a component story. + */ +export type Params = Record, any>; +type ActionFn = (name: string) => any; + +/** + * Returns Storybook-compatible service abstractions for the `NoDataCard` Provider. + */ +export const getStoryServices = (params: Params, action: ActionFn = () => {}) => { + const services: Services = { + canEditAdvancedSettings: true, + getListingLimitSettingsUrl: () => 'http://elastic.co', + notifyError: (title, text) => { + action('notifyError')({ title, text }); + }, + currentAppId$: from('mockedApp'), + navigateToUrl: () => undefined, + ...params, + }; + + return services; +}; + +/** + * Returns the Storybook arguments for `NoDataCard`, for its stories and for + * consuming component stories. + */ +export const getStoryArgTypes = () => ({ + tableListTitle: { + control: { + type: 'text', + }, + defaultValue: 'My dashboards', + }, + entityName: { + control: { + type: 'text', + }, + defaultValue: 'Dashboard', + }, + entityNamePlural: { + control: { + type: 'text', + }, + defaultValue: 'Dashboards', + }, + canCreateItem: { + control: 'boolean', + defaultValue: true, + }, + canEditItem: { + control: 'boolean', + defaultValue: true, + }, + canDeleteItem: { + control: 'boolean', + defaultValue: true, + }, + showCustomColumn: { + control: 'boolean', + defaultValue: false, + }, + numberOfItemsToRender: { + control: { + type: 'number', + }, + defaultValue: 15, + }, + initialFilter: { + control: { + type: 'text', + }, + defaultValue: '', + }, + initialPageSize: { + control: { + type: 'number', + }, + defaultValue: 10, + }, + listingLimit: { + control: { + type: 'number', + }, + defaultValue: 20, + }, +}); diff --git a/packages/content-management/table_list/src/reducer.tsx b/packages/content-management/table_list/src/reducer.tsx new file mode 100644 index 0000000000000..605e3872c077d --- /dev/null +++ b/packages/content-management/table_list/src/reducer.tsx @@ -0,0 +1,152 @@ +/* + * 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 React from 'react'; +import { sortBy } from 'lodash'; +import { i18n } from '@kbn/i18n'; + +import { UpdatedAtField } from './components'; +import type { State, UserContentCommonSchema } from './table_list_view'; +import type { Action } from './actions'; +import type { Services } from './services'; + +interface Dependencies { + DateFormatterComp: Services['DateFormatterComp']; +} + +function onInitialItemsFetch( + items: T[], + { DateFormatterComp }: Dependencies +) { + // We check if the saved object have the "updatedAt" metadata + // to render or not that column in the table + const hasUpdatedAtMetadata = Boolean(items.find((item) => Boolean(item.updatedAt))); + + if (hasUpdatedAtMetadata) { + // Add "Last update" column and sort by that column initially + return { + tableSort: { + field: 'updatedAt' as keyof T, + direction: 'desc' as const, + }, + tableColumns: [ + { + field: 'updatedAt', + name: i18n.translate('contentManagement.tableList.lastUpdatedColumnTitle', { + defaultMessage: 'Last updated', + }), + render: (field: string, record: { updatedAt?: string }) => ( + + ), + sortable: true, + width: '150px', + }, + ], + }; + } + + return {}; +} + +export function getReducer({ DateFormatterComp }: Dependencies) { + return (state: State, action: Action): State => { + switch (action.type) { + case 'onFetchItems': { + return { + ...state, + isFetchingItems: true, + }; + } + case 'onFetchItemsSuccess': { + const items = action.data.response.hits; + // We only get the state on the initial fetch of items + // After that we don't want to reset the columns or change the sort after fetching + const { tableColumns, tableSort } = state.hasInitialFetchReturned + ? { tableColumns: undefined, tableSort: undefined } + : onInitialItemsFetch(items, { DateFormatterComp }); + + return { + ...state, + hasInitialFetchReturned: true, + isFetchingItems: false, + items: !state.searchQuery ? sortBy(items, 'title') : items, + totalItems: action.data.response.total, + tableColumns: tableColumns + ? [...state.tableColumns, ...tableColumns] + : state.tableColumns, + tableSort: tableSort ?? state.tableSort, + pagination: { + ...state.pagination, + totalItemCount: items.length, + }, + }; + } + case 'onFetchItemsError': { + return { + ...state, + isFetchingItems: false, + items: [], + totalItems: 0, + fetchError: action.data, + }; + } + case 'onSearchQueryChange': { + return { + ...state, + searchQuery: action.data, + isFetchingItems: true, + }; + } + case 'onTableChange': { + const tableSort = action.data.sort ?? state.tableSort; + return { + ...state, + pagination: { + ...state.pagination, + pageIndex: action.data.page.index, + pageSize: action.data.page.size, + }, + tableSort, + }; + } + case 'showConfirmDeleteItemsModal': { + return { + ...state, + showDeleteModal: true, + }; + } + case 'onDeleteItems': { + return { + ...state, + isDeletingItems: true, + }; + } + case 'onCancelDeleteItems': { + return { + ...state, + showDeleteModal: false, + }; + } + case 'onItemsDeleted': { + return { + ...state, + isDeletingItems: false, + selectedIds: [], + showDeleteModal: false, + }; + } + case 'onSelectionChange': { + return { + ...state, + selectedIds: action.data + .map((item) => item?.id) + .filter((id): id is string => Boolean(id)), + }; + } + } + }; +} diff --git a/packages/content-management/table_list/src/services.tsx b/packages/content-management/table_list/src/services.tsx new file mode 100644 index 0000000000000..ca376c2f83058 --- /dev/null +++ b/packages/content-management/table_list/src/services.tsx @@ -0,0 +1,191 @@ +/* + * 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 React, { FC, useContext, useMemo } from 'react'; +import type { EuiTableFieldDataColumnType, SearchFilterConfig } from '@elastic/eui'; +import type { Observable } from 'rxjs'; +import type { FormattedRelative } from '@kbn/i18n-react'; +import { RedirectAppLinksKibanaProvider } from '@kbn/shared-ux-link-redirect-app'; + +import { UserContentCommonSchema } from './table_list_view'; + +type UnmountCallback = () => void; +type MountPoint = (element: HTMLElement) => UnmountCallback; +type NotifyFn = (title: JSX.Element, text?: string) => void; + +export interface SavedObjectsReference { + id: string; + name: string; + type: string; +} + +export type SavedObjectsFindOptionsReference = Omit; + +export type DateFormatter = (props: { + value: number; + children: (formattedDate: string) => JSX.Element; +}) => JSX.Element; + +/** + * Abstract external services for this component. + */ +export interface Services { + canEditAdvancedSettings: boolean; + getListingLimitSettingsUrl: () => string; + notifyError: NotifyFn; + currentAppId$: Observable; + navigateToUrl: (url: string) => Promise | void; + searchQueryParser?: (searchQuery: string) => { + searchQuery: string; + references?: SavedObjectsFindOptionsReference[]; + }; + getTagsColumnDefinition?: () => EuiTableFieldDataColumnType | undefined; + getSearchBarFilters?: () => SearchFilterConfig[]; + DateFormatterComp?: DateFormatter; +} + +const TableListViewContext = React.createContext(null); + +/** + * Abstract external service Provider. + */ +export const TableListViewProvider: FC = ({ children, ...services }) => { + return {children}; +}; + +/** + * Kibana-specific service types. + */ +export interface TableListViewKibanaDependencies { + /** CoreStart contract */ + core: { + application: { + capabilities: { + advancedSettings?: { + save: boolean; + }; + }; + getUrlForApp: (app: string, options: { path: string }) => string; + currentAppId$: Observable; + navigateToUrl: (url: string) => Promise | void; + }; + notifications: { + toasts: { + addDanger: (notifyArgs: { title: MountPoint; text?: string }) => void; + }; + }; + }; + /** + * Handler from the '@kbn/kibana-react-plugin/public' Plugin + * + * ``` + * import { toMountPoint } from '@kbn/kibana-react-plugin/public'; + * ``` + */ + toMountPoint: ( + node: React.ReactNode, + options?: { theme$: Observable<{ readonly darkMode: boolean }> } + ) => MountPoint; + /** + * The public API from the savedObjectsTaggingOss plugin. + * It is returned by calling `getTaggingApi()` from the SavedObjectTaggingOssPluginStart + * + * ```js + * const savedObjectsTagging = savedObjectsTaggingOss?.getTaggingApi() + * ``` + */ + savedObjectsTagging?: { + ui: { + getTableColumnDefinition: () => EuiTableFieldDataColumnType; + parseSearchQuery: ( + query: string, + options?: { + useName?: boolean; + tagField?: string; + } + ) => { + searchTerm: string; + tagReferences: SavedObjectsFindOptionsReference[]; + valid: boolean; + }; + getSearchBarFilter: (options?: { + useName?: boolean; + tagField?: string; + }) => SearchFilterConfig; + }; + }; + /** The component from the @kbn/i18n-react package */ + FormattedRelative: typeof FormattedRelative; +} + +/** + * Kibana-specific Provider that maps to known dependency types. + */ +export const TableListViewKibanaProvider: FC = ({ + children, + ...services +}) => { + const { core, toMountPoint, savedObjectsTagging, FormattedRelative } = services; + + const getSearchBarFilters = useMemo(() => { + if (savedObjectsTagging) { + return () => [savedObjectsTagging.ui.getSearchBarFilter({ useName: true })]; + } + }, [savedObjectsTagging]); + + const searchQueryParser = useMemo(() => { + if (savedObjectsTagging) { + return (searchQuery: string) => { + const res = savedObjectsTagging.ui.parseSearchQuery(searchQuery, { useName: true }); + return { + searchQuery: res.searchTerm, + references: res.tagReferences, + }; + }; + } + }, [savedObjectsTagging]); + + return ( + + + core.application.getUrlForApp('management', { + path: `/kibana/settings?query=savedObjects:listingLimit`, + }) + } + notifyError={(title, text) => { + core.notifications.toasts.addDanger({ title: toMountPoint(title), text }); + }} + getTagsColumnDefinition={savedObjectsTagging?.ui.getTableColumnDefinition} + getSearchBarFilters={getSearchBarFilters} + searchQueryParser={searchQueryParser} + DateFormatterComp={(props) => } + currentAppId$={core.application.currentAppId$} + navigateToUrl={core.application.navigateToUrl} + > + {children} + + + ); +}; + +/** + * React hook for accessing pre-wired services. + */ +export function useServices() { + const context = useContext(TableListViewContext); + + if (!context) { + throw new Error( + 'TableListViewContext is missing. Ensure your component or React root is wrapped with or .' + ); + } + + return context; +} diff --git a/packages/content-management/table_list/src/table_list_view.stories.tsx b/packages/content-management/table_list/src/table_list_view.stories.tsx new file mode 100644 index 0000000000000..7b197c0fa1b5b --- /dev/null +++ b/packages/content-management/table_list/src/table_list_view.stories.tsx @@ -0,0 +1,108 @@ +/* + * 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 React from 'react'; +import Chance from 'chance'; +import moment from 'moment'; +import { action } from '@storybook/addon-actions'; + +import { Params, getStoryArgTypes, getStoryServices } from './mocks'; + +import { TableListView as Component, UserContentCommonSchema } from './table_list_view'; +import { TableListViewProvider } from './services'; + +import mdx from '../README.mdx'; + +const chance = new Chance(); + +export default { + title: 'Table list view', + description: 'A table list to display user content saved objects', + parameters: { + docs: { + page: mdx, + }, + }, +}; + +const createMockItems = (total: number): UserContentCommonSchema[] => { + return [...Array(total)].map((_, i) => { + const type = itemTypes[Math.floor(Math.random() * 4)]; + + return { + id: i.toString(), + type, + references: [], + updatedAt: moment().subtract(i, 'day').format('YYYY-MM-DDTHH:mm:ss'), + attributes: { + title: chance.sentence({ words: 5 }), + description: `Description of item ${i}`, + }, + }; + }); +}; + +const argTypes = getStoryArgTypes(); +const itemTypes = ['foo', 'bar', 'baz', 'elastic']; +const mockItems: UserContentCommonSchema[] = createMockItems(500); + +export const ConnectedComponent = (params: Params) => { + return ( + + { + const hits = mockItems + .filter((_, i) => i < params.numberOfItemsToRender) + .filter((item) => item.attributes.title.includes(searchQuery)); + + return Promise.resolve({ + total: hits.length, + hits, + }); + }} + getDetailViewLink={() => 'http://elastic.co'} + createItem={ + params.canCreateItem + ? () => { + action('Create item')(); + } + : undefined + } + editItem={ + params.canEditItem + ? ({ attributes: { title } }) => { + action('Edit item')(title); + } + : undefined + } + deleteItems={ + params.canDeleteItem + ? async (items) => { + action('Delete item(s)')( + items.map(({ attributes: { title } }) => title).join(', ') + ); + } + : undefined + } + customTableColumn={ + params.showCustomColumn + ? { + field: 'attributes.type', + name: 'Type', + } + : undefined + } + {...params} + /> + + ); +}; + +ConnectedComponent.argTypes = argTypes; diff --git a/src/plugins/kibana_react/public/table_list_view/table_list_view.test.tsx b/packages/content-management/table_list/src/table_list_view.test.tsx similarity index 53% rename from src/plugins/kibana_react/public/table_list_view/table_list_view.test.tsx rename to packages/content-management/table_list/src/table_list_view.test.tsx index 0c4d935f524d0..d5c0fda746bfe 100644 --- a/src/plugins/kibana_react/public/table_list_view/table_list_view.test.tsx +++ b/packages/content-management/table_list/src/table_list_view.test.tsx @@ -7,13 +7,15 @@ */ import { EuiEmptyPrompt } from '@elastic/eui'; -import { shallowWithIntl, registerTestBed, TestBed } from '@kbn/test-jest-helpers'; -import { ToastsStart } from '@kbn/core/public'; -import React from 'react'; +import { registerTestBed, TestBed } from '@kbn/test-jest-helpers'; +import React, { useEffect } from 'react'; import moment, { Moment } from 'moment'; import { act } from 'react-dom/test-utils'; -import { themeServiceMock, applicationServiceMock } from '@kbn/core/public/mocks'; -import { TableListView, TableListViewProps } from './table_list_view'; + +import { WithServices } from './__jest__'; +import { TableListView, Props as TableListViewProps } from './table_list_view'; + +const mockUseEffect = useEffect; jest.mock('lodash', () => { const original = jest.requireActual('lodash'); @@ -24,20 +26,23 @@ jest.mock('lodash', () => { }; }); -const requiredProps: TableListViewProps> = { +jest.mock('react-use/lib/useDebounce', () => { + return (cb: () => void, ms: number, deps: any[]) => { + mockUseEffect(() => { + cb(); + }, deps); + }; +}); + +const requiredProps: TableListViewProps = { entityName: 'test', entityNamePlural: 'tests', listingLimit: 500, initialFilter: '', initialPageSize: 20, - tableColumns: [], tableListTitle: 'test title', - rowHeader: 'name', - tableCaption: 'test caption', - toastNotifications: {} as ToastsStart, - findItems: jest.fn(() => Promise.resolve({ total: 0, hits: [] })), - theme: themeServiceMock.createStartContract(), - application: applicationServiceMock.createStartContract(), + findItems: jest.fn().mockResolvedValue({ total: 0, hits: [] }), + getDetailViewLink: () => 'http://elastic.co', }; describe('TableListView', () => { @@ -49,105 +54,92 @@ describe('TableListView', () => { jest.useRealTimers(); }); + const setup = registerTestBed( + WithServices(TableListView), + { + defaultProps: { ...requiredProps }, + memoryRouter: { wrapComponent: false }, + } + ); + test('render default empty prompt', async () => { - const component = shallowWithIntl(); + let testBed: TestBed; - // Using setState to check the final render while sidestepping the debounced promise management - component.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, + await act(async () => { + testBed = await setup(); }); - expect(component).toMatchSnapshot(); + const { component, exists } = testBed!; + component.update(); + + expect(component.find(EuiEmptyPrompt).length).toBe(1); + expect(exists('newItemButton')).toBe(false); }); // avoid trapping users in empty prompt that can not create new items test('render default empty prompt with create action when createItem supplied', async () => { - const component = shallowWithIntl( {}} />); + let testBed: TestBed; - // Using setState to check the final render while sidestepping the debounced promise management - component.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, + await act(async () => { + testBed = await setup({ createItem: () => undefined }); }); - expect(component).toMatchSnapshot(); - }); - - test('render custom empty prompt', () => { - const component = shallowWithIntl( - } /> - ); - - // Using setState to check the final render while sidestepping the debounced promise management - component.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, - }); + const { component, exists } = testBed!; + component.update(); - expect(component).toMatchSnapshot(); + expect(component.find(EuiEmptyPrompt).length).toBe(1); + expect(exists('newItemButton')).toBe(true); }); - test('render list view', () => { - const component = shallowWithIntl(); + test('render custom empty prompt', async () => { + let testBed: TestBed; + + const CustomEmptyPrompt = () => { + return Table empty} />; + }; - // Using setState to check the final render while sidestepping the debounced promise management - component.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, - items: [{}], + await act(async () => { + testBed = await setup({ emptyPrompt: }); }); - expect(component).toMatchSnapshot(); + const { component, exists } = testBed!; + component.update(); + + expect(exists('custom-empty-prompt')).toBe(true); }); describe('default columns', () => { - let testBed: TestBed; - - const tableColumns = [ - { - field: 'title', - name: 'Title', - sortable: true, - }, - { - field: 'description', - name: 'Description', - sortable: true, - }, - ]; - const twoDaysAgo = new Date(new Date().setDate(new Date().getDate() - 2)); + const twoDaysAgoToString = new Date(twoDaysAgo.getTime()).toDateString(); const yesterday = new Date(new Date().setDate(new Date().getDate() - 1)); - + const yesterdayToString = new Date(yesterday.getTime()).toDateString(); const hits = [ { - title: 'Item 1', - description: 'Item 1 description', + id: '123', updatedAt: twoDaysAgo, + attributes: { + title: 'Item 1', + description: 'Item 1 description', + }, }, { - title: 'Item 2', - description: 'Item 2 description', + id: '456', // This is the latest updated and should come first in the table updatedAt: yesterday, + attributes: { + title: 'Item 2', + description: 'Item 2 description', + }, }, ]; - const findItems = jest.fn(() => Promise.resolve({ total: hits.length, hits })); - - const defaultProps: TableListViewProps> = { - ...requiredProps, - tableColumns, - findItems, - createItem: () => undefined, - }; - - const setup = registerTestBed(TableListView, { defaultProps }); - test('should add a "Last updated" column if "updatedAt" is provided', async () => { + let testBed: TestBed; + await act(async () => { - testBed = await setup(); + testBed = await setup({ + findItems: jest.fn().mockResolvedValue({ total: hits.length, hits }), + }); }); const { component, table } = testBed!; @@ -156,33 +148,33 @@ describe('TableListView', () => { const { tableCellsValues } = table.getMetaData('itemsInMemTable'); expect(tableCellsValues).toEqual([ - ['Item 2', 'Item 2 description', 'yesterday'], // Comes first as it is the latest updated - ['Item 1', 'Item 1 description', '2 days ago'], + ['Item 2', 'Item 2 description', yesterdayToString], // Comes first as it is the latest updated + ['Item 1', 'Item 1 description', twoDaysAgoToString], ]); }); test('should not display relative time for items updated more than 7 days ago', async () => { + let testBed: TestBed; + const updatedAtValues: Moment[] = []; - const updatedHits = hits.map(({ title, description }, i) => { + const updatedHits = hits.map(({ id, attributes }, i) => { const updatedAt = new Date(new Date().setDate(new Date().getDate() - (7 + i))); - updatedAtValues[i] = moment(updatedAt); + updatedAtValues.push(moment(updatedAt)); return { - title, - description, + id, updatedAt, + attributes, }; }); await act(async () => { testBed = await setup({ - findItems: jest.fn(() => - Promise.resolve({ - total: updatedHits.length, - hits: updatedHits, - }) - ), + findItems: jest.fn().mockResolvedValue({ + total: updatedHits.length, + hits: updatedHits, + }), }); }); @@ -192,21 +184,22 @@ describe('TableListView', () => { const { tableCellsValues } = table.getMetaData('itemsInMemTable'); expect(tableCellsValues).toEqual([ - // Renders the datetime with this format: "05/10/2022 @ 2:34 PM" + // Renders the datetime with this format: "July 28, 2022" ['Item 1', 'Item 1 description', updatedAtValues[0].format('LL')], ['Item 2', 'Item 2 description', updatedAtValues[1].format('LL')], ]); }); test('should not add a "Last updated" column if no "updatedAt" is provided', async () => { + let testBed: TestBed; + await act(async () => { testBed = await setup({ - findItems: jest.fn(() => - Promise.resolve({ - total: hits.length, - hits: hits.map(({ title, description }) => ({ title, description })), - }) - ), + findItems: jest.fn().mockResolvedValue({ + total: hits.length, + // Not including the "updatedAt" metadata + hits: hits.map(({ attributes }) => ({ attributes })), + }), }); }); @@ -222,14 +215,17 @@ describe('TableListView', () => { }); test('should not display anything if there is no updatedAt metadata for an item', async () => { + let testBed: TestBed; + await act(async () => { testBed = await setup({ - findItems: jest.fn(() => - Promise.resolve({ - total: hits.length + 1, - hits: [...hits, { title: 'Item 3', description: 'Item 3 description' }], - }) - ), + findItems: jest.fn().mockResolvedValue({ + total: hits.length + 1, + hits: [ + ...hits, + { id: '789', attributes: { title: 'Item 3', description: 'Item 3 description' } }, + ], + }), }); }); @@ -239,46 +235,33 @@ describe('TableListView', () => { const { tableCellsValues } = table.getMetaData('itemsInMemTable'); expect(tableCellsValues).toEqual([ - ['Item 2', 'Item 2 description', 'yesterday'], - ['Item 1', 'Item 1 description', '2 days ago'], + ['Item 2', 'Item 2 description', yesterdayToString], + ['Item 1', 'Item 1 description', twoDaysAgoToString], ['Item 3', 'Item 3 description', '-'], // Empty column as no updatedAt provided ]); }); }); describe('pagination', () => { - let testBed: TestBed; - - const tableColumns = [ - { - field: 'title', - name: 'Title', - sortable: true, - }, - ]; - const initialPageSize = 20; const totalItems = 30; - const hits = new Array(totalItems).fill(' ').map((_, i) => ({ - title: `Item ${i < 10 ? `0${i}` : i}`, // prefix with "0" for correct A-Z sorting + const hits = [...Array(totalItems)].map((_, i) => ({ + attributes: { + title: `Item ${i < 10 ? `0${i}` : i}`, // prefix with "0" for correct A-Z sorting + }, })); - const findItems = jest.fn().mockResolvedValue({ total: hits.length, hits }); - - const defaultProps: TableListViewProps> = { - ...requiredProps, + const props = { initialPageSize, - tableColumns, - findItems, - createItem: () => undefined, + findItems: jest.fn().mockResolvedValue({ total: hits.length, hits }), }; - const setup = registerTestBed(TableListView, { defaultProps }); - test('should limit the number of row to the `initialPageSize` provided', async () => { + let testBed: TestBed; + await act(async () => { - testBed = await setup(); + testBed = await setup(props); }); const { component, table } = testBed!; @@ -295,8 +278,10 @@ describe('TableListView', () => { }); test('should navigate to page 2', async () => { + let testBed: TestBed; + await act(async () => { - testBed = await setup(); + testBed = await setup(props); }); const { component, table } = testBed!; diff --git a/packages/content-management/table_list/src/table_list_view.tsx b/packages/content-management/table_list/src/table_list_view.tsx new file mode 100644 index 0000000000000..afa41885052e1 --- /dev/null +++ b/packages/content-management/table_list/src/table_list_view.tsx @@ -0,0 +1,526 @@ +/* + * 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 React, { + useReducer, + useCallback, + useEffect, + useRef, + useMemo, + ReactNode, + MouseEvent, +} from 'react'; +import useDebounce from 'react-use/lib/useDebounce'; +import { + EuiBasicTableColumn, + EuiButton, + EuiCallOut, + EuiEmptyPrompt, + Pagination, + Direction, + EuiSpacer, + EuiTableActionsColumnType, + EuiLink, +} from '@elastic/eui'; +import { keyBy, uniq, get } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; + +import { Table, ConfirmDeleteModal, ListingLimitWarning } from './components'; +import { useServices } from './services'; +import type { SavedObjectsReference, SavedObjectsFindOptionsReference } from './services'; +import type { Action } from './actions'; +import { getReducer } from './reducer'; + +export interface Props { + entityName: string; + entityNamePlural: string; + tableListTitle: string; + listingLimit: number; + initialFilter: string; + initialPageSize: number; + emptyPrompt?: JSX.Element; + /** Add an additional custom column */ + customTableColumn?: EuiBasicTableColumn; + /** + * Id of the heading element describing the table. This id will be used as `aria-labelledby` of the wrapper element. + * If the table is not empty, this component renders its own h1 element using the same id. + */ + headingId?: string; + /** An optional id for the listing. Used to generate unique data-test-subj. Default: "userContent" */ + id?: string; + children?: ReactNode | undefined; + findItems( + searchQuery: string, + references?: SavedObjectsFindOptionsReference[] + ): Promise<{ total: number; hits: T[] }>; + /** Handler to set the item title "href" value. If it returns undefined there won't be a link for this item. */ + getDetailViewLink?: (entity: T) => string | undefined; + /** Handler to execute when clicking the item title */ + onClickTitle?: (item: T) => void; + createItem?(): void; + deleteItems?(items: T[]): Promise; + editItem?(item: T): void; +} + +export interface State { + items: T[]; + hasInitialFetchReturned: boolean; + isFetchingItems: boolean; + isDeletingItems: boolean; + showDeleteModal: boolean; + fetchError?: IHttpFetchError; + searchQuery: string; + selectedIds: string[]; + totalItems: number; + tableColumns: Array>; + pagination: Pagination; + tableSort?: { + field: keyof T; + direction: Direction; + }; +} + +export interface UserContentCommonSchema { + id: string; + updatedAt: string; + references: SavedObjectsReference[]; + type: string; + attributes: { + title: string; + description?: string; + }; +} + +function TableListViewComp({ + tableListTitle, + entityName, + entityNamePlural, + initialFilter: initialQuery, + headingId, + initialPageSize, + listingLimit, + customTableColumn, + emptyPrompt, + findItems, + createItem, + editItem, + deleteItems, + getDetailViewLink, + onClickTitle, + id = 'userContent', + children, +}: Props) { + if (!getDetailViewLink && !onClickTitle) { + throw new Error( + `[TableListView] One o["getDetailViewLink" or "onClickTitle"] prop must be provided.` + ); + } + + if (getDetailViewLink && onClickTitle) { + throw new Error( + `[TableListView] Either "getDetailViewLink" or "onClickTitle" can be provided. Not both.` + ); + } + + const isMounted = useRef(false); + const fetchIdx = useRef(0); + + const { + canEditAdvancedSettings, + getListingLimitSettingsUrl, + getTagsColumnDefinition, + searchQueryParser, + notifyError, + DateFormatterComp, + navigateToUrl, + currentAppId$, + } = useServices(); + + const reducer = useMemo(() => { + return getReducer({ DateFormatterComp }); + }, [DateFormatterComp]); + + const redirectAppLinksCoreStart = useMemo( + () => ({ + application: { + navigateToUrl, + currentAppId$, + }, + }), + [navigateToUrl, currentAppId$] + ); + + const [state, dispatch] = useReducer<(state: State, action: Action) => State>(reducer, { + items: [], + totalItems: 0, + hasInitialFetchReturned: false, + isFetchingItems: false, + isDeletingItems: false, + showDeleteModal: false, + selectedIds: [], + tableColumns: [ + { + field: 'attributes.title', + name: i18n.translate('contentManagement.tableList.titleColumnName', { + defaultMessage: 'Title', + }), + sortable: true, + render: (field: keyof T, record: T) => { + // The validation is handled at the top of the component + const href = getDetailViewLink ? getDetailViewLink(record) : undefined; + + if (!href && !onClickTitle) { + // This item is not clickable + return {record.attributes.title}; + } + + return ( + + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} + { + e.preventDefault(); + onClickTitle(record); + } + : undefined + } + data-test-subj={`${id}ListingTitleLink-${record.attributes.title + .split(' ') + .join('-')}`} + > + {record.attributes.title} + + + ); + }, + }, + { + field: 'attributes.description', + name: i18n.translate('contentManagement.tableList.descriptionColumnName', { + defaultMessage: 'Description', + }), + }, + ], + searchQuery: initialQuery, + pagination: { + pageIndex: 0, + totalItemCount: 0, + pageSize: initialPageSize, + pageSizeOptions: uniq([10, 20, 50, initialPageSize]).sort(), + }, + }); + + const { + searchQuery, + hasInitialFetchReturned, + isFetchingItems, + items, + fetchError, + showDeleteModal, + isDeletingItems, + selectedIds, + totalItems, + tableColumns: stateTableColumns, + pagination, + tableSort, + } = state; + const hasNoItems = !isFetchingItems && items.length === 0 && !searchQuery; + const pageDataTestSubject = `${entityName}LandingPage`; + const showFetchError = Boolean(fetchError); + const showLimitError = !showFetchError && totalItems > listingLimit; + + const tableColumns = useMemo(() => { + const columns = stateTableColumns.slice(); + + if (customTableColumn) { + columns.push(customTableColumn); + } + + const tagsColumnDef = getTagsColumnDefinition ? getTagsColumnDefinition() : undefined; + if (tagsColumnDef) { + columns.push(tagsColumnDef); + } + + // Add "Actions" column + if (editItem) { + const actions: EuiTableActionsColumnType['actions'] = [ + { + name: (item) => { + return i18n.translate('contentManagement.tableList.listing.table.editActionName', { + defaultMessage: 'Edit {itemDescription}', + values: { + itemDescription: get(item, 'attributes.title'), + }, + }); + }, + description: i18n.translate( + 'contentManagement.tableList.listing.table.editActionDescription', + { + defaultMessage: 'Edit', + } + ), + icon: 'pencil', + type: 'icon', + enabled: (v) => !(v as unknown as { error: string })?.error, + onClick: editItem, + }, + ]; + + columns.push({ + name: i18n.translate('contentManagement.tableList.listing.table.actionTitle', { + defaultMessage: 'Actions', + }), + width: '100px', + actions, + }); + } + + return columns; + }, [stateTableColumns, customTableColumn, getTagsColumnDefinition, editItem]); + + const itemsById = useMemo(() => { + return keyBy(items, 'id'); + }, [items]); + + const selectedItems = useMemo(() => { + return selectedIds.map((selectedId) => itemsById[selectedId]); + }, [selectedIds, itemsById]); + + // ------------ + // Callbacks + // ------------ + const fetchItems = useCallback(async () => { + dispatch({ type: 'onFetchItems' }); + + try { + const idx = ++fetchIdx.current; + + const { searchQuery: searchQueryParsed, references } = searchQueryParser + ? searchQueryParser(searchQuery) + : { searchQuery, references: undefined }; + + const response = await findItems(searchQueryParsed, references); + + if (!isMounted.current) { + return; + } + + if (idx === fetchIdx.current) { + dispatch({ + type: 'onFetchItemsSuccess', + data: { + response, + }, + }); + } + } catch (err) { + dispatch({ + type: 'onFetchItemsError', + data: err, + }); + } + }, [searchQueryParser, searchQuery, findItems]); + + const deleteSelectedItems = useCallback(async () => { + if (isDeletingItems) { + return; + } + + dispatch({ type: 'onDeleteItems' }); + + try { + await deleteItems!(selectedItems); + } catch (error) { + notifyError( + , + error + ); + } + + fetchItems(); + + dispatch({ type: 'onItemsDeleted' }); + }, [deleteItems, entityName, fetchItems, isDeletingItems, notifyError, selectedItems]); + + const renderCreateButton = useCallback(() => { + if (createItem) { + return ( + + + + ); + } + }, [createItem, entityName]); + + const renderNoItemsMessage = useCallback(() => { + if (emptyPrompt) { + return emptyPrompt; + } else { + return ( + + { + + } + + } + actions={renderCreateButton()} + /> + ); + } + }, [emptyPrompt, entityNamePlural, renderCreateButton]); + + const renderFetchError = useCallback(() => { + return ( + + + } + color="danger" + iconType="alert" + > +

+ +

+
+ +
+ ); + }, [entityName, fetchError]); + + // ------------ + // Effects + // ------------ + useDebounce(fetchItems, 300, [fetchItems]); + + useEffect(() => { + isMounted.current = true; + + return () => { + isMounted.current = false; + }; + }, []); + + // ------------ + // Render + // ------------ + if (!hasInitialFetchReturned) { + return null; + } + + if (!fetchError && hasNoItems) { + return ( + + + {renderNoItemsMessage()} + + + ); + } + + return ( + + {tableListTitle}} + rightSideItems={[renderCreateButton() ?? ]} + data-test-subj="top-nav" + /> + + {/* Any children passed to the component */} + {children} + + {/* Too many items error */} + {showLimitError && ( + + )} + + {/* Error while fetching items */} + {showFetchError && renderFetchError()} + + {/* Table of items */} + + dispatch={dispatch} + items={items} + isFetchingItems={isFetchingItems} + searchQuery={searchQuery} + tableColumns={tableColumns} + tableSort={tableSort} + pagination={pagination} + selectedIds={selectedIds} + entityName={entityName} + entityNamePlural={entityNamePlural} + deleteItems={deleteItems} + tableCaption={tableListTitle} + /> + + {/* Delete modal */} + {showDeleteModal && ( + + isDeletingItems={isDeletingItems} + entityName={entityName} + entityNamePlural={entityNamePlural} + items={selectedItems} + onConfirm={deleteSelectedItems} + onCancel={() => dispatch({ type: 'onCancelDeleteItems' })} + /> + )} + + + ); +} + +const TableListView = React.memo(TableListViewComp) as typeof TableListViewComp; + +export { TableListView }; + +// eslint-disable-next-line import/no-default-export +export default TableListView; diff --git a/packages/content-management/table_list/tsconfig.json b/packages/content-management/table_list/tsconfig.json new file mode 100644 index 0000000000000..f9da39a3d7eb9 --- /dev/null +++ b/packages/content-management/table_list/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "stripInternal": false, + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types", + "@kbn/ambient-storybook-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ] +} diff --git a/packages/kbn-bazel-packages/src/bazel_package_dirs.js b/packages/kbn-bazel-packages/src/bazel_package_dirs.js index 7e3f728a21ca7..dbb8826bcd733 100644 --- a/packages/kbn-bazel-packages/src/bazel_package_dirs.js +++ b/packages/kbn-bazel-packages/src/bazel_package_dirs.js @@ -26,6 +26,7 @@ const BAZEL_PACKAGE_DIRS = [ 'packages/analytics/shippers/elastic_v3', 'packages/core/*', 'packages/home', + 'packages/content-management', 'x-pack/packages/ml', ]; diff --git a/packages/kbn-test-jest-helpers/src/testbed/testbed.ts b/packages/kbn-test-jest-helpers/src/testbed/testbed.ts index ddd574ace64b8..a05133b35f581 100644 --- a/packages/kbn-test-jest-helpers/src/testbed/testbed.ts +++ b/packages/kbn-test-jest-helpers/src/testbed/testbed.ts @@ -55,18 +55,18 @@ const defaultConfig: TestBedConfig = { }); ``` */ -export function registerTestBed( +export function registerTestBed( Component: ComponentType, config: AsyncTestBedConfig -): AsyncSetupFunc; -export function registerTestBed( +): AsyncSetupFunc>; +export function registerTestBed( Component: ComponentType, config?: TestBedConfig -): SyncSetupFunc; -export function registerTestBed( +): SyncSetupFunc>; +export function registerTestBed( Component: ComponentType, config?: AsyncTestBedConfig | TestBedConfig -): SetupFunc { +): SetupFunc> { const { defaultProps = defaultConfig.defaultProps, memoryRouter = defaultConfig.memoryRouter!, @@ -263,7 +263,7 @@ export function registerTestBed( .slice(1) // we remove the first row as it is the table header .map((row) => ({ reactWrapper: row, - columns: row.find('td').map((col) => ({ + columns: row.find('.euiTableCellContent').map((col) => ({ reactWrapper: col, // We can't access the td value with col.text() because // eui adds an extra div in td on mobile => (.euiTableRowCell__mobileHeader) diff --git a/packages/kbn-test-jest-helpers/src/testbed/types.ts b/packages/kbn-test-jest-helpers/src/testbed/types.ts index 15996646ec80a..6390be14be00e 100644 --- a/packages/kbn-test-jest-helpers/src/testbed/types.ts +++ b/packages/kbn-test-jest-helpers/src/testbed/types.ts @@ -10,9 +10,9 @@ import { Store } from 'redux'; import { ReactWrapper as GenericReactWrapper } from 'enzyme'; import { LocationDescriptor } from 'history'; -export type AsyncSetupFunc = (props?: any) => Promise>; -export type SyncSetupFunc = (props?: any) => TestBed; -export type SetupFunc = (props?: any) => TestBed | Promise>; +export type AsyncSetupFunc = (props?: P) => Promise>; +export type SyncSetupFunc = (props?: P) => TestBed; +export type SetupFunc = (props?: P) => TestBed | Promise>; export type ReactWrapper = GenericReactWrapper; export interface EuiTableMetaData { diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 43afb75e8265f..1705c9ac2ec9c 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -14,6 +14,7 @@ export const storybookAliases = { cloud: 'x-pack/plugins/cloud/.storybook', coloring: 'packages/kbn-coloring/.storybook', chart_icons: 'packages/kbn-chart-icons/.storybook', + content_management: 'packages/content-management/.storybook', controls: 'src/plugins/controls/storybook', custom_integrations: 'src/plugins/custom_integrations/storybook', dashboard_enhanced: 'x-pack/plugins/dashboard_enhanced/.storybook', diff --git a/src/plugins/dashboard/public/application/dashboard_router.tsx b/src/plugins/dashboard/public/application/dashboard_router.tsx index cc683ba63149c..9927f4c43c1bf 100644 --- a/src/plugins/dashboard/public/application/dashboard_router.tsx +++ b/src/plugins/dashboard/public/application/dashboard_router.tsx @@ -10,11 +10,15 @@ import './index.scss'; import React from 'react'; import { History } from 'history'; import { Provider } from 'react-redux'; +import { I18nProvider, FormattedRelative } from '@kbn/i18n-react'; import { parse, ParsedQuery } from 'query-string'; import { render, unmountComponentAtNode } from 'react-dom'; import { Switch, Route, RouteComponentProps, HashRouter, Redirect } from 'react-router-dom'; - -import { I18nProvider } from '@kbn/i18n-react'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { + TableListViewKibanaDependencies, + TableListViewKibanaProvider, +} from '@kbn/content-management-table-list'; import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import { createKbnUrlStateStorage, withNotifyOnErrors } from '@kbn/kibana-utils-plugin/public'; import { AppMountParameters, CoreSetup } from '@kbn/core/public'; @@ -35,6 +39,7 @@ import { } from '../types'; import { DashboardStart, DashboardStartDependencies } from '../plugin'; import { pluginServices } from '../services/plugin_services'; +import { DashboardApplicationService } from '../services/application/types'; export const dashboardUrlParams = { showTopMenu: 'show-top-menu', @@ -50,15 +55,24 @@ export interface DashboardMountProps { mountContext: DashboardMountContextProps; } +// because the type of `application.capabilities.advancedSettings` is so generic, the provider +// requiring the `save` key to be part of it is causing type issues - so, creating a custom type +type TableListViewApplicationService = DashboardApplicationService & { + capabilities: { advancedSettings: { save: boolean } }; +}; + export async function mountApp({ core, element, appUnMounted, mountContext }: DashboardMountProps) { const [, , dashboardStart] = await core.getStartServices(); // TODO: Remove as part of https://github.com/elastic/kibana/pull/138774 const { DashboardMountContext } = await import('./hooks/dashboard_mount_context'); const { + application, chrome: { setBadge, docTitle }, dashboardCapabilities: { showWriteControls }, data: dataStart, embeddable, + notifications, + savedObjectsTagging, settings: { uiSettings }, } = pluginServices.getServices(); @@ -164,26 +178,42 @@ export async function mountApp({ core, element, appUnMounted, mountContext }: Da - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap index 064daca6db30b..6fac25e51ddf1 100644 --- a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap +++ b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap @@ -21,30 +21,7 @@ exports[`after fetch When given a title that matches multiple dashboards, filter redirectTo={[MockFunction]} title="search by title" > - + + /> + `; @@ -162,30 +114,7 @@ exports[`after fetch initialFilter 1`] = ` } redirectTo={[MockFunction]} > - + + /> + `; @@ -302,30 +206,7 @@ exports[`after fetch renders all table rows 1`] = ` } redirectTo={[MockFunction]} > - + + /> + `; @@ -442,30 +298,7 @@ exports[`after fetch renders call to action when no dashboards exist 1`] = ` } redirectTo={[MockFunction]} > - + + /> + `; @@ -582,30 +390,7 @@ exports[`after fetch renders call to action with continue when no dashboards exi } redirectTo={[MockFunction]} > - + + /> + `; @@ -733,30 +492,7 @@ exports[`after fetch showWriteControls 1`] = ` } redirectTo={[MockFunction]} > - + + /> + `; diff --git a/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx b/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx index d690c91574eef..dae5308cc0234 100644 --- a/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx +++ b/src/plugins/dashboard/public/application/listing/dashboard_listing.test.tsx @@ -9,10 +9,14 @@ import React from 'react'; import { mount } from 'enzyme'; -import { I18nProvider } from '@kbn/i18n-react'; +import { I18nProvider, FormattedRelative } from '@kbn/i18n-react'; import { SimpleSavedObject } from '@kbn/core/public'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; +import { + TableListViewKibanaDependencies, + TableListViewKibanaProvider, +} from '@kbn/content-management-table-list'; import { DashboardAppServices } from '../../types'; import { DashboardListing, DashboardListingProps } from './dashboard_listing'; @@ -39,13 +43,28 @@ function mountWith({ const wrappingComponent: React.FC<{ children: React.ReactNode; }> = ({ children }) => { - const DashboardServicesProvider = pluginServices.getContextProvider(); + const { application, notifications, savedObjectsTagging } = pluginServices.getServices(); return ( {/* Can't get rid of KibanaContextProvider here yet because of 'call to action when no dashboards exist' tests below */} - {children} + () => () => undefined} + > + {children} + ); diff --git a/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx b/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx index 0d72523e913e2..40753c556a56a 100644 --- a/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx +++ b/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx @@ -11,18 +11,18 @@ import { EuiLink, EuiButton, EuiEmptyPrompt, - EuiBasicTableColumn, EuiFlexGroup, EuiFlexItem, EuiButtonEmpty, } from '@elastic/eui'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import type { ApplicationStart, SavedObjectsFindOptionsReference } from '@kbn/core/public'; +import type { SavedObjectsFindOptionsReference } from '@kbn/core/public'; import useMount from 'react-use/lib/useMount'; -import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import type { SavedObjectReference } from '@kbn/core/types'; +import { useExecutionContext, useKibana } from '@kbn/kibana-react-plugin/public'; import { syncGlobalQueryStateWithUrl } from '@kbn/data-plugin/public'; -import { TableListView, useKibana } from '@kbn/kibana-react-plugin/public'; import type { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; +import { TableListView, type UserContentCommonSchema } from '@kbn/content-management-table-list'; import { attemptLoadDashboardByTitle } from '../lib'; import { DashboardAppServices, DashboardRedirect } from '../../types'; @@ -43,6 +43,30 @@ import { DASHBOARD_PANELS_UNSAVED_ID } from '../../services/dashboard_session_st const SAVED_OBJECTS_LIMIT_SETTING = 'savedObjects:listingLimit'; const SAVED_OBJECTS_PER_PAGE_SETTING = 'savedObjects:perPage'; +interface DashboardSavedObjectUserContent extends UserContentCommonSchema { + attributes: { + title: string; + description?: string; + timeRestore: boolean; + }; +} + +const toTableListViewSavedObject = ( + savedObject: Record +): DashboardSavedObjectUserContent => { + return { + id: savedObject.id as string, + updatedAt: savedObject.updatedAt! as string, + references: savedObject.references as SavedObjectReference[], + type: 'dashboard', + attributes: { + title: (savedObject.title as string) ?? '', + description: savedObject.description as string, + timeRestore: savedObject.timeRestore as boolean, + }, + }; +}; + export interface DashboardListingProps { kbnUrlStateStorage: IKbnUrlStateStorage; redirectTo: DashboardRedirect; @@ -67,10 +91,8 @@ export const DashboardListing = ({ dashboardCapabilities: { showWriteControls }, dashboardSessionStorage, data: { query }, - notifications: { toasts }, savedObjects: { client }, - savedObjectsTagging: { getSearchBarFilter, parseSearchQuery }, - settings: { uiSettings, theme }, + settings: { uiSettings }, } = pluginServices.getServices(); const [showNoDataPage, setShowNoDataPage] = useState(false); @@ -122,11 +144,6 @@ export const DashboardListing = ({ const initialPageSize = uiSettings.get(SAVED_OBJECTS_PER_PAGE_SETTING); const defaultFilter = title ? `"${title}"` : ''; - const tableColumns = useMemo( - () => getTableColumns(kbnUrlStateStorage, uiSettings.get('state:storeInSessionStorage')), - [uiSettings, kbnUrlStateStorage] - ); - const createItem = useCallback(() => { if (!dashboardSessionStorage.dashboardHasUnsavedEdits()) { redirectTo({ destination: 'dashboard' }); @@ -244,23 +261,20 @@ export const DashboardListing = ({ ]); const fetchItems = useCallback( - (filter: string) => { - let searchTerm = filter; - let references: SavedObjectsFindOptionsReference[] | undefined; - if (parseSearchQuery) { - const parsed = parseSearchQuery(filter, { - useName: true, + (searchTerm: string, references?: SavedObjectsFindOptionsReference[]) => { + return savedDashboards + .find(searchTerm, { + hasReference: references, + size: listingLimit, + }) + .then(({ total, hits }) => { + return { + total, + hits: hits.map(toTableListViewSavedObject), + }; }); - searchTerm = parsed.searchTerm; - references = parsed.tagReferences; - } - - return savedDashboards.find(searchTerm, { - size: listingLimit, - hasReference: references, - }); }, - [listingLimit, savedDashboards, parseSearchQuery] + [listingLimit, savedDashboards] ); const deleteItems = useCallback( @@ -278,42 +292,32 @@ export const DashboardListing = ({ [redirectTo] ); - const searchFilters = useMemo(() => { - const searchBarFilter = getSearchBarFilter?.({ useName: true }); - return searchBarFilter ? [searchBarFilter] : []; - }, [getSearchBarFilter]); - - const { getEntityName, getTableCaption, getTableListTitle, getEntityNamePlural } = - dashboardListingTable; + const { getEntityName, getTableListTitle, getEntityNamePlural } = dashboardListingTable; return ( <> {showNoDataPage && ( setShowNoDataPage(false)} /> )} {!showNoDataPage && ( - createItem={!showWriteControls ? undefined : createItem} deleteItems={!showWriteControls ? undefined : deleteItems} initialPageSize={initialPageSize} editItem={!showWriteControls ? undefined : editItem} initialFilter={initialFilter ?? defaultFilter} - toastNotifications={toasts} headingId="dashboardListingHeading" findItems={fetchItems} - rowHeader="title" entityNamePlural={getEntityNamePlural()} tableListTitle={getTableListTitle()} - tableCaption={getTableCaption()} entityName={getEntityName()} {...{ emptyPrompt, - searchFilters, listingLimit, - tableColumns, }} - theme={theme} - // The below type conversion is necessary until the TableListView component allows partial services - application={application as unknown as ApplicationStart} + id="dashboard" + getDetailViewLink={({ id, attributes: { timeRestore } }) => + getDashboardListItemLink(kbnUrlStateStorage, id, timeRestore) + } > ); }; - -const getTableColumns = (kbnUrlStateStorage: IKbnUrlStateStorage, useHash: boolean) => { - const { - savedObjectsTagging: { getTableColumnDefinition }, - } = pluginServices.getServices(); - const tableColumnDefinition = getTableColumnDefinition?.(); - - return [ - { - field: 'title', - name: dashboardListingTable.getTitleColumnName(), - sortable: true, - render: (field: string, record: { id: string; title: string; timeRestore: boolean }) => ( - - {field} - - ), - }, - { - field: 'description', - name: dashboardListingTable.getDescriptionColumnName(), - render: (field: string, record: { description: string }) => {record.description}, - sortable: true, - }, - ...(tableColumnDefinition ? [tableColumnDefinition] : []), - ] as unknown as Array>>; -}; diff --git a/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts b/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts index 31ebeb9e93c9b..f44b4036dfcfd 100644 --- a/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts +++ b/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.test.ts @@ -23,12 +23,12 @@ kbnUrlStateStorage.set(GLOBAL_STATE_STORAGE_KEY, { time: { from: 'now-7d', to: ' describe('listing dashboard link', () => { test('creates a link to a dashboard without the timerange query if time is saved on the dashboard', async () => { - const url = getDashboardListItemLink(kbnUrlStateStorage, false, DASHBOARD_ID, true); + const url = getDashboardListItemLink(kbnUrlStateStorage, DASHBOARD_ID, true); expect(url).toMatchInlineSnapshot(`"http://localhost/#/?_g=()"`); }); test('creates a link to a dashboard with the timerange query if time is not saved on the dashboard', async () => { - const url = getDashboardListItemLink(kbnUrlStateStorage, false, DASHBOARD_ID, false); + const url = getDashboardListItemLink(kbnUrlStateStorage, DASHBOARD_ID, false); expect(url).toMatchInlineSnapshot(`"http://localhost/#/?_g=(time:(from:now-7d,to:now))"`); }); }); @@ -44,7 +44,7 @@ describe('when global time changes', () => { }); test('propagates the correct time on the query', async () => { - const url = getDashboardListItemLink(kbnUrlStateStorage, false, DASHBOARD_ID, false); + const url = getDashboardListItemLink(kbnUrlStateStorage, DASHBOARD_ID, false); expect(url).toMatchInlineSnapshot( `"http://localhost/#/?_g=(time:(from:'2021-01-05T11:45:53.375Z',to:'2021-01-21T11:46:00.990Z'))"` ); @@ -59,7 +59,7 @@ describe('when global refreshInterval changes', () => { }); test('propagates the refreshInterval on the query', async () => { - const url = getDashboardListItemLink(kbnUrlStateStorage, false, DASHBOARD_ID, false); + const url = getDashboardListItemLink(kbnUrlStateStorage, DASHBOARD_ID, false); expect(url).toMatchInlineSnapshot( `"http://localhost/#/?_g=(refreshInterval:(pause:!f,value:300))"` ); @@ -95,7 +95,7 @@ describe('when global filters change', () => { }); test('propagates the filters on the query', async () => { - const url = getDashboardListItemLink(kbnUrlStateStorage, false, DASHBOARD_ID, false); + const url = getDashboardListItemLink(kbnUrlStateStorage, DASHBOARD_ID, false); expect(url).toMatchInlineSnapshot( `"http://localhost/#/?_g=(filters:!((meta:(alias:!n,disabled:!f,negate:!f),query:(query:q1)),('$state':(store:globalState),meta:(alias:!n,disabled:!f,negate:!f),query:(query:q1))))"` ); diff --git a/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.ts b/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.ts index 39106f12551bc..0ee6f016ad6d5 100644 --- a/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.ts +++ b/src/plugins/dashboard/public/application/listing/get_dashboard_list_item_link.ts @@ -18,13 +18,14 @@ import { pluginServices } from '../../services/plugin_services'; export const getDashboardListItemLink = ( kbnUrlStateStorage: IKbnUrlStateStorage, - useHash: boolean, id: string, timeRestore: boolean ) => { const { application: { getUrlForApp }, + settings: { uiSettings }, } = pluginServices.getServices(); + const useHash = uiSettings.get('state:storeInSessionStorage'); // use hash let url = getUrlForApp(DashboardConstants.DASHBOARDS_ID, { path: `#${createDashboardEditUrl(id)}`, diff --git a/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts b/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts index 2712c92888bf3..3ffe9dc3b70e9 100644 --- a/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts +++ b/src/plugins/dashboard/public/application/test_helpers/make_default_services.ts @@ -24,6 +24,13 @@ export function makeDefaultServices(): DashboardAppServices { id: `dashboard${i}`, title: `dashboard${i} - ${search} - title`, description: `dashboard${i} desc`, + references: [], + timeRestore: true, + type: '', + url: '', + updatedAt: '', + panelsJSON: '', + lastSavedTitle: '', }); } return Promise.resolve({ diff --git a/src/plugins/dashboard/public/dashboard_strings.ts b/src/plugins/dashboard/public/dashboard_strings.ts index 7cea0a45c0e25..5679ac28f838b 100644 --- a/src/plugins/dashboard/public/dashboard_strings.ts +++ b/src/plugins/dashboard/public/dashboard_strings.ts @@ -442,15 +442,6 @@ export const dashboardListingTable = { defaultMessage: 'dashboards', }), getTableListTitle: () => getDashboardPageTitle(), - getTableCaption: () => getDashboardPageTitle(), - getTitleColumnName: () => - i18n.translate('dashboard.listing.table.titleColumnName', { - defaultMessage: 'Title', - }), - getDescriptionColumnName: () => - i18n.translate('dashboard.listing.table.descriptionColumnName', { - defaultMessage: 'Description', - }), }; export const dashboardUnsavedListingStrings = { diff --git a/src/plugins/kibana_react/public/index.ts b/src/plugins/kibana_react/public/index.ts index 2244d3d5503e0..3311f42bff55d 100644 --- a/src/plugins/kibana_react/public/index.ts +++ b/src/plugins/kibana_react/public/index.ts @@ -41,9 +41,6 @@ export { useUiSetting, useUiSetting$ } from './ui_settings'; export { useExecutionContext } from './use_execution_context'; -export type { TableListViewProps, TableListViewState } from './table_list_view'; -export { TableListView } from './table_list_view'; - export type { ToolbarButtonProps } from './toolbar_button'; export { POSITIONS, WEIGHTS, TOOLBAR_BUTTON_SIZES, ToolbarButton } from './toolbar_button'; diff --git a/src/plugins/kibana_react/public/table_list_view/__snapshots__/table_list_view.test.tsx.snap b/src/plugins/kibana_react/public/table_list_view/__snapshots__/table_list_view.test.tsx.snap deleted file mode 100644 index 1f99e74ef97dc..0000000000000 --- a/src/plugins/kibana_react/public/table_list_view/__snapshots__/table_list_view.test.tsx.snap +++ /dev/null @@ -1,163 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`TableListView render custom empty prompt 1`] = ` - - - -`; - -exports[`TableListView render default empty prompt 1`] = ` - - - - - } - /> - -`; - -exports[`TableListView render default empty prompt with create action when createItem supplied 1`] = ` - - - - - } - title={ -

- -

- } - /> -
-`; - -exports[`TableListView render list view 1`] = ` - - test title - , - "rightSideItems": Array [ - undefined, - ], - } - } -> - - } - onChange={[Function]} - pagination={ - Object { - "pageIndex": 0, - "pageSize": 20, - "pageSizeOptions": Array [ - 10, - 20, - 50, - ], - "totalItemCount": 1, - } - } - responsive={true} - rowHeader="name" - search={ - Object { - "box": Object { - "data-test-subj": "tableListSearchBox", - "incremental": true, - }, - "defaultQuery": "", - "filters": Array [], - "onChange": [Function], - "toolsLeft": undefined, - } - } - tableCaption="test caption" - tableLayout="fixed" - /> - -`; diff --git a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx b/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx deleted file mode 100644 index bcb07cab0ae01..0000000000000 --- a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx +++ /dev/null @@ -1,686 +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 { - EuiBasicTableColumn, - EuiButton, - EuiCallOut, - EuiConfirmModal, - EuiEmptyPrompt, - EuiInMemoryTable, - Pagination, - CriteriaWithPagination, - PropertySort, - Direction, - EuiLink, - EuiSpacer, - EuiTableActionsColumnType, - SearchFilterConfig, - EuiToolTip, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage, FormattedRelative } from '@kbn/i18n-react'; -import type { IHttpFetchError } from '@kbn/core-http-browser'; -import type { ThemeServiceStart, ToastsStart, ApplicationStart } from '@kbn/core/public'; -import { debounce, keyBy, sortBy, uniq, get } from 'lodash'; -import React from 'react'; -import moment from 'moment'; -import { KibanaPageTemplate } from '../page_template'; -import { toMountPoint } from '../util'; - -export interface TableListViewProps { - createItem?(): void; - deleteItems?(items: V[]): Promise; - editItem?(item: V): void; - entityName: string; - entityNamePlural: string; - findItems(query: string): Promise<{ total: number; hits: V[] }>; - listingLimit: number; - initialFilter: string; - initialPageSize: number; - /** - * Should be an EuiEmptyPrompt (but TS doesn't support this typing) - */ - emptyPrompt?: JSX.Element; - tableColumns: Array>; - tableListTitle: string; - toastNotifications: ToastsStart; - /** - * Id of the heading element describing the table. This id will be used as `aria-labelledby` of the wrapper element. - * If the table is not empty, this component renders its own h1 element using the same id. - */ - headingId?: string; - /** - * Indicates which column should be used as the identifying cell in each row. - */ - rowHeader: string; - /** - * Describes the content of the table. If not specified, the caption will be "This table contains {itemCount} rows." - */ - tableCaption: string; - searchFilters?: SearchFilterConfig[]; - theme: ThemeServiceStart; - application: ApplicationStart; -} - -export interface TableListViewState { - items: V[]; - hasInitialFetchReturned: boolean; - hasUpdatedAtMetadata: boolean | null; - isFetchingItems: boolean; - isDeletingItems: boolean; - showDeleteModal: boolean; - showLimitError: boolean; - fetchError?: IHttpFetchError; - filter: string; - selectedIds: string[]; - totalItems: number; - pagination: Pagination; - tableSort?: { - field: keyof V; - direction: Direction; - }; -} - -// saved object client does not support sorting by title because title is only mapped as analyzed -// the legacy implementation got around this by pulling `listingLimit` items and doing client side sorting -// and not supporting server-side paging. -// This component does not try to tackle these problems (yet) and is just feature matching the legacy component -// TODO support server side sorting/paging once title and description are sortable on the server. -class TableListView extends React.Component< - TableListViewProps, - TableListViewState -> { - private _isMounted = false; - - constructor(props: TableListViewProps) { - super(props); - - this.state = { - items: [], - totalItems: 0, - hasInitialFetchReturned: false, - hasUpdatedAtMetadata: null, - isFetchingItems: false, - isDeletingItems: false, - showDeleteModal: false, - showLimitError: false, - filter: props.initialFilter, - selectedIds: [], - pagination: { - pageIndex: 0, - totalItemCount: 0, - pageSize: props.initialPageSize, - pageSizeOptions: uniq([10, 20, 50, props.initialPageSize]).sort(), - }, - }; - } - - UNSAFE_componentWillMount() { - this._isMounted = true; - } - - componentWillUnmount() { - this._isMounted = false; - this.debouncedFetch.cancel(); - } - - componentDidMount() { - this.fetchItems(); - } - - componentDidUpdate(prevProps: TableListViewProps, prevState: TableListViewState) { - if (this.state.hasUpdatedAtMetadata === null && prevState.items !== this.state.items) { - // We check if the saved object have the "updatedAt" metadata - // to render or not that column in the table - const hasUpdatedAtMetadata = Boolean( - this.state.items.find((item: { updatedAt?: string }) => Boolean(item.updatedAt)) - ); - - this.setState((prev) => { - return { - hasUpdatedAtMetadata, - tableSort: hasUpdatedAtMetadata - ? { - field: 'updatedAt' as keyof V, - direction: 'desc' as const, - } - : prev.tableSort, - pagination: { - ...prev.pagination, - totalItemCount: this.state.items.length, - }, - }; - }); - } - } - - debouncedFetch = debounce(async (filter: string) => { - try { - const response = await this.props.findItems(filter); - - if (!this._isMounted) { - return; - } - - // We need this check to handle the case where search results come back in a different - // order than they were sent out. Only load results for the most recent search. - // Also, in case filter is empty, items are being pre-sorted alphabetically. - if (filter === this.state.filter) { - this.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, - items: !filter ? sortBy(response.hits, 'title') : response.hits, - totalItems: response.total, - showLimitError: response.total > this.props.listingLimit, - }); - } - } catch (fetchError) { - this.setState({ - hasInitialFetchReturned: true, - isFetchingItems: false, - items: [], - totalItems: 0, - showLimitError: false, - fetchError, - }); - } - }, 300); - - fetchItems = () => { - this.setState( - { - isFetchingItems: true, - fetchError: undefined, - }, - this.debouncedFetch.bind(null, this.state.filter) - ); - }; - - deleteSelectedItems = async () => { - if (this.state.isDeletingItems || !this.props.deleteItems) { - return; - } - this.setState({ - isDeletingItems: true, - }); - try { - const itemsById = keyBy(this.state.items, 'id'); - await this.props.deleteItems(this.state.selectedIds.map((id) => itemsById[id])); - } catch (error) { - this.props.toastNotifications.addDanger({ - title: toMountPoint( - , - { theme$: this.props.theme.theme$ } - ), - text: `${error}`, - }); - } - this.fetchItems(); - this.setState({ - isDeletingItems: false, - selectedIds: [], - }); - this.closeDeleteModal(); - }; - - closeDeleteModal = () => { - this.setState({ showDeleteModal: false }); - }; - - openDeleteModal = () => { - this.setState({ showDeleteModal: true }); - }; - - setFilter({ queryText }: { queryText: string }) { - // If the user is searching, we want to clear the sort order so that - // results are ordered by Elasticsearch's relevance. - this.setState( - { - filter: queryText, - }, - this.fetchItems - ); - } - - hasNoItems() { - if (!this.state.isFetchingItems && this.state.items.length === 0 && !this.state.filter) { - return true; - } - - return false; - } - - renderConfirmDeleteModal() { - let deleteButton = ( - - ); - if (this.state.isDeletingItems) { - deleteButton = ( - - ); - } - - return ( - - } - buttonColor="danger" - onCancel={this.closeDeleteModal} - onConfirm={this.deleteSelectedItems} - cancelButtonText={ - - } - confirmButtonText={deleteButton} - defaultFocusedButton="cancel" - > -

- -

-
- ); - } - - renderListingLimitWarning() { - if (this.state.showLimitError) { - const canEditAdvancedSettings = this.props.application.capabilities.advancedSettings.save; - const setting = 'savedObjects:listingLimit'; - const advancedSettingsLink = this.props.application.getUrlForApp('management', { - path: `/kibana/settings?query=${setting}`, - }); - return ( - - - } - color="warning" - iconType="help" - > -

- {canEditAdvancedSettings ? ( - listingLimit, - advancedSettingsLink: ( - - - - ), - }} - /> - ) : ( - listingLimit, - }} - /> - )} -

-
- -
- ); - } - } - - renderFetchError() { - if (this.state.fetchError) { - return ( - - - } - color="danger" - iconType="alert" - > -

- -

-
- -
- ); - } - } - - renderNoItemsMessage() { - if (this.props.emptyPrompt) { - return this.props.emptyPrompt; - } else { - return ( - - { - - } - - } - actions={this.renderCreateButton()} - /> - ); - } - } - - renderToolsLeft() { - const selection = this.state.selectedIds; - - if (selection.length === 0) { - return; - } - - const onClick = () => { - this.openDeleteModal(); - }; - - return ( - - - - ); - } - - onTableChange(criteria: CriteriaWithPagination) { - this.setState((prev) => { - const tableSort = criteria.sort ?? prev.tableSort; - return { - pagination: { - ...prev.pagination, - pageIndex: criteria.page.index, - pageSize: criteria.page.size, - }, - tableSort, - }; - }); - - if (criteria.sort) { - this.setState({ tableSort: criteria.sort }); - } - } - - renderTable() { - const { searchFilters } = this.props; - - const selection = this.props.deleteItems - ? { - onSelectionChange: (obj: V[]) => { - this.setState({ - selectedIds: obj - .map((item) => (item as Record)?.id) - .filter((id): id is string => Boolean(id)), - }); - }, - } - : undefined; - - const search = { - onChange: this.setFilter.bind(this), - toolsLeft: this.renderToolsLeft(), - defaultQuery: this.state.filter, - box: { - incremental: true, - 'data-test-subj': 'tableListSearchBox', - }, - filters: searchFilters ?? [], - }; - - const noItemsMessage = ( - - ); - - return ( - - ); - } - - getTableColumns() { - const columns = this.props.tableColumns.slice(); - - // Add "Last update" column - if (this.state.hasUpdatedAtMetadata) { - const renderUpdatedAt = (dateTime?: string) => { - if (!dateTime) { - return ( - - - - - ); - } - const updatedAt = moment(dateTime); - - if (updatedAt.diff(moment(), 'days') > -7) { - return ( - - {(formattedDate: string) => ( - - {formattedDate} - - )} - - ); - } - return ( - - {updatedAt.format('LL')} - - ); - }; - - columns.push({ - field: 'updatedAt', - name: i18n.translate('kibana-react.tableListView.lastUpdatedColumnTitle', { - defaultMessage: 'Last updated', - }), - render: (field: string, record: { updatedAt?: string }) => - renderUpdatedAt(record.updatedAt), - sortable: true, - width: '150px', - }); - } - - // Add "Actions" column - if (this.props.editItem) { - const actions: EuiTableActionsColumnType['actions'] = [ - { - name: (item) => - i18n.translate('kibana-react.tableListView.listing.table.editActionName', { - defaultMessage: 'Edit {itemDescription}', - values: { - itemDescription: get(item, this.props.rowHeader), - }, - }), - description: i18n.translate( - 'kibana-react.tableListView.listing.table.editActionDescription', - { - defaultMessage: 'Edit', - } - ), - icon: 'pencil', - type: 'icon', - enabled: (v) => !(v as unknown as { error: string })?.error, - onClick: this.props.editItem, - }, - ]; - - columns.push({ - name: i18n.translate('kibana-react.tableListView.listing.table.actionTitle', { - defaultMessage: 'Actions', - }), - width: '100px', - actions, - }); - } - - return columns; - } - - renderCreateButton() { - if (this.props.createItem) { - return ( - - - - ); - } - } - - render() { - const pageDTS = `${this.props.entityName}LandingPage`; - - if (!this.state.hasInitialFetchReturned) { - return <>; - } - - if (!this.state.fetchError && this.hasNoItems()) { - return ( - - {this.renderNoItemsMessage()} - - ); - } - - return ( - {this.props.tableListTitle}, - rightSideItems: [this.renderCreateButton()], - 'data-test-subj': 'top-nav', - }} - pageBodyProps={{ - 'aria-labelledby': this.state.hasInitialFetchReturned ? this.props.headingId : undefined, - }} - > - {this.state.showDeleteModal && this.renderConfirmDeleteModal()} - {this.props.children} - {this.renderListingLimitWarning()} - {this.renderFetchError()} - {this.renderTable()} - - ); - } -} - -export { TableListView }; - -// eslint-disable-next-line import/no-default-export -export default TableListView; diff --git a/src/plugins/saved_objects/public/types.ts b/src/plugins/saved_objects/public/types.ts index 1159a02dc0c33..ce3f41e5bb623 100644 --- a/src/plugins/saved_objects/public/types.ts +++ b/src/plugins/saved_objects/public/types.ts @@ -21,10 +21,10 @@ import type { DataView } from '@kbn/data-views-plugin/common'; * @deprecated * @removeBy 8.8.0 */ -export interface SavedObject { +export interface SavedObject { _serialize: () => { attributes: SavedObjectAttributes; references: SavedObjectReference[] }; _source: Record; - applyESResp: (resp: EsResponse) => Promise; + applyESResp: (resp: EsResponse) => Promise>; copyOnSave: boolean; creationOpts: (opts: SavedObjectCreationOpts) => Record; defaults: any; @@ -35,7 +35,7 @@ export interface SavedObject { getFullPath: () => string; hydrateIndexPattern?: (id?: string) => Promise; id?: string; - init?: () => Promise; + init?: () => Promise>; isSaving: boolean; isTitleChanged: () => boolean; lastSavedTitle: string; diff --git a/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx b/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx index d3c2c75bca853..048de833df802 100644 --- a/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx +++ b/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx @@ -18,7 +18,9 @@ import useMount from 'react-use/lib/useMount'; import { useLocation } from 'react-router-dom'; import { SavedObjectsFindOptionsReference } from '@kbn/core/public'; -import { useKibana, TableListView, useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { useKibana, useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { TableListView } from '@kbn/content-management-table-list'; +import type { UserContentCommonSchema } from '@kbn/content-management-table-list'; import { findListItems } from '../../utils/saved_visualize_utils'; import { showNewVisModal } from '../../wizard'; import { getTypes } from '../../services'; @@ -27,9 +29,47 @@ import { SAVED_OBJECTS_LIMIT_SETTING, SAVED_OBJECTS_PER_PAGE_SETTING, } from '../..'; +import type { VisualizationListItem } from '../..'; import { VisualizeServices } from '../types'; import { VisualizeConstants } from '../../../common/constants'; -import { getTableColumns, getNoItemsMessage } from '../utils'; +import { getNoItemsMessage, getCustomColumn } from '../utils'; +import { getVisualizeListItemLink } from '../utils/get_visualize_list_item_link'; +import { VisualizationStage } from '../../vis_types/vis_type_alias_registry'; + +interface VisualizeUserContent extends VisualizationListItem, UserContentCommonSchema { + type: string; + attributes: { + title: string; + description?: string; + editApp: string; + editUrl: string; + error?: string; + }; +} + +const toTableListViewSavedObject = (savedObject: Record): VisualizeUserContent => { + return { + id: savedObject.id as string, + updatedAt: savedObject.updatedAt as string, + references: savedObject.references as Array<{ id: string; type: string; name: string }>, + type: savedObject.savedObjectType as string, + editUrl: savedObject.editUrl as string, + editApp: savedObject.editApp as string, + icon: savedObject.icon as string, + stage: savedObject.stage as VisualizationStage, + savedObjectType: savedObject.savedObjectType as string, + typeTitle: savedObject.typeTitle as string, + title: (savedObject.title as string) ?? '', + error: (savedObject.error as string) ?? '', + attributes: { + title: (savedObject.title as string) ?? '', + description: savedObject.description as string, + editApp: savedObject.editApp as string, + editUrl: savedObject.editUrl as string, + error: savedObject.error as string, + }, + }; +}; export const VisualizeListing = () => { const { @@ -42,12 +82,10 @@ export const VisualizeListing = () => { toastNotifications, stateTransferService, savedObjects, - savedObjectsTagging, uiSettings, visualizeCapabilities, dashboardCapabilities, kbnUrlStateStorage, - theme, }, } = useKibana(); const { pathname } = useLocation(); @@ -96,7 +134,7 @@ export const VisualizeListing = () => { }, []); const editItem = useCallback( - ({ editUrl, editApp }) => { + ({ attributes: { editUrl, editApp } }: VisualizeUserContent) => { if (editApp) { application.navigateToApp(editApp, { path: editUrl }); return; @@ -108,22 +146,9 @@ export const VisualizeListing = () => { ); const noItemsFragment = useMemo(() => getNoItemsMessage(createNewVis), [createNewVis]); - const tableColumns = useMemo( - () => getTableColumns(core, kbnUrlStateStorage, savedObjectsTagging), - [core, kbnUrlStateStorage, savedObjectsTagging] - ); const fetchItems = useCallback( - (filter) => { - let searchTerm = filter; - let references: SavedObjectsFindOptionsReference[] | undefined; - - if (savedObjectsTagging) { - const parsedQuery = savedObjectsTagging.ui.parseSearchQuery(filter, { useName: true }); - searchTerm = parsedQuery.searchTerm; - references = parsedQuery.tagReferences; - } - + (searchTerm: string, references?: SavedObjectsFindOptionsReference[]) => { const isLabsEnabled = uiSettings.get(VISUALIZE_ENABLE_LABS_SETTING); return findListItems( savedObjects.client, @@ -133,10 +158,12 @@ export const VisualizeListing = () => { references ).then(({ total, hits }: { total: number; hits: Array> }) => ({ total, - hits: hits.filter((result: any) => isLabsEnabled || result.type?.stage !== 'experimental'), + hits: hits + .filter((result: any) => isLabsEnabled || result.type?.stage !== 'experimental') + .map(toTableListViewSavedObject), })); }, - [listingLimit, uiSettings, savedObjectsTagging, savedObjects.client] + [listingLimit, uiSettings, savedObjects.client] ); const deleteItems = useCallback( @@ -154,12 +181,6 @@ export const VisualizeListing = () => { [savedObjects.client, toastNotifications] ); - const searchFilters = useMemo(() => { - return savedObjectsTagging - ? [savedObjectsTagging.ui.getSearchBarFilter({ useName: true })] - : []; - }, [savedObjectsTagging]); - const calloutMessage = ( { ); return ( - + id="vis" headingId="visualizeListingHeading" // we allow users to create visualizations even if they can't save them // for data exploration purposes createItem={createNewVis} - tableCaption={i18n.translate('visualizations.listing.table.listTitle', { - defaultMessage: 'Visualize Library', - })} findItems={fetchItems} deleteItems={visualizeCapabilities.delete ? deleteItems : undefined} editItem={visualizeCapabilities.save ? editItem : undefined} - tableColumns={tableColumns} + customTableColumn={getCustomColumn()} listingLimit={listingLimit} initialPageSize={initialPageSize} initialFilter={''} - rowHeader="title" emptyPrompt={noItemsFragment} entityName={i18n.translate('visualizations.listing.table.entityName', { defaultMessage: 'visualization', @@ -211,10 +229,9 @@ export const VisualizeListing = () => { tableListTitle={i18n.translate('visualizations.listing.table.listTitle', { defaultMessage: 'Visualize Library', })} - toastNotifications={toastNotifications} - searchFilters={searchFilters} - theme={theme} - application={application} + getDetailViewLink={({ attributes: { editApp, editUrl, error } }) => + getVisualizeListItemLink(core.application, kbnUrlStateStorage, editApp, editUrl, error) + } > {dashboardCapabilities.createNew && ( <> diff --git a/src/plugins/visualizations/public/visualize_app/index.tsx b/src/plugins/visualizations/public/visualize_app/index.tsx index c29eef172ffe6..e432275c755e6 100644 --- a/src/plugins/visualizations/public/visualize_app/index.tsx +++ b/src/plugins/visualizations/public/visualize_app/index.tsx @@ -11,7 +11,13 @@ import ReactDOM from 'react-dom'; import { Router } from 'react-router-dom'; import { AppMountParameters } from '@kbn/core/public'; -import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { + KibanaContextProvider, + KibanaThemeProvider, + toMountPoint, +} from '@kbn/kibana-react-plugin/public'; +import { FormattedRelative } from '@kbn/i18n-react'; +import { TableListViewKibanaProvider } from '@kbn/content-management-table-list'; import { VisualizeApp } from './app'; import { VisualizeServices } from './types'; import { addHelpMenuToAppChrome, addBadgeToAppChrome } from './utils'; @@ -33,7 +39,16 @@ export const renderApp = ( - + + + diff --git a/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx b/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx index adb9e3d9ef3e9..8d907b763a035 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx +++ b/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx @@ -7,23 +7,10 @@ */ import React from 'react'; -import { - EuiBetaBadge, - EuiButton, - EuiEmptyPrompt, - EuiIcon, - EuiLink, - EuiBadge, - EuiBasicTableColumn, -} from '@elastic/eui'; +import { EuiBetaBadge, EuiButton, EuiEmptyPrompt, EuiIcon, EuiBadge } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; -import type { SavedObjectsTaggingApi } from '@kbn/saved-objects-tagging-oss-plugin/public'; -import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import type { CoreStart } from '@kbn/core/public'; import { VisualizationListItem } from '../..'; -import { getVisualizeListItemLink } from './get_visualize_list_item_link'; const getBadge = (item: VisualizationListItem) => { if (item.stage === 'beta') { @@ -79,67 +66,27 @@ const renderItemTypeIcon = (item: VisualizationListItem) => { return icon; }; -export const getTableColumns = ( - core: CoreStart, - kbnUrlStateStorage: IKbnUrlStateStorage, - taggingApi?: SavedObjectsTaggingApi -) => - [ - { - field: 'title', - name: i18n.translate('visualizations.listing.table.titleColumnName', { - defaultMessage: 'Title', - }), - sortable: true, - render: (field: string, { editApp, editUrl, title, error }: VisualizationListItem) => - // In case an error occurs i.e. the vis has wrong type, we render the vis but without the link - !error ? ( - - - {field} - - - ) : ( - field - ), - }, - { - field: 'typeTitle', - name: i18n.translate('visualizations.listing.table.typeColumnName', { - defaultMessage: 'Type', - }), - sortable: true, - render: (field: string, record: VisualizationListItem) => - !record.error ? ( - - {renderItemTypeIcon(record)} - {record.typeTitle} - {getBadge(record)} - - ) : ( - - {record.error} - - ), - }, - { - field: 'description', - name: i18n.translate('visualizations.listing.table.descriptionColumnName', { - defaultMessage: 'Description', - }), - sortable: true, - render: (field: string, record: VisualizationListItem) => {record.description}, - }, - ...(taggingApi ? [taggingApi.ui.getTableColumnDefinition()] : []), - ] as unknown as Array>>; +export const getCustomColumn = () => { + return { + field: 'typeTitle', + name: i18n.translate('visualizations.listing.table.typeColumnName', { + defaultMessage: 'Type', + }), + sortable: true, + render: (field: string, record: VisualizationListItem) => + !record.error ? ( + + {renderItemTypeIcon(record)} + {record.typeTitle} + {getBadge(record)} + + ) : ( + + {record.error} + + ), + }; +}; export const getNoItemsMessage = (createItem: () => void) => ( { + if (error) { + return undefined; + } + // for visualizations the editApp is undefined let url = application.getUrlForApp(editApp ?? VISUALIZE_APP_NAME, { path: editApp ? editUrl : `#${editUrl}`, diff --git a/test/scripts/jenkins_storybook.sh b/test/scripts/jenkins_storybook.sh index a07a634d2dba2..1c6faa93d01d1 100755 --- a/test/scripts/jenkins_storybook.sh +++ b/test/scripts/jenkins_storybook.sh @@ -7,6 +7,7 @@ cd "$KIBANA_DIR" yarn storybook --site apm yarn storybook --site canvas yarn storybook --site ci_composite +yarn storybook --site content_management yarn storybook --site custom_integrations yarn storybook --site dashboard yarn storybook --site dashboard_enhanced diff --git a/x-pack/plugins/graph/public/application.tsx b/x-pack/plugins/graph/public/application.tsx index bc0ee0b3ee55b..d3ba129dbb316 100644 --- a/x-pack/plugins/graph/public/application.tsx +++ b/x-pack/plugins/graph/public/application.tsx @@ -25,12 +25,14 @@ import { DataPlugin, DataViewsContract } from '@kbn/data-plugin/public'; import { LicensingPluginStart } from '@kbn/licensing-plugin/public'; import { NavigationPublicPluginStart as NavigationStart } from '@kbn/navigation-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { FormattedRelative } from '@kbn/i18n-react'; +import { TableListViewKibanaProvider } from '@kbn/content-management-table-list'; import './index.scss'; import('./font_awesome'); import { SavedObjectsStart } from '@kbn/saved-objects-plugin/public'; import { SpacesApi } from '@kbn/spaces-plugin/public'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaThemeProvider, toMountPoint } from '@kbn/kibana-react-plugin/public'; import { GraphSavePolicy } from './types'; import { graphRouter } from './router'; import { checkLicense } from '../common/check_license'; @@ -110,7 +112,19 @@ export const renderApp = ({ history, element, ...deps }: GraphDependencies) => { window.dispatchEvent(new HashChangeEvent('hashchange')); }); - const app = {graphRouter(deps)}; + const app = ( + + + {graphRouter(deps)} + + + ); ReactDOM.render(app, element); element.setAttribute('class', 'gphAppWrapper'); diff --git a/x-pack/plugins/graph/public/apps/listing_route.tsx b/x-pack/plugins/graph/public/apps/listing_route.tsx index cf9a5ea88d2a8..af869f7afaa21 100644 --- a/x-pack/plugins/graph/public/apps/listing_route.tsx +++ b/x-pack/plugins/graph/public/apps/listing_route.tsx @@ -11,7 +11,8 @@ import { FormattedMessage, I18nProvider } from '@kbn/i18n-react'; import { EuiEmptyPrompt, EuiLink, EuiButton } from '@elastic/eui'; import { ApplicationStart } from '@kbn/core/public'; import { useHistory, useLocation } from 'react-router-dom'; -import { TableListView } from '@kbn/kibana-react-plugin/public'; +import { TableListView } from '@kbn/content-management-table-list'; +import type { UserContentCommonSchema } from '@kbn/content-management-table-list'; import { deleteSavedWorkspace, findSavedWorkspace } from '../helpers/saved_workspace_utils'; import { getEditPath, getEditUrl, getNewPath, setBreadcrumbs } from '../services/url'; import { GraphWorkspaceSavedObject } from '../types'; @@ -20,6 +21,27 @@ import { GraphServices } from '../application'; const SAVED_OBJECTS_LIMIT_SETTING = 'savedObjects:listingLimit'; const SAVED_OBJECTS_PER_PAGE_SETTING = 'savedObjects:perPage'; +interface GraphUserContent extends UserContentCommonSchema { + type: string; + attributes: { + title: string; + description?: string; + }; +} + +const toTableListViewSavedObject = (savedObject: GraphWorkspaceSavedObject): GraphUserContent => { + return { + id: savedObject.id!, + updatedAt: savedObject.updatedAt!, + references: savedObject.references, + type: savedObject.type, + attributes: { + title: savedObject.title, + description: savedObject.description, + }, + }; +}; + export interface ListingRouteProps { deps: Omit; } @@ -47,25 +69,23 @@ export function ListingRoute({ { savedObjectsClient, basePath: coreStart.http.basePath }, search, listingLimit - ); + ).then(({ total, hits }) => ({ + total, + hits: hits.map(toTableListViewSavedObject), + })); }, [coreStart.http.basePath, listingLimit, savedObjectsClient] ); const editItem = useCallback( - (savedWorkspace: GraphWorkspaceSavedObject) => { + (savedWorkspace: { id: string }) => { history.push(getEditPath(savedWorkspace)); }, [history] ); - const getViewUrl = useCallback( - (savedWorkspace: GraphWorkspaceSavedObject) => getEditUrl(addBasePath, savedWorkspace), - [addBasePath] - ); - const deleteItems = useCallback( - async (savedWorkspaces: GraphWorkspaceSavedObject[]) => { + async (savedWorkspaces: Array<{ id: string }>) => { await deleteSavedWorkspace( savedObjectsClient, savedWorkspaces.map((cur) => cur.id!) @@ -76,17 +96,13 @@ export function ListingRoute({ return ( - + id="graph" headingId="graphListingHeading" - rowHeader="title" createItem={capabilities.graph.save ? createItem : undefined} findItems={findItems} deleteItems={capabilities.graph.delete ? deleteItems : undefined} editItem={capabilities.graph.save ? editItem : undefined} - tableColumns={getTableColumns(getViewUrl)} listingLimit={listingLimit} initialFilter={initialFilter} initialPageSize={initialPageSize} @@ -95,7 +111,6 @@ export function ListingRoute({ createItem, coreStart.application )} - toastNotifications={coreStart.notifications.toasts} entityName={i18n.translate('xpack.graph.listing.table.entityName', { defaultMessage: 'graph', })} @@ -105,8 +120,7 @@ export function ListingRoute({ tableListTitle={i18n.translate('xpack.graph.listing.graphsTitle', { defaultMessage: 'Graphs', })} - theme={coreStart.theme} - application={coreStart.application} + getDetailViewLink={({ id }) => getEditUrl(addBasePath, { id })} /> ); @@ -188,40 +202,3 @@ function getNoItemsMessage( /> ); } - -// TODO this is an EUI type but EUI doesn't provide this typing yet -interface DataColumn { - field: string; - name: string; - sortable?: boolean; - render?: (value: string, item: GraphWorkspaceSavedObject) => React.ReactNode; - dataType?: 'auto' | 'string' | 'number' | 'date' | 'boolean'; -} - -function getTableColumns(getViewUrl: (record: GraphWorkspaceSavedObject) => string): DataColumn[] { - return [ - { - field: 'title', - name: i18n.translate('xpack.graph.listing.table.titleColumnName', { - defaultMessage: 'Title', - }), - sortable: true, - render: (field, record) => ( - - {field} - - ), - }, - { - field: 'description', - name: i18n.translate('xpack.graph.listing.table.descriptionColumnName', { - defaultMessage: 'Description', - }), - dataType: 'string', - sortable: true, - }, - ]; -} diff --git a/x-pack/plugins/graph/public/types/persistence.ts b/x-pack/plugins/graph/public/types/persistence.ts index 640348d96f6ac..f5c1366ff8661 100644 --- a/x-pack/plugins/graph/public/types/persistence.ts +++ b/x-pack/plugins/graph/public/types/persistence.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { SavedObjectReference } from '@kbn/core/public'; import { AdvancedSettings, UrlTemplate, WorkspaceField } from './app_state'; import { WorkspaceNode, WorkspaceEdge } from './workspace_state'; @@ -32,6 +33,8 @@ export interface GraphWorkspaceSavedObject { // Only set for legacy saved objects. legacyIndexPatternRef?: string; _source: Record; + updatedAt?: string; + references: SavedObjectReference[]; } export interface SerializedWorkspaceState { diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts index 09caa5e20364a..208bec0a1d6e6 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts @@ -238,7 +238,7 @@ describe('Data Streams tab', () => { const { table, actions } = testBed; await actions.clickIndicesAt(0); expect(table.getMetaData('indexTable').tableCellsValues).toEqual([ - ['', '', '', '', '', '', '', 'dataStream1'], + ['', 'data-stream-index', '', '', '', '', '', '', 'dataStream1'], ]); }); @@ -374,7 +374,7 @@ describe('Data Streams tab', () => { const { table, actions } = testBed; await actions.clickIndicesAt(0); expect(table.getMetaData('indexTable').tableCellsValues).toEqual([ - ['', '', '', '', '', '', '', '%dataStream'], + ['', 'data-stream-index', '', '', '', '', '', '', '%dataStream'], ]); }); }); diff --git a/x-pack/plugins/maps/public/kibana_services.ts b/x-pack/plugins/maps/public/kibana_services.ts index 5774a46684644..41f88de18720c 100644 --- a/x-pack/plugins/maps/public/kibana_services.ts +++ b/x-pack/plugins/maps/public/kibana_services.ts @@ -59,6 +59,7 @@ export const getCoreI18n = () => coreStart.i18n; export const getSearchService = () => pluginsStart.data.search; export const getEmbeddableService = () => pluginsStart.embeddable; export const getNavigateToApp = () => coreStart.application.navigateToApp; +export const getUrlForApp = () => coreStart.application.getUrlForApp; export const getNavigateToUrl = () => coreStart.application.navigateToUrl; export const getSavedObjectsTagging = () => pluginsStart.savedObjectsTagging; export const getPresentationUtilContext = () => pluginsStart.presentationUtil.ContextProvider; @@ -66,7 +67,6 @@ export const getSecurityService = () => pluginsStart.security; export const getSpacesApi = () => pluginsStart.spaces; export const getTheme = () => coreStart.theme; export const getUsageCollection = () => pluginsStart.usageCollection; -export const getApplication = () => coreStart.application; export const isScreenshotMode = () => { return pluginsStart.screenshotMode ? pluginsStart.screenshotMode.isScreenshotMode() : false; }; diff --git a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts index cdf61a6ab9173..a2f4f4004797e 100644 --- a/x-pack/plugins/maps/public/lazy_load_bundle/index.ts +++ b/x-pack/plugins/maps/public/lazy_load_bundle/index.ts @@ -6,8 +6,9 @@ */ import { DataViewsContract } from '@kbn/data-views-plugin/common'; -import { AppMountParameters } from '@kbn/core/public'; +import { AppMountParameters, CoreStart } from '@kbn/core/public'; import { IContainer } from '@kbn/embeddable-plugin/public'; +import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-plugin/public'; import { LayerDescriptor } from '../../common/descriptor_types'; import type { MapEmbeddableConfig, @@ -29,7 +30,14 @@ export interface LazyLoadedMapModules { ) => MapEmbeddableType; getIndexPatternService: () => DataViewsContract; getMapsCapabilities: () => any; - renderApp: (params: AppMountParameters, AppUsageTracker: React.FC) => Promise<() => void>; + renderApp: ( + params: AppMountParameters, + deps: { + coreStart: CoreStart; + AppUsageTracker: React.FC; + savedObjectsTagging?: SavedObjectTaggingPluginStart; + } + ) => Promise<() => void>; createSecurityLayerDescriptors: ( indexPatternId: string, indexPatternTitle: string diff --git a/x-pack/plugins/maps/public/plugin.ts b/x-pack/plugins/maps/public/plugin.ts index 8a0f85393587b..9890676f2cec5 100644 --- a/x-pack/plugins/maps/public/plugin.ts +++ b/x-pack/plugins/maps/public/plugin.ts @@ -190,10 +190,11 @@ export class MapsPlugin euiIconType: APP_ICON_SOLUTION, category: DEFAULT_APP_CATEGORIES.kibana, async mount(params: AppMountParameters) { + const [coreStart, { savedObjectsTagging }] = await core.getStartServices(); const UsageTracker = plugins.usageCollection?.components.ApplicationUsageTrackingProvider ?? React.Fragment; const { renderApp } = await lazyLoadMapModules(); - return renderApp(params, UsageTracker); + return renderApp(params, { coreStart, AppUsageTracker: UsageTracker, savedObjectsTagging }); }, }); diff --git a/x-pack/plugins/maps/public/render_app.tsx b/x-pack/plugins/maps/public/render_app.tsx index 3deea0f82b272..196332d5e873e 100644 --- a/x-pack/plugins/maps/public/render_app.tsx +++ b/x-pack/plugins/maps/public/render_app.tsx @@ -9,14 +9,17 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { Router, Switch, Route, Redirect, RouteComponentProps } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; -import type { AppMountParameters } from '@kbn/core/public'; +import type { CoreStart, AppMountParameters } from '@kbn/core/public'; import { ExitFullScreenButtonKibanaProvider } from '@kbn/shared-ux-button-exit-full-screen'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaThemeProvider, toMountPoint } from '@kbn/kibana-react-plugin/public'; import { createKbnUrlStateStorage, withNotifyOnErrors, IKbnUrlStateStorage, } from '@kbn/kibana-utils-plugin/public'; +import { FormattedRelative } from '@kbn/i18n-react'; +import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-plugin/public'; +import { TableListViewKibanaProvider } from '@kbn/content-management-table-list'; import { getCoreChrome, getCoreI18n, @@ -67,7 +70,15 @@ function setAppChrome() { export async function renderApp( { element, history, onAppLeave, setHeaderActionMenu, theme$ }: AppMountParameters, - AppUsageTracker: React.FC + { + coreStart, + AppUsageTracker, + savedObjectsTagging, + }: { + coreStart: CoreStart; + savedObjectsTagging?: SavedObjectTaggingPluginStart; + AppUsageTracker: React.FC; + } ) { goToSpecifiedPath = (path) => history.push(path); kbnUrlStateStorage = createKbnUrlStateStorage({ @@ -117,27 +128,36 @@ export async function renderApp( - - - - - // Redirect other routes to list, or if hash-containing, their non-hash equivalents - { - if (hash) { - // Remove leading hash - const newPath = hash.substr(1); - return ; - } else if (pathname === '/' || pathname === '') { - return ; - } else { - return ; - } - }} - /> - - + + + + + + // Redirect other routes to list, or if hash-containing, their non-hash equivalents + { + if (hash) { + // Remove leading hash + const newPath = hash.substr(1); + return ; + } else if (pathname === '/' || pathname === '') { + return ; + } else { + return ; + } + }} + /> + + + , diff --git a/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx b/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx index 37a2f75df1544..e9c3102e2aa85 100644 --- a/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx +++ b/x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx @@ -5,26 +5,23 @@ * 2.0. */ -import React, { MouseEvent } from 'react'; +import React from 'react'; import { SavedObjectReference } from '@kbn/core/types'; +import type { SavedObjectsFindOptionsReference } from '@kbn/core/public'; import { METRIC_TYPE } from '@kbn/analytics'; import { i18n } from '@kbn/i18n'; -import { EuiLink } from '@elastic/eui'; -import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/basic_table'; -import { TableListView } from '@kbn/kibana-react-plugin/public'; +import { TableListView } from '@kbn/content-management-table-list'; +import type { UserContentCommonSchema } from '@kbn/content-management-table-list'; +import { SimpleSavedObject } from '@kbn/core-saved-objects-api-browser'; import { goToSpecifiedPath } from '../../render_app'; import { APP_ID, getEditPath, MAP_PATH, MAP_SAVED_OBJECT_TYPE } from '../../../common/constants'; import { getMapsCapabilities, - getToasts, getCoreChrome, getExecutionContext, getNavigateToApp, getSavedObjectsClient, - getSavedObjectsTagging, getUiSettings, - getTheme, - getApplication, getUsageCollection, } from '../../kibana_services'; import { getAppTitle } from '../../../common/i18n_getters'; @@ -40,41 +37,11 @@ interface MapItem { references?: SavedObjectReference[]; } -const savedObjectsTagging = getSavedObjectsTagging(); -const searchFilters = savedObjectsTagging - ? [savedObjectsTagging.ui.getSearchBarFilter({ useName: true })] - : []; - -const tableColumns: Array> = [ - { - field: 'title', - name: i18n.translate('xpack.maps.mapListing.titleFieldTitle', { - defaultMessage: 'Title', - }), - sortable: true, - render: (field: string, record: MapItem) => ( - { - e.preventDefault(); - goToSpecifiedPath(getEditPath(record.id)); - }} - data-test-subj={`mapListingTitleLink-${record.title.split(' ').join('-')}`} - > - {field} - - ), - }, - { - field: 'description', - name: i18n.translate('xpack.maps.mapListing.descriptionFieldTitle', { - defaultMessage: 'Description', - }), - dataType: 'string', - sortable: true, - }, -]; -if (savedObjectsTagging) { - tableColumns.push(savedObjectsTagging.ui.getTableColumnDefinition()); +interface MapUserContent extends UserContentCommonSchema { + type: string; + attributes: { + title: string; + }; } function navigateToNewMap() { @@ -85,18 +52,20 @@ function navigateToNewMap() { }); } -async function findMaps(searchQuery: string) { - let searchTerm = searchQuery; - let tagReferences; - - if (savedObjectsTagging) { - const parsed = savedObjectsTagging.ui.parseSearchQuery(searchQuery, { - useName: true, - }); - searchTerm = parsed.searchTerm; - tagReferences = parsed.tagReferences; - } +const toTableListViewSavedObject = ( + savedObject: SimpleSavedObject +): MapUserContent => { + return { + ...savedObject, + updatedAt: savedObject.updatedAt!, + attributes: { + ...savedObject.attributes, + title: savedObject.attributes.title ?? '', + }, + }; +}; +async function findMaps(searchTerm: string, tagReferences?: SavedObjectsFindOptionsReference[]) { const resp = await getSavedObjectsClient().find({ type: MAP_SAVED_OBJECT_TYPE, search: searchTerm ? `${searchTerm}*` : undefined, @@ -110,15 +79,7 @@ async function findMaps(searchQuery: string) { return { total: resp.total, - hits: resp.savedObjects.map((savedObject) => { - return { - id: savedObject.id, - title: savedObject.attributes.title, - description: savedObject.attributes.description, - references: savedObject.references, - updatedAt: savedObject.updatedAt, - }; - }), + hits: resp.savedObjects.map(toTableListViewSavedObject), }; } @@ -144,13 +105,12 @@ export function MapsListView() { getCoreChrome().setBreadcrumbs([{ text: getAppTitle() }]); return ( - + id="map" headingId="mapsListingPage" - rowHeader="title" createItem={isReadOnly ? undefined : navigateToNewMap} findItems={findMaps} deleteItems={isReadOnly ? undefined : deleteMaps} - tableColumns={tableColumns} listingLimit={listingLimit} initialFilter={''} initialPageSize={initialPageSize} @@ -160,14 +120,8 @@ export function MapsListView() { entityNamePlural={i18n.translate('xpack.maps.mapListing.entityNamePlural', { defaultMessage: 'maps', })} - tableCaption={i18n.translate('xpack.maps.mapListing.tableCaption', { - defaultMessage: 'Maps', - })} tableListTitle={getAppTitle()} - toastNotifications={getToasts()} - searchFilters={searchFilters} - theme={getTheme()} - application={getApplication()} + onClickTitle={({ id }) => goToSpecifiedPath(getEditPath(id))} /> ); } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index a430b41307f26..b066ae3b70d59 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -972,10 +972,8 @@ "dashboard.listing.createNewDashboard.title": "Créer votre premier tableau de bord", "dashboard.listing.readonlyNoItemsBody": "Aucun tableau de bord n'est disponible. Pour modifier vos autorisations afin d’afficher les tableaux de bord dans cet espace, contactez votre administrateur.", "dashboard.listing.readonlyNoItemsTitle": "Aucun tableau de bord à afficher", - "dashboard.listing.table.descriptionColumnName": "Description", "dashboard.listing.table.entityName": "tableau de bord", "dashboard.listing.table.entityNamePlural": "tableaux de bord", - "dashboard.listing.table.titleColumnName": "Titre", "dashboard.listing.unsaved.discardTitle": "Abandonner les modifications", "dashboard.listing.unsaved.editTitle": "Poursuivre les modifications", "dashboard.listing.unsaved.loading": "Chargement", @@ -4308,15 +4306,6 @@ "kibana-react.noDataPage.intro": "Ajoutez vos données pour commencer, ou {link} sur {solution}.", "kibana-react.noDataPage.welcomeTitle": "Bienvenue dans Elastic {solution}.", "kibana-react.solutionNav.mobileTitleText": "Menu {solutionName}", - "kibana-react.tableListView.listing.createNewItemButtonLabel": "Créer {entityName}", - "kibana-react.tableListView.listing.deleteButtonMessage": "Supprimer {itemCount} {entityName}", - "kibana-react.tableListView.listing.deleteConfirmModalDescription": "Vous ne pourrez pas récupérer les {entityNamePlural} supprimés.", - "kibana-react.tableListView.listing.deleteSelectedConfirmModal.title": "Supprimer {itemCount} {entityName} ?", - "kibana-react.tableListView.listing.fetchErrorDescription": "Le listing {entityName} n'a pas pu être récupéré : {message}.", - "kibana-react.tableListView.listing.listingLimitExceededDescription": "Vous avez {totalItems} {entityNamePlural}, mais votre paramètre {listingLimitText} empêche le tableau ci-dessous d'en afficher plus de {listingLimitValue}. Vous pouvez modifier ce paramètre sous {advancedSettingsLink}.", - "kibana-react.tableListView.listing.listingLimitExceededDescriptionNoPermissions": "Vous avez {totalItems} {entityNamePlural}, mais votre paramètre {listingLimitText} empêche le tableau ci-dessous d'en afficher plus de {listingLimitValue}. Contactez l'administrateur système pour modifier ce paramètre.", - "kibana-react.tableListView.listing.table.editActionName": "Modifier {itemDescription}", - "kibana-react.tableListView.listing.unableToDeleteDangerMessage": "Impossible de supprimer la/le/les {entityName}(s)", "kibana-react.dualRangeControl.maxInputAriaLabel": "Maximum de la plage", "kibana-react.dualRangeControl.minInputAriaLabel": "Minimum de la plage", "kibana-react.dualRangeControl.mustSetBothErrorMessage": "Les valeurs inférieure et supérieure doivent être définies.", @@ -4344,16 +4333,6 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "Choisir comme page de destination", "kibana-react.solutionNav.collapsibleLabel": "Réduire la navigation latérale", "kibana-react.solutionNav.openLabel": "Ouvrir la navigation latérale", - "kibana-react.tableListView.lastUpdatedColumnTitle": "Dernière mise à jour", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.cancelButtonLabel": "Annuler", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabel": "Supprimer", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabelDeleting": "Suppression", - "kibana-react.tableListView.listing.fetchErrorTitle": "Échec de la récupération du listing", - "kibana-react.tableListView.listing.listingLimitExceeded.advancedSettingsLinkText": "Paramètres avancés", - "kibana-react.tableListView.listing.listingLimitExceededTitle": "Limite de listing dépassée", - "kibana-react.tableListView.listing.table.actionTitle": "Actions", - "kibana-react.tableListView.listing.table.editActionDescription": "Modifier", - "kibana-react.tableListView.updatedDateUnknownLabel": "Dernière mise à jour inconnue", "management.landing.header": "Bienvenue dans Gestion de la Suite {version}", "management.breadcrumb": "Gestion de la Suite", "management.landing.subhead": "Gérez vos index, vues de données, objets enregistrés, paramètres Kibana et plus encore.", @@ -6235,11 +6214,9 @@ "visualizations.listing.createNew.title": "Créer votre première visualisation", "visualizations.listing.experimentalTitle": "Version d'évaluation technique", "visualizations.listing.experimentalTooltip": "Cette fonctionnalité est en version d'évaluation technique et pourra être modifiée ou retirée complètement dans une future version. Elastic s'efforcera au maximum de corriger tout problème, mais les fonctionnalités en version d'évaluation technique ne sont pas soumises aux accords de niveau de service d'assistance des fonctionnalités officielles en disponibilité générale.", - "visualizations.listing.table.descriptionColumnName": "Description", "visualizations.listing.table.entityName": "visualisation", "visualizations.listing.table.entityNamePlural": "visualisations", "visualizations.listing.table.listTitle": "Bibliothèque Visualize", - "visualizations.listing.table.titleColumnName": "Titre", "visualizations.listing.table.typeColumnName": "Type", "visualizations.listingPageTitle": "Bibliothèque Visualize", "visualizations.missedDataView.dataViewReconfigure": "Recréez-la dans la page de gestion des vues de données.", @@ -13625,10 +13602,8 @@ "xpack.graph.listing.graphsTitle": "Graphes", "xpack.graph.listing.noDataSource.sampleDataInstallLinkText": "exemple de données", "xpack.graph.listing.noItemsMessage": "Il semble que vous n'avez pas de graphe.", - "xpack.graph.listing.table.descriptionColumnName": "Description", "xpack.graph.listing.table.entityName": "graphe", "xpack.graph.listing.table.entityNamePlural": "graphes", - "xpack.graph.listing.table.titleColumnName": "Titre", "xpack.graph.missingWorkspaceErrorMessage": "Impossible de charger le graphe avec l'ID", "xpack.graph.newGraphTitle": "Graphe non enregistré", "xpack.graph.noDataSourceNotificationMessageText.managementDataViewLinkText": "Gestion > Vues de données", @@ -18457,12 +18432,9 @@ "xpack.maps.map.initializeErrorTitle": "Initialisation de la carte impossible", "xpack.maps.mapActions.addFeatureError": "Impossible d’ajouter la fonctionnalité à l’index.", "xpack.maps.mapActions.removeFeatureError": "Impossible de retirer la fonctionnalité de l’index.", - "xpack.maps.mapListing.descriptionFieldTitle": "Description", "xpack.maps.mapListing.entityName": "carte", "xpack.maps.mapListing.entityNamePlural": "cartes", "xpack.maps.mapListing.errorAttemptingToLoadSavedMaps": "Impossible de charger les cartes", - "xpack.maps.mapListing.tableCaption": "Cartes", - "xpack.maps.mapListing.titleFieldTitle": "Titre", "xpack.maps.mapSavedObjectLabel": "Carte", "xpack.maps.mapSettingsPanel.addCustomIcon": "Ajouter une icône personnalisée", "xpack.maps.mapSettingsPanel.autoFitToBoundsLocationLabel": "Ajuster automatiquement la carte aux limites de données", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 757dd00a6e1a8..7f1d687e3e25e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -970,10 +970,8 @@ "dashboard.listing.createNewDashboard.title": "初めてのダッシュボードを作成してみましょう。", "dashboard.listing.readonlyNoItemsBody": "使用可能なダッシュボードはありません。権限を変更してこのスペースにダッシュボードを表示するには、管理者に問い合わせてください。", "dashboard.listing.readonlyNoItemsTitle": "表示するダッシュボードがありません", - "dashboard.listing.table.descriptionColumnName": "説明", "dashboard.listing.table.entityName": "ダッシュボード", "dashboard.listing.table.entityNamePlural": "ダッシュボード", - "dashboard.listing.table.titleColumnName": "タイトル", "dashboard.listing.unsaved.discardTitle": "変更を破棄", "dashboard.listing.unsaved.editTitle": "編集を続行", "dashboard.listing.unsaved.loading": "読み込み中", @@ -4304,17 +4302,6 @@ "kibana-react.noDataPage.intro": "データを追加して開始するか、{solution}については{link}をご覧ください。", "kibana-react.noDataPage.welcomeTitle": "Elastic {solution}へようこそ。", "kibana-react.solutionNav.mobileTitleText": "{solutionName}メニュー", - "kibana-react.tableListView.listing.createNewItemButtonLabel": "Create {entityName}", - "kibana-react.tableListView.listing.deleteButtonMessage": "{itemCount} 件の {entityName} を削除", - "kibana-react.tableListView.listing.deleteConfirmModalDescription": "削除された {entityNamePlural} は復元できません。", - "kibana-react.tableListView.listing.deleteSelectedConfirmModal.title": "{itemCount} 件の {entityName} を削除", - "kibana-react.tableListView.listing.fetchErrorDescription": "{entityName}リストを取得できませんでした。{message}", - "kibana-react.tableListView.listing.listingLimitExceededDescription": "{totalItems} 件の {entityNamePlural} がありますが、{listingLimitText} の設定により {listingLimitValue} 件までしか下の表に表示できません。{advancedSettingsLink} の下でこの設定を変更できます。", - "kibana-react.tableListView.listing.listingLimitExceededDescriptionNoPermissions": "{totalItems} 件の {entityNamePlural} がありますが、{listingLimitText} の設定により {listingLimitValue} 件までしか下の表に表示できません。この設定を変更するには、システム管理者に問い合わせてください。", - "kibana-react.tableListView.listing.noAvailableItemsMessage": "利用可能な {entityNamePlural} がありません。", - "kibana-react.tableListView.listing.noMatchedItemsMessage": "検索条件に一致する {entityNamePlural} がありません。", - "kibana-react.tableListView.listing.table.editActionName": "{itemDescription}の編集", - "kibana-react.tableListView.listing.unableToDeleteDangerMessage": "{entityName} を削除できません", "kibana-react.dualRangeControl.maxInputAriaLabel": "範囲最大", "kibana-react.dualRangeControl.minInputAriaLabel": "範囲最小", "kibana-react.dualRangeControl.mustSetBothErrorMessage": "下と上の値の両方を設定する必要があります", @@ -4342,16 +4329,6 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "これをランディングページにする", "kibana-react.solutionNav.collapsibleLabel": "サイドナビゲーションを折りたたむ", "kibana-react.solutionNav.openLabel": "サイドナビゲーションを開く", - "kibana-react.tableListView.lastUpdatedColumnTitle": "最終更新", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.cancelButtonLabel": "キャンセル", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabel": "削除", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabelDeleting": "削除中", - "kibana-react.tableListView.listing.fetchErrorTitle": "リストを取得できませんでした", - "kibana-react.tableListView.listing.listingLimitExceeded.advancedSettingsLinkText": "高度な設定", - "kibana-react.tableListView.listing.listingLimitExceededTitle": "リスティング制限超過", - "kibana-react.tableListView.listing.table.actionTitle": "アクション", - "kibana-react.tableListView.listing.table.editActionDescription": "編集", - "kibana-react.tableListView.updatedDateUnknownLabel": "最終更新日が不明です", "management.landing.header": "Stack Management {version}へようこそ", "management.breadcrumb": "スタック管理", "management.landing.subhead": "インデックス、データビュー、保存されたオブジェクト、Kibanaの設定、その他を管理します。", @@ -6231,11 +6208,9 @@ "visualizations.listing.createNew.title": "最初のビジュアライゼーションの作成", "visualizations.listing.experimentalTitle": "テクニカルプレビュー", "visualizations.listing.experimentalTooltip": "この機能はテクニカルプレビュー中であり、将来のリリースでは変更されたり完全に削除されたりする場合があります。Elasticは最善の努力を講じてすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。", - "visualizations.listing.table.descriptionColumnName": "説明", "visualizations.listing.table.entityName": "ビジュアライゼーション", "visualizations.listing.table.entityNamePlural": "ビジュアライゼーション", "visualizations.listing.table.listTitle": "Visualizeライブラリ", - "visualizations.listing.table.titleColumnName": "タイトル", "visualizations.listing.table.typeColumnName": "型", "visualizations.listingPageTitle": "Visualizeライブラリ", "visualizations.missedDataView.dataViewReconfigure": "データビュー管理ページで再作成", @@ -13613,10 +13588,8 @@ "xpack.graph.listing.graphsTitle": "グラフ", "xpack.graph.listing.noDataSource.sampleDataInstallLinkText": "サンプルデータ", "xpack.graph.listing.noItemsMessage": "グラフがないようです。", - "xpack.graph.listing.table.descriptionColumnName": "説明", "xpack.graph.listing.table.entityName": "グラフ", "xpack.graph.listing.table.entityNamePlural": "グラフ", - "xpack.graph.listing.table.titleColumnName": "タイトル", "xpack.graph.missingWorkspaceErrorMessage": "ID でグラフを読み込めませんでした", "xpack.graph.newGraphTitle": "保存されていないグラフ", "xpack.graph.noDataSourceNotificationMessageText.managementDataViewLinkText": "管理 > データビュー", @@ -18442,12 +18415,9 @@ "xpack.maps.map.initializeErrorTitle": "マップを初期化できません", "xpack.maps.mapActions.addFeatureError": "機能をインデックスに追加できません。", "xpack.maps.mapActions.removeFeatureError": "インデックスから機能を削除できません。", - "xpack.maps.mapListing.descriptionFieldTitle": "説明", "xpack.maps.mapListing.entityName": "マップ", "xpack.maps.mapListing.entityNamePlural": "マップ", "xpack.maps.mapListing.errorAttemptingToLoadSavedMaps": "マップを読み込めません", - "xpack.maps.mapListing.tableCaption": "マップ", - "xpack.maps.mapListing.titleFieldTitle": "タイトル", "xpack.maps.mapSavedObjectLabel": "マップ", "xpack.maps.mapSettingsPanel.addCustomIcon": "カスタムアイコンを追加", "xpack.maps.mapSettingsPanel.autoFitToBoundsLocationLabel": "自動的にマップをデータ境界に合わせる", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f48178da735a6..e9e751a71ee83 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -972,10 +972,8 @@ "dashboard.listing.createNewDashboard.title": "创建您的首个仪表板", "dashboard.listing.readonlyNoItemsBody": "没有可用的仪表板。要更改您的权限以查看此工作区中的仪表板,请联系管理员。", "dashboard.listing.readonlyNoItemsTitle": "没有可查看的仪表板", - "dashboard.listing.table.descriptionColumnName": "描述", "dashboard.listing.table.entityName": "仪表板", "dashboard.listing.table.entityNamePlural": "仪表板", - "dashboard.listing.table.titleColumnName": "标题", "dashboard.listing.unsaved.discardTitle": "放弃更改", "dashboard.listing.unsaved.editTitle": "继续编辑", "dashboard.listing.unsaved.loading": "正在加载", @@ -4309,17 +4307,6 @@ "kibana-react.noDataPage.intro": "添加您的数据以开始,或{link}{solution}。", "kibana-react.noDataPage.welcomeTitle": "欢迎使用 Elastic {solution}!", "kibana-react.solutionNav.mobileTitleText": "{solutionName} 菜单", - "kibana-react.tableListView.listing.createNewItemButtonLabel": "创建 {entityName}", - "kibana-react.tableListView.listing.deleteButtonMessage": "删除 {itemCount} 个 {entityName}", - "kibana-react.tableListView.listing.deleteConfirmModalDescription": "无法恢复删除的 {entityNamePlural}。", - "kibana-react.tableListView.listing.deleteSelectedConfirmModal.title": "删除 {itemCount} 个 {entityName}?", - "kibana-react.tableListView.listing.fetchErrorDescription": "无法提取 {entityName} 列表:{message}。", - "kibana-react.tableListView.listing.listingLimitExceededDescription": "您有 {totalItems} 个{entityNamePlural},但您的“{listingLimitText}”设置阻止下表显示 {listingLimitValue} 个以上。您可以在“{advancedSettingsLink}”下更改此设置。", - "kibana-react.tableListView.listing.listingLimitExceededDescriptionNoPermissions": "您有 {totalItems} 个{entityNamePlural},但您的“{listingLimitText}”设置阻止下表显示 {listingLimitValue} 个以上。请联系系统管理员更改此设置。", - "kibana-react.tableListView.listing.noAvailableItemsMessage": "没有可用的{entityNamePlural}。", - "kibana-react.tableListView.listing.noMatchedItemsMessage": "没有任何{entityNamePlural}匹配您的搜索。", - "kibana-react.tableListView.listing.table.editActionName": "编辑 {itemDescription}", - "kibana-react.tableListView.listing.unableToDeleteDangerMessage": "无法删除{entityName}", "kibana-react.dualRangeControl.maxInputAriaLabel": "范围最大值", "kibana-react.dualRangeControl.minInputAriaLabel": "范围最小值", "kibana-react.dualRangeControl.mustSetBothErrorMessage": "下限值和上限值都须设置", @@ -4347,16 +4334,6 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "将此设为我的登陆页面", "kibana-react.solutionNav.collapsibleLabel": "折叠侧边导航", "kibana-react.solutionNav.openLabel": "打开侧边导航", - "kibana-react.tableListView.lastUpdatedColumnTitle": "上次更新时间", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.cancelButtonLabel": "取消", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabel": "删除", - "kibana-react.tableListView.listing.deleteSelectedItemsConfirmModal.confirmButtonLabelDeleting": "正在删除", - "kibana-react.tableListView.listing.fetchErrorTitle": "提取列表失败", - "kibana-react.tableListView.listing.listingLimitExceeded.advancedSettingsLinkText": "高级设置", - "kibana-react.tableListView.listing.listingLimitExceededTitle": "已超过列表限制", - "kibana-react.tableListView.listing.table.actionTitle": "操作", - "kibana-react.tableListView.listing.table.editActionDescription": "编辑", - "kibana-react.tableListView.updatedDateUnknownLabel": "上次更新时间未知", "management.landing.header": "欢迎使用 Stack Management {version}", "management.breadcrumb": "Stack Management", "management.landing.subhead": "管理您的索引、数据视图、已保存对象、Kibana 设置等等。", @@ -6238,11 +6215,9 @@ "visualizations.listing.createNew.title": "创建您的首个可视化", "visualizations.listing.experimentalTitle": "技术预览", "visualizations.listing.experimentalTooltip": "此功能处于技术预览状态,在未来版本中可能会更改或完全移除。Elastic 将尽最大努力来修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。", - "visualizations.listing.table.descriptionColumnName": "描述", "visualizations.listing.table.entityName": "可视化", "visualizations.listing.table.entityNamePlural": "可视化", "visualizations.listing.table.listTitle": "Visualize 库", - "visualizations.listing.table.titleColumnName": "标题", "visualizations.listing.table.typeColumnName": "类型", "visualizations.listingPageTitle": "Visualize 库", "visualizations.missedDataView.dataViewReconfigure": "在数据视图管理页面中重新创建", @@ -13630,10 +13605,8 @@ "xpack.graph.listing.graphsTitle": "图表", "xpack.graph.listing.noDataSource.sampleDataInstallLinkText": "样例数据", "xpack.graph.listing.noItemsMessage": "似乎您没有任何图表。", - "xpack.graph.listing.table.descriptionColumnName": "描述", "xpack.graph.listing.table.entityName": "图表", "xpack.graph.listing.table.entityNamePlural": "图表", - "xpack.graph.listing.table.titleColumnName": "标题", "xpack.graph.missingWorkspaceErrorMessage": "无法使用 ID 加载图表", "xpack.graph.newGraphTitle": "未保存图表", "xpack.graph.noDataSourceNotificationMessageText.managementDataViewLinkText": "“管理”>“数据视图”", @@ -18464,12 +18437,9 @@ "xpack.maps.map.initializeErrorTitle": "无法初始化地图", "xpack.maps.mapActions.addFeatureError": "无法添加特征到索引。", "xpack.maps.mapActions.removeFeatureError": "无法从索引中移除特征。", - "xpack.maps.mapListing.descriptionFieldTitle": "描述", "xpack.maps.mapListing.entityName": "地图", "xpack.maps.mapListing.entityNamePlural": "地图", "xpack.maps.mapListing.errorAttemptingToLoadSavedMaps": "无法加载地图", - "xpack.maps.mapListing.tableCaption": "Maps", - "xpack.maps.mapListing.titleFieldTitle": "标题", "xpack.maps.mapSavedObjectLabel": "地图", "xpack.maps.mapSettingsPanel.addCustomIcon": "添加定制图标", "xpack.maps.mapSettingsPanel.autoFitToBoundsLocationLabel": "使地图自动适应数据边界", diff --git a/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts index ca0093135b7da..535e287cfc5eb 100644 --- a/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts @@ -38,7 +38,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { `tag-searchbar-option-${PageObjects.tagManagement.testSubjFriendly(dashboardTag)}` ); // click elsewhere to close the filter dropdown - const searchFilter = await find.byCssSelector('.euiPageBody .euiFieldSearch'); + const searchFilter = await find.byCssSelector('.euiPageTemplate .euiFieldSearch'); await searchFilter.click(); // wait until the table refreshes await listingTable.waitUntilTableIsLoaded(); diff --git a/x-pack/test/functional/apps/lens/group3/lens_tagging.ts b/x-pack/test/functional/apps/lens/group3/lens_tagging.ts index d69b49403fc31..d4d9f084a64f7 100644 --- a/x-pack/test/functional/apps/lens/group3/lens_tagging.ts +++ b/x-pack/test/functional/apps/lens/group3/lens_tagging.ts @@ -112,7 +112,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { `tag-searchbar-option-${PageObjects.tagManagement.testSubjFriendly(lensTag)}` ); // click elsewhere to close the filter dropdown - const searchFilter = await find.byCssSelector('.euiPageBody .euiFieldSearch'); + const searchFilter = await find.byCssSelector('.euiPageTemplate .euiFieldSearch'); await searchFilter.click(); // wait until the table refreshes await listingTable.waitUntilTableIsLoaded(); diff --git a/x-pack/test/saved_object_tagging/functional/tests/dashboard_integration.ts b/x-pack/test/saved_object_tagging/functional/tests/dashboard_integration.ts index 2a31c0518798e..22c8b159b12ed 100644 --- a/x-pack/test/saved_object_tagging/functional/tests/dashboard_integration.ts +++ b/x-pack/test/saved_object_tagging/functional/tests/dashboard_integration.ts @@ -31,7 +31,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); } // click elsewhere to close the filter dropdown - const searchFilter = await find.byCssSelector('.euiPageBody .euiFieldSearch'); + const searchFilter = await find.byCssSelector('.euiPageTemplate .euiFieldSearch'); await searchFilter.click(); // wait until the table refreshes await listingTable.waitUntilTableIsLoaded(); diff --git a/x-pack/test/saved_object_tagging/functional/tests/maps_integration.ts b/x-pack/test/saved_object_tagging/functional/tests/maps_integration.ts index 13440b3d0cc74..97402fe5c76c7 100644 --- a/x-pack/test/saved_object_tagging/functional/tests/maps_integration.ts +++ b/x-pack/test/saved_object_tagging/functional/tests/maps_integration.ts @@ -30,7 +30,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); } // click elsewhere to close the filter dropdown - const searchFilter = await find.byCssSelector('.euiPageBody .euiFieldSearch'); + const searchFilter = await find.byCssSelector('.euiPageTemplate .euiFieldSearch'); await searchFilter.click(); }; diff --git a/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts b/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts index a1059331e3312..faf9e8aed8306 100644 --- a/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts +++ b/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts @@ -31,7 +31,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); } // click elsewhere to close the filter dropdown - const searchFilter = await find.byCssSelector('.euiPageBody .euiFieldSearch'); + const searchFilter = await find.byCssSelector('.euiPageTemplate .euiFieldSearch'); await searchFilter.click(); // wait until the table refreshes await listingTable.waitUntilTableIsLoaded(); diff --git a/yarn.lock b/yarn.lock index d7ab8357a85de..ed8c1e12b5af6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2704,6 +2704,10 @@ version "0.0.0" uid "" +"@kbn/content-management-table-list@link:bazel-bin/packages/content-management/table_list": + version "0.0.0" + uid "" + "@kbn/core-analytics-browser-internal@link:bazel-bin/packages/core/analytics/core-analytics-browser-internal": version "0.0.0" uid "" @@ -6717,6 +6721,10 @@ version "0.0.0" uid "" +"@types/kbn__content-management-table-list@link:bazel-bin/packages/content-management/table_list/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-analytics-browser-internal@link:bazel-bin/packages/core/analytics/core-analytics-browser-internal/npm_module_types": version "0.0.0" uid "" From 1d0504f1f688b51469d595447811ea959237aac7 Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Mon, 19 Sep 2022 13:22:30 +0200 Subject: [PATCH 51/79] [Lens] Add IgnoreGlobalFilters feature to query annotations (#140325) * :sparkles: Add ignore global filters feature * :white_check_mark: Fix tests * :wrench: Remove unused translations * :recycle: Make it simpler * :white_check_mark: Fix test * :wrench: slighlty increase bundle limit size * :recycle: Refactor to only include the feature with no UI * :wrench: Added migration * :label: Fix type issues * :white_check_mark: Fix more tests Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-optimizer/limits.yml | 2 +- .../request_event_annotations.ts | 19 ++++++++---- .../query_point_event_annotation/index.ts | 7 +++++ .../query_point_event_annotation/types.ts | 1 + src/plugins/event_annotation/common/types.ts | 1 + .../event_annotation_service/service.test.ts | 3 ++ .../event_annotation_service/service.tsx | 2 ++ .../visualizations/xy/to_expression.test.ts | 1 + .../public/visualizations/xy/to_expression.ts | 1 + .../lens/public/visualizations/xy/types.ts | 1 + .../visualizations/xy/visualization.test.ts | 29 +++++++++++++++++++ .../xy/visualization_helpers.tsx | 1 + .../annotations_config_panel/index.test.tsx | 5 ++++ .../visualizations/xy/xy_suggestions.test.ts | 1 + .../make_lens_embeddable_factory.ts | 4 +-- .../server/migrations/common_migrations.ts | 3 +- .../saved_object_migrations.test.ts | 3 +- .../migrations/saved_object_migrations.ts | 8 ++--- .../plugins/lens/server/migrations/types.ts | 1 + .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 22 files changed, 79 insertions(+), 17 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 130353ae0b3a1..35231e4e4d0ae 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -31,7 +31,7 @@ pageLoadAssetSize: embeddableEnhanced: 22107 enterpriseSearch: 35741 esUiShared: 326654 - eventAnnotation: 19334 + eventAnnotation: 19500 expressionError: 22127 expressionGauge: 25000 expressionHeatmap: 27505 diff --git a/src/plugins/event_annotation/common/fetch_event_annotations/request_event_annotations.ts b/src/plugins/event_annotation/common/fetch_event_annotations/request_event_annotations.ts index e7127bf500ab5..f6eaf0b0e4bbd 100644 --- a/src/plugins/event_annotation/common/fetch_event_annotations/request_event_annotations.ts +++ b/src/plugins/event_annotation/common/fetch_event_annotations/request_event_annotations.ts @@ -49,6 +49,7 @@ interface QueryGroup { timeField: string; dataView: DataView; allFields?: string[]; + ignoreGlobalFilters: boolean; } export function getTimeZone(uiSettings: IUiSettingsClient) { @@ -112,18 +113,20 @@ export const requestEventAnnotations = ( dataView, aggConfigs, timeFields, + ignoreGlobalFilters, }: { dataView: DataView; aggConfigs: AggConfigs; timeFields: string[]; + ignoreGlobalFilters: boolean; }) => lastValueFrom( handleRequest({ aggs: aggConfigs, indexPattern: dataView, timeFields, - filters: input?.filters, - query: input?.query as any, + filters: ignoreGlobalFilters ? undefined : input?.filters, + query: ignoreGlobalFilters ? undefined : (input?.query as any), timeRange: input?.timeRange, abortSignal, inspectorAdapters, @@ -182,7 +185,7 @@ const convertManualToDatatableRows = ( return datatableRows; }; -const prepareEsaggsForQueryGroups = async ( +const prepareEsaggsForQueryGroups = ( queryGroups: QueryGroup[], interval: string, aggs: AggsStart @@ -267,7 +270,12 @@ const prepareEsaggsForQueryGroups = async ( aggregations?.map((agg) => agg.value) ?? [] ); return { - esaggsParams: { dataView: group.dataView, aggConfigs, timeFields: [group.timeField] }, + esaggsParams: { + dataView: group.dataView, + aggConfigs, + timeFields: [group.timeField], + ignoreGlobalFilters: Boolean(group.ignoreGlobalFilters), + }, fieldsColIdMap: group.allFields?.reduce>( (acc, fieldName, i) => ({ @@ -306,7 +314,7 @@ function regroupForRequestOptimization( (dataView.timeFieldName || dataView.fields.find((field) => field.type === 'date' && field.displayName)?.name); - const key = `${g.dataView.value.id}-${timeField}`; + const key = `${g.dataView.value.id}-${timeField}-${Boolean(current.ignoreGlobalFilters)}`; const subGroup = acc[key] as QueryGroup; if (subGroup) { let allFields = [...(subGroup.allFields || []), ...(current.extraFields || [])]; @@ -334,6 +342,7 @@ function regroupForRequestOptimization( timeField: timeField!, allFields, annotations: [current], + ignoreGlobalFilters: Boolean(current.ignoreGlobalFilters), }, }; } diff --git a/src/plugins/event_annotation/common/query_point_event_annotation/index.ts b/src/plugins/event_annotation/common/query_point_event_annotation/index.ts index cb9ba882a9f89..c30ab9c4a8919 100644 --- a/src/plugins/event_annotation/common/query_point_event_annotation/index.ts +++ b/src/plugins/event_annotation/common/query_point_event_annotation/index.ts @@ -103,6 +103,13 @@ export const queryPointEventAnnotation: ExpressionFunctionDefinition< defaultMessage: `Switch to hide annotation`, }), }, + ignoreGlobalFilters: { + types: ['boolean'], + help: i18n.translate('eventAnnotation.queryAnnotation.args.ignoreGlobalFilters', { + defaultMessage: `Switch to ignore global filters for the annotation`, + }), + default: true, + }, }, fn: function fn(input: unknown, args: QueryPointEventAnnotationArgs) { return { diff --git a/src/plugins/event_annotation/common/query_point_event_annotation/types.ts b/src/plugins/event_annotation/common/query_point_event_annotation/types.ts index 592c50a0621ce..defefa11d7443 100644 --- a/src/plugins/event_annotation/common/query_point_event_annotation/types.ts +++ b/src/plugins/event_annotation/common/query_point_event_annotation/types.ts @@ -15,6 +15,7 @@ export type QueryPointEventAnnotationArgs = { timeField?: string; extraFields?: string[]; textField?: string; + ignoreGlobalFilters?: boolean; } & PointStyleProps; export type QueryPointEventAnnotationOutput = QueryPointEventAnnotationArgs & { diff --git a/src/plugins/event_annotation/common/types.ts b/src/plugins/event_annotation/common/types.ts index 76749bee5bc79..4868e861ff348 100644 --- a/src/plugins/event_annotation/common/types.ts +++ b/src/plugins/event_annotation/common/types.ts @@ -72,6 +72,7 @@ export type QueryPointEventAnnotationConfig = { timeField?: string; textField?: string; extraFields?: string[]; + ignoreGlobalFilters?: boolean; key: { type: 'point_in_time'; }; diff --git a/src/plugins/event_annotation/public/event_annotation_service/service.test.ts b/src/plugins/event_annotation/public/event_annotation_service/service.test.ts index 0fea0e7c38ea7..5abed8ba618ba 100644 --- a/src/plugins/event_annotation/public/event_annotation_service/service.test.ts +++ b/src/plugins/event_annotation/public/event_annotation_service/service.test.ts @@ -157,6 +157,7 @@ describe('Event Annotation Service', () => { icon: ['triangle'], textVisibility: [false], textField: [], + ignoreGlobalFilters: [false], filter: [ { chain: [ @@ -264,6 +265,7 @@ describe('Event Annotation Service', () => { icon: ['triangle'], textVisibility: [false], textField: [], + ignoreGlobalFilters: [false], filter: [ { chain: [ @@ -326,6 +328,7 @@ describe('Event Annotation Service', () => { icon: ['triangle'], textVisibility: [textVisibility], textField: expected ? [expected] : [], + ignoreGlobalFilters: [false], filter: [ { chain: [ diff --git a/src/plugins/event_annotation/public/event_annotation_service/service.tsx b/src/plugins/event_annotation/public/event_annotation_service/service.tsx index 41bf12c288cc1..bb8c8d0d62ebd 100644 --- a/src/plugins/event_annotation/public/event_annotation_service/service.tsx +++ b/src/plugins/event_annotation/public/event_annotation_service/service.tsx @@ -91,6 +91,7 @@ export function getEventAnnotationService(): EventAnnotationServiceType { textField, filter, extraFields, + ignoreGlobalFilters, } = annotation; expressions.push({ type: 'expression' as const, @@ -110,6 +111,7 @@ export function getEventAnnotationService(): EventAnnotationServiceType { textField: textVisibility && textField ? [textField] : [], filter: filter ? [queryToAst(filter)] : [], extraFields: extraFields || [], + ignoreGlobalFilters: [Boolean(ignoreGlobalFilters)], }, }, ], diff --git a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts index 124e7e8e1ddd3..184b44e47032c 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts @@ -560,6 +560,7 @@ describe('#toExpression', () => { layerType: layerTypes.ANNOTATIONS, annotations: [], indexPatternId: 'my-indexPattern', + ignoreGlobalFilters: true, }, ], }, diff --git a/x-pack/plugins/lens/public/visualizations/xy/to_expression.ts b/x-pack/plugins/lens/public/visualizations/xy/to_expression.ts index bfe722a21f979..345e8ffcb5b19 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/to_expression.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/to_expression.ts @@ -190,6 +190,7 @@ export const buildExpression = ( annotations: layer.annotations.map((c) => ({ ...c, label: uniqueLabels[c.id], + ignoreGlobalFilters: layer.ignoreGlobalFilters, })), }; }); diff --git a/x-pack/plugins/lens/public/visualizations/xy/types.ts b/x-pack/plugins/lens/public/visualizations/xy/types.ts index 203718e4b9f8c..d101ad5661149 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/types.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/types.ts @@ -119,6 +119,7 @@ export interface XYAnnotationLayerConfig { hide?: boolean; indexPatternId: string; simpleView?: boolean; + ignoreGlobalFilters: boolean; } export type XYLayerConfig = diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts index febec4fb08af4..5e852629e1353 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts @@ -464,6 +464,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ], }, @@ -475,6 +476,7 @@ describe('xy_visualization', () => { layerId: 'annotation', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', + ignoreGlobalFilters: true, annotations: [ exampleAnnotation, { @@ -502,6 +504,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -525,6 +528,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2, { ...exampleAnnotation2, id: 'newColId' }], + ignoreGlobalFilters: true, }); }); it('should reorder a dimension to a annotation layer', () => { @@ -539,6 +543,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation, exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -563,6 +568,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2, exampleAnnotation], + ignoreGlobalFilters: true, }); }); @@ -578,12 +584,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -609,12 +617,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [{ ...exampleAnnotation, id: 'an2' }], + ignoreGlobalFilters: true, }, ]); }); @@ -630,12 +640,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -661,12 +673,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ]); }); @@ -682,12 +696,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -713,12 +729,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ]); }); @@ -734,12 +752,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [], + ignoreGlobalFilters: true, }, ], }, @@ -765,12 +785,14 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [], + ignoreGlobalFilters: true, }, { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ]); }); @@ -851,6 +873,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation, { ...exampleAnnotation, id: 'an2' }], + ignoreGlobalFilters: true, }, ], }, @@ -870,6 +893,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ]); }); @@ -1590,6 +1614,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation], + ignoreGlobalFilters: true, }, ], }; @@ -2407,6 +2432,7 @@ describe('xy_visualization', () => { layerId: 'annotation', layerType: layerTypes.ANNOTATIONS, annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -2427,6 +2453,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }); @@ -2444,6 +2471,7 @@ describe('xy_visualization', () => { layerId: 'annotation', layerType: layerTypes.ANNOTATIONS, annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }, @@ -2464,6 +2492,7 @@ describe('xy_visualization', () => { layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', annotations: [exampleAnnotation2], + ignoreGlobalFilters: true, }, ], }); diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization_helpers.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization_helpers.tsx index 0e32e4006187c..7aaa1c93f8fdb 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization_helpers.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization_helpers.tsx @@ -286,6 +286,7 @@ const newLayerFn = { layerType: layerTypes.ANNOTATIONS, annotations: [], indexPatternId, + ignoreGlobalFilters: true, }), }; diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx index f405985748fd2..bc28cde9bf8e9 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx @@ -55,6 +55,7 @@ describe('AnnotationsPanel', () => { layerId: 'annotation', indexPatternId: 'indexPattern1', annotations: [customLineStaticAnnotation], + ignoreGlobalFilters: true, }, ], }; @@ -129,6 +130,7 @@ describe('AnnotationsPanel', () => { layerId: 'annotation', layerType: 'annotations', indexPatternId: 'indexPattern1', + ignoreGlobalFilters: true, }; const component = mount( { indexPatternId: 'indexPattern1', layerId: 'annotation', layerType: 'annotations', + ignoreGlobalFilters: true, }, ], }); @@ -231,6 +234,7 @@ describe('AnnotationsPanel', () => { indexPatternId: 'indexPattern1', layerId: 'annotation', layerType: 'annotations', + ignoreGlobalFilters: true, }, ], }); @@ -260,6 +264,7 @@ describe('AnnotationsPanel', () => { layerId: 'annotation', layerType: 'annotations', indexPatternId: indexPattern.id, + ignoreGlobalFilters: true, }; const frameMock = createMockFramePublicAPI({ datasourceLayers: {}, diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts index a2a0463a41cc4..d67fec22d2294 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts @@ -550,6 +550,7 @@ describe('xy_suggestions', () => { layerId: 'second', layerType: layerTypes.ANNOTATIONS, indexPatternId: 'indexPattern1', + ignoreGlobalFilters: true, annotations: [ { id: '1', diff --git a/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts b/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts index bbac982150000..8b977fbce5742 100644 --- a/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts +++ b/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts @@ -27,7 +27,7 @@ import { commonUpdateVisLayerType, getLensCustomVisualizationMigrations, getLensFilterMigrations, - commonExplicitAnnotationType, + commonEnrichAnnotationLayer, getLensDataViewMigrations, commonMigrateMetricIds, commonMigratePartitionChartGroups, @@ -141,7 +141,7 @@ export const makeLensEmbeddableFactory = }; let migratedLensState = commonMigrateMetricIds(lensState.attributes); - migratedLensState = commonExplicitAnnotationType( + migratedLensState = commonEnrichAnnotationLayer( migratedLensState as LensDocShape850 ); migratedLensState = commonMigratePartitionChartGroups( diff --git a/x-pack/plugins/lens/server/migrations/common_migrations.ts b/x-pack/plugins/lens/server/migrations/common_migrations.ts index 89dca4829c583..7fd65d44bb0b6 100644 --- a/x-pack/plugins/lens/server/migrations/common_migrations.ts +++ b/x-pack/plugins/lens/server/migrations/common_migrations.ts @@ -423,7 +423,7 @@ export const commonFixValueLabelsInXY = ( }; }; -export const commonExplicitAnnotationType = ( +export const commonEnrichAnnotationLayer = ( attributes: LensDocShape850 ): LensDocShape850 => { // Skip the migration heavy part if not XY or it does not contain annotations @@ -449,6 +449,7 @@ export const commonExplicitAnnotationType = ( return { ...l, annotations: l.annotations.map((a) => ({ ...a, type: 'manual' })), + ignoreGlobalFilters: true, }; }), }, diff --git a/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts b/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts index b07f801e53f11..8264ed4853d35 100644 --- a/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts +++ b/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts @@ -2294,7 +2294,7 @@ describe('Lens migrations', () => { }); }); - describe('8.5.0 Add Annotation event type and dataView references', () => { + describe('8.5.0 Add Annotation event type and ignore filters flag', () => { const context = { log: { warn: () => {} } } as unknown as SavedObjectMigrationContext; const example = { type: 'lens', @@ -2328,6 +2328,7 @@ describe('Lens migrations', () => { expect(annotationLayer).toEqual({ layerType: 'annotations', annotations: [{ id: 'annotation-id', type: 'manual' }], + ignoreGlobalFilters: true, }); }); }); diff --git a/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts b/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts index e48f46ad885c5..2f02ca358fcc0 100644 --- a/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts +++ b/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts @@ -55,7 +55,7 @@ import { commonFixValueLabelsInXY, commonLockOldMetricVisSettings, commonPreserveOldLegendSizeDefault, - commonExplicitAnnotationType, + commonEnrichAnnotationLayer, getLensDataViewMigrations, commonMigrateMetricIds, commonMigratePartitionChartGroups, @@ -520,12 +520,12 @@ const preserveOldLegendSizeDefault: SavedObjectMigrationFn ({ ...doc, attributes: commonPreserveOldLegendSizeDefault(doc.attributes) }); -const addEventAnnotationType: SavedObjectMigrationFn< +const enrichAnnotationLayers: SavedObjectMigrationFn< LensDocShape850, LensDocShape850 > = (doc) => { const newDoc = cloneDeep(doc); - return { ...newDoc, attributes: commonExplicitAnnotationType(newDoc.attributes) }; + return { ...newDoc, attributes: commonEnrichAnnotationLayer(newDoc.attributes) }; }; const migrateMetricIds: SavedObjectMigrationFn = (doc) => ({ @@ -565,7 +565,7 @@ const lensMigrations: SavedObjectMigrationMap = { enhanceTableRowHeight ), '8.3.0': flow(lockOldMetricVisSettings, preserveOldLegendSizeDefault, fixValueLabelsInXY), - '8.5.0': flow(migrateMetricIds, addEventAnnotationType, migratePartitionChartGroups), + '8.5.0': flow(migrateMetricIds, enrichAnnotationLayers, migratePartitionChartGroups), }; export const getAllMigrations = ( diff --git a/x-pack/plugins/lens/server/migrations/types.ts b/x-pack/plugins/lens/server/migrations/types.ts index a922223b6ccd7..87c993a712e01 100644 --- a/x-pack/plugins/lens/server/migrations/types.ts +++ b/x-pack/plugins/lens/server/migrations/types.ts @@ -294,6 +294,7 @@ export interface XYVisState850 { layerId: string; layerType: Extract; annotations: Array<{ id: string; type: 'manual' | 'query' }>; + ignoreGlobalFilters: boolean; } >; } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index b066ae3b70d59..f32dfbd09ea20 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -17798,7 +17798,6 @@ "xpack.lens.xyChart.addLayerTooltip": "Utilisez plusieurs calques pour combiner les types de visualisation ou pour visualiser différentes vues de données.", "xpack.lens.xyChart.addReferenceLineLayerLabel": "Lignes de référence", "xpack.lens.xyChart.addReferenceLineLayerLabelDisabledHelp": "Ajouter des données pour activer le calque de référence", - "xpack.lens.xyChart.annotation.name": "Masquer l’annotation", "xpack.lens.xyChart.annotationDate": "Date de l’annotation", "xpack.lens.xyChart.annotationDate.from": "De", "xpack.lens.xyChart.annotationDate.to": "À", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 7f1d687e3e25e..20756d9a2d7a5 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -17781,7 +17781,6 @@ "xpack.lens.xyChart.addLayerTooltip": "複数のレイヤーを使用すると、ビジュアライゼーションタイプを組み合わせたり、別のデータビューを可視化したりすることができます。", "xpack.lens.xyChart.addReferenceLineLayerLabel": "基準線", "xpack.lens.xyChart.addReferenceLineLayerLabelDisabledHelp": "一部のデータを追加して、基準レイヤーを有効にする", - "xpack.lens.xyChart.annotation.name": "注釈を非表示", "xpack.lens.xyChart.annotationDate": "注釈日", "xpack.lens.xyChart.annotationDate.from": "開始:", "xpack.lens.xyChart.annotationDate.to": "終了:", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index e9e751a71ee83..ccfa340822fc8 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -17803,7 +17803,6 @@ "xpack.lens.xyChart.addLayerTooltip": "使用多个图层以组合可视化类型或可视化不同的数据视图。", "xpack.lens.xyChart.addReferenceLineLayerLabel": "参考线", "xpack.lens.xyChart.addReferenceLineLayerLabelDisabledHelp": "添加一些数据以启用参考图层", - "xpack.lens.xyChart.annotation.name": "隐藏标注", "xpack.lens.xyChart.annotationDate": "标注日期", "xpack.lens.xyChart.annotationDate.from": "自", "xpack.lens.xyChart.annotationDate.to": "至", From c6892d4294c7a1ff64f4445625d2da4b78f8dea9 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Mon, 19 Sep 2022 13:34:16 +0200 Subject: [PATCH 52/79] [Profiling] Apply weight to comparison side based on selected time range (#140921) --- .../public/utils/get_flamegraph_model/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts index 3cf4b0807fbd9..1402897b966ac 100644 --- a/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts +++ b/x-pack/plugins/profiling/public/utils/get_flamegraph_model/index.ts @@ -80,6 +80,11 @@ export function getFlamegraphModel({ const totalSamples = sum(primaryFlamegraph.CountExclusive); const comparisonTotalSamples = sum(comparisonFlamegraph.CountExclusive); + const weightComparisonSide = + comparisonMode === FlameGraphComparisonMode.Relative + ? 1 + : primaryFlamegraph.TotalSeconds / comparisonFlamegraph.TotalSeconds; + primaryFlamegraph.ID.forEach((nodeID, index) => { const samples = primaryFlamegraph.Value[index]; const comparisonSamples = comparisonNodesById[nodeID]?.Value as number | undefined; @@ -94,7 +99,11 @@ export function getFlamegraphModel({ const denominator = comparisonMode === FlameGraphComparisonMode.Absolute ? totalSamples : foreground; - const interpolationValue = getInterpolationValue(foreground, background, denominator); + const interpolationValue = getInterpolationValue( + foreground, + background === undefined ? undefined : background * weightComparisonSide, + denominator + ); const nodeColor = interpolationValue >= 0 From 140f7207105431272c8d60840a8a0cc254b17124 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 19 Sep 2022 07:54:45 -0400 Subject: [PATCH 53/79] [Fleet] Rename IngestManagerError FleetError (#140852) --- x-pack/plugins/fleet/common/errors.ts | 4 +- .../fleet/server/errors/handlers.test.ts | 30 ++++---- .../plugins/fleet/server/errors/handlers.ts | 14 ++-- x-pack/plugins/fleet/server/errors/index.ts | 74 ++++++++++--------- .../server/routes/agent/actions_handlers.ts | 6 +- .../fleet/server/routes/agent/handlers.ts | 26 +++---- .../server/routes/agent/unenroll_handler.ts | 6 +- .../server/routes/agent/upgrade_handler.ts | 8 +- .../server/routes/agent_policy/handlers.ts | 28 +++---- .../plugins/fleet/server/routes/app/index.ts | 6 +- .../server/routes/data_streams/handlers.ts | 4 +- .../server/routes/download_source/handler.ts | 12 +-- .../routes/enrollment_api_key/handler.ts | 10 +-- .../fleet/server/routes/epm/handlers.ts | 30 ++++---- .../fleet/server/routes/output/handler.ts | 14 ++-- .../server/routes/package_policy/handlers.ts | 22 +++--- .../server/routes/preconfiguration/handler.ts | 8 +- .../fleet/server/routes/settings/index.ts | 6 +- .../fleet/server/routes/setup/handlers.ts | 6 +- .../fleet/server/services/agents/crud.ts | 8 +- .../services/agents/upgrade_action_runner.ts | 4 +- .../services/api_keys/enrollment_api_key.ts | 4 +- .../fleet/server/services/download_source.ts | 4 +- .../elasticsearch/ingest_pipeline/remove.ts | 4 +- .../services/epm/packages/bundled_packages.ts | 4 +- .../fleet/server/services/epm/packages/get.ts | 8 +- .../server/services/epm/packages/install.ts | 6 +- .../server/services/epm/packages/update.ts | 4 +- .../server/services/package_policy.test.ts | 8 +- .../fleet/server/services/package_policy.ts | 26 +++---- 30 files changed, 193 insertions(+), 201 deletions(-) diff --git a/x-pack/plugins/fleet/common/errors.ts b/x-pack/plugins/fleet/common/errors.ts index ad3a16b752efe..8e22b971be6ad 100644 --- a/x-pack/plugins/fleet/common/errors.ts +++ b/x-pack/plugins/fleet/common/errors.ts @@ -8,7 +8,7 @@ import type { FleetErrorType } from './types'; -export class IngestManagerError extends Error { +export class FleetError extends Error { attributes?: { type: FleetErrorType }; constructor(message?: string, public readonly meta?: unknown) { super(message); @@ -16,4 +16,4 @@ export class IngestManagerError extends Error { } } -export class PackagePolicyValidationError extends IngestManagerError {} +export class PackagePolicyValidationError extends FleetError {} diff --git a/x-pack/plugins/fleet/server/errors/handlers.test.ts b/x-pack/plugins/fleet/server/errors/handlers.test.ts index 95850829e9f97..a4e6cfafbf951 100644 --- a/x-pack/plugins/fleet/server/errors/handlers.test.ts +++ b/x-pack/plugins/fleet/server/errors/handlers.test.ts @@ -12,14 +12,14 @@ import { createAppContextStartContractMock } from '../mocks'; import { appContextService } from '../services'; import { - IngestManagerError, + FleetError, RegistryError, PackageNotFoundError, PackageUnsupportedMediaTypeError, - defaultIngestErrorHandler, + defaultFleetErrorHandler, } from '.'; -describe('defaultIngestErrorHandler', () => { +describe('defaultFleetErrorHandler', () => { let mockContract: ReturnType; beforeEach(async () => { // prevents `Logger not set.` and other appContext errors @@ -32,12 +32,12 @@ describe('defaultIngestErrorHandler', () => { appContextService.stop(); }); - describe('IngestManagerError', () => { + describe('FleetError', () => { it('502: RegistryError', async () => { const error = new RegistryError('xyz'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -56,7 +56,7 @@ describe('defaultIngestErrorHandler', () => { const error = new PackageUnsupportedMediaTypeError('123'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -75,7 +75,7 @@ describe('defaultIngestErrorHandler', () => { const error = new PackageNotFoundError('123'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -90,11 +90,11 @@ describe('defaultIngestErrorHandler', () => { expect(mockContract.logger?.error).toHaveBeenCalledWith(error.message); }); - it('400: IngestManagerError', async () => { - const error = new IngestManagerError('123'); + it('400: FleetError', async () => { + const error = new FleetError('123'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -115,7 +115,7 @@ describe('defaultIngestErrorHandler', () => { const error = new Boom.Boom('bam'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -136,7 +136,7 @@ describe('defaultIngestErrorHandler', () => { }); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -155,7 +155,7 @@ describe('defaultIngestErrorHandler', () => { const error = Boom.badRequest('nope'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -174,7 +174,7 @@ describe('defaultIngestErrorHandler', () => { const error = Boom.notFound('sorry'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); @@ -195,7 +195,7 @@ describe('defaultIngestErrorHandler', () => { const error = new Error('something'); const response = httpServerMock.createResponseFactory(); - await defaultIngestErrorHandler({ error, response }); + await defaultFleetErrorHandler({ error, response }); // response expect(response.ok).toHaveBeenCalledTimes(0); diff --git a/x-pack/plugins/fleet/server/errors/handlers.ts b/x-pack/plugins/fleet/server/errors/handlers.ts index e048136328529..89811ca2bc7aa 100644 --- a/x-pack/plugins/fleet/server/errors/handlers.ts +++ b/x-pack/plugins/fleet/server/errors/handlers.ts @@ -22,7 +22,7 @@ import { AgentActionNotFoundError, AgentPolicyNameExistsError, ConcurrentInstallOperationError, - IngestManagerError, + FleetError, PackageNotFoundError, PackageUnsupportedMediaTypeError, RegistryConnectionError, @@ -37,7 +37,7 @@ type IngestErrorHandler = ( params: IngestErrorHandlerParams ) => IKibanaResponse | Promise; interface IngestErrorHandlerParams { - error: IngestManagerError | Boom.Boom | Error; + error: FleetError | Boom.Boom | Error; response: KibanaResponseFactory; request?: KibanaRequest; context?: RequestHandlerContext; @@ -45,7 +45,7 @@ interface IngestErrorHandlerParams { // unsure if this is correct. would prefer to use something "official" // this type is based on BadRequest values observed while debugging https://github.com/elastic/kibana/issues/75862 -const getHTTPResponseCode = (error: IngestManagerError): number => { +const getHTTPResponseCode = (error: FleetError): number => { if (error instanceof RegistryResponseError) { // 4xx/5xx's from EPR return 500; @@ -81,10 +81,10 @@ const getHTTPResponseCode = (error: IngestManagerError): number => { return 400; // Bad Request }; -export function ingestErrorToResponseOptions(error: IngestErrorHandlerParams['error']) { +export function fleetErrorToResponseOptions(error: IngestErrorHandlerParams['error']) { const logger = appContextService.getLogger(); // our "expected" errors - if (error instanceof IngestManagerError) { + if (error instanceof FleetError) { // only log the message logger.error(error.message); return { @@ -114,10 +114,10 @@ export function ingestErrorToResponseOptions(error: IngestErrorHandlerParams['er }; } -export const defaultIngestErrorHandler: IngestErrorHandler = async ({ +export const defaultFleetErrorHandler: IngestErrorHandler = async ({ error, response, }: IngestErrorHandlerParams): Promise => { - const options = ingestErrorToResponseOptions(error); + const options = fleetErrorToResponseOptions(error); return response.customError(options); }; diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index 7ed8e2daa04a0..1b8a627a35722 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -8,26 +8,28 @@ /* eslint-disable max-classes-per-file */ import type { ElasticsearchErrorDetails } from '@kbn/es-errors'; -import { IngestManagerError } from '../../common/errors'; +import { FleetError } from '../../common/errors'; import { isESClientError } from './utils'; - -export { defaultIngestErrorHandler, ingestErrorToResponseOptions } from './handlers'; +export { + defaultFleetErrorHandler as defaultFleetErrorHandler, + fleetErrorToResponseOptions, +} from './handlers'; export { isESClientError } from './utils'; -export { IngestManagerError } from '../../common/errors'; +export { FleetError as FleetError } from '../../common/errors'; -export class RegistryError extends IngestManagerError {} +export class RegistryError extends FleetError {} export class RegistryConnectionError extends RegistryError {} export class RegistryResponseError extends RegistryError { constructor(message?: string, public readonly status?: number) { super(message); } } -export class PackageNotFoundError extends IngestManagerError {} -export class PackageKeyInvalidError extends IngestManagerError {} -export class PackageOutdatedError extends IngestManagerError {} -export class PackageFailedVerificationError extends IngestManagerError { +export class PackageNotFoundError extends FleetError {} +export class PackageKeyInvalidError extends FleetError {} +export class PackageOutdatedError extends FleetError {} +export class PackageFailedVerificationError extends FleetError { constructor(pkgName: string, pkgVersion: string) { super(`${pkgName}-${pkgVersion} failed signature verification.`); this.attributes = { @@ -35,54 +37,54 @@ export class PackageFailedVerificationError extends IngestManagerError { }; } } -export class AgentPolicyError extends IngestManagerError {} -export class AgentPolicyNotFoundError extends IngestManagerError {} -export class AgentNotFoundError extends IngestManagerError {} -export class AgentActionNotFoundError extends IngestManagerError {} +export class AgentPolicyError extends FleetError {} +export class AgentPolicyNotFoundError extends FleetError {} +export class AgentNotFoundError extends FleetError {} +export class AgentActionNotFoundError extends FleetError {} export class AgentPolicyNameExistsError extends AgentPolicyError {} -export class PackageUnsupportedMediaTypeError extends IngestManagerError {} -export class PackageInvalidArchiveError extends IngestManagerError {} -export class PackageCacheError extends IngestManagerError {} -export class PackageOperationNotSupportedError extends IngestManagerError {} -export class ConcurrentInstallOperationError extends IngestManagerError {} -export class AgentReassignmentError extends IngestManagerError {} -export class PackagePolicyIneligibleForUpgradeError extends IngestManagerError {} -export class PackagePolicyValidationError extends IngestManagerError {} -export class PackagePolicyNotFoundError extends IngestManagerError {} -export class BundledPackageNotFoundError extends IngestManagerError {} -export class HostedAgentPolicyRestrictionRelatedError extends IngestManagerError { +export class PackageUnsupportedMediaTypeError extends FleetError {} +export class PackageInvalidArchiveError extends FleetError {} +export class PackageCacheError extends FleetError {} +export class PackageOperationNotSupportedError extends FleetError {} +export class ConcurrentInstallOperationError extends FleetError {} +export class AgentReassignmentError extends FleetError {} +export class PackagePolicyIneligibleForUpgradeError extends FleetError {} +export class PackagePolicyValidationError extends FleetError {} +export class PackagePolicyNotFoundError extends FleetError {} +export class BundledPackageNotFoundError extends FleetError {} +export class HostedAgentPolicyRestrictionRelatedError extends FleetError { constructor(message = 'Cannot perform that action') { super( `${message} in Fleet because the agent policy is managed by an external orchestration solution, such as Elastic Cloud, Kubernetes, etc. Please make changes using your orchestration solution.` ); } } -export class PackagePolicyRestrictionRelatedError extends IngestManagerError { +export class PackagePolicyRestrictionRelatedError extends FleetError { constructor(message = 'Cannot perform that action') { super( `${message} in Fleet because the package policy is managed by an external orchestration solution, such as Elastic Cloud, Kubernetes, etc. Please make changes using your orchestration solution.` ); } } -export class FleetEncryptedSavedObjectEncryptionKeyRequired extends IngestManagerError {} -export class FleetSetupError extends IngestManagerError {} -export class GenerateServiceTokenError extends IngestManagerError {} -export class FleetUnauthorizedError extends IngestManagerError {} +export class FleetEncryptedSavedObjectEncryptionKeyRequired extends FleetError {} +export class FleetSetupError extends FleetError {} +export class GenerateServiceTokenError extends FleetError {} +export class FleetUnauthorizedError extends FleetError {} -export class OutputUnauthorizedError extends IngestManagerError {} -export class OutputInvalidError extends IngestManagerError {} -export class OutputLicenceError extends IngestManagerError {} -export class DownloadSourceError extends IngestManagerError {} +export class OutputUnauthorizedError extends FleetError {} +export class OutputInvalidError extends FleetError {} +export class OutputLicenceError extends FleetError {} +export class DownloadSourceError extends FleetError {} -export class ArtifactsClientError extends IngestManagerError {} -export class ArtifactsClientAccessDeniedError extends IngestManagerError { +export class ArtifactsClientError extends FleetError {} +export class ArtifactsClientAccessDeniedError extends FleetError { constructor(deniedPackageName: string, allowedPackageName: string) { super( `Access denied. Artifact package name (${deniedPackageName}) does not match ${allowedPackageName}` ); } } -export class ArtifactsElasticsearchError extends IngestManagerError { +export class ArtifactsElasticsearchError extends FleetError { readonly requestDetails: string; constructor(public readonly meta: Error) { diff --git a/x-pack/plugins/fleet/server/routes/agent/actions_handlers.ts b/x-pack/plugins/fleet/server/routes/agent/actions_handlers.ts index 36c1fd8401584..9495b8a214dea 100644 --- a/x-pack/plugins/fleet/server/routes/agent/actions_handlers.ts +++ b/x-pack/plugins/fleet/server/routes/agent/actions_handlers.ts @@ -16,7 +16,7 @@ import type { } from '../../types/rest_spec'; import type { ActionsService } from '../../services/agents'; import type { PostNewAgentActionResponse } from '../../../common/types/rest_spec'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; export const postNewAgentActionHandlerBuilder = function ( actionsService: ActionsService @@ -45,7 +45,7 @@ export const postNewAgentActionHandlerBuilder = function ( return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; }; @@ -65,7 +65,7 @@ export const postCancelActionHandlerBuilder = function ( return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; }; diff --git a/x-pack/plugins/fleet/server/routes/agent/handlers.ts b/x-pack/plugins/fleet/server/routes/agent/handlers.ts index 0f931f85fa3af..1ae6fb81742d1 100644 --- a/x-pack/plugins/fleet/server/routes/agent/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/agent/handlers.ts @@ -44,7 +44,7 @@ import type { PostBulkUpdateAgentTagsRequestSchema, GetActionStatusRequestSchema, } from '../../types'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import * as AgentService from '../../services/agents'; export const getAgentHandler: RequestHandler< @@ -66,7 +66,7 @@ export const getAgentHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -92,7 +92,7 @@ export const deleteAgentHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -126,7 +126,7 @@ export const updateAgentHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -161,7 +161,7 @@ export const bulkUpdateAgentTagsHandler: RequestHandler< return response.ok({ body: { ...body, actionId: results.actionId } }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -198,7 +198,7 @@ export const getAgentsHandler: RequestHandler< }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -220,7 +220,7 @@ export const getAgentTagsHandler: RequestHandler< }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -243,7 +243,7 @@ export const putAgentsReassignHandler: RequestHandler< const body: PutAgentReassignResponse = {}; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -277,7 +277,7 @@ export const postBulkAgentsReassignHandler: RequestHandler< return response.ok({ body: { ...body, actionId: results.actionId } }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -298,7 +298,7 @@ export const getAgentStatusForAgentPolicyHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -324,7 +324,7 @@ export const getAgentDataHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -361,7 +361,7 @@ export const getAvailableVersionsHandler: RequestHandler = async (context, reque const body: GetAvailableVersionsResponse = { items: versionsToDisplay }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -377,6 +377,6 @@ export const getActionStatusHandler: RequestHandler< const body: GetActionStatusResponse = { items: actionStatuses }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/agent/unenroll_handler.ts b/x-pack/plugins/fleet/server/routes/agent/unenroll_handler.ts index 8cc4a7b13e687..db5a497a30869 100644 --- a/x-pack/plugins/fleet/server/routes/agent/unenroll_handler.ts +++ b/x-pack/plugins/fleet/server/routes/agent/unenroll_handler.ts @@ -17,7 +17,7 @@ import type { PostBulkAgentUnenrollRequestSchema, } from '../../types'; import * as AgentService from '../../services/agents'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; export const postAgentUnenrollHandler: RequestHandler< TypeOf, @@ -36,7 +36,7 @@ export const postAgentUnenrollHandler: RequestHandler< const body: PostAgentUnenrollResponse = {}; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -69,6 +69,6 @@ export const postBulkAgentsUnenrollHandler: RequestHandler< return response.ok({ body: { ...body, actionId: results.actionId } }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts b/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts index ff78da6e63d1a..4af0c1ff653b2 100644 --- a/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts +++ b/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts @@ -19,7 +19,7 @@ import type { import type { PostAgentUpgradeRequestSchema, PostBulkAgentUpgradeRequestSchema } from '../../types'; import * as AgentService from '../../services/agents'; import { appContextService } from '../../services'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import { isAgentUpgradeable } from '../../../common/services'; import { getMaxVersion } from '../../../common/services/get_min_max_version'; import { getAgentById } from '../../services/agents'; @@ -78,7 +78,7 @@ export const postAgentUpgradeHandler: RequestHandler< const body: PostAgentUpgradeResponse = {}; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -135,7 +135,7 @@ export const postBulkAgentsUpgradeHandler: RequestHandler< return response.ok({ body: { ...body, actionId: results.actionId } }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -148,7 +148,7 @@ export const getCurrentUpgradesHandler: RequestHandler = async (context, request const body: GetCurrentUpgradesResponse = { items: upgrades }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts b/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts index 8f8b3b2af0b19..42f4560f736bc 100644 --- a/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts @@ -41,7 +41,7 @@ import type { GetFullAgentManifestResponse, BulkGetAgentPoliciesResponse, } from '../../../common/types'; -import { defaultIngestErrorHandler, AgentPolicyNotFoundError } from '../../errors'; +import { defaultFleetErrorHandler, AgentPolicyNotFoundError } from '../../errors'; import { createAgentPolicyWithPackages } from '../../services/agent_policy_create'; async function populateAssignedAgentsCount( @@ -87,7 +87,7 @@ export const getAgentPoliciesHandler: FleetRequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -122,7 +122,7 @@ export const bulkGetAgentPoliciesHandler: FleetRequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -147,7 +147,7 @@ export const getOneAgentPolicyHandler: RequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -183,7 +183,7 @@ export const createAgentPolicyHandler: FleetRequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -216,7 +216,7 @@ export const updateAgentPolicyHandler: FleetRequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -245,7 +245,7 @@ export const copyAgentPolicyHandler: RequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -267,7 +267,7 @@ export const deleteAgentPoliciesHandler: RequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -299,7 +299,7 @@ export const getFullAgentPolicy: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } else { try { @@ -322,7 +322,7 @@ export const getFullAgentPolicy: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } }; @@ -361,7 +361,7 @@ export const downloadFullAgentPolicy: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } else { try { @@ -385,7 +385,7 @@ export const downloadFullAgentPolicy: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } }; @@ -412,7 +412,7 @@ export const getK8sManifest: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -441,6 +441,6 @@ export const downloadK8sManifest: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/app/index.ts b/x-pack/plugins/fleet/server/routes/app/index.ts index 56dd99268b599..dd16c34ede805 100644 --- a/x-pack/plugins/fleet/server/routes/app/index.ts +++ b/x-pack/plugins/fleet/server/routes/app/index.ts @@ -11,7 +11,7 @@ import type { TypeOf } from '@kbn/config-schema'; import { APP_API_ROUTES } from '../../constants'; import { appContextService } from '../../services'; import type { CheckPermissionsResponse, GenerateServiceTokenResponse } from '../../../common/types'; -import { defaultIngestErrorHandler, GenerateServiceTokenError } from '../../errors'; +import { defaultFleetErrorHandler, GenerateServiceTokenError } from '../../errors'; import type { FleetAuthzRouter } from '../security'; import type { FleetRequestHandler } from '../../types'; import { CheckPermissionsRequestSchema } from '../../types'; @@ -77,11 +77,11 @@ export const generateServiceTokenHandler: RequestHandler = async (context, reque }); } else { const error = new GenerateServiceTokenError('Unable to generate service token'); - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } catch (e) { const error = new GenerateServiceTokenError(e); - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts index 682eb1d796431..d761f8b5e7f30 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts @@ -11,7 +11,7 @@ import type { DataStream } from '../../types'; import { KibanaSavedObjectType } from '../../../common/types'; import type { GetDataStreamsResponse } from '../../../common/types'; import { getPackageSavedObjects } from '../../services/epm/packages/get'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import { getDataStreamsQueryMetadata } from './get_data_streams_query_metadata'; @@ -198,6 +198,6 @@ export const getListHandler: RequestHandler = async (context, request, response) body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/download_source/handler.ts b/x-pack/plugins/fleet/server/routes/download_source/handler.ts index f0419a7d1d438..b82c3ad19de55 100644 --- a/x-pack/plugins/fleet/server/routes/download_source/handler.ts +++ b/x-pack/plugins/fleet/server/routes/download_source/handler.ts @@ -21,7 +21,7 @@ import type { GetDownloadSourceResponse, } from '../../../common/types'; import { downloadSourceService } from '../../services/download_source'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import { agentPolicyService } from '../../services'; export const getDownloadSourcesHandler: RequestHandler = async (context, request, response) => { @@ -38,7 +38,7 @@ export const getDownloadSourcesHandler: RequestHandler = async (context, request return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -61,7 +61,7 @@ export const getOneDownloadSourcesHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -98,7 +98,7 @@ export const putDownloadSourcesHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -123,7 +123,7 @@ export const postDownloadSourcesHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -146,6 +146,6 @@ export const deleteDownloadSourcesHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts b/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts index 942e8e4632ee8..60d8a2de45119 100644 --- a/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts +++ b/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts @@ -22,7 +22,7 @@ import type { } from '../../../common/types'; import * as APIKeyService from '../../services/api_keys'; import { agentPolicyService } from '../../services/agent_policy'; -import { defaultIngestErrorHandler, AgentPolicyNotFoundError } from '../../errors'; +import { defaultFleetErrorHandler, AgentPolicyNotFoundError } from '../../errors'; export const getEnrollmentApiKeysHandler: RequestHandler< undefined, @@ -47,7 +47,7 @@ export const getEnrollmentApiKeysHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; export const postEnrollmentApiKeyHandler: RequestHandler< @@ -78,7 +78,7 @@ export const postEnrollmentApiKeyHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -98,7 +98,7 @@ export const deleteEnrollmentApiKeyHandler: RequestHandler< body: { message: `EnrollmentAPIKey ${request.params.keyId} not found` }, }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -119,6 +119,6 @@ export const getOneEnrollmentApiKeyHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/epm/handlers.ts b/x-pack/plugins/fleet/server/routes/epm/handlers.ts index bc02068fa9f27..e5e2cc5128074 100644 --- a/x-pack/plugins/fleet/server/routes/epm/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/epm/handlers.ts @@ -51,11 +51,7 @@ import { getInstallation, } from '../../services/epm/packages'; import type { BulkInstallResponse } from '../../services/epm/packages'; -import { - defaultIngestErrorHandler, - ingestErrorToResponseOptions, - IngestManagerError, -} from '../../errors'; +import { defaultFleetErrorHandler, fleetErrorToResponseOptions, FleetError } from '../../errors'; import { licenseService } from '../../services'; import { getArchiveEntry } from '../../services/epm/archive/cache'; import { getAsset } from '../../services/epm/archive/storage'; @@ -78,7 +74,7 @@ export const getCategoriesHandler: FleetRequestHandler< }; return response.ok({ body, headers: { ...CACHE_CONTROL_10_MINUTES_HEADER } }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -103,7 +99,7 @@ export const getListHandler: FleetRequestHandler< headers: request.query.excludeInstallStatus ? { ...CACHE_CONTROL_10_MINUTES_HEADER } : {}, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -119,7 +115,7 @@ export const getLimitedListHandler: FleetRequestHandler = async (context, reques body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -193,7 +189,7 @@ export const getFileHandler: FleetRequestHandler< }); } } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -204,7 +200,7 @@ export const getInfoHandler: FleetRequestHandler< const savedObjectsClient = (await context.fleet).epm.internalSoClient; const { pkgName, pkgVersion } = request.params; if (pkgVersion && !semverValid(pkgVersion)) { - throw new IngestManagerError('Package version is not a valid semver'); + throw new FleetError('Package version is not a valid semver'); } const res = await getPackageInfo({ savedObjectsClient, @@ -217,7 +213,7 @@ export const getInfoHandler: FleetRequestHandler< }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -237,7 +233,7 @@ export const updatePackageHandler: FleetRequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -252,7 +248,7 @@ export const getStatsHandler: FleetRequestHandler< }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -287,7 +283,7 @@ export const installPackageFromRegistryHandler: FleetRequestHandler< }; return response.ok({ body }); } else { - return await defaultIngestErrorHandler({ error: res.error, response }); + return await defaultFleetErrorHandler({ error: res.error, response }); } }; @@ -295,7 +291,7 @@ const bulkInstallServiceResponseToHttpEntry = ( result: BulkInstallResponse ): BulkInstallPackageInfo | IBulkInstallPackageHTTPError => { if (isBulkInstallError(result)) { - const { statusCode, body } = ingestErrorToResponseOptions(result.error); + const { statusCode, body } = fleetErrorToResponseOptions(result.error); return { name: result.name, statusCode, @@ -366,7 +362,7 @@ export const installPackageByUploadHandler: FleetRequestHandler< }; return response.ok({ body }); } else { - return defaultIngestErrorHandler({ error: res.error, response }); + return defaultFleetErrorHandler({ error: res.error, response }); } }; @@ -393,6 +389,6 @@ export const deletePackageHandler: FleetRequestHandler< }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/output/handler.ts b/x-pack/plugins/fleet/server/routes/output/handler.ts index 407e8dc09fd2c..9a597be874bd6 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.ts @@ -21,7 +21,7 @@ import type { PostLogstashApiKeyResponse, } from '../../../common/types'; import { outputService } from '../../services/output'; -import { defaultIngestErrorHandler, FleetUnauthorizedError } from '../../errors'; +import { defaultFleetErrorHandler, FleetUnauthorizedError } from '../../errors'; import { agentPolicyService } from '../../services'; import { generateLogstashApiKey, canCreateLogstashApiKey } from '../../services/api_keys'; @@ -39,7 +39,7 @@ export const getOutputsHandler: RequestHandler = async (context, request, respon return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -62,7 +62,7 @@ export const getOneOuputHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -95,7 +95,7 @@ export const putOuputHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -120,7 +120,7 @@ export const postOuputHandler: RequestHandler< return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -143,7 +143,7 @@ export const deleteOutputHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -164,6 +164,6 @@ export const postLogstashApiKeyHandler: RequestHandler = async (context, request return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; 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 94721a48df3f2..2b4ebbb5728f2 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts @@ -36,7 +36,7 @@ import type { UpgradePackagePolicyResponse, } from '../../../common/types'; import { installationStatuses } from '../../../common/constants'; -import { defaultIngestErrorHandler, PackagePolicyNotFoundError } from '../../errors'; +import { defaultFleetErrorHandler, PackagePolicyNotFoundError } from '../../errors'; import { getInstallations, getPackageInfo } from '../../services/epm/packages'; import { PACKAGES_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT } from '../../constants'; import { simplifiedPackagePolicytoNewPackagePolicy } from '../../../common/services/simplified_package_policy_helper'; @@ -62,7 +62,7 @@ export const getPackagePoliciesHandler: RequestHandler< }, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -90,7 +90,7 @@ export const bulkGetPackagePoliciesHandler: RequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -117,7 +117,7 @@ export const getOnePackagePolicyHandler: RequestHandler< if (SavedObjectsErrorHelpers.isNotFoundError(error)) { return notFoundResponse(); } else { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } } }; @@ -162,7 +162,7 @@ export const getOrphanedPackagePolicies: RequestHandler = }, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -250,7 +250,7 @@ export const createPackagePolicyHandler: FleetRequestHandler< body: { message: error.message }, }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -340,7 +340,7 @@ export const updatePackagePolicyHandler: RequestHandler< body: { item: updatedPackagePolicy }, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -376,7 +376,7 @@ export const deletePackagePolicyHandler: RequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -423,7 +423,7 @@ export const deleteOnePackagePolicyHandler: RequestHandler< body: { id: request.params.packagePolicyId }, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -456,7 +456,7 @@ export const upgradePackagePolicyHandler: RequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -488,6 +488,6 @@ export const dryRunUpgradePackagePolicyHandler: RequestHandler< body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/preconfiguration/handler.ts b/x-pack/plugins/fleet/server/routes/preconfiguration/handler.ts index 69b4f7f330a0d..64f98746a19f9 100644 --- a/x-pack/plugins/fleet/server/routes/preconfiguration/handler.ts +++ b/x-pack/plugins/fleet/server/routes/preconfiguration/handler.ts @@ -14,7 +14,7 @@ import type { PutPreconfigurationSchema, PostResetOnePreconfiguredAgentPoliciesSchema, } from '../../types'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import { ensurePreconfiguredPackagesAndPolicies, outputService, @@ -48,7 +48,7 @@ export const updatePreconfigurationHandler: FleetRequestHandler< ); return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -65,7 +65,7 @@ export const resetOnePreconfigurationHandler: FleetRequestHandler< await resetPreconfiguredAgentPolicies(soClient, esClient, request.params.agentPolicyId); return response.ok({}); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -82,6 +82,6 @@ export const resetPreconfigurationHandler: FleetRequestHandler< await resetPreconfiguredAgentPolicies(soClient, esClient); return response.ok({}); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/settings/index.ts b/x-pack/plugins/fleet/server/routes/settings/index.ts index 07bd3342ade1d..f11244d7b59ff 100644 --- a/x-pack/plugins/fleet/server/routes/settings/index.ts +++ b/x-pack/plugins/fleet/server/routes/settings/index.ts @@ -10,7 +10,7 @@ import type { TypeOf } from '@kbn/config-schema'; import { SETTINGS_API_ROUTES } from '../../constants'; import type { FleetRequestHandler } from '../../types'; import { PutSettingsRequestSchema, GetSettingsRequestSchema } from '../../types'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import { settingsService, agentPolicyService, appContextService } from '../../services'; import type { FleetAuthzRouter } from '../security'; @@ -30,7 +30,7 @@ export const getSettingsHandler: FleetRequestHandler = async (context, request, }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -59,7 +59,7 @@ export const putSettingsHandler: FleetRequestHandler< }); } - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/setup/handlers.ts b/x-pack/plugins/fleet/server/routes/setup/handlers.ts index bc4cb483036fc..cf2ff46cd1110 100644 --- a/x-pack/plugins/fleet/server/routes/setup/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/setup/handlers.ts @@ -9,7 +9,7 @@ import { appContextService } from '../../services'; import type { GetFleetStatusResponse, PostFleetSetupResponse } from '../../../common/types'; import { formatNonFatalErrors, setupFleet } from '../../services/setup'; import { hasFleetServers } from '../../services/fleet_server'; -import { defaultIngestErrorHandler } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import type { FleetRequestHandler } from '../../types'; import { getGpgKeyIdOrUndefined } from '../../services/epm/packages/package_verification'; @@ -54,7 +54,7 @@ export const getFleetStatusHandler: FleetRequestHandler = async (context, reques body, }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; @@ -69,6 +69,6 @@ export const fleetSetupHandler: FleetRequestHandler = async (context, request, r }; return response.ok({ body }); } catch (error) { - return defaultIngestErrorHandler({ error, response }); + return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/services/agents/crud.ts b/x-pack/plugins/fleet/server/services/agents/crud.ts index 193bc71d04d29..7b3af0c77e626 100644 --- a/x-pack/plugins/fleet/server/services/agents/crud.ts +++ b/x-pack/plugins/fleet/server/services/agents/crud.ts @@ -18,7 +18,7 @@ import { SO_SEARCH_LIMIT } from '../../../common/constants'; import { isAgentUpgradeable } from '../../../common/services'; import { AGENTS_PREFIX, AGENTS_INDEX } from '../../constants'; import { escapeSearchQueryPhrase, normalizeKuery } from '../saved_object'; -import { IngestManagerError, isESClientError, AgentNotFoundError } from '../../errors'; +import { FleetError, isESClientError, AgentNotFoundError } from '../../errors'; import { searchHitToAgent, agentSOAttributesToFleetServerAgentDoc } from './helpers'; @@ -53,7 +53,7 @@ function _joinFilters(filters: Array): KueryNode undefined as KueryNode | undefined ); } catch (err) { - throw new IngestManagerError(`Kuery is malformed: ${err.message}`); + throw new FleetError(`Kuery is malformed: ${err.message}`); } } @@ -83,9 +83,7 @@ export async function getAgents(esClient: ElasticsearchClient, options: GetAgent }) ).agents; } else { - throw new IngestManagerError( - 'Either options.agentIds or options.kuery are required to get agents' - ); + throw new FleetError('Either options.agentIds or options.kuery are required to get agents'); } return agents; diff --git a/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts b/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts index ca2bd6a996d67..dcc74bbabcaea 100644 --- a/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts +++ b/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts @@ -13,7 +13,7 @@ import { isAgentUpgradeable } from '../../../common/services'; import type { Agent, BulkActionResult } from '../../types'; -import { HostedAgentPolicyRestrictionRelatedError, IngestManagerError } from '../../errors'; +import { HostedAgentPolicyRestrictionRelatedError, FleetError } from '../../errors'; import { appContextService } from '../app_context'; @@ -80,7 +80,7 @@ export async function upgradeBatch( const isNotAllowed = !options.force && !isAgentUpgradeable(agent, kibanaVersion, options.version); if (isNotAllowed) { - throw new IngestManagerError(`${agent.id} is not upgradeable`); + throw new FleetError(`${agent.id} is not upgradeable`); } if (!options.force && isHostedAgent(hostedPolicies, agent)) { diff --git a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts index 0f49cbe6c9fe2..0221ad2662a64 100644 --- a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts +++ b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts @@ -16,7 +16,7 @@ import { toElasticsearchQuery, fromKueryExpression } from '@kbn/es-query'; import type { ESSearchResponse as SearchResponse } from '@kbn/core/types/elasticsearch'; import type { EnrollmentAPIKey, FleetServerEnrollmentAPIKey } from '../../types'; -import { IngestManagerError } from '../../errors'; +import { FleetError } from '../../errors'; import { ENROLLMENT_API_KEYS_INDEX } from '../../constants'; import { agentPolicyService } from '../agent_policy'; import { escapeSearchQueryPhrase } from '../saved_object'; @@ -193,7 +193,7 @@ export async function generateEnrollmentAPIKey( k.name?.replace(providedKeyName, '').trim().match(uuidRegex) ) ) { - throw new IngestManagerError( + throw new FleetError( i18n.translate('xpack.fleet.serverError.enrollmentKeyDuplicate', { defaultMessage: 'An enrollment key named {providedKeyName} already exists for agent policy {agentPolicyId}', diff --git a/x-pack/plugins/fleet/server/services/download_source.ts b/x-pack/plugins/fleet/server/services/download_source.ts index e95e7eee014f9..690585a9fcd53 100644 --- a/x-pack/plugins/fleet/server/services/download_source.ts +++ b/x-pack/plugins/fleet/server/services/download_source.ts @@ -13,7 +13,7 @@ import { } from '../constants'; import type { DownloadSource, DownloadSourceAttributes, DownloadSourceBase } from '../types'; -import { DownloadSourceError, IngestManagerError } from '../errors'; +import { DownloadSourceError, FleetError } from '../errors'; import { SO_SEARCH_LIMIT } from '../../common'; import { agentPolicyService } from './agent_policy'; @@ -199,7 +199,7 @@ class DownloadSourceService { ? `Download Source '${idsWithName[0]}' already exists` : `Download Sources '${idsWithName.join(',')}' already exist`; - throw new IngestManagerError(`${existClause} with name '${downloadSource.name}'`); + throw new FleetError(`${existClause} with name '${downloadSource.name}'`); } } } diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts index 17d0d2b914670..02e39d89b14f7 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts @@ -9,7 +9,7 @@ import type { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/ import { appContextService } from '../../..'; import { ElasticsearchAssetType } from '../../../../types'; -import { IngestManagerError } from '../../../../errors'; +import { FleetError } from '../../../../errors'; import type { EsAssetReference } from '../../../../../common/types'; import { updateEsAssetReferences } from '../../packages/install'; @@ -51,7 +51,7 @@ export async function deletePipeline(esClient: ElasticsearchClient, id: string): // Only throw if error is not a 404 error. Sometimes the pipeline is already deleted, but we have // duplicate references to them, see https://github.com/elastic/kibana/issues/91192 if (err.statusCode !== 404) { - throw new IngestManagerError(`error deleting pipeline ${id}: ${err}`); + throw new FleetError(`error deleting pipeline ${id}: ${err}`); } } } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/bundled_packages.ts b/x-pack/plugins/fleet/server/services/epm/packages/bundled_packages.ts index 6934134c34aca..e18b64d8daae8 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/bundled_packages.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/bundled_packages.ts @@ -9,7 +9,7 @@ import fs from 'fs/promises'; import path from 'path'; import type { BundledPackage } from '../../../types'; -import { IngestManagerError } from '../../../errors'; +import { FleetError } from '../../../errors'; import { appContextService } from '../../app_context'; import { splitPkgKey } from '../registry'; @@ -19,7 +19,7 @@ export async function getBundledPackages(): Promise { const bundledPackageLocation = config?.developer?.bundledPackageLocation; if (!bundledPackageLocation) { - throw new IngestManagerError('xpack.fleet.developer.bundledPackageLocation is not configured'); + throw new FleetError('xpack.fleet.developer.bundledPackageLocation is not configured'); } try { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index 30a87f1f35a54..e69c5fe3944f0 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -23,11 +23,7 @@ import type { GetCategoriesRequest, } from '../../../../common/types'; import type { Installation, PackageInfo } from '../../../types'; -import { - IngestManagerError, - PackageFailedVerificationError, - PackageNotFoundError, -} from '../../../errors'; +import { FleetError, PackageFailedVerificationError, PackageNotFoundError } from '../../../errors'; import { appContextService } from '../..'; import * as Registry from '../registry'; import { getEsPackage } from '../archive/storage'; @@ -297,7 +293,7 @@ export async function getPackageFromSource(options: { logger.debug(`retrieved uninstalled package ${pkgName}-${pkgVersion} from registry`); } if (!res) { - throw new IngestManagerError(`package info for ${pkgName}-${pkgVersion} does not exist`); + throw new FleetError(`package info for ${pkgName}-${pkgVersion} does not exist`); } return { paths: res.paths, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index 114396eafa04a..91e2c7d241fd7 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -36,7 +36,7 @@ import type { PackageVerificationResult, } from '../../../types'; import { AUTO_UPGRADE_POLICIES_PACKAGES } from '../../../../common/constants'; -import { IngestManagerError, PackageOutdatedError } from '../../../errors'; +import { FleetError, PackageOutdatedError } from '../../../errors'; import { PACKAGES_SAVED_OBJECT_TYPE, MAX_TIME_COMPLETE_INSTALL } from '../../../constants'; import { licenseService } from '../..'; import { appContextService } from '../../app_context'; @@ -170,14 +170,14 @@ export async function handleInstallPackageFailure({ spaceId, }: { savedObjectsClient: SavedObjectsClientContract; - error: IngestManagerError | Boom.Boom | Error; + error: FleetError | Boom.Boom | Error; pkgName: string; pkgVersion: string; installedPkg: SavedObject | undefined; esClient: ElasticsearchClient; spaceId: string; }) { - if (error instanceof IngestManagerError) { + if (error instanceof FleetError) { return; } const logger = appContextService.getLogger(); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/update.ts b/x-pack/plugins/fleet/server/services/epm/packages/update.ts index 224c9332fad62..aa75ab3eae1dd 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/update.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/update.ts @@ -12,7 +12,7 @@ import type { ExperimentalIndexingFeature } from '../../../../common/types'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../constants'; import type { Installation, UpdatePackageRequestSchema } from '../../../types'; -import { IngestManagerError } from '../../../errors'; +import { FleetError } from '../../../errors'; import { getInstallationObject, getPackageInfo } from './get'; @@ -27,7 +27,7 @@ export async function updatePackage( const installedPackage = await getInstallationObject({ savedObjectsClient, pkgName }); if (!installedPackage) { - throw new IngestManagerError(`package ${pkgName} is not installed`); + throw new FleetError(`package ${pkgName} is not installed`); } await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, installedPackage.id, { 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 59e4104c62478..b2b0fd20104cc 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -45,7 +45,7 @@ import type { } from '../../common/types'; import { packageToPackagePolicy } from '../../common/services'; -import { IngestManagerError, PackagePolicyIneligibleForUpgradeError } from '../errors'; +import { FleetError, PackagePolicyIneligibleForUpgradeError } from '../errors'; import { preconfigurePackageInputs, @@ -1188,12 +1188,12 @@ describe('Package policy service', () => { }); await expect( packagePolicyService.runDeleteExternalCallbacks(deletedPackagePolicies) - ).rejects.toThrow(IngestManagerError); + ).rejects.toThrow(FleetError); expect(callingOrder).toEqual(['one', 'two']); }); it('should provide an array of errors encountered by running external callbacks', async () => { - let error: IngestManagerError; + let error: FleetError; const callbackOneError = new Error('foo 1'); const callbackTwoError = new Error('foo 2'); @@ -3395,7 +3395,7 @@ describe('Package policy service', () => { expect( packagePolicyService.getUpgradePackagePolicyInfo(savedObjectsClient, 'package-policy-id') - ).rejects.toEqual(new IngestManagerError('Package notinstalled is not installed')); + ).rejects.toEqual(new FleetError('Package notinstalled is not installed')); }); }); }); diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index f45610c0a52c7..0dd16f51dac5f 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -61,8 +61,8 @@ import type { } from '../../common/types'; import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '../constants'; import { - IngestManagerError, - ingestErrorToResponseOptions, + FleetError, + fleetErrorToResponseOptions, PackagePolicyIneligibleForUpgradeError, PackagePolicyValidationError, PackagePolicyRestrictionRelatedError, @@ -137,7 +137,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { if (agentPolicy && packagePolicy.package?.name === FLEET_APM_PACKAGE) { const dataOutput = await getDataOutputForAgentPolicy(soClient, agentPolicy); if (dataOutput.type === outputType.Logstash) { - throw new IngestManagerError('You cannot add APM to a policy using a logstash output'); + throw new FleetError('You cannot add APM to a policy using a logstash output'); } } await validateIsNotHostedPolicy(soClient, packagePolicy.policy_id, options?.force); @@ -152,7 +152,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { // Check that the name does not exist already if (existingPoliciesWithName.items.length > 0) { - throw new IngestManagerError( + throw new FleetError( `An integration policy with the name ${packagePolicy.name} already exists. Please rename it or choose a different name.` ); } @@ -193,7 +193,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { // already contain a package policy for this package if (isPackageLimited(pkgInfo)) { if (agentPolicy && doesAgentPolicyAlreadyIncludePackage(agentPolicy, pkgInfo.name)) { - throw new IngestManagerError( + throw new FleetError( `Unable to create integration policy. Integration '${pkgInfo.name}' already exists on this agent policy.` ); } @@ -492,7 +492,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { const filtered = (existingPoliciesWithName?.items || []).filter((p) => p.id !== id); if (filtered.length > 0) { - throw new IngestManagerError( + throw new FleetError( `An integration policy with the name ${packagePolicy.name} already exists. Please rename it or choose a different name.` ); } @@ -641,7 +641,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { result.push({ id, success: false, - ...ingestErrorToResponseOptions(error), + ...fleetErrorToResponseOptions(error), }); } }; @@ -692,7 +692,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { }); if (!installedPackage) { - throw new IngestManagerError( + throw new FleetError( i18n.translate('xpack.fleet.packagePolicy.packageNotInstalledError', { defaultMessage: 'Package {name} is not installed', values: { @@ -731,7 +731,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { packagePolicy?: PackagePolicy ) { if (!packagePolicy) { - throw new IngestManagerError( + throw new FleetError( i18n.translate('xpack.fleet.packagePolicy.policyNotFoundError', { defaultMessage: 'Package policy with id {id} not found', values: { id }, @@ -740,7 +740,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { } if (!packagePolicy.package?.name) { - throw new IngestManagerError( + throw new FleetError( i18n.translate('xpack.fleet.packagePolicy.packageNotFoundError', { defaultMessage: 'Package policy with id {id} has no named package', values: { id }, @@ -804,7 +804,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { result.push({ id, success: false, - ...ingestErrorToResponseOptions(error), + ...fleetErrorToResponseOptions(error), }); } } @@ -887,7 +887,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { } catch (error) { return { hasErrors: true, - ...ingestErrorToResponseOptions(error), + ...fleetErrorToResponseOptions(error), }; } } @@ -1139,7 +1139,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { } if (errorsThrown.length > 0) { - throw new IngestManagerError( + throw new FleetError( `${errorsThrown.length} encountered while executing package delete external callbacks`, errorsThrown ); From 5a81f0b559e746474096a879ee1df9f2bc831fe9 Mon Sep 17 00:00:00 2001 From: Ari Aviran Date: Mon, 19 Sep 2022 14:58:44 +0300 Subject: [PATCH 54/79] [Cloud Posture] Subscription gating (#140894) --- .../common/utils/subscription.test.ts | 44 +++++++++++ .../common/utils/subscription.ts | 24 ++++++ .../cloud_security_posture/kibana.json | 13 +++- .../public/application/setup_context.ts | 16 ++++ .../common/hooks/use_subscription_status.ts | 22 ++++++ .../components/cloud_posture_page.test.tsx | 76 +++++++++++++++++++ .../public/components/cloud_posture_page.tsx | 61 +++++++++------ .../components/subscription_not_allowed.tsx | 52 +++++++++++++ .../pages/benchmarks/benchmarks.test.tsx | 10 +++ .../compliance_dashboard.test.tsx | 9 +++ .../public/pages/findings/findings.test.tsx | 11 +++ .../latest_findings_container.test.tsx | 2 + .../public/pages/rules/rules.test.tsx | 10 +++ .../cloud_security_posture/public/plugin.tsx | 8 +- .../public/test/test_provider.tsx | 2 + .../cloud_security_posture/public/types.ts | 4 + .../fleet_integration/fleet_integration.ts | 4 + .../server/plugin.test.ts | 2 + .../cloud_security_posture/server/plugin.ts | 40 ++++++++-- .../cloud_security_posture/server/types.ts | 4 + 20 files changed, 384 insertions(+), 30 deletions(-) create mode 100644 x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts create mode 100644 x-pack/plugins/cloud_security_posture/common/utils/subscription.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/application/setup_context.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx diff --git a/x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts b/x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts new file mode 100644 index 0000000000000..e47b887ae520f --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LicenseType } from '@kbn/licensing-plugin/common/types'; +import { isSubscriptionAllowed } from './subscription'; +import { licenseMock } from '@kbn/licensing-plugin/common/licensing.mock'; + +const ON_PREM_ALLOWED_LICENSES: readonly LicenseType[] = ['enterprise', 'trial']; +const ON_PREM_NOT_ALLOWED_LICENSES: readonly LicenseType[] = ['basic', 'gold', 'platinum']; +const ALL_LICENSE_TYPES: readonly LicenseType[] = [ + 'standard', + ...ON_PREM_NOT_ALLOWED_LICENSES, + ...ON_PREM_NOT_ALLOWED_LICENSES, +]; + +describe('isSubscriptionAllowed', () => { + it('should allow any cloud subscription', () => { + const isCloudEnabled = true; + ALL_LICENSE_TYPES.forEach((licenseType) => { + const license = licenseMock.createLicense({ license: { type: licenseType } }); + expect(isSubscriptionAllowed(isCloudEnabled, license)).toBeTruthy(); + }); + }); + + it('should allow enterprise and trial licenses for on-prem', () => { + const isCloudEnabled = false; + ON_PREM_ALLOWED_LICENSES.forEach((licenseType) => { + const license = licenseMock.createLicense({ license: { type: licenseType } }); + expect(isSubscriptionAllowed(isCloudEnabled, license)).toBeTruthy(); + }); + }); + + it('should not allow enterprise and trial licenses for on-prem', () => { + const isCloudEnabled = false; + ON_PREM_NOT_ALLOWED_LICENSES.forEach((licenseType) => { + const license = licenseMock.createLicense({ license: { type: licenseType } }); + expect(isSubscriptionAllowed(isCloudEnabled, license)).toBeFalsy(); + }); + }); +}); diff --git a/x-pack/plugins/cloud_security_posture/common/utils/subscription.ts b/x-pack/plugins/cloud_security_posture/common/utils/subscription.ts new file mode 100644 index 0000000000000..2d9707681e047 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/common/utils/subscription.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ILicense, LicenseType } from '@kbn/licensing-plugin/common/types'; +import { PLUGIN_NAME } from '..'; + +const MINIMUM_NON_CLOUD_LICENSE_TYPE: LicenseType = 'enterprise'; + +export const isSubscriptionAllowed = (isCloudEnabled?: boolean, license?: ILicense): boolean => { + if (isCloudEnabled) { + return true; + } + + if (!license) { + return false; + } + + const licenseCheck = license.check(PLUGIN_NAME, MINIMUM_NON_CLOUD_LICENSE_TYPE); + return licenseCheck.state === 'valid'; +}; diff --git a/x-pack/plugins/cloud_security_posture/kibana.json b/x-pack/plugins/cloud_security_posture/kibana.json index a5fa332e4d5b4..059de58acc21e 100755 --- a/x-pack/plugins/cloud_security_posture/kibana.json +++ b/x-pack/plugins/cloud_security_posture/kibana.json @@ -10,6 +10,17 @@ "description": "The cloud security posture plugin", "server": true, "ui": true, - "requiredPlugins": ["navigation", "data", "fleet", "unifiedSearch", "taskManager", "security", "charts", "discover"], + "requiredPlugins": [ + "navigation", + "data", + "fleet", + "unifiedSearch", + "taskManager", + "security", + "charts", + "discover", + "cloud", + "licensing" + ], "requiredBundles": ["kibanaReact"] } diff --git a/x-pack/plugins/cloud_security_posture/public/application/setup_context.ts b/x-pack/plugins/cloud_security_posture/public/application/setup_context.ts new file mode 100644 index 0000000000000..574404ace38ce --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/application/setup_context.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { createContext } from 'react'; + +interface SetupContextValue { + isCloudEnabled?: boolean; +} + +/** + * A utility to pass data from the plugin setup lifecycle stage to application components + */ +export const SetupContext = createContext({}); diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts new file mode 100644 index 0000000000000..f8bda84dbcb65 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useContext } from 'react'; +import { useQuery } from '@tanstack/react-query'; +import { SetupContext } from '../../application/setup_context'; +import { isSubscriptionAllowed } from '../../../common/utils/subscription'; +import { useKibana } from './use_kibana'; + +const SUBSCRIPTION_QUERY_KEY = 'csp_subscription_query_key'; + +export const useSubscriptionStatus = () => { + const { licensing } = useKibana().services; + const { isCloudEnabled } = useContext(SetupContext); + return useQuery([SUBSCRIPTION_QUERY_KEY], async () => { + const license = await licensing.refresh(); + return isSubscriptionAllowed(isCloudEnabled, license); + }); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx index c3cec5ca27774..5eba5fabe51df 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { useSubscriptionStatus } from '../common/hooks/use_subscription_status'; import Chance from 'chance'; import { DEFAULT_NO_DATA_TEST_SUBJECT, @@ -12,6 +13,7 @@ import { isCommonError, LOADING_STATE_TEST_SUBJECT, PACKAGE_NOT_INSTALLED_TEST_SUBJECT, + SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT, } from './cloud_posture_page'; import { createReactQueryResponse } from '../test/fixtures/react_query'; import { TestProvider } from '../test/test_provider'; @@ -27,6 +29,7 @@ import { useCISIntegrationLink } from '../common/navigation/use_navigate_to_cis_ const chance = new Chance(); jest.mock('../common/api/use_setup_status_api'); jest.mock('../common/navigation/use_navigate_to_cis_integration'); +jest.mock('../common/hooks/use_subscription_status'); describe('', () => { beforeEach(() => { @@ -37,6 +40,13 @@ describe('', () => { data: { status: 'indexed' }, }) ); + + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); }); const renderCloudPosturePage = ( @@ -69,10 +79,66 @@ describe('', () => { expect(screen.getByText(children)).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); + it('renders default loading state when the subscription query is loading', () => { + (useSubscriptionStatus as jest.Mock).mockImplementation( + () => + createReactQueryResponse({ + status: 'loading', + }) as unknown as UseQueryResult + ); + + const children = chance.sentence(); + renderCloudPosturePage({ children }); + + expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByText(children)).not.toBeInTheDocument(); + expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); + }); + + it('renders default error state when the subscription query has an error', () => { + (useSubscriptionStatus as jest.Mock).mockImplementation( + () => + createReactQueryResponse({ + status: 'error', + error: new Error('error'), + }) as unknown as UseQueryResult + ); + + const children = chance.sentence(); + renderCloudPosturePage({ children }); + + expect(screen.getByTestId(ERROR_STATE_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByText(children)).not.toBeInTheDocument(); + expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); + }); + + it('renders subscription not allowed prompt if subscription is not installed', () => { + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: false, + }) + ); + + const children = chance.sentence(); + renderCloudPosturePage({ children }); + + expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByText(children)).not.toBeInTheDocument(); + expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.getByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + }); + it('renders integrations installation prompt if integration is not installed', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ @@ -88,6 +154,7 @@ describe('', () => { expect(screen.getByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -105,6 +172,7 @@ describe('', () => { expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -122,6 +190,7 @@ describe('', () => { expect(screen.getByTestId(ERROR_STATE_TEST_SUBJECT)).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -135,6 +204,7 @@ describe('', () => { renderCloudPosturePage({ children, query }); expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -149,6 +219,7 @@ describe('', () => { renderCloudPosturePage({ children, query }); expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -177,6 +248,7 @@ describe('', () => { expect(screen.getByText(text, { exact: false })).toBeInTheDocument() ); expect(screen.getByTestId(ERROR_STATE_TEST_SUBJECT)).toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -209,6 +281,7 @@ describe('', () => { [error, statusCode].forEach((text) => expect(screen.queryByText(text)).not.toBeInTheDocument()); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -230,6 +303,7 @@ describe('', () => { expect(screen.getByText(loading)).toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -245,6 +319,7 @@ describe('', () => { expect(screen.getByTestId(DEFAULT_NO_DATA_TEST_SUBJECT)).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -273,6 +348,7 @@ describe('', () => { expect(screen.getByText(pageTitle)).toBeInTheDocument(); expect(screen.getAllByText(solution, { exact: false })[0]).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); + expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx index 4ded9cb9060bb..b4529d6287f52 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx @@ -11,6 +11,8 @@ import { EuiEmptyPrompt } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { NoDataPage } from '@kbn/kibana-react-plugin/public'; import { css } from '@emotion/react'; +import { SubscriptionNotAllowed } from './subscription_not_allowed'; +import { useSubscriptionStatus } from '../common/hooks/use_subscription_status'; import { FullSizeCenteredPage } from './full_size_centered_page'; import { useCspSetupStatusApi } from '../common/api/use_setup_status_api'; import { CspLoadingState } from './csp_loading_state'; @@ -20,6 +22,7 @@ export const LOADING_STATE_TEST_SUBJECT = 'cloud_posture_page_loading'; export const ERROR_STATE_TEST_SUBJECT = 'cloud_posture_page_error'; export const PACKAGE_NOT_INSTALLED_TEST_SUBJECT = 'cloud_posture_page_package_not_installed'; export const DEFAULT_NO_DATA_TEST_SUBJECT = 'cloud_posture_page_no_data'; +export const SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT = 'cloud_posture_page_subscription_not_allowed'; interface CommonError { body: { @@ -120,28 +123,29 @@ const defaultErrorRenderer = (error: unknown) => ( ); -const defaultNoDataRenderer = () => { - return ( - - - - ); -}; +const defaultNoDataRenderer = () => ( + + + +); + +const subscriptionNotAllowedRenderer = () => ( + + + +); interface CloudPosturePageProps { children: React.ReactNode; @@ -158,10 +162,23 @@ export const CloudPosturePage = ({ errorRender = defaultErrorRenderer, noDataRenderer = defaultNoDataRenderer, }: CloudPosturePageProps) => { + const subscriptionStatus = useSubscriptionStatus(); const getSetupStatus = useCspSetupStatusApi(); const cisIntegrationLink = useCISIntegrationLink(); const render = () => { + if (subscriptionStatus.isError) { + return defaultErrorRenderer(subscriptionStatus.error); + } + + if (subscriptionStatus.isLoading) { + return defaultLoadingRenderer(); + } + + if (!subscriptionStatus.data) { + return subscriptionNotAllowedRenderer(); + } + if (getSetupStatus.isError) { return defaultErrorRenderer(getSetupStatus.error); } diff --git a/x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx b/x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx new file mode 100644 index 0000000000000..8a28c3a32ba44 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiEmptyPrompt, EuiPageSection, EuiLink } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import React from 'react'; +import { useKibana } from '../common/hooks/use_kibana'; + +export const SubscriptionNotAllowed = () => { + const { application } = useKibana().services; + return ( + + + + + } + body={ +

+ + + + ), + }} + /> +

+ } + /> +
+ ); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx index af10c55f19ea9..f9172a93457dc 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx @@ -15,10 +15,12 @@ import { Benchmarks } from './benchmarks'; import * as TEST_SUBJ from './test_subjects'; import { useCspBenchmarkIntegrations } from './use_csp_benchmark_integrations'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useCISIntegrationLink } from '../../common/navigation/use_navigate_to_cis_integration'; jest.mock('./use_csp_benchmark_integrations'); jest.mock('../../common/api/use_setup_status_api'); +jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration'); const chance = new Chance(); @@ -31,6 +33,14 @@ describe('', () => { data: { status: 'indexed' }, }) ); + + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); + (useCISIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); }); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx index 93d5005c675d2..707703442444f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx @@ -12,6 +12,7 @@ import { render } from '@testing-library/react'; import { TestProvider } from '../../test/test_provider'; import { ComplianceDashboard } from '.'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useComplianceDashboardDataApi } from '../../common/api/use_compliance_dashboard_data_api'; import { DASHBOARD_CONTAINER } from './test_subjects'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; @@ -22,6 +23,7 @@ import { expectIdsInDoc } from '../../test/utils'; jest.mock('../../common/api/use_setup_status_api'); jest.mock('../../common/api/use_compliance_dashboard_data_api'); +jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); jest.mock('../../common/navigation/use_navigate_to_cis_integration'); const chance = new Chance(); @@ -179,6 +181,13 @@ describe('', () => { data: { status: 'indexed' }, }) ); + + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); }); const renderComplianceDashboardPage = () => { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx index 2ee05a2565adc..8e330abc93539 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx @@ -20,6 +20,7 @@ import type { DataView } from '@kbn/data-plugin/common'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; import { useCISIntegrationLink } from '../../common/navigation/use_navigate_to_cis_integration'; @@ -28,9 +29,11 @@ import { render } from '@testing-library/react'; import { useFindingsEsPit } from './es_pit/use_findings_es_pit'; import { expectIdsInDoc } from '../../test/utils'; import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; jest.mock('../../common/api/use_latest_findings_data_view'); jest.mock('../../common/api/use_setup_status_api'); +jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); jest.mock('../../common/navigation/use_navigate_to_cis_integration'); jest.mock('./es_pit/use_findings_es_pit'); @@ -46,6 +49,13 @@ beforeEach(() => { setPitId: () => {}, pitIdRef: chance.guid(), })); + + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); }); const renderFindingsPage = () => { @@ -57,6 +67,7 @@ const renderFindingsPage = () => { charts: chartPluginMock.createStartContract(), discover: discoverPluginMock.createStartContract(), fleet: fleetMock.createStartMock(), + licensing: licensingMock.createStart(), }} > diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/latest_findings/latest_findings_container.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/latest_findings/latest_findings_container.test.tsx index 4090f80435b46..5f5ee2e5a7ecf 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/findings/latest_findings/latest_findings_container.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/latest_findings/latest_findings_container.test.tsx @@ -24,6 +24,7 @@ import { FindingsEsPitContext } from '../es_pit/findings_es_pit_context'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; jest.mock('../../../common/api/use_latest_findings_data_view'); jest.mock('../../../common/api/use_cis_kubernetes_integration'); @@ -70,6 +71,7 @@ describe('', () => { charts: chartPluginMock.createStartContract(), discover: discoverPluginMock.createStartContract(), fleet: fleetMock.createStartMock(), + licensing: licensingMock.createStart(), }} > diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx index 82238c2d7c4d0..70d803ff4ac5e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx @@ -18,12 +18,14 @@ import * as TEST_SUBJECTS from './test_subjects'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { coreMock } from '@kbn/core/public/mocks'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useCISIntegrationLink } from '../../common/navigation/use_navigate_to_cis_integration'; jest.mock('./use_csp_integration', () => ({ useCspIntegrationInfo: jest.fn(), })); jest.mock('../../common/api/use_setup_status_api'); +jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration'); const chance = new Chance(); @@ -68,6 +70,14 @@ describe('', () => { data: { status: 'indexed' }, }) ); + + (useSubscriptionStatus as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); + (useCISIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); }); diff --git a/x-pack/plugins/cloud_security_posture/public/plugin.tsx b/x-pack/plugins/cloud_security_posture/public/plugin.tsx index 70c874627419b..cf281884f9d91 100755 --- a/x-pack/plugins/cloud_security_posture/public/plugin.tsx +++ b/x-pack/plugins/cloud_security_posture/public/plugin.tsx @@ -17,6 +17,7 @@ import type { CspClientPluginStartDeps, } from './types'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../common/constants'; +import { SetupContext } from './application/setup_context'; const LazyCspEditPolicy = lazy(() => import('./components/fleet_extensions/policy_extension_edit')); const LazyCspCreatePolicy = lazy( @@ -42,10 +43,13 @@ export class CspPlugin CspClientPluginStartDeps > { + private isCloudEnabled?: boolean; + public setup( core: CoreSetup, plugins: CspClientPluginSetupDeps ): CspClientPluginSetup { + this.isCloudEnabled = plugins.cloud.isCloudEnabled; // Return methods that should be available to other plugins return {}; } @@ -74,7 +78,9 @@ export class CspPlugin ( - + + + ), diff --git a/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx b/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx index 09c03c29750a7..f6c636b5ce9ef 100755 --- a/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx +++ b/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx @@ -17,6 +17,7 @@ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import type { CspClientPluginStartDeps } from '../types'; interface CspAppDeps { @@ -33,6 +34,7 @@ export const TestProvider: React.FC> = ({ charts: chartPluginMock.createStartContract(), discover: discoverPluginMock.createStartContract(), fleet: fleetMock.createStartMock(), + licensing: licensingMock.createStart(), }, params = coreMock.createAppMountParameters(), children, diff --git a/x-pack/plugins/cloud_security_posture/public/types.ts b/x-pack/plugins/cloud_security_posture/public/types.ts index 6d312f4f2a23b..d451f230e20f5 100755 --- a/x-pack/plugins/cloud_security_posture/public/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/types.ts @@ -5,6 +5,8 @@ * 2.0. */ +import type { CloudSetup } from '@kbn/cloud-plugin/public'; +import type { LicensingPluginStart } from '@kbn/licensing-plugin/public'; import type { ComponentType, ReactNode } from 'react'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; @@ -32,6 +34,7 @@ export interface CspClientPluginSetupDeps { // required data: DataPublicPluginSetup; fleet: FleetSetup; + cloud: CloudSetup; // optional } @@ -42,6 +45,7 @@ export interface CspClientPluginStartDeps { charts: ChartsPluginStart; discover: DiscoverStart; fleet: FleetStart; + licensing: LicensingPluginStart; // optional } diff --git a/x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts b/x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts index 39db06473c9a9..fbea07836f5b2 100644 --- a/x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts +++ b/x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts @@ -20,6 +20,7 @@ import { import { DeepReadonly } from 'utility-types'; import { createCspRuleSearchFilterByPackagePolicy } from '../../common/utils/helpers'; import { + CLOUD_SECURITY_POSTURE_PACKAGE_NAME, CLOUDBEAT_VANILLA, CSP_RULE_SAVED_OBJECT_TYPE, CSP_RULE_TEMPLATE_SAVED_OBJECT_TYPE, @@ -127,6 +128,9 @@ export const isCspPackageInstalled = async ( } }; +export const isCspPackage = (packageName?: string) => + packageName === CLOUD_SECURITY_POSTURE_PACKAGE_NAME; + const generateRulesFromTemplates = ( packagePolicyId: string, policyId: string, diff --git a/x-pack/plugins/cloud_security_posture/server/plugin.test.ts b/x-pack/plugins/cloud_security_posture/server/plugin.test.ts index c8570cdfc75e3..756eaf261b727 100644 --- a/x-pack/plugins/cloud_security_posture/server/plugin.test.ts +++ b/x-pack/plugins/cloud_security_posture/server/plugin.test.ts @@ -41,6 +41,7 @@ import { SavedObjectsClientContract, } from '@kbn/core/server'; import { securityMock } from '@kbn/security-plugin/server/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; const chance = new Chance(); @@ -76,6 +77,7 @@ describe('Cloud Security Posture Plugin', () => { data: dataPluginMock.createStartContract(), taskManager: taskManagerMock.createStart(), security: securityMock.createStart(), + licensing: licensingMock.createStart(), }; const contextMock = coreMock.createCustomRequestHandlerContext(mockRouteContext); diff --git a/x-pack/plugins/cloud_security_posture/server/plugin.ts b/x-pack/plugins/cloud_security_posture/server/plugin.ts index 3ff5451e108b8..4603f42a0e09e 100755 --- a/x-pack/plugins/cloud_security_posture/server/plugin.ts +++ b/x-pack/plugins/cloud_security_posture/server/plugin.ts @@ -14,12 +14,17 @@ import type { Plugin, Logger, } from '@kbn/core/server'; -import { DeepReadonly } from 'utility-types'; -import { DeletePackagePoliciesResponse, PackagePolicy } from '@kbn/fleet-plugin/common'; -import { +import type { DeepReadonly } from 'utility-types'; +import type { + DeletePackagePoliciesResponse, + PackagePolicy, + NewPackagePolicy, +} from '@kbn/fleet-plugin/common'; +import type { TaskManagerSetupContract, TaskManagerStartContract, } from '@kbn/task-manager-plugin/server'; +import { isSubscriptionAllowed } from '../common/utils/subscription'; import type { CspServerPluginSetup, CspServerPluginStart, @@ -32,6 +37,7 @@ import { setupSavedObjects } from './saved_objects'; import { initializeCspIndices } from './create_indices/create_indices'; import { initializeCspTransforms } from './create_transforms/create_transforms'; import { + isCspPackage, isCspPackageInstalled, onPackagePolicyPostCreateCallback, removeCspRulesInstancesCallback, @@ -41,7 +47,6 @@ import { updatePackagePolicyRuntimeCfgVar, getCspRulesSO, } from './routes/configuration/update_rules_configuration'; - import { removeFindingsStatsTask, scheduleFindingsStatsTask, @@ -58,6 +63,7 @@ export class CspPlugin > { private readonly logger: Logger; + private isCloudEnabled?: boolean; constructor(initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); @@ -77,6 +83,8 @@ export class CspPlugin const coreStartServices = core.getStartServices(); this.setupCspTasks(plugins.taskManager, coreStartServices, this.logger); + this.isCloudEnabled = plugins.cloud.isCloudEnabled; + return {}; } @@ -92,6 +100,26 @@ export class CspPlugin this.initialize(core, plugins.taskManager); } + plugins.fleet.registerExternalCallback( + 'packagePolicyCreate', + async ( + packagePolicy: NewPackagePolicy, + _context: RequestHandlerContext, + _request: KibanaRequest + ): Promise => { + const license = await plugins.licensing.refresh(); + if (isCspPackage(packagePolicy.package?.name)) { + if (!isSubscriptionAllowed(this.isCloudEnabled, license)) { + throw new Error( + 'To use this feature you must upgrade your subscription or start a trial' + ); + } + } + + return packagePolicy; + } + ); + plugins.fleet.registerExternalCallback( 'packagePolicyPostCreate', async ( @@ -99,7 +127,7 @@ export class CspPlugin context: RequestHandlerContext, request: KibanaRequest ): Promise => { - if (packagePolicy.package?.name === CLOUD_SECURITY_POSTURE_PACKAGE_NAME) { + if (isCspPackage(packagePolicy.package?.name)) { await this.initialize(core, plugins.taskManager); const soClient = (await context.core).savedObjects.client; @@ -128,7 +156,7 @@ export class CspPlugin 'postPackagePolicyDelete', async (deletedPackagePolicies: DeepReadonly) => { for (const deletedPackagePolicy of deletedPackagePolicies) { - if (deletedPackagePolicy.package?.name === CLOUD_SECURITY_POSTURE_PACKAGE_NAME) { + if (isCspPackage(deletedPackagePolicy.package?.name)) { const soClient = core.savedObjects.createInternalRepository(); await removeCspRulesInstancesCallback(deletedPackagePolicy, soClient, this.logger); diff --git a/x-pack/plugins/cloud_security_posture/server/types.ts b/x-pack/plugins/cloud_security_posture/server/types.ts index 139cffea1267d..115e353b50d51 100644 --- a/x-pack/plugins/cloud_security_posture/server/types.ts +++ b/x-pack/plugins/cloud_security_posture/server/types.ts @@ -4,10 +4,12 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, } from '@kbn/data-plugin/server'; +import type { LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { TaskManagerSetupContract, TaskManagerStartContract, @@ -42,6 +44,7 @@ export interface CspServerPluginSetupDeps { data: DataPluginSetup; taskManager: TaskManagerSetupContract; security: SecurityPluginSetup; + cloud: CloudSetup; // optional } @@ -51,6 +54,7 @@ export interface CspServerPluginStartDeps { fleet: FleetStartContract; taskManager: TaskManagerStartContract; security: SecurityPluginStart; + licensing: LicensingPluginStart; } export type CspServerPluginStartServices = Promise< From af5eacaebe6c0f3fa9c8384fb5d9dc295a4f1b6c Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Mon, 19 Sep 2022 14:06:44 +0200 Subject: [PATCH 55/79] [Profiling] show frames in leaf-root order (#140922) --- x-pack/plugins/profiling/public/components/subchart.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx index e8d71559e9033..2ad0e56b0533c 100644 --- a/x-pack/plugins/profiling/public/components/subchart.tsx +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -90,7 +90,9 @@ export const SubChart: React.FC = ({ const compact = !!onShowMoreClick; - const displayedFrames = compact ? metadata.slice(0, NUM_DISPLAYED_FRAMES) : metadata; + const displayedFrames = compact + ? metadata.concat().reverse().slice(0, NUM_DISPLAYED_FRAMES) + : metadata.concat().reverse(); const hasMoreFrames = displayedFrames.length < metadata.length; @@ -110,7 +112,7 @@ export const SubChart: React.FC = ({ <> - {frameIndex + 1} + {metadata.indexOf(frame) + 1} From 5a69c84b3364535ae6018a92da63b19e366c1f24 Mon Sep 17 00:00:00 2001 From: Joseph McElroy Date: Mon, 19 Sep 2022 13:25:46 +0100 Subject: [PATCH 56/79] [Enterprise Search] [Behavioural Analytics] Feature flag Analytics (#140630) * adds feature flag for behavourial analytics Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../server/collectors/management/schema.ts | 4 + .../server/collectors/management/types.ts | 1 + src/plugins/telemetry/schema/oss_plugins.json | 244 +++---- .../common/ui_settings_keys.ts | 1 + .../__mocks__/kea_logic/kibana_logic.mock.ts | 2 + .../analytics_feature_disabled_error.test.tsx | 26 + .../analytics_feature_disabled_error.tsx | 31 + .../applications/analytics/index.test.tsx | 19 + .../public/applications/analytics/index.tsx | 13 + .../public/applications/index.tsx | 1 + .../shared/kibana/kibana_logic.ts | 10 +- .../applications/shared/layout/nav.test.tsx | 8 +- .../public/applications/shared/layout/nav.tsx | 48 +- .../enterprise_search/public/plugin.ts | 27 +- .../enterprise_search/server/ui_settings.ts | 18 +- .../schema/xpack_plugins.json | 616 +++++++++--------- 16 files changed, 609 insertions(+), 460 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.tsx diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts index fe378c655ff81..c6ab285863978 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts @@ -554,4 +554,8 @@ export const stackManagementSchema: MakeSchemaFrom = { type: 'boolean', _meta: { description: 'Non-default value of setting.' }, }, + 'enterpriseSearch:enableBehavioralAnalyticsSection': { + type: 'boolean', + _meta: { description: 'Non-default value of setting.' }, + }, }; diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts index b94f55eb6d20a..b37fd8b824816 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts @@ -148,4 +148,5 @@ export interface UsageStats { 'securitySolution:showRelatedIntegrations': boolean; 'visualization:visualize:legacyGaugeChartsLibrary': boolean; 'enterpriseSearch:enableIndexTransformsTab': boolean; + 'enterpriseSearch:enableBehavioralAnalyticsSection': boolean; } diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index 645fc2f4251e1..34ab8226b7d81 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -7736,125 +7736,6 @@ } } }, - "event_loop_delays": { - "properties": { - "daily": { - "type": "array", - "items": { - "properties": { - "processId": { - "type": "long", - "_meta": { - "description": "The process id of the monitored kibana instance." - } - }, - "instanceUuid": { - "type": "keyword", - "_meta": { - "description": "The uuid of the kibana instance." - } - }, - "fromTimestamp": { - "type": "date", - "_meta": { - "description": "Timestamp at which the histogram started monitoring." - } - }, - "lastUpdatedAt": { - "type": "date", - "_meta": { - "description": "Latest timestamp this histogram object was updated this day." - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum recorded event loop delay in ms." - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum recorded event loop delay in ms." - } - }, - "mean": { - "type": "long", - "_meta": { - "description": "The mean of the recorded event loop delays in ms." - } - }, - "exceeds": { - "type": "long", - "_meta": { - "description": "The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold." - } - }, - "stddev": { - "type": "long", - "_meta": { - "description": "The standard deviation of the recorded event loop delays in ms." - } - }, - "percentiles": { - "properties": { - "50": { - "type": "long", - "_meta": { - "description": "The 50th accumulated percentile distribution in ms" - } - }, - "75": { - "type": "long", - "_meta": { - "description": "The 75th accumulated percentile distribution in ms" - } - }, - "95": { - "type": "long", - "_meta": { - "description": "The 95th accumulated percentile distribution in ms" - } - }, - "99": { - "type": "long", - "_meta": { - "description": "The 99th accumulated percentile distribution in ms" - } - } - } - } - } - } - } - } - }, - "localization": { - "properties": { - "locale": { - "type": "keyword", - "_meta": { - "description": "The default locale set on the Kibana system" - } - }, - "integrities": { - "properties": { - "DYNAMIC_KEY": { - "type": "text", - "_meta": { - "description": "Translation file hash. If the hash is different it indicates that a custom translation file is used" - } - } - } - }, - "labelsCount": { - "type": "long", - "_meta": { - "description": "The number of translated labels" - } - } - } - }, "stack_management": { "properties": { "securitySolution:defaultIndex": { @@ -8675,6 +8556,131 @@ "_meta": { "description": "Non-default value of setting." } + }, + "enterpriseSearch:enableBehavioralAnalyticsSection": { + "type": "boolean", + "_meta": { + "description": "Non-default value of setting." + } + } + } + }, + "event_loop_delays": { + "properties": { + "daily": { + "type": "array", + "items": { + "properties": { + "processId": { + "type": "long", + "_meta": { + "description": "The process id of the monitored kibana instance." + } + }, + "instanceUuid": { + "type": "keyword", + "_meta": { + "description": "The uuid of the kibana instance." + } + }, + "fromTimestamp": { + "type": "date", + "_meta": { + "description": "Timestamp at which the histogram started monitoring." + } + }, + "lastUpdatedAt": { + "type": "date", + "_meta": { + "description": "Latest timestamp this histogram object was updated this day." + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum recorded event loop delay in ms." + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum recorded event loop delay in ms." + } + }, + "mean": { + "type": "long", + "_meta": { + "description": "The mean of the recorded event loop delays in ms." + } + }, + "exceeds": { + "type": "long", + "_meta": { + "description": "The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold." + } + }, + "stddev": { + "type": "long", + "_meta": { + "description": "The standard deviation of the recorded event loop delays in ms." + } + }, + "percentiles": { + "properties": { + "50": { + "type": "long", + "_meta": { + "description": "The 50th accumulated percentile distribution in ms" + } + }, + "75": { + "type": "long", + "_meta": { + "description": "The 75th accumulated percentile distribution in ms" + } + }, + "95": { + "type": "long", + "_meta": { + "description": "The 95th accumulated percentile distribution in ms" + } + }, + "99": { + "type": "long", + "_meta": { + "description": "The 99th accumulated percentile distribution in ms" + } + } + } + } + } + } + } + } + }, + "localization": { + "properties": { + "locale": { + "type": "keyword", + "_meta": { + "description": "The default locale set on the Kibana system" + } + }, + "integrities": { + "properties": { + "DYNAMIC_KEY": { + "type": "text", + "_meta": { + "description": "Translation file hash. If the hash is different it indicates that a custom translation file is used" + } + } + } + }, + "labelsCount": { + "type": "long", + "_meta": { + "description": "The number of translated labels" + } } } }, diff --git a/x-pack/plugins/enterprise_search/common/ui_settings_keys.ts b/x-pack/plugins/enterprise_search/common/ui_settings_keys.ts index 1007c3f4421af..dc960fb103ddd 100644 --- a/x-pack/plugins/enterprise_search/common/ui_settings_keys.ts +++ b/x-pack/plugins/enterprise_search/common/ui_settings_keys.ts @@ -7,3 +7,4 @@ export const enterpriseSearchFeatureId = 'enterpriseSearch'; export const enableIndexPipelinesTab = 'enterpriseSearch:enableIndexTransformsTab'; +export const enableBehavioralAnalyticsSection = 'enterpriseSearch:enableBehavioralAnalyticsSection'; diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts index 1d480fc791cc8..a6345775b1a9c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kea_logic/kibana_logic.mock.ts @@ -6,6 +6,7 @@ */ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { Capabilities } from '@kbn/core/public'; import { securityMock } from '@kbn/security-plugin/public/mocks'; @@ -27,6 +28,7 @@ export const mockKibanaValues = { hasAppSearchAccess: true, hasWorkplaceSearchAccess: true, }, + uiSettings: uiSettingsServiceMock.createStartContract(), security: securityMock.createStart(), setBreadcrumbs: jest.fn(), setChromeIsVisible: jest.fn(), diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.test.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.test.tsx new file mode 100644 index 0000000000000..51f417df97984 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.test.tsx @@ -0,0 +1,26 @@ +/* + * 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 { shallow } from 'enzyme'; + +import { EuiEmptyPrompt } from '@elastic/eui'; + +import { AnalyticsFeatureDisabledError } from './analytics_feature_disabled_error'; + +describe('AnalyticsFeatureDisabledError', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders ', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiEmptyPrompt)).toHaveLength(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.tsx new file mode 100644 index 0000000000000..1cbcf0b208cb7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_feature_disabled_error/analytics_feature_disabled_error.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiEmptyPrompt } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; + +export const AnalyticsFeatureDisabledError: React.FC = () => { + return ( + + + {i18n.translate('xpack.enterpriseSearch.analytics.featureDisabledState.title', { + defaultMessage: 'Behavioural Analytics is disabled', + })} + + } + titleSize="l" + /> + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/index.test.tsx index 60fda2a255cda..4a8fcf7573a36 100644 --- a/x-pack/plugins/enterprise_search/public/applications/analytics/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/index.test.tsx @@ -10,26 +10,45 @@ import '../__mocks__/kea_logic'; import '../__mocks__/shallow_useeffect.mock'; import '../__mocks__/enterprise_search_url.mock'; +import { mockKibanaValues } from '../__mocks__/kea_logic'; + import React from 'react'; import { shallow } from 'enzyme'; import { VersionMismatchPage } from '../shared/version_mismatch'; +import { AnalyticsFeatureDisabledError } from './components/analytics_feature_disabled_error/analytics_feature_disabled_error'; import { AnalyticsOverview } from './components/analytics_overview/analytics_overview'; import { Analytics } from '.'; describe('EnterpriseSearchAnalytics', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('always renders the overview', () => { + mockKibanaValues.uiSettings.get.mockReturnValue(true); + const wrapper = shallow(); expect(wrapper.find(AnalyticsOverview)).toHaveLength(1); }); it('renders VersionMismatchPage when there are mismatching versions', () => { + mockKibanaValues.uiSettings.get.mockReturnValue(true); + const wrapper = shallow(); expect(wrapper.find(VersionMismatchPage)).toHaveLength(1); }); + + it('renders behavioural analytics is disabled message', () => { + mockKibanaValues.uiSettings.get.mockReturnValue(false); + + const wrapper = shallow(); + + expect(wrapper.find(AnalyticsFeatureDisabledError)).toHaveLength(1); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/index.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/index.tsx index b2f7d20bf261c..eaed153a01b7f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/analytics/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/index.tsx @@ -8,13 +8,18 @@ import React from 'react'; import { Route, Switch } from 'react-router-dom'; +import { useValues } from 'kea'; + import { isVersionMismatch } from '../../../common/is_version_mismatch'; import { InitialAppData } from '../../../common/types'; +import { enableBehavioralAnalyticsSection } from '../../../common/ui_settings_keys'; +import { KibanaLogic } from '../shared/kibana'; import { VersionMismatchPage } from '../shared/version_mismatch'; import { AddAnalyticsCollection } from './components/add_analytics_collections/add_analytics_collection'; import { AnalyticsCollectionView } from './components/analytics_collection_view/analytics_collection_view'; +import { AnalyticsFeatureDisabledError } from './components/analytics_feature_disabled_error/analytics_feature_disabled_error'; import { AnalyticsOverview } from './components/analytics_overview/analytics_overview'; import { ROOT_PATH, COLLECTION_CREATION_PATH, COLLECTION_VIEW_PATH } from './routes'; @@ -22,6 +27,14 @@ import { ROOT_PATH, COLLECTION_CREATION_PATH, COLLECTION_VIEW_PATH } from './rou export const Analytics: React.FC = (props) => { const { enterpriseSearchVersion, kibanaVersion } = props; const incompatibleVersions = isVersionMismatch(enterpriseSearchVersion, kibanaVersion); + const { uiSettings } = useValues(KibanaLogic); + + const analyticsSectionEnabled = + uiSettings?.get(enableBehavioralAnalyticsSection) ?? false; + + if (!analyticsSectionEnabled) { + return ; + } return ( diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 70d37301bc8f2..2e34733f919a7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -59,6 +59,7 @@ export const renderApp = ( productAccess, charts: plugins.charts, cloud: plugins.cloud, + uiSettings: core.uiSettings, history: params.history, navigateToUrl: core.application.navigateToUrl, security: plugins.security, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts index e66c4bc1dea39..21be13375b980 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -11,7 +11,13 @@ import { kea, MakeLogicType } from 'kea'; import { ChartsPluginStart } from '@kbn/charts-plugin/public'; import { CloudSetup } from '@kbn/cloud-plugin/public'; -import { ApplicationStart, Capabilities, ChromeBreadcrumb, ScopedHistory } from '@kbn/core/public'; +import { + ApplicationStart, + Capabilities, + ChromeBreadcrumb, + ScopedHistory, + IUiSettingsClient, +} from '@kbn/core/public'; import { SecurityPluginStart } from '@kbn/security-plugin/public'; import { ProductAccess } from '../../../../common/types'; @@ -36,6 +42,7 @@ interface KibanaLogicProps { // Required plugins charts: ChartsPluginStart; security: SecurityPluginStart; + uiSettings: IUiSettingsClient; // Optional plugins cloud?: CloudSetup; } @@ -67,6 +74,7 @@ export const KibanaLogic = kea>({ setBreadcrumbs: [props.setBreadcrumbs, {}], setChromeIsVisible: [props.setChromeIsVisible, {}], setDocTitle: [props.setDocTitle, {}], + uiSettings: [props.uiSettings, {}], }), selectors: ({ selectors }) => ({ isCloud: [() => [selectors.cloud], (cloud?: Partial) => !!cloud?.isCloudEnabled], diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx index e23f485c3676c..743efc3274a44 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx @@ -9,10 +9,12 @@ jest.mock('./nav_link_helpers', () => ({ generateNavLink: jest.fn(({ to, items }) => ({ href: to, items })), })); -import { setMockValues } from '../../__mocks__/kea_logic'; +import { setMockValues, mockKibanaValues } from '../../__mocks__/kea_logic'; import { ProductAccess } from '../../../../common/types'; +import { enableBehavioralAnalyticsSection } from '../../../../common/ui_settings_keys'; + import { useEnterpriseSearchNav } from './nav'; describe('useEnterpriseSearchContentNav', () => { @@ -26,6 +28,7 @@ describe('useEnterpriseSearchContentNav', () => { hasWorkplaceSearchAccess: true, }; setMockValues({ productAccess: fullProductAccess }); + mockKibanaValues.uiSettings.get.mockReturnValue(true); expect(useEnterpriseSearchNav()).toEqual([ { @@ -52,7 +55,6 @@ describe('useEnterpriseSearchContentNav', () => { }, { id: 'enterpriseSearchAnalytics', - name: 'Analytics', items: [ { href: '/app/enterprise_search/analytics', @@ -60,6 +62,7 @@ describe('useEnterpriseSearchContentNav', () => { name: 'Collections', }, ], + name: 'Analytics', }, { id: 'search', @@ -83,6 +86,7 @@ describe('useEnterpriseSearchContentNav', () => { name: 'Search', }, ]); + expect(mockKibanaValues.uiSettings.get).toHaveBeenCalledWith(enableBehavioralAnalyticsSection); }); it('excludes legacy products when the user has no access to them', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx index e18e647d782b0..f5a2d17d7dd94 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx @@ -18,13 +18,17 @@ import { ENTERPRISE_SEARCH_OVERVIEW_PLUGIN, WORKPLACE_SEARCH_PLUGIN, } from '../../../../common/constants'; +import { enableBehavioralAnalyticsSection } from '../../../../common/ui_settings_keys'; import { SEARCH_INDICES_PATH, SETTINGS_PATH } from '../../enterprise_search_content/routes'; import { KibanaLogic } from '../kibana'; import { generateNavLink } from './nav_link_helpers'; export const useEnterpriseSearchNav = () => { - const { productAccess } = useValues(KibanaLogic); + const { productAccess, uiSettings } = useValues(KibanaLogic); + + const analyticsSectionEnabled = + uiSettings?.get(enableBehavioralAnalyticsSection) ?? false; const navItems: Array> = [ { @@ -67,25 +71,29 @@ export const useEnterpriseSearchNav = () => { defaultMessage: 'Content', }), }, - { - id: 'enterpriseSearchAnalytics', - items: [ - { - id: 'analytics_collections', - name: i18n.translate('xpack.enterpriseSearch.nav.analyticsCollectionsTitle', { - defaultMessage: 'Collections', - }), - ...generateNavLink({ - shouldNotCreateHref: true, - shouldShowActiveForSubroutes: true, - to: ANALYTICS_PLUGIN.URL, - }), - }, - ], - name: i18n.translate('xpack.enterpriseSearch.nav.analyticsTitle', { - defaultMessage: 'Analytics', - }), - }, + ...(analyticsSectionEnabled + ? [ + { + id: 'enterpriseSearchAnalytics', + items: [ + { + id: 'analytics_collections', + name: i18n.translate('xpack.enterpriseSearch.nav.analyticsCollectionsTitle', { + defaultMessage: 'Collections', + }), + ...generateNavLink({ + shouldNotCreateHref: true, + shouldShowActiveForSubroutes: true, + to: ANALYTICS_PLUGIN.URL, + }), + }, + ], + name: i18n.translate('xpack.enterpriseSearch.nav.analyticsTitle', { + defaultMessage: 'Analytics', + }), + }, + ] + : []), { id: 'search', items: [ diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index 7d3478392040c..6dff94d411597 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -31,6 +31,8 @@ import { } from '../common/constants'; import { InitialAppData } from '../common/types'; +import { enableBehavioralAnalyticsSection } from '../common/ui_settings_keys'; + import { docLinks } from './applications/shared/doc_links'; export interface ClientConfigType { @@ -68,6 +70,10 @@ export class EnterpriseSearchPlugin implements Plugin { public setup(core: CoreSetup, plugins: PluginsSetup) { const { cloud } = plugins; + const bahavioralAnalyticsEnabled = core.uiSettings?.get( + enableBehavioralAnalyticsSection + ); + core.application.register({ id: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID, title: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAV_TITLE, @@ -118,6 +124,7 @@ export class EnterpriseSearchPlugin implements Plugin { id: ANALYTICS_PLUGIN.ID, title: ANALYTICS_PLUGIN.NAME, euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO, + searchable: bahavioralAnalyticsEnabled, appRoute: ANALYTICS_PLUGIN.URL, category: DEFAULT_APP_CATEGORIES.enterpriseSearch, mount: async (params: AppMountParameters) => { @@ -211,15 +218,17 @@ export class EnterpriseSearchPlugin implements Plugin { order: 100, }); - plugins.home.featureCatalogue.register({ - id: ANALYTICS_PLUGIN.ID, - title: ANALYTICS_PLUGIN.NAME, - icon: 'appAnalytics', - description: ANALYTICS_PLUGIN.DESCRIPTION, - path: ANALYTICS_PLUGIN.URL, - category: 'data', - showOnHomePage: false, - }); + if (bahavioralAnalyticsEnabled) { + plugins.home.featureCatalogue.register({ + id: ANALYTICS_PLUGIN.ID, + title: ANALYTICS_PLUGIN.NAME, + icon: 'appAnalytics', + description: ANALYTICS_PLUGIN.DESCRIPTION, + path: ANALYTICS_PLUGIN.URL, + category: 'data', + showOnHomePage: false, + }); + } plugins.home.featureCatalogue.register({ id: APP_SEARCH_PLUGIN.ID, diff --git a/x-pack/plugins/enterprise_search/server/ui_settings.ts b/x-pack/plugins/enterprise_search/server/ui_settings.ts index 0497aa54d2eec..0be413f8d9c6a 100644 --- a/x-pack/plugins/enterprise_search/server/ui_settings.ts +++ b/x-pack/plugins/enterprise_search/server/ui_settings.ts @@ -9,12 +9,28 @@ import { schema } from '@kbn/config-schema'; import { UiSettingsParams } from '@kbn/core/types'; import { i18n } from '@kbn/i18n'; -import { enterpriseSearchFeatureId, enableIndexPipelinesTab } from '../common/ui_settings_keys'; +import { + enterpriseSearchFeatureId, + enableIndexPipelinesTab, + enableBehavioralAnalyticsSection, +} from '../common/ui_settings_keys'; /** * uiSettings definitions for Enterprise Search */ export const uiSettings: Record> = { + [enableBehavioralAnalyticsSection]: { + category: [enterpriseSearchFeatureId], + description: i18n.translate('xpack.enterpriseSearch.uiSettings.analytics.description', { + defaultMessage: 'Enable the new Analytics section in Enterprise Search.', + }), + name: i18n.translate('xpack.enterpriseSearch.uiSettings.analytics.name', { + defaultMessage: 'Enable Behavioral Analytics', + }), + requiresPageReload: true, + schema: schema.boolean(), + value: false, + }, [enableIndexPipelinesTab]: { category: [enterpriseSearchFeatureId], description: i18n.translate('xpack.enterpriseSearch.uiSettings.indexPipelines.description', { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 797b290d245c5..e40e471d1963d 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -2672,216 +2672,6 @@ } } }, - "canvas": { - "properties": { - "workpads": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of Canvas Workpads in the cluster" - } - } - } - }, - "pages": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of pages across all Canvas Workpads" - } - }, - "per_workpad": { - "properties": { - "avg": { - "type": "float", - "_meta": { - "description": "The average number of pages across all Canvas Workpads" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of pages found in a Canvas Workpad" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of pages found in a Canvas Workpad" - } - } - } - } - } - }, - "elements": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of elements across all Canvas Workpads" - } - }, - "per_page": { - "properties": { - "avg": { - "type": "float", - "_meta": { - "description": "The average number of elements per page across all Canvas Workpads" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of elements on a page across all Canvas Workpads" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of elements on a page across all Canvas Workpads" - } - } - } - } - } - }, - "functions": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of functions in use across all Canvas Workpads" - } - }, - "in_use": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "A function in use in any Canvas Workpad" - } - } - }, - "in_use_30d": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "A function in use in a Canvas Workpad that has been modified in the last 30 days" - } - } - }, - "in_use_90d": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "A function in use in a Canvas Workpad that has been modified in the last 90 days" - } - } - }, - "per_element": { - "properties": { - "avg": { - "type": "float", - "_meta": { - "description": "Average number of functions used per element across all Canvas Workpads" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of functions used in an element across all Canvas Workpads" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of functions used in an element across all Canvas Workpads" - } - } - } - } - } - }, - "variables": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of variables defined across all Canvas Workpads" - } - }, - "per_workpad": { - "properties": { - "avg": { - "type": "float", - "_meta": { - "description": "The average number of variables set per Canvas Workpad" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number variables set across all Canvas Workpads" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of variables set across all Canvas Workpads" - } - } - } - } - } - }, - "custom_elements": { - "properties": { - "count": { - "type": "long", - "_meta": { - "description": "The total number of custom Canvas elements" - } - }, - "elements": { - "properties": { - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of elements used across all Canvas Custom Elements" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of elements used across all Canvas Custom Elements" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The average number of elements used in Canvas Custom Element" - } - } - } - }, - "functions_in_use": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "The functions in use by Canvas Custom Elements" - } - } - } - } - } - } - }, "cloud": { "properties": { "isCloudEnabled": { @@ -3162,89 +2952,222 @@ } } }, - "fileUpload": { + "canvas": { "properties": { - "file_upload": { + "workpads": { "properties": { - "index_creation_count": { - "type": "long" - } - } - } - } - }, - "files": { - "properties": { - "countByExtension": { - "type": "array", - "items": { - "properties": { - "extension": { - "type": "keyword" - }, - "count": { - "type": "long" + "total": { + "type": "long", + "_meta": { + "description": "The total number of Canvas Workpads in the cluster" } } } }, - "countByStatus": { + "pages": { "properties": { - "AWAITING_UPLOAD": { + "total": { "type": "long", "_meta": { - "description": "Number of files awaiting upload" + "description": "The total number of pages across all Canvas Workpads" } }, - "DELETED": { + "per_workpad": { + "properties": { + "avg": { + "type": "float", + "_meta": { + "description": "The average number of pages across all Canvas Workpads" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of pages found in a Canvas Workpad" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of pages found in a Canvas Workpad" + } + } + } + } + } + }, + "elements": { + "properties": { + "total": { "type": "long", "_meta": { - "description": "Number of files that are marked as deleted" + "description": "The total number of elements across all Canvas Workpads" } }, - "READY": { + "per_page": { + "properties": { + "avg": { + "type": "float", + "_meta": { + "description": "The average number of elements per page across all Canvas Workpads" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of elements on a page across all Canvas Workpads" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of elements on a page across all Canvas Workpads" + } + } + } + } + } + }, + "functions": { + "properties": { + "total": { "type": "long", "_meta": { - "description": "Number of files that are ready for download" + "description": "The total number of functions in use across all Canvas Workpads" } }, - "UPLOADING": { - "type": "long", - "_meta": { - "description": "Number of files that are currently uploading" + "in_use": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "A function in use in any Canvas Workpad" + } } }, - "UPLOAD_ERROR": { + "in_use_30d": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "A function in use in a Canvas Workpad that has been modified in the last 30 days" + } + } + }, + "in_use_90d": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "A function in use in a Canvas Workpad that has been modified in the last 90 days" + } + } + }, + "per_element": { + "properties": { + "avg": { + "type": "float", + "_meta": { + "description": "Average number of functions used per element across all Canvas Workpads" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of functions used in an element across all Canvas Workpads" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of functions used in an element across all Canvas Workpads" + } + } + } + } + } + }, + "variables": { + "properties": { + "total": { "type": "long", "_meta": { - "description": "Number of files that failed to upload" + "description": "The total number of variables defined across all Canvas Workpads" + } + }, + "per_workpad": { + "properties": { + "avg": { + "type": "float", + "_meta": { + "description": "The average number of variables set per Canvas Workpad" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number variables set across all Canvas Workpads" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of variables set across all Canvas Workpads" + } + } } } } }, - "storage": { + "custom_elements": { "properties": { - "esFixedSizeIndex": { + "count": { + "type": "long", + "_meta": { + "description": "The total number of custom Canvas elements" + } + }, + "elements": { "properties": { - "capacity": { + "min": { "type": "long", "_meta": { - "description": "Capacity of the fixed size index" + "description": "The minimum number of elements used across all Canvas Custom Elements" } }, - "available": { + "max": { "type": "long", "_meta": { - "description": "Available storage in bytes" + "description": "The maximum number of elements used across all Canvas Custom Elements" } }, - "used": { - "type": "long", + "avg": { + "type": "float", "_meta": { - "description": "Used storage in bytes" + "description": "The average number of elements used in Canvas Custom Element" } } } + }, + "functions_in_use": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "The functions in use by Canvas Custom Elements" + } + } + } + } + } + } + }, + "fileUpload": { + "properties": { + "file_upload": { + "properties": { + "index_creation_count": { + "type": "long" } } } @@ -3359,6 +3282,83 @@ } } }, + "files": { + "properties": { + "countByExtension": { + "type": "array", + "items": { + "properties": { + "extension": { + "type": "keyword" + }, + "count": { + "type": "long" + } + } + } + }, + "countByStatus": { + "properties": { + "AWAITING_UPLOAD": { + "type": "long", + "_meta": { + "description": "Number of files awaiting upload" + } + }, + "DELETED": { + "type": "long", + "_meta": { + "description": "Number of files that are marked as deleted" + } + }, + "READY": { + "type": "long", + "_meta": { + "description": "Number of files that are ready for download" + } + }, + "UPLOADING": { + "type": "long", + "_meta": { + "description": "Number of files that are currently uploading" + } + }, + "UPLOAD_ERROR": { + "type": "long", + "_meta": { + "description": "Number of files that failed to upload" + } + } + } + }, + "storage": { + "properties": { + "esFixedSizeIndex": { + "properties": { + "capacity": { + "type": "long", + "_meta": { + "description": "Capacity of the fixed size index" + } + }, + "available": { + "type": "long", + "_meta": { + "description": "Available storage in bytes" + } + }, + "used": { + "type": "long", + "_meta": { + "description": "Used storage in bytes" + } + } + } + } + } + } + } + }, "infraops": { "properties": { "last_24_hours": { @@ -3569,62 +3569,6 @@ } } }, - "rollups": { - "properties": { - "index_patterns": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup index patterns" - } - } - } - }, - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup saved searches" - } - } - } - }, - "visualizations": { - "properties": { - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup saved searches" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup saved searches" - } - } - } - }, - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup index patterns" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup index patterns" - } - } - } - } - } - }, "reporting": { "properties": { "csv_searchsource": { @@ -6379,6 +6323,62 @@ } } }, + "rollups": { + "properties": { + "index_patterns": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup index patterns" + } + } + } + }, + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup saved searches" + } + } + } + }, + "visualizations": { + "properties": { + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup saved searches" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup saved searches" + } + } + } + }, + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup index patterns" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup index patterns" + } + } + } + } + } + }, "saved_objects_tagging": { "properties": { "usedTags": { From 2ab05eb8bb21d139ba321ed4086462888a3ed59b Mon Sep 17 00:00:00 2001 From: Luke Gmys Date: Mon, 19 Sep 2022 14:29:16 +0200 Subject: [PATCH 57/79] [TIP] Set schema and isSorting for selected indicator columns (#140918) --- .../hooks/use_column_settings.ts | 4 +- .../indicators_table/indicators_table.tsx | 52 +++++++++++-------- .../indicators/lib/get_field_schema.ts | 29 +++++++++++ 3 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 x-pack/plugins/threat_intelligence/public/modules/indicators/lib/get_field_schema.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/hooks/use_column_settings.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/hooks/use_column_settings.ts index 8fc60dded93d6..ff61c9d525616 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/hooks/use_column_settings.ts +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/hooks/use_column_settings.ts @@ -34,7 +34,7 @@ type CachedColumnsPreferences = Partial<{ sortingState: EuiDataGridSorting['columns']; }>; -export interface ColumnSettings { +export interface ColumnSettingsValue { columns: EuiDataGridColumn[]; columnVisibility: { visibleColumns: string[]; @@ -45,7 +45,7 @@ export interface ColumnSettings { handleResetColumns: () => void; } -export const useColumnSettings = (): ColumnSettings => { +export const useColumnSettings = (): ColumnSettingsValue => { const { services: { storage }, } = useKibana(); 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 900f75128b7ad..072fd42db696e 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 @@ -19,14 +19,16 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiDataGridColumn } from '@elastic/eui/src/components/datagrid/data_grid_types'; import { CellActions } from './cell_actions'; import { BrowserFields, SecuritySolutionDataViewBase } from '../../../../types'; -import { Indicator } from '../../../../../common/types/indicator'; +import { Indicator, RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { cellRendererFactory } from './cell_renderer'; import { EmptyState } from '../../../../components/empty_state'; import { IndicatorsTableContext, IndicatorsTableContextValue } from './context'; import { IndicatorsFlyout } from '../indicators_flyout/indicators_flyout'; import { Pagination } from '../../hooks/use_indicators'; import { useToolbarOptions } from './hooks/use_toolbar_options'; -import { ColumnSettings } from './hooks/use_column_settings'; +import { ColumnSettingsValue } from './hooks/use_column_settings'; +import { useFieldTypes } from '../../../../hooks/use_field_types'; +import { getFieldSchema } from '../../lib/get_field_schema'; export interface IndicatorsTableProps { indicators: Indicator[]; @@ -37,7 +39,7 @@ export interface IndicatorsTableProps { loading: boolean; indexPattern: SecuritySolutionDataViewBase; browserFields: BrowserFields; - columnSettings: ColumnSettings; + columnSettings: ColumnSettingsValue; } export const TABLE_TEST_ID = 'tiIndicatorsTable'; @@ -61,6 +63,8 @@ export const IndicatorsTable: VFC = ({ }) => { const [expanded, setExpanded] = useState(); + const fieldTypes = useFieldTypes(); + const renderCellValue = useMemo( () => cellRendererFactory(pagination.pageIndex * pagination.pageSize), [pagination.pageIndex, pagination.pageSize] @@ -91,22 +95,28 @@ export const IndicatorsTable: VFC = ({ [renderCellValue] ); - useMemo(() => { - columns.forEach( - (col: EuiDataGridColumn) => - (col.cellActions = [ - ({ rowIndex, columnId, Component }: EuiDataGridColumnCellActionProps) => ( - - ), - ]) - ); - }, [columns, indicators, pagination]); + const mappedColumns = useMemo( + () => + columns.map((col: EuiDataGridColumn) => { + return { + ...col, + isSortable: col.id !== RawIndicatorFieldId.Id && browserFields[col.id]?.aggregatable, + schema: getFieldSchema(fieldTypes[col.id]), + cellActions: [ + ({ rowIndex, columnId, Component }: EuiDataGridColumnCellActionProps) => ( + + ), + ], + }; + }), + [browserFields, columns, fieldTypes, indicators, pagination] + ); const toolbarOptions = useToolbarOptions({ browserFields, @@ -159,12 +169,12 @@ export const IndicatorsTable: VFC = ({ data-test-subj={TABLE_TEST_ID} sorting={sorting} columnVisibility={columnVisibility} - columns={columns} + columns={mappedColumns} /> ); }, [ columnVisibility, - columns, + mappedColumns, indicatorCount, leadingControlColumns, loading, diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/get_field_schema.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/get_field_schema.ts new file mode 100644 index 0000000000000..466c992cdead9 --- /dev/null +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/get_field_schema.ts @@ -0,0 +1,29 @@ +/* + * 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 { KBN_FIELD_TYPES } from '@kbn/data-plugin/public'; + +/** + * Returns datagrid field schema for field type, the same implementation as in discover + */ +export const getFieldSchema = (kbnType: string | undefined) => { + // Default DataGrid schemas: boolean, numeric, datetime, json, currency, string + switch (kbnType) { + case KBN_FIELD_TYPES.IP: + case KBN_FIELD_TYPES.GEO_SHAPE: + case KBN_FIELD_TYPES.NUMBER: + return 'numeric'; + case KBN_FIELD_TYPES.BOOLEAN: + return 'boolean'; + case KBN_FIELD_TYPES.STRING: + return 'string'; + case KBN_FIELD_TYPES.DATE: + return 'datetime'; + default: + return undefined; + } +}; From 269df0168eea0184c90d9a296d177014a27ca9ff Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Mon, 19 Sep 2022 14:50:36 +0200 Subject: [PATCH 58/79] [Lens] Explicitly assign timeField on annotation creation (#140313) * :alembic: Initial code for query based annotations * :bug: Solved more conflicts * :alembic: More scaffolding layout * :alembic: Initial indexpatetrn move into frame * :alembic: Make field selection work * :construction: Fixed almost all dataViews occurrencies, but changeIndexPattern * :construction: More work on change index pattern * Move lens dataViews state into main state * :fire: Remove some old cruft from the code * :bug: Fix dataViews layer change * :bug: Fix datasourceLayers refs * :fire: Remove more old cruft * :bug: Fix bug when loading SO * :bug: Fix initial existence flag * :label: Fix type issues * :label: Fix types and tests * :label: Fix types issues * :white_check_mark: Fix more tests * :white_check_mark: Fix with new dataViews structure * :white_check_mark: Fix more test mocks * :white_check_mark: More tests fixed * :fire: Removed unused prop * :white_check_mark: Down to single broken test suite * :label: Fix type issue * :ok_hand: Integrate selector feedback * :white_check_mark: Fix remaining unit tests * :label: fix type issues * :bug: Fix bug when creating dataview in place * :sparkles: Update with latest dataview state + fix dataviews picker for annotations * :bug: Fix edit + remove field flow * Update x-pack/plugins/lens/public/visualizations/xy/types.ts * :camera_flash: Fix snapshot * :bug: Fix the dataViews switch bug * :fire: remove old cruft * :recycle: Revert removal from dataviews state branch * :recycle: Load all at once * :wrench: working on persistent state + fix new layer bug * :fire: remove unused stuff * :label: Fix some typings * :wrench: Fix expression issue * :white_check_mark: Add service unit tests * :ok_hand: Integrated feedback * :sparkles: Add migration code for manual annotations * :label: Fix type issue * :white_check_mark: Add some other unit test * :label: Fix more type issues * :bug: Fix importing issue * :recycle: Make range default color dependant on opint one * :bug: Fix duplicate fields selection in tooltip section * :white_check_mark: Add more unit tests * :white_check_mark: Fix broken test * :label: Mute ts error for now * :white_check_mark: Fix tests * :fire: Reduce plugin weight * :bug: prevent layout shift on panel open * :bug: Fix extract + inject visualization references * :label: fix type issues * :sparkles: Add dataview reference migration for annotations * :wrench: Add migration to embedadble * :label: Fix type export * :bug: Fix more conflicts with main * :white_check_mark: Fix tests * :label: Make textField optional * :recycle: Refactor query input to be a shared component * :bug: Fix missing import * :bug: fix more import issues * :fire: remove duplicate code * :bug: Fix dataView switch bug * :label: Fix type issue * annotations with fetching_event_annotations * portal for kql input fix * timeField goes for default if not filled * limit changes * handle ad-hoc data view references correctly * fix types * adjust tests to datatable format (remove isHidden tests as it's filtered before) * small refactors * fix loading on dashboard * empty is invalid (?) tbd * new tooltip * emptyDatatable * :recycle: Flip field + query inputs * :label: Fix type issue * :sparkles: Add field validation for text and tooltip fields * tooltip for single annotation * fix tests * fix for non--timefilter dataview * fix annotations test - the cause was that we now don't display label for aggregated annotations ever * use eui elements * newline problem solved * :white_check_mark: Add more error tests * :ok_hand: Rename migration state version type * fix types for expression chart * :bug: Fix i18n id * :label: Fix type issue * fix hidden all annotations * :white_check_mark: Fix tests after ishidden removal * :bug: Fix assigned default time field + tests * :bug: Revert references migration to an in app solution * :bug: Halde no time based dataViews * :bug: Fix bug with dataviews without timeField + suggestion bug * :label: Fix typing issues * :bug: Fix missing timeField bug * Apply suggestions from code review Co-authored-by: Joe Reuter Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Marta Bondyra <4283304+mbondyra@users.noreply.github.com> Co-authored-by: Marta Bondyra --- .../public/indexpattern_datasource/mocks.ts | 27 +++-- .../lens/public/visualizations/xy/index.ts | 3 +- .../public/visualizations/xy/state_helpers.ts | 8 ++ .../visualizations/xy/to_expression.test.ts | 2 + .../lens/public/visualizations/xy/types.ts | 2 +- .../visualizations/xy/visualization.test.ts | 14 +++ .../visualizations/xy/visualization.tsx | 4 + .../annotations_panel.tsx | 61 ++++++---- .../annotations_config_panel/index.test.tsx | 114 ++++++++++++++++++ .../manual_annotation_panel.tsx | 2 +- .../query_annotation_panel.tsx | 2 +- .../range_annotation_panel.tsx | 2 +- .../shared/line_style_settings.tsx | 4 +- .../visualizations/xy/xy_suggestions.test.ts | 2 + 14 files changed, 206 insertions(+), 41 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/mocks.ts b/x-pack/plugins/lens/public/indexpattern_datasource/mocks.ts index 81b8e5154a349..7cd3639547e14 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/mocks.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/mocks.ts @@ -9,19 +9,7 @@ import { DragContextState } from '../drag_drop'; import { getFieldByNameFactory } from './pure_helpers'; import type { IndexPattern, IndexPatternField } from '../types'; -export const createMockedIndexPatternWithoutType = ( - typeToFilter: IndexPatternField['type'] -): IndexPattern => { - const { fields, ...otherIndexPatternProps } = createMockedIndexPattern(); - const filteredFields = fields.filter(({ type }) => type !== typeToFilter); - return { - ...otherIndexPatternProps, - fields: filteredFields, - getFieldByName: getFieldByNameFactory(filteredFields), - }; -}; - -export const createMockedIndexPattern = (): IndexPattern => { +export const createMockedIndexPattern = (someProps?: Partial): IndexPattern => { const fields = [ { name: 'timestamp', @@ -103,6 +91,7 @@ export const createMockedIndexPattern = (): IndexPattern => { getFieldByName: getFieldByNameFactory(fields), isPersisted: true, spec: {}, + ...someProps, }; }; @@ -193,6 +182,18 @@ export const createMockedRestrictedIndexPattern = () => { }; }; +export const createMockedIndexPatternWithoutType = ( + typeToFilter: IndexPatternField['type'] +): IndexPattern => { + const { fields, ...otherIndexPatternProps } = createMockedIndexPattern(); + const filteredFields = fields.filter(({ type }) => type !== typeToFilter); + return { + ...otherIndexPatternProps, + fields: filteredFields, + getFieldByName: getFieldByNameFactory(filteredFields), + }; +}; + export function createMockedDragDropContext(): jest.Mocked { return { dragging: undefined, diff --git a/x-pack/plugins/lens/public/visualizations/xy/index.ts b/x-pack/plugins/lens/public/visualizations/xy/index.ts index 9dcd1dab63593..26001e7245fef 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/index.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/index.ts @@ -30,7 +30,7 @@ export class XyVisualization { ) { editorFrame.registerVisualization(async () => { const { getXyVisualization } = await import('../../async_services'); - const [coreStart, { charts, data, fieldFormats, eventAnnotation }] = + const [coreStart, { charts, data, fieldFormats, eventAnnotation, unifiedSearch }] = await core.getStartServices(); const [palettes, eventAnnotationService] = await Promise.all([ charts.palettes.getPalettes(), @@ -46,6 +46,7 @@ export class XyVisualization { fieldFormats, useLegacyTimeAxis, kibanaTheme: core.theme, + unifiedSearch, }); }); } diff --git a/x-pack/plugins/lens/public/visualizations/xy/state_helpers.ts b/x-pack/plugins/lens/public/visualizations/xy/state_helpers.ts index 37c08fc7e8668..d683888a88cfd 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/state_helpers.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/state_helpers.ts @@ -189,6 +189,14 @@ export function validateColumn( const invalidMessages: string[] = []; + if (annotation.timeField == null || annotation.timeField === '') { + invalidMessages.push( + i18n.translate('xpack.lens.xyChart.annotationError.timeFieldEmpty', { + defaultMessage: 'Time field is missing', + }) + ); + } + if (annotation.timeField && !Boolean(layerDataView.getFieldByName(annotation.timeField))) { invalidMessages.push( i18n.translate('xpack.lens.xyChart.annotationError.timeFieldNotFound', { diff --git a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts index 184b44e47032c..d66d49e1ba9bd 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts @@ -19,6 +19,7 @@ import { coreMock, themeServiceMock } from '@kbn/core/public/mocks'; import { LegendSize } from '@kbn/visualizations-plugin/common'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; describe('#toExpression', () => { const xyVisualization = getXyVisualization({ @@ -30,6 +31,7 @@ describe('#toExpression', () => { core: coreMock.createStart(), storage: {} as IStorageWrapper, data: dataPluginMock.createStartContract(), + unifiedSearch: unifiedSearchPluginMock.createStartContract(), }); let mockDatasource: ReturnType; let frame: ReturnType; diff --git a/x-pack/plugins/lens/public/visualizations/xy/types.ts b/x-pack/plugins/lens/public/visualizations/xy/types.ts index d101ad5661149..6a953ad452fc3 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/types.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/types.ts @@ -82,7 +82,7 @@ export interface YConfig { color?: string; icon?: string; lineWidth?: number; - lineStyle?: LineStyle; + lineStyle?: Exclude; fill?: FillStyle; iconPosition?: IconPosition; textVisibility?: boolean; diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts index 5e852629e1353..818df64fba94f 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.ts @@ -30,6 +30,7 @@ import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; import { DataViewsState } from '../../state_management'; import { createMockedIndexPattern } from '../../indexpattern_datasource/mocks'; import { createMockDataViewsState } from '../../data_views_service/mocks'; +import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; const exampleAnnotation: EventAnnotationConfig = { id: 'an1', @@ -81,6 +82,7 @@ const xyVisualization = getXyVisualization({ core: coreMock.createStart(), storage: {} as IStorageWrapper, data: dataPluginMock.createStartContract(), + unifiedSearch: unifiedSearchPluginMock.createStartContract(), }); describe('xy_visualization', () => { @@ -2261,6 +2263,18 @@ describe('xy_visualization', () => { const errors = xyVisualization.getErrorMessages(xyState, getFrameMock()); expect(errors).toHaveLength(4); }); + it('should contain error if current annotation contains no time field set', () => { + const xyState = createStateWithAnnotationProps({ + timeField: undefined, + }); + const errors = xyVisualization.getErrorMessages(xyState, getFrameMock()); + expect(errors).toHaveLength(1); + expect(errors![0]).toEqual( + expect.objectContaining({ + shortMessage: expect.stringContaining('Time field is missing'), + }) + ); + }); }); }); diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx index fe3af3d813b33..093b47278d3cf 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx @@ -18,6 +18,7 @@ import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-pl import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { getSuggestions } from './xy_suggestions'; import { XyToolbar } from './xy_config_panel'; import { DimensionEditor } from './xy_config_panel/dimension_editor'; @@ -93,6 +94,7 @@ export const getXyVisualization = ({ useLegacyTimeAxis, kibanaTheme, eventAnnotationService, + unifiedSearch, }: { core: CoreStart; storage: IStorageWrapper; @@ -102,6 +104,7 @@ export const getXyVisualization = ({ fieldFormats: FieldFormatsStart; useLegacyTimeAxis: boolean; kibanaTheme: ThemeServiceStart; + unifiedSearch: UnifiedSearchPublicPluginStart; }): Visualization => ({ id: XY_ID, visualizationTypes, @@ -522,6 +525,7 @@ export const getXyVisualization = ({ savedObjects: core.savedObjects, docLinks: core.docLinks, http: core.http, + unifiedSearch, }} > {dimensionEditor} diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx index 8b36ee762a236..95e30fa529127 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/annotations_panel.tsx @@ -17,7 +17,12 @@ import { isQueryAnnotationConfig, isRangeAnnotationConfig, } from '@kbn/event-annotation-plugin/public'; -import { QueryPointEventAnnotationConfig } from '@kbn/event-annotation-plugin/common'; +import { + EventAnnotationConfig, + PointInTimeEventAnnotationConfig, + QueryPointEventAnnotationConfig, +} from '@kbn/event-annotation-plugin/common'; +import moment from 'moment'; import { FieldOption, FieldOptionValue, @@ -70,23 +75,20 @@ export const AnnotationsPanel = ( const isRange = isRangeAnnotationConfig(currentAnnotation); const [queryInputShouldOpen, setQueryInputShouldOpen] = React.useState(false); useEffect(() => { - if (isQueryBased) { - setQueryInputShouldOpen(false); - } else { - setQueryInputShouldOpen(true); - } + setQueryInputShouldOpen(!isQueryBased); }, [isQueryBased]); const setAnnotations = useCallback( - (annotation) => { + (annotation: Partial | undefined) => { if (annotation == null) { return; } const newConfigs = [...(localLayer.annotations || [])]; const existingIndex = newConfigs.findIndex((c) => c.id === accessor); if (existingIndex !== -1) { + const existingConfig = newConfigs[existingIndex]; newConfigs[existingIndex] = sanitizeProperties({ - ...newConfigs[existingIndex], + ...existingConfig, ...annotation, }); } else { @@ -138,26 +140,43 @@ export const AnnotationsPanel = ( ]} idSelected={`lens_xyChart_annotation_${currentAnnotation?.type}`} onChange={(id) => { - const typeFromId = id.replace('lens_xyChart_annotation_', ''); + const typeFromId = id.replace( + 'lens_xyChart_annotation_', + '' + ) as EventAnnotationConfig['type']; if (currentAnnotation?.type === typeFromId) { return; } - if (currentAnnotation?.key.type === 'range') { - setAnnotations({ + if (typeFromId === 'query') { + const currentIndexPattern = + frame.dataViews.indexPatterns[localLayer.indexPatternId]; + // If coming from a range type, it requires some additional resets + const additionalRangeResets = isRangeAnnotationConfig(currentAnnotation) + ? { + label: + currentAnnotation.label === defaultRangeAnnotationLabel + ? defaultAnnotationLabel + : currentAnnotation.label, + color: toLineAnnotationColor(currentAnnotation.color), + } + : {}; + return setAnnotations({ type: typeFromId, - label: - currentAnnotation.label === defaultRangeAnnotationLabel - ? defaultAnnotationLabel - : currentAnnotation.label, - color: toLineAnnotationColor(currentAnnotation.color), + timeField: + (currentIndexPattern.timeFieldName || + // fallback to the first avaiable date field in the dataView + currentIndexPattern.fields.find(({ type: fieldType }) => fieldType === 'date') + ?.displayName) ?? + '', key: { type: 'point_in_time' }, - }); - } else { - setAnnotations({ - type: typeFromId, - key: currentAnnotation?.key, + ...additionalRangeResets, }); } + // From query to manual annotation + return setAnnotations({ + type: typeFromId, + key: { type: 'point_in_time', timestamp: moment().toISOString() }, + }); }} isFullWidth /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx index bc28cde9bf8e9..049823e3361ce 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/index.test.tsx @@ -19,6 +19,8 @@ import moment from 'moment'; import { EventAnnotationConfig } from '@kbn/event-annotation-plugin/common'; import { createMockDataViewsState } from '../../../../data_views_service/mocks'; import { createMockedIndexPattern } from '../../../../indexpattern_datasource/mocks'; +import { act } from 'react-dom/test-utils'; +import { EuiButtonGroup } from '@elastic/eui'; jest.mock('lodash', () => { const original = jest.requireActual('lodash'); @@ -29,6 +31,12 @@ jest.mock('lodash', () => { }; }); +jest.mock('@kbn/unified-search-plugin/public', () => ({ + QueryStringInput: () => { + return 'QueryStringInput'; + }, +})); + const customLineStaticAnnotation: EventAnnotationConfig = { id: 'ann1', type: 'manual', @@ -310,5 +318,111 @@ describe('AnnotationsPanel', () => { component.find('[data-test-subj="lnsXY-annotation-tooltip-add_field"]').exists() ).toBeTruthy(); }); + + test('should prefill timeField with the default time field when switching to query based annotations', () => { + const state = testState(); + const indexPattern = createMockedIndexPattern(); + state.layers[0] = { + annotations: [customLineStaticAnnotation], + layerId: 'annotation', + layerType: 'annotations', + ignoreGlobalFilters: true, + indexPatternId: indexPattern.id, + }; + const frameMock = createMockFramePublicAPI({ + datasourceLayers: {}, + dataViews: createMockDataViewsState({ + indexPatterns: { [indexPattern.id]: indexPattern }, + }), + }); + + const setState = jest.fn(); + + const component = mount( + + ); + + act(() => { + component + .find(`[data-test-subj="lns-xyAnnotation-placementType"]`) + .find(EuiButtonGroup) + .prop('onChange')!('lens_xyChart_annotation_query'); + }); + component.update(); + + expect(setState).toHaveBeenCalledWith( + expect.objectContaining({ + layers: [ + expect.objectContaining({ + annotations: [expect.objectContaining({ timeField: 'timestamp' })], + }), + ], + }) + ); + }); + + test('should fallback to the first date field available in the dataView if not time-based', () => { + const state = testState(); + const indexPattern = createMockedIndexPattern({ timeFieldName: '' }); + state.layers[0] = { + annotations: [customLineStaticAnnotation], + layerId: 'annotation', + layerType: 'annotations', + ignoreGlobalFilters: true, + indexPatternId: indexPattern.id, + }; + const frameMock = createMockFramePublicAPI({ + datasourceLayers: {}, + dataViews: createMockDataViewsState({ + indexPatterns: { [indexPattern.id]: indexPattern }, + }), + }); + + const setState = jest.fn(); + + const component = mount( + + ); + + act(() => { + component + .find(`[data-test-subj="lns-xyAnnotation-placementType"]`) + .find(EuiButtonGroup) + .prop('onChange')!('lens_xyChart_annotation_query'); + }); + component.update(); + + expect(setState).toHaveBeenCalledWith( + expect.objectContaining({ + layers: [ + expect.objectContaining({ + annotations: [expect.objectContaining({ timeField: 'timestampLabel' })], + }), + ], + }) + ); + }); }); }); diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/manual_annotation_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/manual_annotation_panel.tsx index 33b04b17b1a2f..795d076f22f0f 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/manual_annotation_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/manual_annotation_panel.tsx @@ -26,7 +26,7 @@ export const ConfigPanelManualAnnotation = ({ datatableUtilities, }: { annotation?: ManualEventAnnotationType | undefined; - onChange: (annotations: Partial | undefined) => void; + onChange: (annotation: Partial | undefined) => void; datatableUtilities: DatatableUtilitiesService; frame: FramePublicAPI; state: XYState; diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx index 8bf926a70e402..f6c44080bad81 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/query_annotation_panel.tsx @@ -42,7 +42,7 @@ export const ConfigPanelQueryAnnotation = ({ }) => { const currentIndexPattern = frame.dataViews.indexPatterns[layer.indexPatternId]; const currentExistingFields = frame.dataViews.existingFields[currentIndexPattern.title]; - // list only supported field by operation, remove the rest + // list only date fields const options = currentIndexPattern.fields .filter((field) => field.type === 'date' && field.displayName) .map((field) => { diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/range_annotation_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/range_annotation_panel.tsx index edecd94e3c8e8..1bed2d760514b 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/range_annotation_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/annotations_config_panel/range_annotation_panel.tsx @@ -39,7 +39,7 @@ export const ConfigPanelApplyAsRangeSwitch = ({ }: { annotation?: ManualEventAnnotationType; datatableUtilities: DatatableUtilitiesService; - onChange: (annotations: Partial | undefined) => void; + onChange: (annotations: Partial | undefined) => void; frame: FramePublicAPI; state: XYState; }) => { diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/shared/line_style_settings.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/shared/line_style_settings.tsx index af3c5a2a297cf..a479daeb75919 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/shared/line_style_settings.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/shared/line_style_settings.tsx @@ -19,7 +19,7 @@ import { LineStyle } from '@kbn/expression-xy-plugin/common'; import { idPrefix } from '../dimension_editor'; interface LineStyleConfig { - lineStyle?: LineStyle; + lineStyle?: Exclude; lineWidth?: number; } @@ -86,7 +86,7 @@ export const LineStyleSettings = ({ ]} idSelected={`${idPrefix}${currentConfig?.lineStyle || 'solid'}`} onChange={(id) => { - const newMode = id.replace(idPrefix, '') as LineStyle; + const newMode = id.replace(idPrefix, '') as Exclude; setConfig({ lineStyle: newMode }); }} isIconOnly diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts index d67fec22d2294..68061bdca0113 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts @@ -24,6 +24,7 @@ import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks' import { coreMock, themeServiceMock } from '@kbn/core/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; jest.mock('../../id_generator'); @@ -36,6 +37,7 @@ const xyVisualization = getXyVisualization({ core: coreMock.createStart(), storage: {} as IStorageWrapper, data: dataPluginMock.createStartContract(), + unifiedSearch: unifiedSearchPluginMock.createStartContract(), }); describe('xy_suggestions', () => { From ad0a7ac18d9ae89acae51bc23cb6e2692782828d Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 19 Sep 2022 08:55:31 -0400 Subject: [PATCH 59/79] [Fleet] Fix Agent policies OpenAPI to document package_policies and full (#140857) --- .../plugins/fleet/common/openapi/bundled.json | 29 +++++++++---------- .../plugins/fleet/common/openapi/bundled.yaml | 23 ++++++++++----- .../components/schemas/agent_policy.yaml | 13 ++++----- .../common/openapi/paths/agent_policies.yaml | 6 ++++ 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index 156adc5bef780..60c4dd7fd8975 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -2131,6 +2131,14 @@ }, { "$ref": "#/components/parameters/kuery" + }, + { + "schema": { + "type": "boolean" + }, + "in": "query", + "name": "full", + "description": "When set to true, retrieve the related package policies for each agent policy." } ], "description": "" @@ -4903,21 +4911,12 @@ "inactive" ] }, - "packagePolicies": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/package_policy" - } - } - ] + "package_policies": { + "description": "This field is present only when retrieving a single agent policy, or when retrieving a list of agent policy with the ?full=true parameter", + "type": "array", + "items": { + "$ref": "#/components/schemas/package_policy" + } }, "updated_on": { "type": "string", diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index db75255d88f5a..567ee06825b92 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -1312,6 +1312,13 @@ paths: - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/page_index' - $ref: '#/components/parameters/kuery' + - schema: + type: boolean + in: query + name: full + description: >- + When set to true, retrieve the related package policies for each + agent policy/ description: '' post: summary: Agent policy - Create @@ -3107,14 +3114,14 @@ components: enum: - active - inactive - packagePolicies: - oneOf: - - type: array - items: - type: string - - type: array - items: - $ref: '#/components/schemas/package_policy' + package_policies: + description: >- + This field is present only when retrieving a single agent + policy, or when retrieving a list of agent policy with the + ?full=true parameter + type: array + items: + $ref: '#/components/schemas/package_policy' updated_on: type: string format: date-time diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml index c2cebb183ed86..b3895ed2627f7 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml @@ -9,14 +9,11 @@ allOf: enum: - active - inactive - packagePolicies: - oneOf: - - type: array - items: - type: string - - type: array - items: - $ref: ./package_policy.yaml + package_policies: + description: This field is present only when retrieving a single agent policy, or when retrieving a list of agent policy with the ?full=true parameter + type: array + items: + $ref: ./package_policy.yaml updated_on: type: string format: date-time diff --git a/x-pack/plugins/fleet/common/openapi/paths/agent_policies.yaml b/x-pack/plugins/fleet/common/openapi/paths/agent_policies.yaml index b075d42d34af9..d431024445656 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/agent_policies.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/agent_policies.yaml @@ -29,6 +29,12 @@ get: - $ref: ../components/parameters/page_size.yaml - $ref: ../components/parameters/page_index.yaml - $ref: ../components/parameters/kuery.yaml + - schema: + type: boolean + in: query + name: full + description: When set to true, retrieve the related package policies for each agent policy. + description: '' post: summary: Agent policy - Create From 56680ab18c5f1db567e87d3961dc5de6c4972fd3 Mon Sep 17 00:00:00 2001 From: Davis McPhee Date: Mon, 19 Sep 2022 09:55:50 -0300 Subject: [PATCH 60/79] [Discover] Update layout for unified histogram (#139446) * [Discover] Replace view mode toggle group with tabs * [Discover] Clean up new Discover tabs * [Discover] Refactor layout to have resizable sections * [Discover] Getting histogram resizing to work * [Discover] Set panel sizes on load * [Discover] Create discover_main_content component * [Discover] Improve layout resizing so chart stays fixed when window is resized * [Discover] Clean up Discover layout resize code, and implement auto resizing functionality to handle window resizing edge cases * [Discover] Improving mobile support * [Discover] Simplify histogram layout * [Discover] Fix field stats layout * [Discover] Comment flexbox CSS fix * [Discover] Refactor discover_main_content to include a fixed panels layout and a resizable panels layout, and switch to fixed panels when in mobile * [Discover] Fix Discover layout performance issues when resizing to and from mobile * [Discover] Refactor reverse portals usage to clean things up * [Discover] Rename Discover panel tsx files * [Discover] Rollback unnecessary css change * [Discover] Fix component names for Discover layout * [Discover] Fix broken discover_layout Jest test * [Discover] Decoupled discover_panels from discover_main_content to improve testability and reusability * [Discover] Clean up discover panels for testing * [Discover] Add Discover panels Jest tests * [Discover] Clean up Jest tests * [Discover] Add functional test for resizable layout panels * [Discover] Fix broken discover_layout Jest tests * [Discover] Removing unnecessary CSS in discover_panels_fixed.tsx * [Discover] Fix issue where resizable panels with extra whitespace are shown when data view is not time based, and fix a flexbox issue with fixed panels that caused content to overflow the container * [Discover] Change Discover view mode tabs to use smaller font, and force blur the Discover layout resize button after a resize * [Discover] Fix data-test-subj casing for resizable layout work * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../main/components/chart/discover_chart.tsx | 38 ++- .../field_stats_table/field_stats_table.tsx | 25 +- .../components/layout/discover_layout.scss | 9 +- .../layout/discover_layout.test.tsx | 17 +- .../components/layout/discover_layout.tsx | 102 ++----- .../layout/discover_main_content.test.tsx | 254 ++++++++++++++++++ .../layout/discover_main_content.tsx | 199 ++++++++++++++ .../layout/discover_panels.test.tsx | 93 +++++++ .../components/layout/discover_panels.tsx | 55 ++++ .../layout/discover_panels_fixed.test.tsx | 43 +++ .../layout/discover_panels_fixed.tsx | 45 ++++ .../layout/discover_panels_resizable.test.tsx | 188 +++++++++++++ .../layout/discover_panels_resizable.tsx | 178 ++++++++++++ .../components/view_mode_toggle/_index.scss | 1 - .../view_mode_toggle/_view_mode_toggle.scss | 12 - .../view_mode_toggle.test.tsx | 68 +++++ .../view_mode_toggle/view_mode_toggle.tsx | 89 +++--- .../apps/discover/group1/_discover.ts | 20 ++ .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 21 files changed, 1271 insertions(+), 168 deletions(-) create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_main_content.test.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels.test.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.test.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.test.tsx create mode 100644 src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.tsx delete mode 100644 src/plugins/discover/public/components/view_mode_toggle/_index.scss delete mode 100644 src/plugins/discover/public/components/view_mode_toggle/_view_mode_toggle.scss create mode 100644 src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.test.tsx diff --git a/src/plugins/discover/public/application/main/components/chart/discover_chart.tsx b/src/plugins/discover/public/application/main/components/chart/discover_chart.tsx index da2f0810706b8..4bc60e904bb84 100644 --- a/src/plugins/discover/public/application/main/components/chart/discover_chart.tsx +++ b/src/plugins/discover/public/application/main/components/chart/discover_chart.tsx @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import React, { memo, useCallback, useEffect, useRef, useState } from 'react'; +import React, { memo, ReactElement, useCallback, useEffect, useRef, useState } from 'react'; import moment from 'moment'; import { EuiButtonIcon, @@ -14,7 +14,6 @@ import { EuiFlexItem, EuiPopover, EuiToolTip, - EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { DataView } from '@kbn/data-views-plugin/public'; @@ -24,8 +23,6 @@ import { GetStateReturn } from '../../services/discover_state'; import { DiscoverHistogram } from './histogram'; import { DataCharts$, DataTotalHits$ } from '../../hooks/use_saved_search'; import { useChartPanels } from './use_chart_panels'; -import { VIEW_MODE, DocumentViewModeToggle } from '../../../../components/view_mode_toggle'; -import { SHOW_FIELD_STATISTICS } from '../../../../../common'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { getVisualizeInformation, @@ -36,33 +33,32 @@ const DiscoverHistogramMemoized = memo(DiscoverHistogram); export const CHART_HIDDEN_KEY = 'discover:chartHidden'; export function DiscoverChart({ + className, resetSavedSearch, savedSearch, savedSearchDataChart$, savedSearchDataTotalHits$, stateContainer, dataView, - viewMode, - setDiscoverViewMode, hideChart, interval, isTimeBased, + appendHistogram, }: { + className?: string; resetSavedSearch: () => void; savedSearch: SavedSearch; savedSearchDataChart$: DataCharts$; savedSearchDataTotalHits$: DataTotalHits$; stateContainer: GetStateReturn; dataView: DataView; - viewMode: VIEW_MODE; - setDiscoverViewMode: (viewMode: VIEW_MODE) => void; isTimeBased: boolean; hideChart?: boolean; interval?: string; + appendHistogram?: ReactElement; }) { - const { uiSettings, data, storage } = useDiscoverServices(); + const { data, storage } = useDiscoverServices(); const [showChartOptionsPopover, setShowChartOptionsPopover] = useState(false); - const showViewModeToggle = uiSettings.get(SHOW_FIELD_STATISTICS) ?? false; const chartRef = useRef<{ element: HTMLElement | null; moveFocus: boolean }>({ element: null, @@ -126,9 +122,15 @@ export function DiscoverChart({ ); return ( - + - + - {showViewModeToggle && ( - - - - )} {isTimeBased && ( @@ -203,7 +197,7 @@ export function DiscoverChart({ {isTimeBased && !hideChart && ( - +
(chartRef.current.element = element)} tabIndex={-1} @@ -218,7 +212,7 @@ export function DiscoverChart({ stateContainer={stateContainer} />
- + {appendHistogram}
)}
diff --git a/src/plugins/discover/public/application/main/components/field_stats_table/field_stats_table.tsx b/src/plugins/discover/public/application/main/components/field_stats_table/field_stats_table.tsx index 59d8fae4afbeb..cd3849d3cf4d3 100644 --- a/src/plugins/discover/public/application/main/components/field_stats_table/field_stats_table.tsx +++ b/src/plugins/discover/public/application/main/components/field_stats_table/field_stats_table.tsx @@ -18,6 +18,8 @@ import { isErrorEmbeddable, } from '@kbn/embeddable-plugin/public'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { EuiFlexItem } from '@elastic/eui'; +import { css } from '@emotion/react'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { FIELD_STATISTICS_LOADED } from './constants'; import type { GetStateReturn } from '../../services/discover_state'; @@ -226,13 +228,22 @@ export const FieldStatisticsTable = (props: FieldStatisticsTableProps) => { }; }, [embeddable, embeddableRoot, trackUiMetric]); + const statsTableCss = css` + overflow-y: auto; + + .kbnDocTableWrapper { + overflow-x: hidden; + } + `; + return ( -
+ +
+ ); }; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.scss b/src/plugins/discover/public/application/main/components/layout/discover_layout.scss index 9ea41f343b885..ee727779fc2a1 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.scss +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.scss @@ -70,7 +70,9 @@ discover-app { } .dscTimechart { - display: block; + flex-grow: 1; + display: flex; + flex-direction: column; position: relative; // SASSTODO: the visualizing component should have an option or a modifier @@ -81,13 +83,12 @@ discover-app { } .dscHistogram { - height: $euiSize * 7; - padding: 0 $euiSizeS $euiSizeS * 2 $euiSizeS; + flex-grow: 1; + padding: 0 $euiSizeS $euiSizeS $euiSizeS; } .dscHistogramTimeRange { padding: 0 $euiSizeS 0 $euiSizeS; - margin-top: - $euiSizeS; } .dscTable { diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx index 678e44b3ca444..39db1481500fa 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx @@ -175,24 +175,27 @@ function mountComponent( describe('Discover component', () => { test('selected data view without time field displays no chart toggle', () => { - const component = mountComponent(dataViewMock); - expect(component.find('[data-test-subj="discoverChartOptionsToggle"]').exists()).toBeFalsy(); + const container = document.createElement('div'); + mountComponent(dataViewMock, undefined, { attachTo: container }); + expect(container.querySelector('[data-test-subj="discoverChartOptionsToggle"]')).toBeNull(); }); test('selected data view with time field displays chart toggle', () => { - const component = mountComponent(dataViewWithTimefieldMock); - expect(component.find('[data-test-subj="discoverChartOptionsToggle"]').exists()).toBeTruthy(); + const container = document.createElement('div'); + mountComponent(dataViewWithTimefieldMock, undefined, { attachTo: container }); + expect(container.querySelector('[data-test-subj="discoverChartOptionsToggle"]')).not.toBeNull(); }); test('sql query displays no chart toggle', () => { - const component = mountComponent( + const container = document.createElement('div'); + mountComponent( dataViewWithTimefieldMock, false, - {}, + { attachTo: container }, { sql: 'SELECT * FROM test' }, true ); - expect(component.find('[data-test-subj="discoverChartOptionsToggle"]').exists()).toBeFalsy(); + expect(container.querySelector('[data-test-subj="discoverChartOptionsToggle"]')).toBeNull(); }); test('the saved search title h1 gains focus on navigate', () => { diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx index 76eccfe2813ec..fbd58853d797c 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx @@ -12,7 +12,6 @@ import { EuiFlexGroup, EuiFlexItem, EuiHideFor, - EuiHorizontalRule, EuiPage, EuiPageBody, EuiPageContent_Deprecated as EuiPageContent, @@ -34,20 +33,17 @@ import { SEARCH_FIELDS_FROM_SOURCE, SHOW_FIELD_STATISTICS } from '../../../../.. import { popularizeField } from '../../../../utils/popularize_field'; import { DiscoverTopNav } from '../top_nav/discover_topnav'; import { DocViewFilterFn } from '../../../../services/doc_views/doc_views_types'; -import { DiscoverChart } from '../chart'; import { getResultState } from '../../utils/get_result_state'; import { DiscoverUninitialized } from '../uninitialized/uninitialized'; import { DataMainMsg, RecordRawType } from '../../hooks/use_saved_search'; import { useColumns } from '../../../../hooks/use_data_grid_columns'; -import { DiscoverDocuments } from './discover_documents'; import { FetchStatus } from '../../../types'; import { useDataState } from '../../hooks/use_data_state'; -import { FieldStatisticsTable } from '../field_stats_table'; import { VIEW_MODE } from '../../../../components/view_mode_toggle'; -import { DOCUMENTS_VIEW_CLICK, FIELD_STATISTICS_VIEW_CLICK } from '../field_stats_table/constants'; import { hasActiveFilter } from './utils'; import { getRawRecordType } from '../../utils/get_raw_record_type'; import { SavedSearchURLConflictCallout } from '../../../../components/saved_search_url_conflict_callout/saved_search_url_conflict_callout'; +import { DiscoverMainContent } from './discover_main_content'; /** * Local storage key for sidebar persistence state @@ -56,8 +52,6 @@ export const SIDEBAR_CLOSED_KEY = 'discover:sidebarClosed'; const SidebarMemoized = React.memo(DiscoverSidebarResponsive); const TopNavMemoized = React.memo(DiscoverTopNav); -const DiscoverChartMemoized = React.memo(DiscoverChart); -const FieldStatisticsTableMemoized = React.memo(FieldStatisticsTable); export function DiscoverLayout({ dataView, @@ -91,7 +85,7 @@ export function DiscoverLayout({ spaces, inspector, } = useDiscoverServices(); - const { main$, charts$, totalHits$ } = savedSearchData$; + const { main$ } = savedSearchData$; const dataState: DataMainMsg = useDataState(main$); const viewMode = useMemo(() => { @@ -99,21 +93,6 @@ export function DiscoverLayout({ return state.viewMode ?? VIEW_MODE.DOCUMENT_LEVEL; }, [uiSettings, state.viewMode]); - const setDiscoverViewMode = useCallback( - (mode: VIEW_MODE) => { - stateContainer.setAppState({ viewMode: mode }); - - if (trackUiMetric) { - if (mode === VIEW_MODE.AGGREGATED_LEVEL) { - trackUiMetric(METRIC_TYPE.CLICK, FIELD_STATISTICS_VIEW_CLICK); - } else { - trackUiMetric(METRIC_TYPE.CLICK, DOCUMENTS_VIEW_CLICK); - } - } - }, - [trackUiMetric, stateContainer] - ); - const fetchCounter = useRef(0); useEffect(() => { @@ -210,6 +189,8 @@ export function DiscoverLayout({ } }, [dataState.error, isPlainRecord]); + const resizeRef = useRef(null); + return (

} {resultState === 'ready' && ( - - {!isPlainRecord && ( - <> - - - - - - )} - {viewMode === VIEW_MODE.DOCUMENT_LEVEL ? ( - - ) : ( - - )} - + )} diff --git a/src/plugins/discover/public/application/main/components/layout/discover_main_content.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_main_content.test.tsx new file mode 100644 index 0000000000000..6b499aa62c430 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_main_content.test.tsx @@ -0,0 +1,254 @@ +/* + * 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 React from 'react'; +import { Subject, BehaviorSubject } from 'rxjs'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { esHits } from '../../../../__mocks__/es_hits'; +import { dataViewMock } from '../../../../__mocks__/data_view'; +import { savedSearchMock } from '../../../../__mocks__/saved_search'; +import { GetStateReturn } from '../../services/discover_state'; +import { + AvailableFields$, + DataCharts$, + DataDocuments$, + DataMain$, + DataTotalHits$, + RecordRawType, +} from '../../hooks/use_saved_search'; +import { discoverServiceMock } from '../../../../__mocks__/services'; +import { FetchStatus } from '../../../types'; +import { Chart } from '../chart/point_series'; +import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; +import { DiscoverMainContent, DiscoverMainContentProps } from './discover_main_content'; +import { VIEW_MODE } from '@kbn/saved-search-plugin/public'; +import { DiscoverPanels, DISCOVER_PANELS_MODE } from './discover_panels'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { CoreTheme } from '@kbn/core/public'; +import { act } from 'react-dom/test-utils'; +import { setTimeout } from 'timers/promises'; +import { DiscoverChart } from '../chart'; +import { ReactWrapper } from 'enzyme'; +import { DocumentViewModeToggle } from '../../../../components/view_mode_toggle'; + +const mountComponent = async ({ + isPlainRecord = false, + hideChart = false, + isTimeBased = true, +}: { + isPlainRecord?: boolean; + hideChart?: boolean; + isTimeBased?: boolean; +} = {}) => { + const services = discoverServiceMock; + services.data.query.timefilter.timefilter.getAbsoluteTime = () => { + return { from: '2020-05-14T11:05:13.590', to: '2020-05-14T11:20:13.590' }; + }; + + const main$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + recordRawType: isPlainRecord ? RecordRawType.PLAIN : RecordRawType.DOCUMENT, + foundDocuments: true, + }) as DataMain$; + + const documents$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: esHits.map((esHit) => buildDataTableRecord(esHit, dataViewMock)), + }) as DataDocuments$; + + const availableFields$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + fields: [] as string[], + }) as AvailableFields$; + + const totalHits$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: Number(esHits.length), + }) as DataTotalHits$; + + const chartData = { + xAxisOrderedValues: [ + 1623880800000, 1623967200000, 1624053600000, 1624140000000, 1624226400000, 1624312800000, + 1624399200000, 1624485600000, 1624572000000, 1624658400000, 1624744800000, 1624831200000, + 1624917600000, 1625004000000, 1625090400000, + ], + xAxisFormat: { id: 'date', params: { pattern: 'YYYY-MM-DD' } }, + xAxisLabel: 'order_date per day', + yAxisFormat: { id: 'number' }, + ordered: { + date: true, + interval: { + asMilliseconds: jest.fn(), + }, + intervalESUnit: 'd', + intervalESValue: 1, + min: '2021-03-18T08:28:56.411Z', + max: '2021-07-01T07:28:56.411Z', + }, + yAxisLabel: 'Count', + values: [ + { x: 1623880800000, y: 134 }, + { x: 1623967200000, y: 152 }, + { x: 1624053600000, y: 141 }, + { x: 1624140000000, y: 138 }, + { x: 1624226400000, y: 142 }, + { x: 1624312800000, y: 157 }, + { x: 1624399200000, y: 149 }, + { x: 1624485600000, y: 146 }, + { x: 1624572000000, y: 170 }, + { x: 1624658400000, y: 137 }, + { x: 1624744800000, y: 150 }, + { x: 1624831200000, y: 144 }, + { x: 1624917600000, y: 147 }, + { x: 1625004000000, y: 137 }, + { x: 1625090400000, y: 66 }, + ], + } as unknown as Chart; + + const charts$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval: { + scaled: true, + description: 'test', + scale: 2, + }, + }) as DataCharts$; + + const savedSearchData$ = { + main$, + documents$, + totalHits$, + charts$, + availableFields$, + }; + + const props: DiscoverMainContentProps = { + isPlainRecord, + dataView: dataViewMock, + navigateTo: jest.fn(), + resetSavedSearch: jest.fn(), + setExpandedDoc: jest.fn(), + savedSearch: savedSearchMock, + savedSearchData$, + savedSearchRefetch$: new Subject(), + state: { columns: [], hideChart }, + stateContainer: { + setAppState: () => {}, + appStateContainer: { + getState: () => ({ + interval: 'auto', + }), + }, + } as unknown as GetStateReturn, + isTimeBased, + viewMode: VIEW_MODE.DOCUMENT_LEVEL, + onAddFilter: jest.fn(), + onFieldEdited: jest.fn(), + columns: [], + resizeRef: { current: null }, + }; + + const coreTheme$ = new BehaviorSubject({ darkMode: false }); + + const component = mountWithIntl( + + + + + + ); + + // useIsWithinBreakpoints triggers state updates which cause act + // issues and prevent our resize events from being fired correctly + // https://github.com/enzymejs/enzyme/issues/2073 + await act(() => setTimeout(0)); + + return component; +}; + +const setWindowWidth = (component: ReactWrapper, width: string) => { + window.innerWidth = parseInt(width, 10); + act(() => { + window.dispatchEvent(new Event('resize')); + }); + component.update(); +}; + +describe('Discover main content component', () => { + const windowWidth = window.innerWidth; + + beforeEach(() => { + window.innerWidth = windowWidth; + }); + + it('should set the panels mode to DISCOVER_PANELS_MODE.RESIZABLE when viewing on medium screens and above', async () => { + const component = await mountComponent(); + setWindowWidth(component, euiThemeVars.euiBreakpoints.m); + expect(component.find(DiscoverPanels).prop('mode')).toBe(DISCOVER_PANELS_MODE.RESIZABLE); + }); + + it('should set the panels mode to DISCOVER_PANELS_MODE.FIXED when viewing on small screens and below', async () => { + const component = await mountComponent(); + setWindowWidth(component, euiThemeVars.euiBreakpoints.s); + expect(component.find(DiscoverPanels).prop('mode')).toBe(DISCOVER_PANELS_MODE.FIXED); + }); + + it('should set the panels mode to DISCOVER_PANELS_MODE.FIXED if hideChart is true', async () => { + const component = await mountComponent({ hideChart: true }); + expect(component.find(DiscoverPanels).prop('mode')).toBe(DISCOVER_PANELS_MODE.FIXED); + }); + + it('should set the panels mode to DISCOVER_PANELS_MODE.FIXED if isTimeBased is false', async () => { + const component = await mountComponent({ isTimeBased: false }); + expect(component.find(DiscoverPanels).prop('mode')).toBe(DISCOVER_PANELS_MODE.FIXED); + }); + + it('should set the panels mode to DISCOVER_PANELS_MODE.SINGLE if isPlainRecord is true', async () => { + const component = await mountComponent({ isPlainRecord: true }); + expect(component.find(DiscoverPanels).prop('mode')).toBe(DISCOVER_PANELS_MODE.SINGLE); + }); + + it('should set a fixed height for DiscoverChart when panels mode is DISCOVER_PANELS_MODE.FIXED and hideChart is false', async () => { + const component = await mountComponent(); + setWindowWidth(component, euiThemeVars.euiBreakpoints.s); + const expectedHeight = component.find(DiscoverPanels).prop('initialTopPanelHeight'); + expect(component.find(DiscoverChart).childAt(0).getDOMNode()).toHaveStyle({ + height: `${expectedHeight}px`, + }); + }); + + it('should not set a fixed height for DiscoverChart when panels mode is DISCOVER_PANELS_MODE.FIXED and hideChart is true', async () => { + const component = await mountComponent({ hideChart: true }); + setWindowWidth(component, euiThemeVars.euiBreakpoints.s); + const expectedHeight = component.find(DiscoverPanels).prop('initialTopPanelHeight'); + expect(component.find(DiscoverChart).childAt(0).getDOMNode()).not.toHaveStyle({ + height: `${expectedHeight}px`, + }); + }); + + it('should not set a fixed height for DiscoverChart when panels mode is DISCOVER_PANELS_MODE.FIXED and isTimeBased is false', async () => { + const component = await mountComponent({ isTimeBased: false }); + setWindowWidth(component, euiThemeVars.euiBreakpoints.s); + const expectedHeight = component.find(DiscoverPanels).prop('initialTopPanelHeight'); + expect(component.find(DiscoverChart).childAt(0).getDOMNode()).not.toHaveStyle({ + height: `${expectedHeight}px`, + }); + }); + + it('should show DocumentViewModeToggle when isPlainRecord is false', async () => { + const component = await mountComponent(); + expect(component.find(DocumentViewModeToggle).exists()).toBe(true); + }); + + it('should not show DocumentViewModeToggle when isPlainRecord is true', async () => { + const component = await mountComponent({ isPlainRecord: true }); + expect(component.find(DocumentViewModeToggle).exists()).toBe(false); + }); +}); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx new file mode 100644 index 0000000000000..234b4392453e6 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx @@ -0,0 +1,199 @@ +/* + * 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 { + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiSpacer, + useEuiTheme, + useIsWithinBreakpoints, +} from '@elastic/eui'; +import { SavedSearch } from '@kbn/saved-search-plugin/public'; +import React, { RefObject, useCallback, useMemo } from 'react'; +import { DataView } from '@kbn/data-views-plugin/common'; +import { METRIC_TYPE } from '@kbn/analytics'; +import { createHtmlPortalNode, InPortal, OutPortal } from 'react-reverse-portal'; +import { css } from '@emotion/css'; +import { useDiscoverServices } from '../../../../hooks/use_discover_services'; +import { DataTableRecord } from '../../../../types'; +import { DocumentViewModeToggle, VIEW_MODE } from '../../../../components/view_mode_toggle'; +import { DocViewFilterFn } from '../../../../services/doc_views/doc_views_types'; +import { DataRefetch$, SavedSearchData } from '../../hooks/use_saved_search'; +import { AppState, GetStateReturn } from '../../services/discover_state'; +import { DiscoverChart } from '../chart'; +import { FieldStatisticsTable } from '../field_stats_table'; +import { DiscoverDocuments } from './discover_documents'; +import { DOCUMENTS_VIEW_CLICK, FIELD_STATISTICS_VIEW_CLICK } from '../field_stats_table/constants'; +import { DiscoverPanels, DISCOVER_PANELS_MODE } from './discover_panels'; + +const DiscoverChartMemoized = React.memo(DiscoverChart); +const FieldStatisticsTableMemoized = React.memo(FieldStatisticsTable); + +export interface DiscoverMainContentProps { + isPlainRecord: boolean; + dataView: DataView; + navigateTo: (url: string) => void; + resetSavedSearch: () => void; + expandedDoc?: DataTableRecord; + setExpandedDoc: (doc?: DataTableRecord) => void; + savedSearch: SavedSearch; + savedSearchData$: SavedSearchData; + savedSearchRefetch$: DataRefetch$; + state: AppState; + stateContainer: GetStateReturn; + isTimeBased: boolean; + viewMode: VIEW_MODE; + onAddFilter: DocViewFilterFn | undefined; + onFieldEdited: () => void; + columns: string[]; + resizeRef: RefObject; +} + +export const DiscoverMainContent = ({ + isPlainRecord, + dataView, + navigateTo, + resetSavedSearch, + expandedDoc, + setExpandedDoc, + savedSearch, + savedSearchData$, + savedSearchRefetch$, + state, + stateContainer, + isTimeBased, + viewMode, + onAddFilter, + onFieldEdited, + columns, + resizeRef, +}: DiscoverMainContentProps) => { + const { trackUiMetric } = useDiscoverServices(); + + const setDiscoverViewMode = useCallback( + (mode: VIEW_MODE) => { + stateContainer.setAppState({ viewMode: mode }); + + if (trackUiMetric) { + if (mode === VIEW_MODE.AGGREGATED_LEVEL) { + trackUiMetric(METRIC_TYPE.CLICK, FIELD_STATISTICS_VIEW_CLICK); + } else { + trackUiMetric(METRIC_TYPE.CLICK, DOCUMENTS_VIEW_CLICK); + } + } + }, + [trackUiMetric, stateContainer] + ); + + const topPanelNode = useMemo( + () => createHtmlPortalNode({ attributes: { class: 'eui-fullHeight' } }), + [] + ); + + const mainPanelNode = useMemo( + () => createHtmlPortalNode({ attributes: { class: 'eui-fullHeight' } }), + [] + ); + + const hideChart = state.hideChart || !isTimeBased; + const showFixedPanels = useIsWithinBreakpoints(['xs', 's']) || isPlainRecord || hideChart; + const { euiTheme } = useEuiTheme(); + const topPanelHeight = euiTheme.base * 12; + const minTopPanelHeight = euiTheme.base * 8; + const minMainPanelHeight = euiTheme.base * 10; + + const chartClassName = + showFixedPanels && !hideChart + ? css` + height: ${topPanelHeight}px; + ` + : 'eui-fullHeight'; + + const panelsMode = isPlainRecord + ? DISCOVER_PANELS_MODE.SINGLE + : showFixedPanels + ? DISCOVER_PANELS_MODE.FIXED + : DISCOVER_PANELS_MODE.RESIZABLE; + + return ( + <> + + : } + /> + + + + {!isPlainRecord && ( + + {!showFixedPanels && } + + + + )} + {viewMode === VIEW_MODE.DOCUMENT_LEVEL ? ( + + ) : ( + + )} + + + } + mainPanel={} + /> + + ); +}; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels.test.tsx new file mode 100644 index 0000000000000..60ba0038f1194 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels.test.tsx @@ -0,0 +1,93 @@ +/* + * 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 { mount } from 'enzyme'; +import React, { ReactElement, RefObject } from 'react'; +import { DiscoverPanels, DISCOVER_PANELS_MODE } from './discover_panels'; +import { DiscoverPanelsResizable } from './discover_panels_resizable'; +import { DiscoverPanelsFixed } from './discover_panels_fixed'; + +describe('Discover panels component', () => { + const mountComponent = ({ + mode = DISCOVER_PANELS_MODE.RESIZABLE, + resizeRef = { current: null }, + initialTopPanelHeight = 200, + minTopPanelHeight = 100, + minMainPanelHeight = 100, + topPanel = <>, + mainPanel = <>, + }: { + mode?: DISCOVER_PANELS_MODE; + resizeRef?: RefObject; + initialTopPanelHeight?: number; + minTopPanelHeight?: number; + minMainPanelHeight?: number; + mainPanel?: ReactElement; + topPanel?: ReactElement; + }) => { + return mount( + + ); + }; + + it('should show DiscoverPanelsFixed when mode is DISCOVER_PANELS_MODE.SINGLE', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ mode: DISCOVER_PANELS_MODE.SINGLE, topPanel, mainPanel }); + expect(component.find(DiscoverPanelsFixed).exists()).toBe(true); + expect(component.find(DiscoverPanelsResizable).exists()).toBe(false); + expect(component.contains(topPanel)).toBe(false); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should show DiscoverPanelsFixed when mode is DISCOVER_PANELS_MODE.FIXED', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ mode: DISCOVER_PANELS_MODE.FIXED, topPanel, mainPanel }); + expect(component.find(DiscoverPanelsFixed).exists()).toBe(true); + expect(component.find(DiscoverPanelsResizable).exists()).toBe(false); + expect(component.contains(topPanel)).toBe(true); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should show DiscoverPanelsResizable when mode is DISCOVER_PANELS_MODE.RESIZABLE', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ mode: DISCOVER_PANELS_MODE.RESIZABLE, topPanel, mainPanel }); + expect(component.find(DiscoverPanelsFixed).exists()).toBe(false); + expect(component.find(DiscoverPanelsResizable).exists()).toBe(true); + expect(component.contains(topPanel)).toBe(true); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should pass true for hideTopPanel when mode is DISCOVER_PANELS_MODE.SINGLE', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ mode: DISCOVER_PANELS_MODE.SINGLE, topPanel, mainPanel }); + expect(component.find(DiscoverPanelsFixed).prop('hideTopPanel')).toBe(true); + expect(component.contains(topPanel)).toBe(false); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should pass false for hideTopPanel when mode is DISCOVER_PANELS_MODE.FIXED', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ mode: DISCOVER_PANELS_MODE.FIXED, topPanel, mainPanel }); + expect(component.find(DiscoverPanelsFixed).prop('hideTopPanel')).toBe(false); + expect(component.contains(topPanel)).toBe(true); + expect(component.contains(mainPanel)).toBe(true); + }); +}); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels.tsx new file mode 100644 index 0000000000000..57ea08ee92c8b --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels.tsx @@ -0,0 +1,55 @@ +/* + * 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 React, { ReactElement, RefObject } from 'react'; +import { DiscoverPanelsResizable } from './discover_panels_resizable'; +import { DiscoverPanelsFixed } from './discover_panels_fixed'; + +export enum DISCOVER_PANELS_MODE { + SINGLE = 'single', + FIXED = 'fixed', + RESIZABLE = 'resizable', +} + +export interface DiscoverPanelsProps { + className?: string; + mode: DISCOVER_PANELS_MODE; + resizeRef: RefObject; + initialTopPanelHeight: number; + minTopPanelHeight: number; + minMainPanelHeight: number; + topPanel: ReactElement; + mainPanel: ReactElement; +} + +const fixedModes = [DISCOVER_PANELS_MODE.SINGLE, DISCOVER_PANELS_MODE.FIXED]; + +export const DiscoverPanels = ({ + className, + mode, + resizeRef, + initialTopPanelHeight, + minTopPanelHeight, + minMainPanelHeight, + topPanel, + mainPanel, +}: DiscoverPanelsProps) => { + const panelsProps = { className, topPanel, mainPanel }; + + return fixedModes.includes(mode) ? ( + + ) : ( + + ); +}; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.test.tsx new file mode 100644 index 0000000000000..a4632f83c918c --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.test.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 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 { mount } from 'enzyme'; +import React, { ReactElement } from 'react'; +import { DiscoverPanelsFixed } from './discover_panels_fixed'; + +describe('Discover panels fixed', () => { + const mountComponent = ({ + hideTopPanel = false, + topPanel = <>, + mainPanel = <>, + }: { + hideTopPanel?: boolean; + topPanel: ReactElement; + mainPanel: ReactElement; + }) => { + return mount( + + ); + }; + + it('should render both panels when hideTopPanel is false', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ topPanel, mainPanel }); + expect(component.contains(topPanel)).toBe(true); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should render only main panel when hideTopPanel is true', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ hideTopPanel: true, topPanel, mainPanel }); + expect(component.contains(topPanel)).toBe(false); + expect(component.contains(mainPanel)).toBe(true); + }); +}); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.tsx new file mode 100644 index 0000000000000..1db99e61fb8c5 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels_fixed.tsx @@ -0,0 +1,45 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { css } from '@emotion/react'; +import React, { ReactElement } from 'react'; + +export const DiscoverPanelsFixed = ({ + className, + hideTopPanel, + topPanel, + mainPanel, +}: { + className?: string; + hideTopPanel?: boolean; + topPanel: ReactElement; + mainPanel: ReactElement; +}) => { + // By default a flex item has overflow: visible, min-height: auto, and min-width: auto. + // This can cause the item to overflow the flexbox parent when its content is too large. + // Setting the overflow to something other than visible (e.g. auto) resets the min-height + // and min-width to 0 and makes the item respect the flexbox parent's size. + // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size + const mainPanelCss = css` + overflow: auto; + `; + + return ( + + {!hideTopPanel && {topPanel}} + {mainPanel} + + ); +}; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.test.tsx new file mode 100644 index 0000000000000..16c50a94b4656 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.test.tsx @@ -0,0 +1,188 @@ +/* + * 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 { mount, ReactWrapper } from 'enzyme'; +import React, { ReactElement, RefObject } from 'react'; +import { DiscoverPanelsResizable } from './discover_panels_resizable'; +import { act } from 'react-dom/test-utils'; + +const containerHeight = 1000; +const topPanelId = 'topPanel'; + +jest.mock('@elastic/eui', () => ({ + ...jest.requireActual('@elastic/eui'), + useResizeObserver: jest.fn(), + useGeneratedHtmlId: jest.fn(() => topPanelId), +})); + +import * as eui from '@elastic/eui'; +import { waitFor } from '@testing-library/dom'; + +describe('Discover panels resizable', () => { + const mountComponent = ({ + className = '', + resizeRef = { current: null }, + initialTopPanelHeight = 0, + minTopPanelHeight = 0, + minMainPanelHeight = 0, + topPanel = <>, + mainPanel = <>, + attachTo, + }: { + className?: string; + resizeRef?: RefObject; + initialTopPanelHeight?: number; + minTopPanelHeight?: number; + minMainPanelHeight?: number; + topPanel?: ReactElement; + mainPanel?: ReactElement; + attachTo?: HTMLElement; + }) => { + return mount( + , + attachTo ? { attachTo } : undefined + ); + }; + + const expectCorrectPanelSizes = ( + component: ReactWrapper, + currentContainerHeight: number, + topPanelHeight: number + ) => { + const topPanelSize = (topPanelHeight / currentContainerHeight) * 100; + expect(component.find('[data-test-subj="dscResizablePanelTop"]').at(0).prop('size')).toBe( + topPanelSize + ); + expect(component.find('[data-test-subj="dscResizablePanelMain"]').at(0).prop('size')).toBe( + 100 - topPanelSize + ); + }; + + const forceRender = (component: ReactWrapper) => { + component.setProps({}).update(); + }; + + beforeEach(() => { + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: containerHeight, width: 0 }); + }); + + it('should render both panels', () => { + const topPanel =
; + const mainPanel =
; + const component = mountComponent({ topPanel, mainPanel }); + expect(component.contains(topPanel)).toBe(true); + expect(component.contains(mainPanel)).toBe(true); + }); + + it('should set the initial heights of both panels', () => { + const initialTopPanelHeight = 200; + const component = mountComponent({ initialTopPanelHeight }); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + }); + + it('should set the correct heights of both panels when the panels are resized', () => { + const initialTopPanelHeight = 200; + const component = mountComponent({ initialTopPanelHeight }); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + const newTopPanelSize = 30; + const onPanelSizeChange = component + .find('[data-test-subj="dscResizableContainer"]') + .at(0) + .prop('onPanelWidthChange') as Function; + act(() => { + onPanelSizeChange({ [topPanelId]: newTopPanelSize }); + }); + forceRender(component); + expectCorrectPanelSizes(component, containerHeight, containerHeight * (newTopPanelSize / 100)); + }); + + it('should maintain the height of the top panel and resize the main panel when the container height changes', () => { + const initialTopPanelHeight = 200; + const component = mountComponent({ initialTopPanelHeight }); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + const newContainerHeight = 2000; + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: newContainerHeight, width: 0 }); + forceRender(component); + expectCorrectPanelSizes(component, newContainerHeight, initialTopPanelHeight); + }); + + it('should resize the top panel once the main panel is at its minimum height', () => { + const initialTopPanelHeight = 500; + const minTopPanelHeight = 100; + const minMainPanelHeight = 100; + const component = mountComponent({ + initialTopPanelHeight, + minTopPanelHeight, + minMainPanelHeight, + }); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + const newContainerHeight = 400; + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: newContainerHeight, width: 0 }); + forceRender(component); + expectCorrectPanelSizes(component, newContainerHeight, newContainerHeight - minMainPanelHeight); + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: containerHeight, width: 0 }); + forceRender(component); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + }); + + it('should maintain the minimum heights of both panels when the container is too small to fit them', () => { + const initialTopPanelHeight = 500; + const minTopPanelHeight = 100; + const minMainPanelHeight = 150; + const component = mountComponent({ + initialTopPanelHeight, + minTopPanelHeight, + minMainPanelHeight, + }); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + const newContainerHeight = 200; + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: newContainerHeight, width: 0 }); + forceRender(component); + expect(component.find('[data-test-subj="dscResizablePanelTop"]').at(0).prop('size')).toBe( + (minTopPanelHeight / newContainerHeight) * 100 + ); + expect(component.find('[data-test-subj="dscResizablePanelMain"]').at(0).prop('size')).toBe( + (minMainPanelHeight / newContainerHeight) * 100 + ); + jest.spyOn(eui, 'useResizeObserver').mockReturnValue({ height: containerHeight, width: 0 }); + forceRender(component); + expectCorrectPanelSizes(component, containerHeight, initialTopPanelHeight); + }); + + it('should blur the resize button after a resize', async () => { + const attachTo = document.createElement('div'); + document.body.appendChild(attachTo); + const component = mountComponent({ attachTo }); + const wrapper = component.find('[data-test-subj="dscResizableContainerWrapper"]'); + const resizeButton = component.find('button[data-test-subj="dsc-resizable-button"]'); + const resizeButtonInner = component.find('[data-test-subj="dscResizableButtonInner"]'); + const mouseEvent = { + pageX: 0, + pageY: 0, + clientX: 0, + clientY: 0, + }; + resizeButtonInner.simulate('mousedown', mouseEvent); + resizeButton.simulate('mousedown', mouseEvent); + (resizeButton.getDOMNode() as HTMLElement).focus(); + wrapper.simulate('mouseup', mouseEvent); + resizeButton.simulate('click', mouseEvent); + expect(resizeButton.getDOMNode()).toHaveFocus(); + await waitFor(() => { + expect(resizeButton.getDOMNode()).not.toHaveFocus(); + }); + }); +}); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.tsx b/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.tsx new file mode 100644 index 0000000000000..88a92b4380b76 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/discover_panels_resizable.tsx @@ -0,0 +1,178 @@ +/* + * 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 { EuiResizableContainer, useGeneratedHtmlId, useResizeObserver } from '@elastic/eui'; +import { css } from '@emotion/react'; +import React, { ReactElement, RefObject, useCallback, useEffect, useState } from 'react'; + +const percentToPixels = (containerHeight: number, percentage: number) => + Math.round(containerHeight * (percentage / 100)); + +const pixelsToPercent = (containerHeight: number, pixels: number) => + +((pixels / containerHeight) * 100).toFixed(4); + +export const DiscoverPanelsResizable = ({ + className, + resizeRef, + initialTopPanelHeight, + minTopPanelHeight, + minMainPanelHeight, + topPanel, + mainPanel, +}: { + className?: string; + resizeRef: RefObject; + initialTopPanelHeight: number; + minTopPanelHeight: number; + minMainPanelHeight: number; + topPanel: ReactElement; + mainPanel: ReactElement; +}) => { + const topPanelId = useGeneratedHtmlId({ prefix: 'topPanel' }); + const { height: containerHeight } = useResizeObserver(resizeRef.current); + const [topPanelHeight, setTopPanelHeight] = useState(initialTopPanelHeight); + const [panelSizes, setPanelSizes] = useState({ topPanelSize: 0, mainPanelSize: 0 }); + + // EuiResizableContainer doesn't work properly when used with react-reverse-portal and + // will cancel the resize. To work around this we keep track of when resizes start and + // end to toggle the rendering of a transparent overlay which prevents the cancellation. + // EUI issue: https://github.com/elastic/eui/issues/6199 + const [resizeWithPortalsHackIsResizing, setResizeWithPortalsHackIsResizing] = useState(false); + const enableResizeWithPortalsHack = () => setResizeWithPortalsHackIsResizing(true); + const disableResizeWithPortalsHack = () => setResizeWithPortalsHackIsResizing(false); + const resizeWithPortalsHackFillCss = css` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + `; + const resizeWithPortalsHackButtonCss = css` + z-index: 3; + `; + const resizeWithPortalsHackButtonInnerCss = css` + ${resizeWithPortalsHackFillCss} + z-index: 1; + `; + const resizeWithPortalsHackOverlayCss = css` + ${resizeWithPortalsHackFillCss} + z-index: 2; + `; + + // Instead of setting the panel sizes directly, we convert the top panel height + // from a percentage of the container height to a pixel value. This will trigger + // the effect below to update the panel sizes. + const onPanelSizeChange = useCallback( + ({ [topPanelId]: topPanelSize }: { [key: string]: number }) => { + setTopPanelHeight(percentToPixels(containerHeight, topPanelSize)); + }, + [containerHeight, topPanelId] + ); + + // This effect will update the panel sizes based on the top panel height whenever + // it or the container height changes. This allows us to keep the height of the + // top panel panel fixed when the window is resized. + useEffect(() => { + if (!containerHeight) { + return; + } + + let topPanelSize: number; + let mainPanelSize: number; + + // If the container height is less than the minimum main content height + // plus the current top panel height, then we need to make some adjustments. + if (containerHeight < minMainPanelHeight + topPanelHeight) { + const newTopPanelHeight = containerHeight - minMainPanelHeight; + + // Try to make the top panel height fit within the container, but if it + // doesn't then just use the minimum heights. + if (newTopPanelHeight < minTopPanelHeight) { + topPanelSize = pixelsToPercent(containerHeight, minTopPanelHeight); + mainPanelSize = pixelsToPercent(containerHeight, minMainPanelHeight); + } else { + topPanelSize = pixelsToPercent(containerHeight, newTopPanelHeight); + mainPanelSize = 100 - topPanelSize; + } + } else { + topPanelSize = pixelsToPercent(containerHeight, topPanelHeight); + mainPanelSize = 100 - topPanelSize; + } + + setPanelSizes({ topPanelSize, mainPanelSize }); + }, [containerHeight, topPanelHeight, minTopPanelHeight, minMainPanelHeight]); + + const onResizeEnd = () => { + // We don't want the resize button to retain focus after the resize is complete, + // but EuiResizableContainer will force focus it onClick. To work around this we + // use setTimeout to wait until after onClick has been called before blurring. + if (resizeWithPortalsHackIsResizing && document.activeElement instanceof HTMLElement) { + const button = document.activeElement; + setTimeout(() => { + button.blur(); + }); + } + + disableResizeWithPortalsHack(); + }; + + return ( +
+ + {(EuiResizablePanel, EuiResizableButton) => ( + <> + + {topPanel} + + + + + + {mainPanel} + + {resizeWithPortalsHackIsResizing ? ( +
+ ) : ( + <> + )} + + )} + +
+ ); +}; diff --git a/src/plugins/discover/public/components/view_mode_toggle/_index.scss b/src/plugins/discover/public/components/view_mode_toggle/_index.scss deleted file mode 100644 index a76c3453de32a..0000000000000 --- a/src/plugins/discover/public/components/view_mode_toggle/_index.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'view_mode_toggle'; diff --git a/src/plugins/discover/public/components/view_mode_toggle/_view_mode_toggle.scss b/src/plugins/discover/public/components/view_mode_toggle/_view_mode_toggle.scss deleted file mode 100644 index 1009ab0511957..0000000000000 --- a/src/plugins/discover/public/components/view_mode_toggle/_view_mode_toggle.scss +++ /dev/null @@ -1,12 +0,0 @@ -.dscViewModeToggle { - padding-right: $euiSize; -} - -.fieldStatsButton { - display: flex; - align-items: center; -} - -.fieldStatsBetaBadge { - margin-left: $euiSizeXS; -} diff --git a/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.test.tsx b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.test.tsx new file mode 100644 index 0000000000000..450d7c2816d7d --- /dev/null +++ b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.test.tsx @@ -0,0 +1,68 @@ +/* + * 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 { EuiTab } from '@elastic/eui'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import React from 'react'; +import { VIEW_MODE } from './constants'; +import { DocumentViewModeToggle } from './view_mode_toggle'; + +describe('Document view mode toggle component', () => { + const mountComponent = ({ + showFieldStatistics = true, + viewMode = VIEW_MODE.DOCUMENT_LEVEL, + setDiscoverViewMode = jest.fn(), + } = {}) => { + const serivces = { + uiSettings: { + get: () => showFieldStatistics, + }, + }; + + return mountWithIntl( + + + + ); + }; + + it('should render if SHOW_FIELD_STATISTICS is true', () => { + const component = mountComponent(); + expect(component.isEmptyRender()).toBe(false); + }); + + it('should not render if SHOW_FIELD_STATISTICS is false', () => { + const component = mountComponent({ showFieldStatistics: false }); + expect(component.isEmptyRender()).toBe(true); + }); + + it('should set the view mode to VIEW_MODE.DOCUMENT_LEVEL when dscViewModeDocumentButton is clicked', () => { + const setDiscoverViewMode = jest.fn(); + const component = mountComponent({ setDiscoverViewMode }); + component.find('[data-test-subj="dscViewModeDocumentButton"]').at(0).simulate('click'); + expect(setDiscoverViewMode).toHaveBeenCalledWith(VIEW_MODE.DOCUMENT_LEVEL); + }); + + it('should set the view mode to VIEW_MODE.AGGREGATED_LEVEL when dscViewModeFieldStatsButton is clicked', () => { + const setDiscoverViewMode = jest.fn(); + const component = mountComponent({ setDiscoverViewMode }); + component.find('[data-test-subj="dscViewModeFieldStatsButton"]').at(0).simulate('click'); + expect(setDiscoverViewMode).toHaveBeenCalledWith(VIEW_MODE.AGGREGATED_LEVEL); + }); + + it('should select the Documents tab if viewMode is VIEW_MODE.DOCUMENT_LEVEL', () => { + const component = mountComponent(); + expect(component.find(EuiTab).at(0).prop('isSelected')).toBe(true); + }); + + it('should select the Field statistics tab if viewMode is VIEW_MODE.AGGREGATED_LEVEL', () => { + const component = mountComponent({ viewMode: VIEW_MODE.AGGREGATED_LEVEL }); + expect(component.find(EuiTab).at(1).prop('isSelected')).toBe(true); + }); +}); diff --git a/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx index af48673bf31be..f499df891ef34 100644 --- a/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx +++ b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx @@ -6,12 +6,22 @@ * Side Public License, v 1. */ -import { EuiButtonGroup, EuiBetaBadge } from '@elastic/eui'; -import React, { useMemo } from 'react'; -import { i18n } from '@kbn/i18n'; +import { + EuiTabs, + EuiTab, + useEuiPaddingSize, + EuiBetaBadge, + EuiFlexGroup, + EuiFlexItem, +} from '@elastic/eui'; +import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { i18n } from '@kbn/i18n'; import { VIEW_MODE } from './constants'; -import './_index.scss'; +import { SHOW_FIELD_STATISTICS } from '../../../common'; +import { useDiscoverServices } from '../../hooks/use_discover_services'; export const DocumentViewModeToggle = ({ viewMode, @@ -20,23 +30,47 @@ export const DocumentViewModeToggle = ({ viewMode: VIEW_MODE; setDiscoverViewMode: (viewMode: VIEW_MODE) => void; }) => { - const toggleButtons = useMemo( - () => [ - { - id: VIEW_MODE.DOCUMENT_LEVEL, - label: i18n.translate('discover.viewModes.document.label', { - defaultMessage: 'Documents', - }), - 'data-test-subj': 'dscViewModeDocumentButton', - }, - { - id: VIEW_MODE.AGGREGATED_LEVEL, - label: ( -
+ const { uiSettings } = useDiscoverServices(); + + const tabsCss = css` + padding: 0 ${useEuiPaddingSize('s')}; + background-color: ${euiThemeVars.euiPageBackgroundColor}; + `; + + const badgeCellCss = css` + margin-left: ${useEuiPaddingSize('s')}; + `; + + const showViewModeToggle = uiSettings.get(SHOW_FIELD_STATISTICS) ?? false; + + if (!showViewModeToggle) { + return null; + } + + return ( + + setDiscoverViewMode(VIEW_MODE.DOCUMENT_LEVEL)} + className="dscViewModeToggle__tab" + data-test-subj="dscViewModeDocumentButton" + > + + + setDiscoverViewMode(VIEW_MODE.AGGREGATED_LEVEL)} + className="dscViewModeToggle__tab" + data-test-subj="dscViewModeFieldStatsButton" + > + + + + -
- ), - }, - ], - [] - ); - - return ( - setDiscoverViewMode(id as VIEW_MODE)} - data-test-subj={'dscViewModeToggle'} - /> + + + + ); }; diff --git a/test/functional/apps/discover/group1/_discover.ts b/test/functional/apps/discover/group1/_discover.ts index 3b4e85089db4f..39793c9c047f0 100644 --- a/test/functional/apps/discover/group1/_discover.ts +++ b/test/functional/apps/discover/group1/_discover.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const queryBar = getService('queryBar'); const inspector = getService('inspector'); const elasticChart = getService('elasticChart'); + const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']); const defaultSettings = { @@ -342,5 +343,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.pauseAutoRefresh(); }); }); + + describe('resizable layout panels', () => { + it('should allow resizing the layout panels', async () => { + const resizeDistance = 100; + const topPanel = await testSubjects.find('dscResizablePanelTop'); + const mainPanel = await testSubjects.find('dscResizablePanelMain'); + const resizeButton = await testSubjects.find('dsc-resizable-button'); + const topPanelSize = (await topPanel.getPosition()).height; + const mainPanelSize = (await mainPanel.getPosition()).height; + await browser.dragAndDrop( + { location: resizeButton }, + { location: { x: 0, y: resizeDistance } } + ); + const newTopPanelSize = (await topPanel.getPosition()).height; + const newMainPanelSize = (await mainPanel.getPosition()).height; + expect(newTopPanelSize).to.be(topPanelSize + resizeDistance); + expect(newMainPanelSize).to.be(mainPanelSize - resizeDistance); + }); + }); }); } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index f32dfbd09ea20..0f812af03259c 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -2327,7 +2327,6 @@ "discover.viewModes.document.label": "Documents", "discover.viewModes.fieldStatistics.betaTitle": "Bêta", "discover.viewModes.fieldStatistics.label": "Statistiques de champ", - "discover.viewModes.legend": "Modes d'affichage", "embeddableApi.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} a été ajouté.", "embeddableApi.attributeService.saveToLibraryError": "Une erreur s'est produite lors de l'enregistrement. Erreur : {errorMessage}.", "embeddableApi.errors.embeddableFactoryNotFound": "Impossible de charger {type}. Veuillez effectuer une mise à niveau vers la distribution par défaut d'Elasticsearch et de Kibana avec la licence appropriée.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 20756d9a2d7a5..7d92a4939792d 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -2323,7 +2323,6 @@ "discover.viewModes.document.label": "ドキュメント", "discover.viewModes.fieldStatistics.betaTitle": "ベータ", "discover.viewModes.fieldStatistics.label": "フィールド統計情報", - "discover.viewModes.legend": "表示モード", "embeddableApi.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} が追加されました", "embeddableApi.attributeService.saveToLibraryError": "保存中にエラーが発生しました。エラー:{errorMessage}", "embeddableApi.errors.embeddableFactoryNotFound": "{type} を読み込めません。Elasticsearch と Kibana のデフォルトのディストリビューションを適切なライセンスでアップグレードしてください。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ccfa340822fc8..428871e6f8d07 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -2327,7 +2327,6 @@ "discover.viewModes.document.label": "文档", "discover.viewModes.fieldStatistics.betaTitle": "公测版", "discover.viewModes.fieldStatistics.label": "字段统计信息", - "discover.viewModes.legend": "视图模式", "embeddableApi.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} 已添加", "embeddableApi.attributeService.saveToLibraryError": "保存时出错。错误:{errorMessage}", "embeddableApi.errors.embeddableFactoryNotFound": "{type} 无法加载。请升级到具有适当许可的默认 Elasticsearch 和 Kibana 分发。", From cf4312658cf2306f30a89d8646fa3255404654f7 Mon Sep 17 00:00:00 2001 From: Or Ouziel Date: Mon, 19 Sep 2022 15:59:18 +0300 Subject: [PATCH 61/79] [Cloud Posture] add KSPM docs link (#140917) --- .../public/components/cloud_posture_page.tsx | 26 ++++++++++++------- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx index b4529d6287f52..6e3c2cf3219d9 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import type { UseQueryResult } from '@tanstack/react-query'; -import { EuiEmptyPrompt } from '@elastic/eui'; +import { EuiEmptyPrompt, EuiLink } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { NoDataPage } from '@kbn/kibana-react-plugin/public'; import { css } from '@emotion/react'; @@ -58,8 +58,7 @@ const packageNotInstalledRenderer = (cisIntegrationLink?: string) => ( solution={i18n.translate('xpack.csp.cloudPosturePage.packageNotInstalled.solutionNameLabel', { defaultMessage: 'Cloud Security Posture', })} - // TODO: Add real docs link once we have it - docsLink={'https://www.elastic.co/guide/index.html'} + docsLink={'https://ela.st/kspm'} logo={'logoSecurity'} actions={{ elasticAgent: { @@ -68,12 +67,21 @@ const packageNotInstalledRenderer = (cisIntegrationLink?: string) => ( title: i18n.translate('xpack.csp.cloudPosturePage.packageNotInstalled.buttonLabel', { defaultMessage: 'Add a CIS integration', }), - description: i18n.translate( - 'xpack.csp.cloudPosturePage.packageNotInstalled.description', - { - defaultMessage: - 'Use our CIS Kubernetes Benchmark integration to measure your Kubernetes cluster setup against the CIS recommendations.', - } + description: ( + + + + ), + }} + /> ), }, }} diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 0f812af03259c..b3566ab3dc482 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -9568,7 +9568,6 @@ "xpack.csp.cloudPosturePage.errorRenderer.errorTitle": "Nous n'avons pas pu récupérer vos données sur le niveau de sécurité du cloud.", "xpack.csp.cloudPosturePage.loadingDescription": "Chargement...", "xpack.csp.cloudPosturePage.packageNotInstalled.buttonLabel": "Ajouter une intégration CIS", - "xpack.csp.cloudPosturePage.packageNotInstalled.description": "Utilisez notre intégration CIS Kubernetes Benchmark pour mesurer votre configuration de cluster Kubernetes par rapport aux recommandations du CIS.", "xpack.csp.cloudPosturePage.packageNotInstalled.pageTitle": "Installer l'intégration pour commencer", "xpack.csp.cloudPosturePage.packageNotInstalled.solutionNameLabel": "Niveau de sécurité du cloud", "xpack.csp.cspEvaluationBadge.failLabel": "Échec", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 7d92a4939792d..e87ef2375d3c7 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -9555,7 +9555,6 @@ "xpack.csp.cloudPosturePage.errorRenderer.errorTitle": "クラウドセキュリティ態勢データを取得できませんでした", "xpack.csp.cloudPosturePage.loadingDescription": "読み込み中...", "xpack.csp.cloudPosturePage.packageNotInstalled.buttonLabel": "CIS統合を追加", - "xpack.csp.cloudPosturePage.packageNotInstalled.description": "CIS Kubernetes Benchmark統合は、CISの推奨事項に照らしてKubernetesクラスター設定を測定します。", "xpack.csp.cloudPosturePage.packageNotInstalled.pageTitle": "開始するには統合をインストールしてください", "xpack.csp.cloudPosturePage.packageNotInstalled.solutionNameLabel": "クラウドセキュリティ態勢", "xpack.csp.cspEvaluationBadge.failLabel": "失敗", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 428871e6f8d07..d75a87e2c9d55 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -9570,7 +9570,6 @@ "xpack.csp.cloudPosturePage.errorRenderer.errorTitle": "我们无法提取您的云安全态势数据", "xpack.csp.cloudPosturePage.loadingDescription": "正在加载……", "xpack.csp.cloudPosturePage.packageNotInstalled.buttonLabel": "添加 CIS 集成", - "xpack.csp.cloudPosturePage.packageNotInstalled.description": "使用我们的 CIS Kubernetes 基准集成根据 CIS 建议衡量 Kubernetes 集群设置。", "xpack.csp.cloudPosturePage.packageNotInstalled.pageTitle": "安装集成以开始", "xpack.csp.cloudPosturePage.packageNotInstalled.solutionNameLabel": "云安全态势", "xpack.csp.cspEvaluationBadge.failLabel": "失败", From 9673ead47bca6b39aca2b763214a072ed4eb707c Mon Sep 17 00:00:00 2001 From: Katerina Patticha Date: Mon, 19 Sep 2022 15:10:22 +0200 Subject: [PATCH 62/79] [APM] Display kubernetes metadata in service icons popup and node instance accordion (#139612) * Extend endpoints to include containers metadata info * Display kubernetes metadata in icons popover * Display kubernetes metadata in node instance accordion * Fix translations * Fix types * Fix unit tests * Fix import order * Update storybooks * Hide labels if fields are empty * Display OS field and remove labels * CSS tweaks for aligning fields * Clean up types * Add API test for kubernetes metadata * Reword showFilterByOption to isFilterable * Use top_metrics aggs for kubernetes and container metadata * Rename getMetricIndices to getInfraMetricIndices * Fix lint errors * Fetching metadata of specific container * Clean up code * Service metrics on inventory page * specify size * Clarify the type of metric Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../elasticsearch_fieldnames.test.ts.snap | 76 +- .../apm/common/elasticsearch_fieldnames.ts | 14 +- .../intance_details.tsx | 65 +- .../shared/key_value_filter_list/index.tsx | 63 +- .../key_value_filter_list.test.tsx | 36 +- .../service_icons/container_details.tsx | 100 +- .../components/shared/service_icons/index.tsx | 7 +- .../service_icons/service_icons.stories.tsx | 9 +- .../aggregate_latency_metrics/index.ts | 4 +- .../collect_data_telemetry/tasks.ts | 8 +- ...indices.ts => get_infra_metric_indices.ts} | 6 +- .../routes/infrastructure/get_host_names.ts | 4 +- .../infrastructure/get_infrastructure_data.ts | 4 +- ...get_service_instance_container_metadata.ts | 100 + .../services/get_service_metadata_details.ts | 25 +- .../services/get_service_metadata_icons.ts | 4 +- ...get_service_overview_container_metadata.ts | 131 + .../apm/server/routes/services/route.ts | 78 +- .../es_schemas/raw/fields/container.ts | 3 +- .../es_schemas/raw/fields/kubernetes.ts | 13 +- .../translations/translations/fr-FR.json | 5 - .../translations/translations/ja-JP.json | 5 - .../translations/translations/zh-CN.json | 5 - .../fixtures/es_archiver/archives_metadata.ts | 4 + .../infra_metrics_and_apm/data.json.gz | Bin 0 -> 10361492 bytes .../infra_metrics_and_apm/mappings.json | 17633 ++++++++++++++++ .../apm_api_integration/common/registry.ts | 1 + .../service_details/service_details.spec.ts | 5 - .../service_infra_metrics.spec.ts | 170 + 29 files changed, 18437 insertions(+), 141 deletions(-) rename x-pack/plugins/apm/server/lib/helpers/{get_metric_indices.ts => get_infra_metric_indices.ts} (79%) create mode 100644 x-pack/plugins/apm/server/routes/services/get_service_instance_container_metadata.ts create mode 100644 x-pack/plugins/apm/server/routes/services/get_service_overview_container_metadata.ts create mode 100644 x-pack/test/apm_api_integration/common/fixtures/es_archiver/infra_metrics_and_apm/data.json.gz create mode 100644 x-pack/test/apm_api_integration/common/fixtures/es_archiver/infra_metrics_and_apm/mappings.json create mode 100644 x-pack/test/apm_api_integration/tests/services/service_details/service_infra_metrics.spec.ts diff --git a/x-pack/plugins/apm/common/__snapshots__/elasticsearch_fieldnames.test.ts.snap b/x-pack/plugins/apm/common/__snapshots__/elasticsearch_fieldnames.test.ts.snap index fddee59d9c6c1..3ac48a1e367ce 100644 --- a/x-pack/plugins/apm/common/__snapshots__/elasticsearch_fieldnames.test.ts.snap +++ b/x-pack/plugins/apm/common/__snapshots__/elasticsearch_fieldnames.test.ts.snap @@ -37,8 +37,12 @@ exports[`Error CLOUD_REGION 1`] = `"europe-west1"`; exports[`Error CLOUD_SERVICE_NAME 1`] = `undefined`; +exports[`Error CONTAINER 1`] = `undefined`; + exports[`Error CONTAINER_ID 1`] = `undefined`; +exports[`Error CONTAINER_IMAGE 1`] = `undefined`; + exports[`Error DESTINATION_ADDRESS 1`] = `undefined`; exports[`Error ERROR_CULPRIT 1`] = `"handleOopsie"`; @@ -93,6 +97,24 @@ exports[`Error INDEX 1`] = `undefined`; exports[`Error KUBERNETES 1`] = `undefined`; +exports[`Error KUBERNETES_CONTAINER_NAME 1`] = `undefined`; + +exports[`Error KUBERNETES_DEPLOYMENT 1`] = `undefined`; + +exports[`Error KUBERNETES_DEPLOYMENT_NAME 1`] = `undefined`; + +exports[`Error KUBERNETES_NAMESPACE 1`] = `undefined`; + +exports[`Error KUBERNETES_NAMESPACE_NAME 1`] = `undefined`; + +exports[`Error KUBERNETES_POD_NAME 1`] = `undefined`; + +exports[`Error KUBERNETES_POD_UID 1`] = `undefined`; + +exports[`Error KUBERNETES_REPLICASET 1`] = `undefined`; + +exports[`Error KUBERNETES_REPLICASET_NAME 1`] = `undefined`; + exports[`Error LABEL_NAME 1`] = `undefined`; exports[`Error METRIC_CGROUP_MEMORY_LIMIT_BYTES 1`] = `undefined`; @@ -133,8 +155,6 @@ exports[`Error OBSERVER_LISTENING 1`] = `undefined`; exports[`Error PARENT_ID 1`] = `"parentId"`; -exports[`Error POD_NAME 1`] = `undefined`; - exports[`Error PROCESSOR_EVENT 1`] = `"error"`; exports[`Error SERVICE 1`] = ` @@ -266,8 +286,12 @@ exports[`Span CLOUD_REGION 1`] = `"europe-west1"`; exports[`Span CLOUD_SERVICE_NAME 1`] = `undefined`; +exports[`Span CONTAINER 1`] = `undefined`; + exports[`Span CONTAINER_ID 1`] = `undefined`; +exports[`Span CONTAINER_IMAGE 1`] = `undefined`; + exports[`Span DESTINATION_ADDRESS 1`] = `undefined`; exports[`Span ERROR_CULPRIT 1`] = `undefined`; @@ -318,6 +342,24 @@ exports[`Span INDEX 1`] = `undefined`; exports[`Span KUBERNETES 1`] = `undefined`; +exports[`Span KUBERNETES_CONTAINER_NAME 1`] = `undefined`; + +exports[`Span KUBERNETES_DEPLOYMENT 1`] = `undefined`; + +exports[`Span KUBERNETES_DEPLOYMENT_NAME 1`] = `undefined`; + +exports[`Span KUBERNETES_NAMESPACE 1`] = `undefined`; + +exports[`Span KUBERNETES_NAMESPACE_NAME 1`] = `undefined`; + +exports[`Span KUBERNETES_POD_NAME 1`] = `undefined`; + +exports[`Span KUBERNETES_POD_UID 1`] = `undefined`; + +exports[`Span KUBERNETES_REPLICASET 1`] = `undefined`; + +exports[`Span KUBERNETES_REPLICASET_NAME 1`] = `undefined`; + exports[`Span LABEL_NAME 1`] = `undefined`; exports[`Span METRIC_CGROUP_MEMORY_LIMIT_BYTES 1`] = `undefined`; @@ -358,8 +400,6 @@ exports[`Span OBSERVER_LISTENING 1`] = `undefined`; exports[`Span PARENT_ID 1`] = `"parentId"`; -exports[`Span POD_NAME 1`] = `undefined`; - exports[`Span PROCESSOR_EVENT 1`] = `"span"`; exports[`Span SERVICE 1`] = ` @@ -487,8 +527,16 @@ exports[`Transaction CLOUD_REGION 1`] = `"europe-west1"`; exports[`Transaction CLOUD_SERVICE_NAME 1`] = `undefined`; +exports[`Transaction CONTAINER 1`] = ` +Object { + "id": "container1234567890abcdef", +} +`; + exports[`Transaction CONTAINER_ID 1`] = `"container1234567890abcdef"`; +exports[`Transaction CONTAINER_IMAGE 1`] = `undefined`; + exports[`Transaction DESTINATION_ADDRESS 1`] = `undefined`; exports[`Transaction ERROR_CULPRIT 1`] = `undefined`; @@ -549,6 +597,24 @@ Object { } `; +exports[`Transaction KUBERNETES_CONTAINER_NAME 1`] = `undefined`; + +exports[`Transaction KUBERNETES_DEPLOYMENT 1`] = `undefined`; + +exports[`Transaction KUBERNETES_DEPLOYMENT_NAME 1`] = `undefined`; + +exports[`Transaction KUBERNETES_NAMESPACE 1`] = `undefined`; + +exports[`Transaction KUBERNETES_NAMESPACE_NAME 1`] = `undefined`; + +exports[`Transaction KUBERNETES_POD_NAME 1`] = `undefined`; + +exports[`Transaction KUBERNETES_POD_UID 1`] = `"pod1234567890abcdef"`; + +exports[`Transaction KUBERNETES_REPLICASET 1`] = `undefined`; + +exports[`Transaction KUBERNETES_REPLICASET_NAME 1`] = `undefined`; + exports[`Transaction LABEL_NAME 1`] = `undefined`; exports[`Transaction METRIC_CGROUP_MEMORY_LIMIT_BYTES 1`] = `undefined`; @@ -589,8 +655,6 @@ exports[`Transaction OBSERVER_LISTENING 1`] = `undefined`; exports[`Transaction PARENT_ID 1`] = `"parentId"`; -exports[`Transaction POD_NAME 1`] = `undefined`; - exports[`Transaction PROCESSOR_EVENT 1`] = `"transaction"`; exports[`Transaction SERVICE 1`] = ` diff --git a/x-pack/plugins/apm/common/elasticsearch_fieldnames.ts b/x-pack/plugins/apm/common/elasticsearch_fieldnames.ts index 1e227713f0dba..575588018b369 100644 --- a/x-pack/plugins/apm/common/elasticsearch_fieldnames.ts +++ b/x-pack/plugins/apm/common/elasticsearch_fieldnames.ts @@ -121,8 +121,20 @@ export const HOST_HOSTNAME = 'host.hostname'; // Do not use. Please use `HOST_NA export const HOST_NAME = 'host.name'; export const HOST_OS_PLATFORM = 'host.os.platform'; export const CONTAINER_ID = 'container.id'; +export const CONTAINER = 'container'; +export const CONTAINER_IMAGE = 'container.image.name'; + +// Kubernetes export const KUBERNETES = 'kubernetes'; -export const POD_NAME = 'kubernetes.pod.name'; +export const KUBERNETES_CONTAINER_NAME = 'kubernetes.container.name'; +export const KUBERNETES_DEPLOYMENT = 'kubernetes.deployment'; +export const KUBERNETES_DEPLOYMENT_NAME = 'kubernetes.deployment.name'; +export const KUBERNETES_NAMESPACE_NAME = 'kubernetes.namespace.name'; +export const KUBERNETES_NAMESPACE = 'kubernetes.namespace'; +export const KUBERNETES_POD_NAME = 'kubernetes.pod.name'; +export const KUBERNETES_POD_UID = 'kubernetes.pod.uid'; +export const KUBERNETES_REPLICASET = 'kubernetes.replicaset'; +export const KUBERNETES_REPLICASET_NAME = 'kubernetes.replicaset.name'; export const CLIENT_GEO_COUNTRY_ISO_CODE = 'client.geo.country_iso_code'; diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx index b61a2cd53cccb..c759f356753a0 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx @@ -18,12 +18,18 @@ import { CLOUD_PROVIDER, CONTAINER_ID, HOST_NAME, - POD_NAME, SERVICE_NODE_NAME, SERVICE_RUNTIME_NAME, SERVICE_RUNTIME_VERSION, SERVICE_VERSION, + KUBERNETES_CONTAINER_NAME, + KUBERNETES_NAMESPACE, + KUBERNETES_POD_NAME, + KUBERNETES_POD_UID, + KUBERNETES_REPLICASET_NAME, + KUBERNETES_DEPLOYMENT_NAME, } from '../../../../../common/elasticsearch_fieldnames'; + import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { useTheme } from '../../../../hooks/use_theme'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; @@ -42,8 +48,20 @@ interface Props { kuery: string; } -function toKeyValuePairs(keys: string[], data: ServiceInstanceDetails) { - return keys.map((key) => ({ key, value: get(data, key) })); +function toKeyValuePairs({ + keys, + data, + isFilterable = true, +}: { + keys: string[]; + data: ServiceInstanceDetails; + isFilterable?: boolean; +}) { + return keys.map((key) => ({ + key, + value: get(data, key), + isFilterable, + })); } const serviceDetailsKeys = [ @@ -52,7 +70,18 @@ const serviceDetailsKeys = [ SERVICE_RUNTIME_NAME, SERVICE_RUNTIME_VERSION, ]; -const containerDetailsKeys = [CONTAINER_ID, HOST_NAME, POD_NAME]; +const containerDetailsKeys = [ + CONTAINER_ID, + HOST_NAME, + KUBERNETES_POD_UID, + KUBERNETES_POD_NAME, +]; +const metricsKubernetesDetailsKeys = [ + KUBERNETES_CONTAINER_NAME, + KUBERNETES_NAMESPACE, + KUBERNETES_REPLICASET_NAME, + KUBERNETES_DEPLOYMENT_NAME, +]; const cloudDetailsKeys = [ CLOUD_AVAILABILITY_ZONE, CLOUD_INSTANCE_ID, @@ -93,12 +122,23 @@ export function InstanceDetails({ pushNewItemToKueryBar({ kuery, history, key, value }); }; - const serviceDetailsKeyValuePairs = toKeyValuePairs(serviceDetailsKeys, data); - const containerDetailsKeyValuePairs = toKeyValuePairs( - containerDetailsKeys, - data - ); - const cloudDetailsKeyValuePairs = toKeyValuePairs(cloudDetailsKeys, data); + const serviceDetailsKeyValuePairs = toKeyValuePairs({ + keys: serviceDetailsKeys, + data, + }); + const containerDetailsKeyValuePairs = toKeyValuePairs({ + keys: containerDetailsKeys, + data, + }); + const metricsKubernetesKeyValuePairs = toKeyValuePairs({ + keys: metricsKubernetesDetailsKeys, + data, + isFilterable: false, + }); + const cloudDetailsKeyValuePairs = toKeyValuePairs({ + keys: cloudDetailsKeys, + data, + }); const containerType = data.kubernetes?.pod?.name ? 'Kubernetes' : 'Docker'; return ( @@ -122,7 +162,10 @@ export function InstanceDetails({ { defaultMessage: 'Container' } )} icon={getContainerIcon(containerType)} - keyValueList={containerDetailsKeyValuePairs} + keyValueList={[ + ...containerDetailsKeyValuePairs, + ...metricsKubernetesKeyValuePairs, + ]} onClickFilter={addKueryBarFilter} /> diff --git a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx index c1fb78546605f..20ab03e42025b 100644 --- a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx @@ -19,10 +19,12 @@ import { import { i18n } from '@kbn/i18n'; import React, { Fragment } from 'react'; import styled from 'styled-components'; +import { isEmpty } from 'lodash'; interface KeyValue { key: string; value: any | undefined; + isFilterable: boolean; } const StyledEuiAccordion = styled(EuiAccordion)` @@ -43,13 +45,8 @@ const StyledEuiDescriptionList = styled(EuiDescriptionList)` display: flex; `; -const ValueContainer = styled.div` - display: flex; - align-items: center; -`; - function removeEmptyValues(items: KeyValue[]) { - return items.filter(({ value }) => value !== undefined); + return items.filter(({ value }) => !isEmpty(value)); } export function KeyValueFilterList({ @@ -78,12 +75,12 @@ export function KeyValueFilterList({ buttonClassName="buttonContentContainer" > - {nonEmptyKeyValueList.map(({ key, value }) => { + {nonEmptyKeyValueList.map(({ key, value, isFilterable }) => { return ( {key} @@ -91,27 +88,37 @@ export function KeyValueFilterList({ - - { - onClickFilter({ key, value }); - }} - data-test-subj={`filter_by_${key}`} - > - - - - - {value} - + + + {isFilterable && ( + { + onClickFilter({ key, value }); + }} + data-test-subj={`filter_by_${key}`} + > + + + + + )} + + + {value} + + ); diff --git a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/key_value_filter_list.test.tsx b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/key_value_filter_list.test.tsx index 8270c8aa64d41..c06bc9d86afd0 100644 --- a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/key_value_filter_list.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/key_value_filter_list.test.tsx @@ -28,8 +28,8 @@ describe('KeyValueFilterList', () => { @@ -48,8 +48,8 @@ describe('KeyValueFilterList', () => { title="title" icon="alert" keyValueList={[ - { key: 'foo', value: 'foo value' }, - { key: 'bar', value: 'bar value' }, + { key: 'foo', value: 'foo value', isFilterable: true }, + { key: 'bar', value: 'bar value', isFilterable: true }, ]} onClickFilter={jest.fn} /> @@ -62,8 +62,8 @@ describe('KeyValueFilterList', () => { @@ -71,20 +71,38 @@ describe('KeyValueFilterList', () => { expect(component.queryAllByTestId('accordion_title_icon')).toEqual([]); expectTextsInDocument(component, ['title']); }); + + it('hides filter by value option', () => { + const component = renderWithTheme( + + ); + expect(component.queryAllByTestId('filter_by_foo')).toEqual([]); + expect(component.queryAllByTestId('filter_by_bar')).toHaveLength(1); + }); it('returns selected key value when the filter button is clicked', () => { const mockFilter = jest.fn(); const component = renderWithTheme( ); fireEvent.click(component.getByTestId('filter_by_foo')); - expect(mockFilter).toHaveBeenCalledWith({ key: 'foo', value: 'foo value' }); + expect(mockFilter).toHaveBeenCalledWith({ + key: 'foo', + value: 'foo value', + }); }); }); diff --git a/x-pack/plugins/apm/public/components/shared/service_icons/container_details.tsx b/x-pack/plugins/apm/public/components/shared/service_icons/container_details.tsx index aff1a6d9c053f..ea029a90018b1 100644 --- a/x-pack/plugins/apm/public/components/shared/service_icons/container_details.tsx +++ b/x-pack/plugins/apm/public/components/shared/service_icons/container_details.tsx @@ -5,7 +5,11 @@ * 2.0. */ -import { EuiDescriptionList, EuiDescriptionListProps } from '@elastic/eui'; +import { + EuiDescriptionList, + EuiDescriptionListProps, + EuiBadge, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { asInteger } from '../../../../common/utils/formatters'; @@ -16,18 +20,38 @@ type ServiceDetailsReturnType = interface Props { container: ServiceDetailsReturnType['container']; + kubernetes: ServiceDetailsReturnType['kubernetes']; } -export function ContainerDetails({ container }: Props) { +export function ContainerDetails({ container, kubernetes }: Props) { if (!container) { return null; } const listItems: EuiDescriptionListProps['listItems'] = []; + + if (kubernetes?.containerImages && kubernetes?.containerImages.length > 0) { + listItems.push({ + title: i18n.translate( + 'xpack.apm.serviceIcons.serviceDetails.container.image.name', + { defaultMessage: 'Container images' } + ), + description: ( +
    + {kubernetes.containerImages.map((deployment, index) => ( +
  • + {deployment} +
  • + ))} +
+ ), + }); + } + if (container.os) { listItems.push({ title: i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.osLabel', + 'xpack.apm.serviceIcons.serviceDetails.container.os.label', { defaultMessage: 'OS', } @@ -36,45 +60,67 @@ export function ContainerDetails({ container }: Props) { }); } - if (container.isContainerized !== undefined) { + if (kubernetes?.deployments && kubernetes?.deployments.length > 0) { listItems.push({ title: i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.containerizedLabel', - { defaultMessage: 'Containerized' } + 'xpack.apm.serviceIcons.serviceDetails.kubernetes.deployments', + { defaultMessage: 'Deployments' } + ), + description: ( +
    + {kubernetes.deployments.map((deployment, index) => ( +
  • + {deployment} +
  • + ))} +
), - description: container.isContainerized - ? i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.yesLabel', - { - defaultMessage: 'Yes', - } - ) - : i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.noLabel', - { - defaultMessage: 'No', - } - ), }); } - if (container.totalNumberInstances) { + if (kubernetes?.namespaces && kubernetes?.namespaces.length > 0) { listItems.push({ title: i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.totalNumberInstancesLabel', - { defaultMessage: 'Total number of instances' } + 'xpack.apm.serviceIcons.serviceDetails.kubernetes.namespaces', + { defaultMessage: 'Namespaces' } + ), + description: ( +
    + {kubernetes.namespaces.map((namespace, index) => ( +
  • + {namespace} +
  • + ))} +
+ ), + }); + } + + if (kubernetes?.replicasets && kubernetes?.replicasets.length > 0) { + listItems.push({ + title: i18n.translate( + 'xpack.apm.serviceIcons.serviceDetails.kubernetes.replicasets', + { defaultMessage: 'Replicasets' } + ), + description: ( +
    + {kubernetes.replicasets.map((replicaset, index) => ( +
  • + {replicaset} +
  • + ))} +
), - description: asInteger(container.totalNumberInstances), }); } - if (container.type) { + if (container.totalNumberInstances) { listItems.push({ title: i18n.translate( - 'xpack.apm.serviceIcons.serviceDetails.container.orchestrationLabel', - { defaultMessage: 'Orchestration' } + 'xpack.apm.serviceIcons.serviceDetails.container.totalNumberInstancesLabel', + { defaultMessage: 'Total number of instances' } ), - description: container.type, + description: asInteger(container.totalNumberInstances), }); } diff --git a/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx b/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx index 2fd578f10b110..54040f9a57d5e 100644 --- a/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/service_icons/index.tsx @@ -129,7 +129,12 @@ export function ServiceIcons({ start, end, serviceName }: Props) { title: i18n.translate('xpack.apm.serviceIcons.container', { defaultMessage: 'Container', }), - component: , + component: ( + + ), }, { key: 'serverless', diff --git a/x-pack/plugins/apm/public/components/shared/service_icons/service_icons.stories.tsx b/x-pack/plugins/apm/public/components/shared/service_icons/service_icons.stories.tsx index 60757bc0b99be..d5ea675338856 100644 --- a/x-pack/plugins/apm/public/components/shared/service_icons/service_icons.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/service_icons/service_icons.stories.tsx @@ -115,10 +115,13 @@ Example.args = { }, }, container: { - os: 'Linux', - type: 'Kubernetes', - isContainerized: true, totalNumberInstances: 1, + image: 'container image name', + }, + kubernetes: { + deployments: ['opbeans-java', 'opbeans-go-nsn'], + replicasets: ['opbeans-go-6dff977956', 'opbeans-go-nsn-864bdcbc5b'], + namespaces: ['default'], }, cloud: { provider: 'gcp', diff --git a/x-pack/plugins/apm/scripts/aggregate_latency_metrics/index.ts b/x-pack/plugins/apm/scripts/aggregate_latency_metrics/index.ts index a48da0f4577cc..8576034d167ad 100644 --- a/x-pack/plugins/apm/scripts/aggregate_latency_metrics/index.ts +++ b/x-pack/plugins/apm/scripts/aggregate_latency_metrics/index.ts @@ -18,7 +18,7 @@ import { TRANSACTION_TYPE, AGENT_NAME, SERVICE_ENVIRONMENT, - POD_NAME, + KUBERNETES_POD_NAME, CONTAINER_ID, SERVICE_VERSION, TRANSACTION_RESULT, @@ -91,7 +91,7 @@ export async function aggregateLatencyMetrics() { SERVICE_ENVIRONMENT, AGENT_NAME, HOST_NAME, - POD_NAME, + KUBERNETES_POD_NAME, CONTAINER_ID, TRANSACTION_NAME, TRANSACTION_RESULT, diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts index f315c0a1ce521..167fb0d57208f 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts @@ -30,7 +30,7 @@ import { HOST_OS_PLATFORM, OBSERVER_HOSTNAME, PARENT_ID, - POD_NAME, + KUBERNETES_POD_NAME, PROCESSOR_EVENT, SERVICE_ENVIRONMENT, SERVICE_FRAMEWORK_NAME, @@ -180,7 +180,7 @@ export const tasks: TelemetryTask[] = [ SERVICE_VERSION, HOST_NAME, CONTAINER_ID, - POD_NAME, + KUBERNETES_POD_NAME, ].map((field) => ({ terms: { field, missing_bucket: true } })); const observerHostname = { @@ -1206,7 +1206,7 @@ export const tasks: TelemetryTask[] = [ field: SERVICE_RUNTIME_VERSION, }, { - field: POD_NAME, + field: KUBERNETES_POD_NAME, }, { field: CONTAINER_ID, @@ -1314,7 +1314,7 @@ export const tasks: TelemetryTask[] = [ kubernetes: { pod: { name: serviceBucket.top_metrics?.top[0].metrics[ - POD_NAME + KUBERNETES_POD_NAME ] as string, }, }, diff --git a/x-pack/plugins/apm/server/lib/helpers/get_metric_indices.ts b/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts similarity index 79% rename from x-pack/plugins/apm/server/lib/helpers/get_metric_indices.ts rename to x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts index 61d12ba730942..aa978b1643a86 100644 --- a/x-pack/plugins/apm/server/lib/helpers/get_metric_indices.ts +++ b/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts @@ -8,7 +8,7 @@ import { SavedObjectsClientContract } from '@kbn/core/server'; import { APMRouteHandlerResources } from '../../routes/typings'; -export async function getMetricIndices({ +export async function getInfraMetricIndices({ infraPlugin, savedObjectsClient, }: { @@ -16,7 +16,7 @@ export async function getMetricIndices({ savedObjectsClient: SavedObjectsClientContract; }): Promise { const infra = await infraPlugin.start(); - const metricIndices = await infra.getMetricIndices(savedObjectsClient); + const infraMetricIndices = await infra.getMetricIndices(savedObjectsClient); - return metricIndices; + return infraMetricIndices; } diff --git a/x-pack/plugins/apm/server/routes/infrastructure/get_host_names.ts b/x-pack/plugins/apm/server/routes/infrastructure/get_host_names.ts index 6659525237932..4890f8ab909eb 100644 --- a/x-pack/plugins/apm/server/routes/infrastructure/get_host_names.ts +++ b/x-pack/plugins/apm/server/routes/infrastructure/get_host_names.ts @@ -14,7 +14,7 @@ import { HOST_NAME, } from '../../../common/elasticsearch_fieldnames'; import { ApmPluginRequestHandlerContext } from '../typings'; -import { getMetricIndices } from '../../lib/helpers/get_metric_indices'; +import { getInfraMetricIndices } from '../../lib/helpers/get_infra_metric_indices'; interface Aggs extends estypes.AggregationsMultiBucketAggregateBase { buckets: Array<{ @@ -92,7 +92,7 @@ export const getContainerHostNames = async ({ if (containerIds.length) { const esClient = (await context.core).elasticsearch.client.asCurrentUser; const savedObjectsClient = (await context.core).savedObjects.client; - const metricIndices = await getMetricIndices({ + const metricIndices = await getInfraMetricIndices({ infraPlugin: infra, savedObjectsClient, }); diff --git a/x-pack/plugins/apm/server/routes/infrastructure/get_infrastructure_data.ts b/x-pack/plugins/apm/server/routes/infrastructure/get_infrastructure_data.ts index b1bf617ac7220..027631e15466d 100644 --- a/x-pack/plugins/apm/server/routes/infrastructure/get_infrastructure_data.ts +++ b/x-pack/plugins/apm/server/routes/infrastructure/get_infrastructure_data.ts @@ -13,7 +13,7 @@ import { SERVICE_NAME, CONTAINER_ID, HOST_HOSTNAME, - POD_NAME, + KUBERNETES_POD_NAME, } from '../../../common/elasticsearch_fieldnames'; export const getInfrastructureData = async ({ @@ -64,7 +64,7 @@ export const getInfrastructureData = async ({ }, podNames: { terms: { - field: POD_NAME, + field: KUBERNETES_POD_NAME, size: 500, }, }, diff --git a/x-pack/plugins/apm/server/routes/services/get_service_instance_container_metadata.ts b/x-pack/plugins/apm/server/routes/services/get_service_instance_container_metadata.ts new file mode 100644 index 0000000000000..729c2f1f1b1eb --- /dev/null +++ b/x-pack/plugins/apm/server/routes/services/get_service_instance_container_metadata.ts @@ -0,0 +1,100 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core/server'; +import { rangeQuery } from '@kbn/observability-plugin/server'; +import { + CONTAINER, + CONTAINER_ID, + CONTAINER_IMAGE, + KUBERNETES, + KUBERNETES_CONTAINER_NAME, + KUBERNETES_NAMESPACE, + KUBERNETES_POD_NAME, + KUBERNETES_POD_UID, + KUBERNETES_REPLICASET_NAME, + KUBERNETES_DEPLOYMENT_NAME, +} from '../../../common/elasticsearch_fieldnames'; +import { Kubernetes } from '../../../typings/es_schemas/raw/fields/kubernetes'; +import { maybe } from '../../../common/utils/maybe'; + +type ServiceInstanceContainerMetadataDetails = + | { + kubernetes: Kubernetes; + } + | undefined; + +export const getServiceInstanceContainerMetadata = async ({ + esClient, + indexName, + containerId, + start, + end, +}: { + esClient: ElasticsearchClient; + indexName?: string; + containerId: string; + start: number; + end: number; +}): Promise => { + if (!indexName) { + return undefined; + } + + const should = [ + { exists: { field: KUBERNETES } }, + { exists: { field: CONTAINER_IMAGE } }, + { exists: { field: KUBERNETES_CONTAINER_NAME } }, + { exists: { field: KUBERNETES_NAMESPACE } }, + { exists: { field: KUBERNETES_POD_NAME } }, + { exists: { field: KUBERNETES_POD_UID } }, + { exists: { field: KUBERNETES_REPLICASET_NAME } }, + { exists: { field: KUBERNETES_DEPLOYMENT_NAME } }, + ]; + + const response = await esClient.search({ + index: [indexName], + _source: [KUBERNETES, CONTAINER], + size: 1, + query: { + bool: { + filter: [ + { + term: { + [CONTAINER_ID]: containerId, + }, + }, + ...rangeQuery(start, end), + ], + should, + }, + }, + }); + + const sample = maybe(response.hits.hits[0]) + ?._source as ServiceInstanceContainerMetadataDetails; + + return { + kubernetes: { + pod: { + name: sample?.kubernetes?.pod?.name, + uid: sample?.kubernetes?.pod?.uid, + }, + deployment: { + name: sample?.kubernetes?.deployment?.name, + }, + replicaset: { + name: sample?.kubernetes?.replicaset?.name, + }, + namespace: sample?.kubernetes?.namespace, + container: { + name: sample?.kubernetes?.container?.name, + id: sample?.kubernetes?.container?.id, + }, + }, + }; +}; diff --git a/x-pack/plugins/apm/server/routes/services/get_service_metadata_details.ts b/x-pack/plugins/apm/server/routes/services/get_service_metadata_details.ts index 588709e46e210..5616c7b5be792 100644 --- a/x-pack/plugins/apm/server/routes/services/get_service_metadata_details.ts +++ b/x-pack/plugins/apm/server/routes/services/get_service_metadata_details.ts @@ -9,6 +9,7 @@ import { rangeQuery } from '@kbn/observability-plugin/server'; import { ProcessorEvent } from '@kbn/observability-plugin/common'; import { AGENT, + CONTAINER, CLOUD, CLOUD_AVAILABILITY_ZONE, CLOUD_REGION, @@ -49,10 +50,10 @@ export interface ServiceMetadataDetails { }; }; container?: { + ids?: string[]; + image?: string; os?: string; - isContainerized?: boolean; totalNumberInstances?: number; - type?: ContainerType; }; serverless?: { type?: string; @@ -67,6 +68,12 @@ export interface ServiceMetadataDetails { projectName?: string; serviceName?: string; }; + kubernetes?: { + deployments?: string[]; + namespaces?: string[]; + replicasets?: string[]; + containerImages?: string[]; + }; } export async function getServiceMetadataDetails({ @@ -99,7 +106,7 @@ export async function getServiceMetadataDetails({ }, body: { size: 1, - _source: [SERVICE, AGENT, HOST, CONTAINER_ID, KUBERNETES, CLOUD], + _source: [SERVICE, AGENT, HOST, CONTAINER, KUBERNETES, CLOUD], query: { bool: { filter, should } }, aggs: { serviceVersions: { @@ -115,6 +122,12 @@ export async function getServiceMetadataDetails({ size: 10, }, }, + containerIds: { + terms: { + field: CONTAINER_ID, + size: 10, + }, + }, regions: { terms: { field: CLOUD_REGION, @@ -181,10 +194,12 @@ export async function getServiceMetadataDetails({ const containerDetails = host || container || totalNumberInstances || kubernetes ? { - os: host?.os?.platform, type: (!!kubernetes ? 'Kubernetes' : 'Docker') as ContainerType, - isContainerized: !!container?.id, + os: host?.os?.platform, totalNumberInstances, + ids: response.aggregations?.containerIds.buckets.map( + (bucket) => bucket.key as string + ), } : undefined; diff --git a/x-pack/plugins/apm/server/routes/services/get_service_metadata_icons.ts b/x-pack/plugins/apm/server/routes/services/get_service_metadata_icons.ts index a099b9821f961..68c4fa0b46127 100644 --- a/x-pack/plugins/apm/server/routes/services/get_service_metadata_icons.ts +++ b/x-pack/plugins/apm/server/routes/services/get_service_metadata_icons.ts @@ -14,7 +14,7 @@ import { CONTAINER_ID, KUBERNETES, SERVICE_NAME, - POD_NAME, + KUBERNETES_POD_NAME, HOST_OS_PLATFORM, } from '../../../common/elasticsearch_fieldnames'; import { ContainerType } from '../../../common/service_metadata'; @@ -36,7 +36,7 @@ export interface ServiceMetadataIcons { export const should = [ { exists: { field: CONTAINER_ID } }, - { exists: { field: POD_NAME } }, + { exists: { field: KUBERNETES_POD_NAME } }, { exists: { field: CLOUD_PROVIDER } }, { exists: { field: HOST_OS_PLATFORM } }, { exists: { field: AGENT_NAME } }, diff --git a/x-pack/plugins/apm/server/routes/services/get_service_overview_container_metadata.ts b/x-pack/plugins/apm/server/routes/services/get_service_overview_container_metadata.ts new file mode 100644 index 0000000000000..5b267e4faa3fc --- /dev/null +++ b/x-pack/plugins/apm/server/routes/services/get_service_overview_container_metadata.ts @@ -0,0 +1,131 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core/server'; +import { rangeQuery } from '@kbn/observability-plugin/server'; +import { + CONTAINER, + CONTAINER_ID, + CONTAINER_IMAGE, + KUBERNETES, + KUBERNETES_CONTAINER_NAME, + KUBERNETES_NAMESPACE, + KUBERNETES_POD_NAME, + KUBERNETES_POD_UID, + KUBERNETES_REPLICASET_NAME, + KUBERNETES_DEPLOYMENT_NAME, +} from '../../../common/elasticsearch_fieldnames'; + +type ServiceOverviewContainerMetadataDetails = + | { + kubernetes: { + deployments?: string[]; + replicasets?: string[]; + namespaces?: string[]; + containerImages?: string[]; + }; + } + | undefined; + +interface ResponseAggregations { + [key: string]: { + buckets: Array<{ + key: string; + }>; + }; +} + +export const getServiceOverviewContainerMetadata = async ({ + esClient, + indexName, + containerIds, + start, + end, +}: { + esClient: ElasticsearchClient; + indexName?: string; + containerIds: string[]; + start: number; + end: number; +}): Promise => { + if (!indexName) { + return undefined; + } + + const should = [ + { exists: { field: KUBERNETES } }, + { exists: { field: CONTAINER_IMAGE } }, + { exists: { field: KUBERNETES_CONTAINER_NAME } }, + { exists: { field: KUBERNETES_NAMESPACE } }, + { exists: { field: KUBERNETES_POD_NAME } }, + { exists: { field: KUBERNETES_POD_UID } }, + { exists: { field: KUBERNETES_REPLICASET_NAME } }, + { exists: { field: KUBERNETES_DEPLOYMENT_NAME } }, + ]; + + const response = await esClient.search({ + index: [indexName], + _source: [KUBERNETES, CONTAINER], + size: 0, + query: { + bool: { + filter: [ + { + terms: { + [CONTAINER_ID]: containerIds, + }, + }, + ...rangeQuery(start, end), + ], + should, + }, + }, + aggs: { + deployments: { + terms: { + field: KUBERNETES_DEPLOYMENT_NAME, + size: 10, + }, + }, + namespaces: { + terms: { + field: KUBERNETES_NAMESPACE, + size: 10, + }, + }, + replicasets: { + terms: { + field: KUBERNETES_REPLICASET_NAME, + size: 10, + }, + }, + containerImages: { + terms: { + field: CONTAINER_IMAGE, + size: 10, + }, + }, + }, + }); + + return { + kubernetes: { + deployments: response.aggregations?.deployments?.buckets.map( + (bucket) => bucket.key + ), + replicasets: response.aggregations?.replicasets?.buckets.map( + (bucket) => bucket.key + ), + namespaces: response.aggregations?.namespaces?.buckets.map( + (bucket) => bucket.key + ), + containerImages: response.aggregations?.containerImages?.buckets.map( + (bucket) => bucket.key + ), + }, + }; +}; diff --git a/x-pack/plugins/apm/server/routes/services/route.ts b/x-pack/plugins/apm/server/routes/services/route.ts index 26557e2adfb44..4b76e53877d38 100644 --- a/x-pack/plugins/apm/server/routes/services/route.ts +++ b/x-pack/plugins/apm/server/routes/services/route.ts @@ -8,7 +8,7 @@ import Boom from '@hapi/boom'; import { isoToEpochRt, jsonRt, toNumberRt } from '@kbn/io-ts-utils'; import * as t from 'io-ts'; -import { uniq } from 'lodash'; +import { uniq, mergeWith } from 'lodash'; import { UnknownMLCapabilitiesError, InsufficientMLCapabilities, @@ -40,6 +40,8 @@ import { probabilityRt, } from '../default_api_types'; import { offsetPreviousPeriodCoordinates } from '../../../common/utils/offset_previous_period_coordinate'; +import { getServiceOverviewContainerMetadata } from './get_service_overview_container_metadata'; +import { getServiceInstanceContainerMetadata } from './get_service_instance_container_metadata'; import { getServicesDetailedStatistics } from './get_services_detailed_statistics'; import { getServiceDependenciesBreakdown } from './get_service_dependencies_breakdown'; import { getAnomalyTimeseries } from '../../lib/anomaly_detection/get_anomaly_timeseries'; @@ -51,7 +53,7 @@ import { ServiceHealthStatus } from '../../../common/service_health_status'; import { getServiceGroup } from '../service_groups/get_service_group'; import { offsetRt } from '../../../common/comparison_rt'; import { getRandomSampler } from '../../lib/helpers/get_random_sampler'; - +import { getInfraMetricIndices } from '../../lib/helpers/get_infra_metric_indices'; const servicesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services', params: t.type({ @@ -249,7 +251,7 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ import('./get_service_metadata_details').ServiceMetadataDetails > => { const setup = await setupRequest(resources); - const { params } = resources; + const { params, context, plugins } = resources; const { serviceName } = params.path; const { start, end } = params.query; @@ -261,13 +263,37 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ kuery: '', }); - return getServiceMetadataDetails({ + const serviceMetadataDetails = await getServiceMetadataDetails({ serviceName, setup, searchAggregatedTransactions, start, end, }); + + if (serviceMetadataDetails?.container?.ids) { + const { + savedObjects: { client: savedObjectsClient }, + elasticsearch: { client: esClient }, + } = await context.core; + + const indexName = await getInfraMetricIndices({ + infraPlugin: plugins.infra, + savedObjectsClient, + }); + + const containerMetadata = await getServiceOverviewContainerMetadata({ + esClient: esClient.asCurrentUser, + indexName, + containerIds: serviceMetadataDetails.container.ids, + start, + end, + }); + + return mergeWith(serviceMetadataDetails, containerMetadata); + } + + return serviceMetadataDetails; }, }); @@ -862,16 +888,42 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({ | undefined; }> => { const setup = await setupRequest(resources); - const { serviceName, serviceNodeName } = resources.params.path; - const { start, end } = resources.params.query; + const { params, context, plugins } = resources; + const { serviceName, serviceNodeName } = params.path; + const { start, end } = params.query; - return await getServiceInstanceMetadataDetails({ - setup, - serviceName, - serviceNodeName, - start, - end, - }); + const serviceInstanceMetadataDetails = + await getServiceInstanceMetadataDetails({ + setup, + serviceName, + serviceNodeName, + start, + end, + }); + + if (serviceInstanceMetadataDetails?.container?.id) { + const { + savedObjects: { client: savedObjectsClient }, + elasticsearch: { client: esClient }, + } = await context.core; + + const indexName = await getInfraMetricIndices({ + infraPlugin: plugins.infra, + savedObjectsClient, + }); + + const containerMetadata = await getServiceInstanceContainerMetadata({ + esClient: esClient.asCurrentUser, + indexName, + containerId: serviceInstanceMetadataDetails.container.id, + start, + end, + }); + + return mergeWith(serviceInstanceMetadataDetails, containerMetadata); + } + + return serviceInstanceMetadataDetails; }, }); diff --git a/x-pack/plugins/apm/typings/es_schemas/raw/fields/container.ts b/x-pack/plugins/apm/typings/es_schemas/raw/fields/container.ts index e7a52efc71136..c17517b7c5f2d 100644 --- a/x-pack/plugins/apm/typings/es_schemas/raw/fields/container.ts +++ b/x-pack/plugins/apm/typings/es_schemas/raw/fields/container.ts @@ -6,5 +6,6 @@ */ export interface Container { - id: string; + id?: string | null; + image?: string | null; } diff --git a/x-pack/plugins/apm/typings/es_schemas/raw/fields/kubernetes.ts b/x-pack/plugins/apm/typings/es_schemas/raw/fields/kubernetes.ts index bf24c90a30407..5cf0b497dad18 100644 --- a/x-pack/plugins/apm/typings/es_schemas/raw/fields/kubernetes.ts +++ b/x-pack/plugins/apm/typings/es_schemas/raw/fields/kubernetes.ts @@ -6,5 +6,16 @@ */ export interface Kubernetes { - pod?: { uid: string; [key: string]: unknown }; + pod?: { uid?: string | null; [key: string]: unknown }; + namespace?: string; + replicaset?: { + name?: string; + }; + deployment?: { + name?: string; + }; + container?: { + id?: string; + name?: string; + }; } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index b3566ab3dc482..5cc459505956d 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -7197,12 +7197,7 @@ "xpack.apm.serviceIcons.serviceDetails.cloud.projectIdLabel": "ID de projet", "xpack.apm.serviceIcons.serviceDetails.cloud.providerLabel": "Fournisseur cloud", "xpack.apm.serviceIcons.serviceDetails.cloud.serviceNameLabel": "Service Cloud", - "xpack.apm.serviceIcons.serviceDetails.container.containerizedLabel": "Conteneurisé", - "xpack.apm.serviceIcons.serviceDetails.container.noLabel": "Non", - "xpack.apm.serviceIcons.serviceDetails.container.orchestrationLabel": "Orchestration", - "xpack.apm.serviceIcons.serviceDetails.container.osLabel": "Système d'exploitation", "xpack.apm.serviceIcons.serviceDetails.container.totalNumberInstancesLabel": "Nombre total d'instances", - "xpack.apm.serviceIcons.serviceDetails.container.yesLabel": "Oui", "xpack.apm.serviceIcons.serviceDetails.service.agentLabel": "Nom et version de l'agent", "xpack.apm.serviceIcons.serviceDetails.service.frameworkLabel": "Nom du framework", "xpack.apm.serviceIcons.serviceDetails.service.runtimeLabel": "Nom et version de l'exécution", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index e87ef2375d3c7..04231fcb4bf97 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7184,12 +7184,7 @@ "xpack.apm.serviceIcons.serviceDetails.cloud.projectIdLabel": "プロジェクト ID", "xpack.apm.serviceIcons.serviceDetails.cloud.providerLabel": "クラウドプロバイダー", "xpack.apm.serviceIcons.serviceDetails.cloud.serviceNameLabel": "クラウドサービス", - "xpack.apm.serviceIcons.serviceDetails.container.containerizedLabel": "コンテナー化", - "xpack.apm.serviceIcons.serviceDetails.container.noLabel": "いいえ", - "xpack.apm.serviceIcons.serviceDetails.container.orchestrationLabel": "オーケストレーション", - "xpack.apm.serviceIcons.serviceDetails.container.osLabel": "OS", "xpack.apm.serviceIcons.serviceDetails.container.totalNumberInstancesLabel": "インスタンスの合計数", - "xpack.apm.serviceIcons.serviceDetails.container.yesLabel": "はい", "xpack.apm.serviceIcons.serviceDetails.service.agentLabel": "エージェント名・バージョン", "xpack.apm.serviceIcons.serviceDetails.service.frameworkLabel": "フレームワーク名", "xpack.apm.serviceIcons.serviceDetails.service.runtimeLabel": "ランタイム名・バージョン", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index d75a87e2c9d55..06a9721b830a4 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7198,12 +7198,7 @@ "xpack.apm.serviceIcons.serviceDetails.cloud.projectIdLabel": "项目 ID", "xpack.apm.serviceIcons.serviceDetails.cloud.providerLabel": "云服务提供商", "xpack.apm.serviceIcons.serviceDetails.cloud.serviceNameLabel": "云服务", - "xpack.apm.serviceIcons.serviceDetails.container.containerizedLabel": "容器化", - "xpack.apm.serviceIcons.serviceDetails.container.noLabel": "否", - "xpack.apm.serviceIcons.serviceDetails.container.orchestrationLabel": "编排", - "xpack.apm.serviceIcons.serviceDetails.container.osLabel": "OS", "xpack.apm.serviceIcons.serviceDetails.container.totalNumberInstancesLabel": "实例总数", - "xpack.apm.serviceIcons.serviceDetails.container.yesLabel": "是", "xpack.apm.serviceIcons.serviceDetails.service.agentLabel": "代理名称和版本", "xpack.apm.serviceIcons.serviceDetails.service.frameworkLabel": "框架名称", "xpack.apm.serviceIcons.serviceDetails.service.runtimeLabel": "运行时名称和版本", diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts index bea2b54d05eeb..ee5d1b20f2e15 100644 --- a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts +++ b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts @@ -10,4 +10,8 @@ export default { start: '2021-08-03T06:50:15.910Z', end: '2021-08-03T07:20:15.910Z', }, + infra_metrics_and_apm: { + start: '2019-06-29T02:48:39.386555Z', + end: '2022-06-29T06:46:26Z', + }, }; diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/infra_metrics_and_apm/data.json.gz b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/infra_metrics_and_apm/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d20717e668ebb13fa9e50d18852d83fae77e46e GIT binary patch literal 10361492 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

g`UUX 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

}HnvB(s%p($-zea@a*7g+z9q}!>z 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%0AB(G%|TC`&In?I}6*jOYH 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�jR! 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%0D1Ta_1fBp!@s26U}Pd0pqm>0dhq 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

  • 7W6G>ZbME`PA2(xFNJP;_2P4kC>>t7f7 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ⅈ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

    1nX^s|PD~_67n{)$ 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 #-*F28{iaRuGmDizO39 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�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�-3kM`SmJ*E@hJiK)zn*+ITgvAHC7{y4C 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

    QR1%f;27C6uxT{<*UT+N3<_%6y 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 A5%HPeH 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

    n=xyvJ1yEAaORu&iX^Y8m@L@f+ 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 bi`Tp z|GBmB#uM~Dn@+ALVF@)yy8$rz^!xc zfWOVKkpV=CPqIBJqs=+@VfilR%eDt`EM>TBo1PE?>>P-8uGP1VjX61sw7&v6KCS1? z2sgi@o%v-M^s__eV&sTzdjwVF>%Q>_R)5tHZ=VitUmAWbe%O7rd^tR&@|(zgWqcjv zewyTeCT;nh_@X`VaN$=Q!D^c&eO}PVc7NO~T|V6%=SF@}d|p3we?)%0m&eacZC$SR zOUKqwa?<-Av$tfso9x_-gI7Ois##OeQM8Ea-B2Vj$wOa zW4mLsS*+&TbN#SxJELqgZ!lBG&cQkR-5f(Fumi2a8EUPG$8kc#KXQuMBA(?+(d;9J`!c9I8Vmwdd zX#iFOjhLX@x2KCw;{MK}Y­c}KVPOZ0XU;EXAakIL0m4T8=+N3vIykzf2lF(p&h zBn(Pa-nC=L@6BUi#h(uoE=j9i6>k@k{3)*w5@TC?t_zYIp0uc8F(POc)+mDKCB#p21I8 zEX~}q>wNKf&)!-Vi*=OJCCm3=MxVR(I;HZsjX0&^dUWozjh(41Ex(>>rT6lTJvt$r zvrRImu?pS5l1=H~!kTi+<@D10V%Fuz>D|W~wHwJ*PpO(swPLU`{g% zzk@x5He&#gPtR;HX1hb)f&C9J%B4GGq8Wo;KkT6&8>rs}gTgFO2=GMv&0ee7^m&J~`k7W$bb);9Q=MDOw6 zf%|s*Wo#j|*6#Cm=l5Nzu0&4v{>#{Z>+1VK-gZI#6=QeD>Oa1#6pht9LK92r1#_)* zfMmeK!X0xbsShg?ybYD?H-KX1z8o}(9PvvHz>}Mk5-HcxxIb5cXOh{CGleTF@7q3> znM>C_ga9`HNTaX4GkkoP|Jt}&Tub-%epYN&)A%U+7&#@L@!XvJ<2Dz3&l>-51h{g> z7rJKrXh`D+OxZuDt@~zAaR0R5cnR9Wtx2JL_{U0J?HGYCh5Kr8T=FS#W7Z6wgxukJ zG&Q=oBkgqR;$8qa+rPSYID!#|UWwE=Vmv%pC|v**dbZHH)P#6G2+wh6sJA$w2}fFt z#HqIVci}Ni46GK}N*_^@VYygAmwP(vcXVr*EkkQh&7qQ$CtC+NJ2j^9^KCv(23N`Y zU%@KM%XoAS8=3mwl#FT1b)n%gd%C|gTl>jU2~Og73Zi&&*8yw!!dSTF(yB)5ybCy9lkB(2eV_aHZ_MoHRzQQ4DMN)%z|qaFjweSR`qvyS9%kY z=ScF+k=J5dZ>|$Tv)mfk%oii|YI=f48~($ju6(5Cb55X>+Ll6K+`a6Dr!>;go835~ z)0-_s`86NVPzShi{C7bW_`8GF%%UqVX-cYbkI63}35qtaHZrd40(Noerk{Pp1b`SH2y zyr9u1R`<=fz<_#2RUzB=jpcM}tN*?LD6DDk==j!Gbp5_e5^5?Ic@|ZY@fTI9DqZJQ zI;*2y(9SBp)veOXtb0+l=)v|1=@6F%zB?6zs%%={5x#JV1{if!mG_{G-d;}t+Q#}V zZI!zrbRlbH)l(PE@TDqEqq^xrv>#u($U-OiFwYoGiU#*+mB_0zP}=U+;!{=qV;>k< zr3yPu7{8#(ITfP@^Mm)BmpAnR>JexdKR{IZ4V(|Bu>p~BX)=ljNQQ_k<`7Z0r5Dvz zeEME#8OWfi0sA7*7P!@v&s_#0BG6R66%Qrlkap?qg+Hpw(T?XQF05}271}6jP$n0| ziz-w6UgxMRgB0j$SKbQO2GZPN3=fxd{~|2iH;brgo)y@lXc<##O{tkvdN&_dx& zWFA&o76v9&>!;8nsnAuv%al>JAeC3+)l*llPB2h#2{U?Q(NW1HGtp6bS@KRw`>&-N*3-W|>#ax!x}H+|UIsH{xds8ZLdZ~t~k zus$7yCME4?Y;3no+LL#C3_p$73(e`v#svs2YFz1<)i3>Dvt-OXDyw$)?9|OzM;+3* zJ2FluYd9X!I&^_-CNBAx=agQ$^>u~@|G6dwB{Tm$pPcNgP>2y)UwL4W8Hle@R|2xh zxYReQoI4E^M2P%1flyQkfZN-@Xez$@bo#rJHM^K<-<2%=OfFt{OHsw*)~;_dwD>Nt ztteUXxaYzC-GC)0lK*i*nW?Wy3T)d%%vEqs4~RX z*yVfrFD(4IJV#kTgM#DDX-8K5HFA5JJyzMu=yP$Y|-d_5ClFNf?qvf;%yTVo5PFOLUL}sa8^# zv%HuQ`3F!@(~3NXs8;d}=;{GT#(%)58!ekgtW=M0rL(pLG1PItz-{MYtY;vLA$5m> zVfv+EX>xvBkmpB1o;6lo3oPWWc$+v{QP1JRHQ6}&C!vHYQloR2CE4^>(A+MmQL|i~ zgpy-#E)Lq_vrj5lJaJ$L?2k@oOovS!Zh(Ww#{=aEG1F+Q9`#q$qx(%|ZEeWx84qQY z{a^`OIIpQl0-gt)Mmj=&<9i-f8o%mPN*68cqD)ou4l7W3h;(IeMvUk+g zmBlz*z@sM{{g{+wWJt)FjpP#h&25RYjK-hp)zQN|Uczt@-BbVW4F2yF(_-~v*s(9W zwyt`ccXCC7Wd-kazBIocDaX2fDzsy4kMv>^d*5ACQVQQn>?9 z8gs0+wp#*xRyi-`dP)u&y~E~?#urCj?=$7je4YO-_CwQ_L&+WTFBUc0 zus&7-q6?DIe|rYzS%EeyX{kP?dMY1-h{LJJAt4ywoYgrt=1A z;OHrgg*4S7@{1pSg3?gUiVi*{^~qc0`@WkD3|4PG9V>l@{cr~O25vCJ&q^3{-gSBX zDYYwVt)mPrDd16Ly7C@1&~fJsy`AuRs(2Ya>Y{!63Z{hd zO-rF8-~LY8X|0IRlBwLOM1nPmh*}Vh-)L_LxD`yVbjid(DKv2_8wG(Z?tJU&6j;Tj zb~SbWWfiV3Wp*#FHx|FV443Yxh8N=UoUgV+7AY)@jQz+_5m|~9N*lm~BvmBcO*nyg zq)&yCNH!AJUIWS0kK(6b`l8_>&gvYyy`{1`Xw+lHuw%R8n#RtsTwDCw{9$ngG>iSc z-^7$oa$mP}O!FdPY2beuRt6f=oarR0dUzR*47%KDxIe#MzdqG7?qc!zzix~+-2L94 z`9GhvKeuMskI7^rV)#lt-#FxsS`LE~844`!92uVqQXQJbejxFqeQ>6B;_#t(^R;?TjvHjf&_ zQIvjyaQ%U+{q>bqr-pgnSrFRM$tp=bU(xbA@LBBKI-jJ4?}xLZhg}f}QLp}J zmm|j!DkW8?^N*%JbsadA(I2gnAt2Wepxa_x9dyn%M9cL%ZNf*6FWC)NJxy zr5sJe-x#u-xLU)6spd=<{y&<-#`LEBGh+M*msaWH`wQwQNoEkfNHuIn5Q1qOuM*T` zd{xOH%KxQ2@}|899HhPJ;ylTe&jB7iFdu?Zbt7K5GH%2D?IIZ6K=|T|V16YA)2)!Q zrBFt1X&%;3084z4R1`@dK9Y~RhGF&9hx(+a3FxH@bXPocl~qv$CCrj;W!bYga#G*C z#k1wz`M2l#W++OvcwV&O>4V)Q&Evq=)p<35s_?YOTdypPwEn$PtDYxH8NC%#>|e z5-9%Y6e+%SGB6s;(_vy;YLU57!rj-WQcXDt=L6X5ONa)P85^M|^NkTIO4wge9L9Jw zO%*4`W`OAHTwRjSk!U1R;YK@&d}NWR(p&LXfo zF5n+BIGY4H4=W;>tpiErr&H-As4hlaS$d;F@v6m21K7b6zN%VZN>`fs5!CEQpZnt^ z84c3HK6Ub$&rDWOfcWM%^)V}sqCM8a=+*GmGy8rZ^Chh-tqXe)A2wf6U3u11fujyW z;$Dz6jB61+1ZLNi;_mkmV$3|-N9sy}9>DKL!~ zyNheZBH!0&?m=fi&f&nV&Z`G+^ZMbvIAy zbW!`**x;iDd*F#(!~gaUq(v=G5K(^5W4sLusqv;p=080ICdc@iG&#hWiyaqAHXh6G z6gJ%8V#>dH%&yPa|`C_Ruh=)4-V7 z?EXp~B!WyeuAgXRanndEm1!^xz%XS#dfJbnG};NWt$n#JSP}8WXRADQSR7r(cc7?G zeH7!Nod{6Gqy2fh87tRBFr%gNihzf2HF7NqQ;P;4ny~fDhLA%SrZ~U3$<4cyRr#F} z*@rt%DjC*B%!4l0L!xzlQo`g=hqQnEO)@?837_eX>5eUmAJbvp3&FxR?!Fv0N2@`c zIlYJoC7pTIA4YHzTI?avwopN6B<+;^wJ&mBCYGapMMs=c=_8y`sjo!W6ZB&JfXpGq zoo2DYo=C@wWa*XQ#g^Z%e6lA?5AP;qgZ z(Vcfv)(mvfTjBm{6RmkPm?m1(GUKiEQ>}XoCrZH8OR?4m7TJjw6s^U`>C0Asw*sBy zQmhACra?iat+WHt%=zGt$q0&Bb!eDL&*_DqXr7(;Gb-&aam(f^J|Et1LqAd zlQ?1J~VnO5){^$ClGyiCl#A#mB!6%CizOJgLe%1+aU)BJ#w^S-~Q5 z{L4hM`TwkGE-QvqxG-J)uK3QkXtuiQ`SjLpP-FN_r+ZW++1pN`@QuP27>8egsYGd0 zuHV;riKv3=XeTHJ*`>X5tLtHX#mh}uSaa8|BH{mn|S?q&7 z`LGMdDvyYSqSPvyFCTVB5H*P7q7#=XldW~Guj^n0f^*B%ozR^dM@Sb-WQ~DJS7ag7 zT!K0UK>g$S9W4O%V{|l?W;;=Rg*BCdpBx8J6kJgDV)?#>1DRRCG&2>ZnEx$w7jX7rl&{ew4~wi_7Q;;#Sc8fVm=| zZgACgGw!gdy}6-R+c*mS^0Hbu_|kSOS37yX{PM7gmje%on=G&wheVq8ifaq8U)}Ki zEk;odC6sGUuz-MeuPfD)E{5(hi5j%d)N$@8$UzQAx=_{(2Sl&~$nzj!4c^t|hG?d=lhO~31OqFQ z@9a%%8nq>F3Tpp}oESsN-oy^1K={naGO-rfnbf!6zew{_QCi7$kTfkQ^RNK7ZJ3h5 zMwV6V`oW+}7>l{0uGnFxRxTJ4YO^mDUgUENTv#QQOHyjpyjs#~{}GtMM=@PcB3X#w z+|No{IREtCb&~p_YdLWk8=r!rNhd2OLSs7A=;1U)(iOrgzoB#oDJoZN`ctvNVorbU zcqQ~SG?5BzQDc$*?!?g!a6=+4v_4RAYL{K{W#joY5;Qi6D#a1-cTKam9K$43PUN{h zJj6L*8JnwM=8g*>QUnOisJKXL%s;5*_cCukgruO$LnJA{ctYy(kBa6a*^iClSco(u z1pKtHA9P2YA~BzXl2A&d6?4}xxX|o)${)5EUM#|sKBPYrc0iVr*%@Bu087U&r5AOF zfum=KqDTlyWi%0`YNmo8N9I)CQ)qw1y+L<=gT5ICsfnh)Rom7XtszC({G*v~Iv1>` z+v^`1bd2+~)z3CiK})Tb-C^)<*~4s<_e!|7gquZyLASxDkekqJUS`#joVsODxNtUE z2FeJI1+0bsajR?)V|a!+GV;DuE>=1fgSjX%1c>8RZmy3u#4#55P{iebWDsPV7&A*9 zYx`ngt^KZv+S)AkSFXas$Hkq$N(rfa)`^MeF5*IRFy4uz*>r6(!d-Hg>U_fvCjcmz z&Aod4TC9_rUm1(@o~kvEyzn>yYa&~h4S59;a$f$E$jXEt2VS@A0vCI`Mvi%osa zm6xKNx_9jwgE$lF?v2;Bn115!)Tzhnd9n@5`z){N+Czxs2Cp=wyOSc&K6X>PdtCc5QOg;K8to)3`q4s0v}$>B z&Ka6tQ>6&eX?Ne~E8Fj5cb>LVyM5hTeO|w@MFK{HM+hhVbD<)iV<>)!!chz*y+UxpJRLr1PG=GqxL;3i z(i04soZ|9Q3)4mO`HY@1ZPG&Y@+;81&#VYI$vpc5p!$0?j`7>_v((|<%iWQdpO*hE zacOsQ%wHVb!#;#~gS+WAFx*Rn*U#!4moF{^-LhnF@dkD0qUS5P6}QNmnk>mB=I!yQ zKdfr6QH@b#7RdF}2Tz{ZuP(IRNI~b~;MXo4No~yVg5Ml;)mJBc~QVg91Gj9GIWEf=lPtJ%!3ug#Y6SNvnfMt+4*|Nw_ zB%$wVrFnA5pD~~TE7ve+nou~v>Q&D#@`9FYcmY%4NEpyN{B~$5azwYd|IZJkt)WOI ztabRVMcB~2xQ9@a`n*zO*3(yow^H+iT^rQ@VW}yR-X?l!OTzk~m{{V-+luzm<9?Ip zpl#<@IL9{l`2k`lPcP+Yf+x4hI%SN!Dn%0K4SMcVpf1LwwmGc*JDh3F_ne`1I_UHY zO^-~kGqrmyH#XA^5q;-tWGCU$7=tPoo3Fq$!z7?>MX`V$Sspu|* zCWK{gEW(`@=P34nq0N;=XkZjj$=D8q3D||nujgwuqX$QBr#=CHAXe4y#rI08H=2xs zqUZX=;BM~p;-PMj}qEZTI8KhjlKE8;}< zR?1FgQlhW7qW_MI5^LfV+~L(-=1|unfh}ZNC~SI(R%@Gr8}UD&B?pm!B-rzbcp;-8 zGxc#hA&v-3ve4?VztvDoxwxB0)+10`4Z(SklHC5f2dS4i=yF{fb%`@ z+^I3>GzHOmf`24M^2lLSMI^0ORJ#E9r=7GjkZ4{^Ng?xEDB0(N!$MSEf3gs;BH5}^ zSWR<{$N=~7e3qg*NvEHls{0d;orm(+oOWPF3X=t$2JgK#`c#a{TXolzMU&`668%kO ztQJ}1Khr{sDKC6-!pFtIB5Fv3T^-_!!b46f_1_|I-{>3P@Mq3HrH(BMA{xLm4ONZP z#|qxo#?hBDy+-YVoZ7WbZQh&Lk&twH$PvU`#k9jmGOE`KJ}>>TPc13WUwE|(BEI)= zUFV+w*vU!KokQlF<28P}DpD zNymuwFBC|2BVs^0%g^N8HpY}|B@ZsICA{+}*MhaVe{(Tf7?ELRdq*-wa!^(z?Gk{lF#G+&&eBYjv53$mv4o4GG#DhPTgt#Y zWkV;*j@YD^Mkc=wvyvJ{-KrNcB@d!Jp^=GP>BPI6p#E!%Z*v$V*F|AbygC9(|EMl- z1aw9{lHt?VX4#8cM4m2K|D&q(M6httm9pC%*n6}LD%M{&uqa+_{t=0YHr=sE-3=~K z`2fl-xLotrUUE+h#Y zPzVCH$R=Us#ZWhA?m5O7X1^KSSPF?@+#`+@15Wl1JrnV&YTVbRk?Kpq@DUV_`(J=e zPflItKD18yaHJTd8iRL(pfQvam6U^U$Gm8kpkFNTrhh4l0O&t)ypa;K$h`?Jq9t^f zS!4i@$|j{l0qRdMXHXrIN4ck_a%QfSxeD%LAC;pf>OSc~#BKoVzKguo!bK)xk1ujg zJ9JH?gDE5ro24i6w={VPIjLj@(KC|pgpgOab17R{mQY!bi&-}vmU;8cgl7|`KWZpy z>H8bA7tVu0MkgFFdoWoX7I!8b{D)?28e1zU|kijET`Dd2~%2#CXFPy;~Ik!Eo0 zFqXuNEz68@Pq30mwQU$U%v@aEtSey>&p?O7=Ta}{Qc=b%DE3M|B7rJ#^-E7YUhb$< zr7K!5P&Eit2L|b*S~>WsK^>KZP>=aa0t5X(cr5%(e^U!9HvQ^>am&5hmSw)b)h>BZ zs$S16laKQ&dd(T*bF2y80rmeIOQGZC^5I;PHq*3AG)dAYL<$IL6;G*r=ptDdAqb;n z<-6x8%?{cz5q$*p`PyFZ{8;RK;lISQfi5vo0dHddupY=I9(p5<>|@)#r$ANni(wE` zVgrUCrNycOswBThep30BBos)&u;N~tp+5aMc`G_`)msMwlAk2V$rH<|K=)2F0tuTF z13KQvU}aHE(%ijzSZU;Qly}f9z%H6_cOH!7LqUVUqI;7U#5 z*-j~VT-eY-T6%nz_hUEsExNSyt@b7e%u1p~B@&>#;%3ss z;Qk|vheO~qF4J(!-X$9s5vVp=opN2-+apR%0E#7aC)at`)0FNu2}W)Mao+2R3(bWL z8^j+1J|$b}?M~t@=drIw^@Q-cQFGGtB#QJ;^$p9IkZEdUL~ZCoYl`}_Gw!GHTGpAJ z`s7P(Qt8Lzt#8{4jpxisJb0d43V_^HuA#YlZa3N0D=~;v9Y$13{4Kvq={A>Lx7km= z(-d)@>I(?aF(8&iOw6+s3y(pL+~Y7wdR`736Q_6>jtDkBEJPj-8^$`4cH5cE&L$tbWQ)Vd!ON|0@vM&>WzX`!cyAx!i*b|3PR- z1ZE}=G?w9n_Ml_f`H{pj$>piBy$)f;d~36)c%I#te{`r$cE8qV5zEfr)$uJG_!LSNv|?uF}6RK|1~TBDMxFj zSZ1K;u>upWPm2iNl8lUf^_{F+V8D7IQ7_LM_asT2nm}QbCC0UVhFKo0AeCF+?aQTV z%GBDlZ6+UVUvqzBPHK8Y=fvm<85N?(J%f6cEv4Jfjr|Yk9$I!lY90?&(Ix4!f-gf% z;sf&gG8h>5kXsD?Prs-=!ezxULwKZuU=q(<0U(p`aaevjjN^Pp6#D5{Rb8<+BcVcc z74f+VvNa&6!F*ZiOyo`MIVswgzzvL!rLvH*yu!H6eC$@hhoJzDO0WSllJp>pkrnVB zw=a<671T#~hrYl0nr!Rmb>4kI7QLAHFA?Y6`Qa@9Yo=Vkss6R7euId7YX9l)%);{K zKi3D+;L7B2`09XX#MQ40eC(z#4(kIppAA5<*Sns%MRQ@bP2d|+-wYn1wQo1yxbDhF zr1RK7C?AJXu8&eJgMv5Czyn4F#Wr=J~TMLjd2x&*zx%8NG)tV9xr&JT;Tb zo*U~?+xy^^PJuEO??9*kn)m20h`)i4jYAu=0%X-*O4w_j84M9$acuW#^8$-n?Yl{( zZQ>uhZ4z13v{o~mQ*xMohpfwR!C3Bda+nWc1A_N@6bSm3m4v}nWZ|GiM|0mFn*{&P z#SO~w#KGp1l+k?R9S=`6Yl8Ia>$KcOjmTlTw}SaghoEC6&m&%~@E6fcy*O+s2v!r0 z9T@F{Gib+j@q~2}aqOd#GB1imCvW++;JhM>5+iyBBW~3u4);P_h@Y*Nu-2W4b`&WG z7gMDqoE^O0Tu47VSTDi&;cIn$Jo6qh?m~TC>&i!N8o}<6&7d;3f&kP#zM;@(n%ws% zeJ2=czj^K4ZB>?|kKn`((k_Dzn~ZEA3ajx9AC+QOQk=ye$9XH$2?~s2O_$&2I68SK zrw7ed^&QfLPAq

    u0T>;4~hYZaGJqbNRZy|Bl)#@|p8Wvm&3C%>&zsMJkKSl1pBF z@g6QJkP=u-}GitM`(U@69hr?-gfP~XN`cq&}llC|iOv3n?fnj?~6A2@G$ zzq{VbWbd`**c;*$E-cFMZT#c!LV#VpSh{Sb*0ZhBN46rc`u<382Lcm5T<@G;>s&#v zpbV@sxmkj3p4x#Cy>5;3ZXgV$0W?Y=J|=wudET~Aj@DWW>hqf|Bo+BVRW>e~kFz8= zmagAcs#IEABrI=rJqPl4&~_6K-oK@-V5H77ix(ev-{FH}D4r>vJG$FkefG-ae=H>M zR_(Qjf40gr5rYH8h}4~%M#nzj;@sDNOIZW2c-B4Kzu#omA>Dg{3;2HA5U4)<>i1m} zDDmQ#KrC}Es`(^BvSbyujHrRbHnXJo7ef3*9WcV-cjqq8%r>QY+$=YpVGcA2+Nn(4cvxt6W%^{h$> znwFj4WMo=KHsdr@4L9tze|ut*^S&gA>qMHdJt#rU#kQBkwkPIJ`gfZ)V!bfdI9SeY zUrd287q;lvwugfW4OO;?+N2sdPBTS`79ga@`_+akd@_@_AaD>!`|Rpg!bdbvO*d#8 znIKI}PH41?7+^DtmI5O1ytLk?W>2Pw+nQ@|)Um6DNK|`33-{Ajne&~IVvkO-xz6|v zW<(DvDbz*Z+x*9~jZBS^Q^|j}@z?O%8|${`Wg~49Kd+)35xORBUHCKj)Z{>J8*8mX z;P;bw!x1eT3O3yOE`xY6hfa`P5%MpCHlV!--WmIRn@^0j`ZoD1Z}k==JDq0G=&|Ef zAoW_0M;S@*_$=m(rJxz82^!t;`w?oYf@D8DSMR`2RJ%^G(Op{)Ys7NG?=fn8Tn1rrX%s9 zmR;^@G7*CKOEQ^@-a>C|NWWoKDH87n5y0}<_XeQ`J)4nX%|f_D@suy0y!_t zedRVQ&MKHB`z@xrV>Q^(tU zPiIQBNs6st&%Z0g(0F-N^`MiPq@@l1Uy;kN$Uh!ydwD2}bDqO#PJz=!D^1!1nk*do zXD%Wf(N>qlV))p@F>M`!u6Vy=_KG~}LLpu8&UrWxKQR$Zl?a+0Lz5XaP=o!Oo&@+x zDaGBn{8%|Jo>P8?`Dsz+LJv| z;&--nv;#RiJ{%uopK1qXEF>4wwe6Mmg>EBryS-6gwzRYOaSof)hvjN_HtEuzQo94# z58rX#U@%*vpIv)fca!~*XGjAF6y}c^Jg72oNm2$2TpwbT?DTi5{g}^ZznMHf@lR>XH-&1j0Qp)zq7&t9O!0+<=;_H4G&Pl(Ty_g7P3&=!R zLpaoGPuEWMEz8 z0`Yea*^JAd9eJO&TUrePvx}ddhw(qC?EDpI|2~C)fm{GYkiMguO)L50iKIO7L7RVe zMWjmZ@ww7p+o49eAjm{MnF7RPkAL<7qrb7pOeUgz;fFX}F7urQ@1&>P)+J zb}dGtZ&6hMDhp;B0n8hlBX@rD7a-TiShmAF-2@NPjtk$EX zLuGD=rRp1W#W%3jpT{HjpZ}N&EdI-Qs-17>a5@@=a+(UY zVxA6>2-Pp}HJYjPM4tWC29U6r%p}(ZQ3y;Qfzc`+5rPQ?8`JGlzN1gh7t7BYjDBn& zv5qo_%^KT?)8lz6L6OrHbDNv~+ULY%EZ9IQtg4Kb7`Q#s9s+oc)?z%hJ-_*sdfJhsd5;P=NC%f;3CC!*ct@38C_+f4ySy@tx6@kb`8KdBK9wDT<_gwF#)$!_ zU;K{4cTl>q;g`Lx9c*V(;5$|v(owm#l|@VE$a~o&j6g3tU*s{MUlGOy_)6cM1w&Tx{7!s0sR= zmzP05d$+{KN@f&$mNtwlo#Gdjid7|hbG9kn!-ItJQ>*3swccgwRO8n*#X{y6i47sCTQnm>w*m#)H_R0(S`yPd~*+S%`<%XuqoJ#XAo`BL=>L=nCIwCT|UOh zNH#H(b)5l3Ba@pr89Xr!fXF##{-5|$X6wJ^Yi!PIRr1hjp$QT&9(+5)&V4t}s&!!~ zS18UorZ10xmqjMT!eodY>~yi>q8gA#;D!iiz!=(u*D}gyk?*;@n@vUFq7ch=#OpMhtVx!gL9eSnaYv0>#{AH%#tp{BsEDa z_n`srnl&}uMMKN;l@3I{yfeuiof0!qYlJ%vhwIyqeX`%*N-Lj-{;EZnfr;R<)?TU$ zh^bQA^|;60FHz?;4uJWh*{<@~ghWrMOlfq5?}VzUO#x~#I*QTHf0yLNlPeTRbxZWpTo-sX-P)|}t#n&-Yus;T!NiTbzpp7kM`RW7&>HZ!CtjeM?mTx|=mYo#RWwyo!1mc@ zVK>u-FhhPEK=9Cf^}N+X;j%+&Tw5Q$n{h)c~$Glo5H8(|6*)=f3L4*N#xYo zbhLzyX&6bIQcFLxL�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�jJT|8!5>1T%FX&D1!Y>tZG!1oe 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

  • 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%0DqZQ1X4~;gUY88v(?F*69Ai2!oTftD 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 yGX!kaMp-zrx7}#`s`@uMfvu^jnDV?+#8P|0 zRK}>61u!~Bo$_29Px9yg`ZeD-1F32+bQEe*HCC+)R;_qEo9k6PAoHslLJOwhUr!87 z(Ow*P$oyQzgV30C@$a57e{>0ZPzZU$LSC%PD^Uf7&lw50BXS~wybetzpo>IF3TwDrL|wt zGM@ia974~IXT@m2Bh?WU$Jwi*=6+PY*^6$-TZBh=4re`|vqd#2dnVTk9c8V0Y9;H9 zHy0QmbXytcd2SzwXiz+sNP2|e|NLnB{TtK3fC4agTV^~65y!_55NKV7BwGmMfcn3N zAKV{~pvGWB5FxpcA%QAKshG%=#Fu|WHZI?c3x6nn8;bGJ(LP4UtqtCW31PwB?~QlG zezQ6h$!J}Tt0tyrwpv8&tv;3{0yExH0fB21LV0I~KI8;rf#rvS1&0r7{k9Sh{t|3F zv9MP=)X>$QHozQcyzQcEv~e-SY*Z(=ZGwi~W-Vc~p+49!ZY?N80wpGT3XNcMn8H%! zt}O)3w#9={V32SEO4e3Vp_9A}E8@8PyJ*RPO27hi&=U-l6ZjP=%Vho|b*KNZN zbhY7v8t#I<;x4dNzdam!f5xbCUtp|NmS#;j?5OH*UBuxblQSjtK#qUWdk^4E*N&o?eYITH0}nC=I64O!FAw3*|iw9c046pYDmww^T>jLGLLZaQl2 zrhZ~!%|`t_Q=N`fpEppo_OwKb9q#;lj z>sc|NF#hWU={Z2~;N|Ovi3s82GhgU4RYcAW>=)pnOHZPs&(3pJ{`z-=EzSE2oL74= zqq9af@)m+>wFgy!?E}0cv?~MUEH`w^ar^7OEbHHa>HA@ub8)k!w)FL~HK(WBOne%t z$A;hg_9FU8gg`SgF;v{I-~avQ$NX38ITj4g+nSr4=7f|iyp+cPv?KDUz7MhJT}q2D zVCQZPqkS34Nn(^r`r1X;vVuvo_5$@7$Xb-T4}HwHm=`}qxX`y*>O*qf;ne5-WCBPZ zCVkcVEx{96U)N>V3(A-0>pZM8IOYHXB9^)PlE=?nSpv@4wC;o+!jGK%+5B|$xV7~* z|4?5%mpw@P^I57V3f9M)Hl6wAOVVje-xlQ`E&CV%uI4v*FvjGg28^*N3NW8@{}khD`Gf7h{G`hebDrU(vV{#jhx7e-kPkOy+C3+wykHQL zgLBRD3nE@&nY5w;pdPCmH+c&kWlU(KRpy1FqTaV5%bwT9Lb}fIgMUmpT|@(rO!~f<&!I z*vrfQIU8yP$+`6+w9@g)MLHi4M9@na2W}2%B^qZMeRb(aM{#S2Q|4nYw_(Ya$Fdat zxVWxthYP0Hm+aB)_``R7R-|fj0YNxheB(K{+%yg^cZ2d*u6pbSU^{lnX)o_i{}M%A zdq`6j^YFALA>&AVjGZBNz<@Q-{f4($X-oUo z*@DCpQ}?DRGtfVuEIR+)H;G?x&Hcd~@CRx&#!n$H>hEjF=n-WmQyd*g%~DLJusVz$ z0h+!7z2kFiJqHL%f46J@rmst@H7f)_Tt^+nNeFt_8^Cm!k1D~8&l6H)sz_l8wPK_9K)Of zY#4J&>OMJe-}gQ6;fTnRCDJKI1IJcbYrGp)OD(N6L$kXPkv*+~P=fAAWTbF#&{hv2NEJ; zIQbS5xDGl(L1BjLxT8@l^(p5P0%ZOtzDjum_6}*RzlaOVF9lj9N%0Dhc!zun6`` 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�t1ZH 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͡fXQrty-MPc&pm!$z*UyT59i28sGUp~ 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%0D=m6; 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

    2ZSQEa6QkZg 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�m|gfHqpW99lHhwgL5u213j>4`{{{V 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 f#koM^dIglaHJh=;88P9y8LQ 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¥Z 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

    !5u|~!C2T+R5R%VOo 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

    5gO~CK&Hi5SmAbjdZ(XfUgm^nwqeS> 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

    St^pMs44d5P`nSu~NHy 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≺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�K>VxbyDXqmq3ZH1#7X5OdH7FjE28~Bby1x~$B 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%0DW6{;c$X5PAK|lyx0hq8z*MaVZ#}q47+<(F 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 bI*sJ3iJ_x7H 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�#-f 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�#_YP-5LBMzb6HljR`l;1_@ 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

    9)2~_Rm)QwldLu5K# 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 D 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

    AHiLQ+-a>Q4BMbTiS}g`5hnOgZ9qV`~fW>We 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

    mBu#pMK-iV1OpsXn5=hPfgcuGH+YSMPMlGyy?> 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 z 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

    t^#9b>{v!B+7m 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

    )G9JkS|`q>+0yr@VQP?ToWL{8T`20x=uAa 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ÐcwBSkRsI>qwFhrSlSJ7H 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 $RY##t<*Hj#F+>sf$QYjFKMmhE4fvQ3!}3g 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ȐY6AjZI zOpC}nnR!~*2-PlGxT@iXUcNv+bsl8L$|<`v8FkTC+&n_{L$7=7)7X%b7B zp>WeB9ho>oChy)8b5+N%l(Rc_&W}4tdN#J9LH0YJAA>_}{ zI@bzmG&%+kb=-aFViAqkl7Z^SBn(k(V{OjW3;HSz%mMldbK**;)djFM<9?%96O#j| z#o2L5k6QUiXK}z#rZCmlYB5m4BN>Tb)LwGkg5jbk8A+s<1!?SW6`alJGYST-lV63# zeAY|pE}TjpoS#fml2lxi)x>nOinQt1lvPnK11Hf^{N$kj0AgVQ*@Oipah%IURDt9y zy3iMg*YPupk~!VGmQ7MuKiQn6_6^s^dys?shF@#9!iVQ$%kswG=4aAYkDK3(!Dg)- z)qE1SuQqPoUf*@!rmn+Us}`%-_&5Bbj*PC)?mU`4H~gIHeKPH~-`Bj~+15Jur>B;x z^~>tqWZS+>ULFf#cCL4{pE-TeTe>*idW2vz2D{_TUOk^)1YY@m$L=stO{?1Kkm{T6 zTs4IBqPYrwG)kxVEDCU{^8Ir=u$LRT=Up4`S4B0y(CM+y1urXi{%B2lP6||nQv-vk6~%8jeb7Zr zECS~wkjfR)l?nI*yeZ3ha-$E#rx2kGkuW(e0s-Rqm5py_H zScsH(?nd{{X5Q$)MOhoi)E?8+4Udq3n_#fKCLqP3_r)LZR`$+#+vOSCG7{7eUBDw4geHG1d^Wu#^5{hYt^FP}rc{pSkZ4RqlocH0({2tFYieO^> zCZ5H-)OvEZK*7{`4*IanY8Tt760n6BC7~nRQrKB14;~TJ@0U5AHDa~@*#17Lor*UC zA{h?KwEHDI0`h$MDbM3$g_Ox$qK2-f_WN!C)TYu2e9DKN&8!0Vm|qI%CC_1J*60s_ zlIN=T4qc*f+FDY=Gnt**O6K|rvG_Kku?l~quMt;E$hCnzEdDL^0h5cRY1I^ex zqvu_6%eRz`!^uZMGR+Irqw=c*-5%V0mnm|y+9t*(hSHcg$;tIK>#Y69NwGDY^#^l^ z@C>ap#qmK@9sD&<1HD%85GBAsQypbM*z6KfPvoF{T%b4tH`qf$r!iP0M~F z_D1P?XLR*Yq%)gUk3#E7zJdgxGQ{W1)eSyQ4IkBxO`BG1{Ca*bZuK5`0FyT*(qsmG zAWNP9JzDQDb8x)xEI)iab%$gCAtIr!-Uy%-Qa%nWa$lG1PrZRRF4uM0f#?aO?v)w# zms5QXYNx|SpO;7Umt1Mh{)IWXF$Np`p0M&w+JYTsP7wo3=T4v4KL8&@z?)&$N86V+ z4=Yb;VJ!2ZR-kdGd9nX0ujQ4$_LES zan8-lLR;&d91}Anr z_R}-hO>Z$~jp4r3lL)n&{&l&pE7k|~H;p$0Q-kZQSBe_P=+!p2z2I$#WEOXNz58Fv0o}`yebQKz} z^|`Bk5{S}tkG3C_br8j2`LIeIvmULwiakXnRAW#QOo%P>#?_c`QWdQ`5f0=@Ofva@ z!_0KPTDLM!7yQ*ho!2skH|)B5CkIKxSET-8CaNA+Mn!|gW8zwPr=EA+{Zd}ol}YUn zU(O_e1NW(sz6C;_fl*P2&{F(yp4n!k>Ti^ec=4(x2POS;66kgTi3vvR1N%os65heV#nkEIp ztRWT*QUX~9+7kfIX-SCAAD4a}*2ex0nu%=UCIc{m{DwKNTdOY+-W*2LrMn}&7PT!sx@q6lkFwU8&_=u| z{a$=Q=|ajQd~x!3P1?2DRjEnjd+Q&;73qH4W$BcxCFw!4)54l={%e~udHMFzgxsjP zi#GJlcDvv-hmEgAgAr%umJpTA5|F7al}?l&%2h;k7s!dUk}xd98fzVwT22KjY#u5A z*PoUL%kpFBWl6K_)gpW{lG}7r;z->_ps&M$bF{=FAStlIE-h&wK0|HGnHW8=k?XRL zF&hVibJ4UtFQAYTm%*_XnA=A|xne`Q^9S_`0b7eS@~tHpFuj(-b=S<&Cvo}v64T$+ z4{Bw!`cmhiSeWZ{rxZ>8@mKEp)HJg4r56Z}e+xq!~YwgbHkt^@GA8I0WD4%#Atmih)R`7XbdcvjC^ zbkq9L6!56f3X*>yu~D7uqi5og{pG&uo-o%ciQcZVYKDC~VLwa>qu?!4L-<>Y-W9f> zK?wQ&)fVXZ9q(TJlK)Vq<}7hBw^?Zq;CxliTpS5;DkYLSE5^Pifiq)bH6KAqFjdcx zEbAbjt31tPkC86fOVIB{p`yqd_dkJ71?!JRo{y=`Pg{%Nx>fb@hlhEL0uD14(!1Gzpx4>*6muzAZG=wuiCs;qGWC<9f+vcvUW0hca z7Ew#1H-*&+LX=AncjKRE$;Er)=D3XTFtZ9f!AhGBZ%8Mf1`0T@#0Hk+W7NEjp*Y8} zSyrN@miYw_ojq!Aq3%os=aWaeBF%R=;!M^3@(DRHGP8^k|_+LIRi zNo#ilHQWL(Qw$Be-h;ig*%18ZtdxZ0O+rC+d#C}FvByNfWt){MI^9aH3TY0n&ELXW z1JHZ*{!kKuc(C@jFc=Wcv^_AfW-kz(v+;9~SLpZq9-PW1l7=<-ZoPj8E`iN~OJEJN zINbj7ZrF)WS^cxX#^z!3v1rl@M@;uCv|H6*<88=$mo0^P!Cz+GK#@BBUB>aDN@YSX zQ_cLG@Yqyv>kn#i`F#W_mD68-%+WP5#l)#0ha9E%{_rm44erHMs`y2UfZt&jc~BA` zy{hE8X%$uQ?c}7JUAkS#7e$Sj?d7=pVe z4Z03&>k?}r#l-nmjv%X_$?)|Ijjq0U1Y6e0)T7lz{zFx->ro{o1<{u7wzvX$8=3EE zyh_i#JH(@vOEkUb@emq4td;9ddGvCwBhRnGX7=~6mD37xt+Xd<<@czvAqnHU4(htg zv9dlX-CpCN5(b*>L5wu^itR&&lVXfMdP&zqc0S{fOnn;W1R2Xj%xFf)B)Kh-aap&~Rh#?W1$u8&7?=m(H0E{{0euC9?k0_sI0lyuuI9uAG%| zL~k!5<(DhwLl6JWc$iJpS6V%9L49_QqX*{3Lom;*xV&k=@y_n7iiBr%Tbms6v4`Al z0SWs!8Cu%0LwREQ)0B;Vn03nOAHJ!O$m6`6Z+$4;2kqZ}IHVg^WeUpHJU^H(#N;mg zjQAP+`1t>O_k8($JU4x|Lf?r0u0AUR z#bbW4a|EK*PB_+^3B&GR5;{f)Y%rIwqDc-&C~LSBaKwG2J)5gpF$?)OlD^@1NNpVa z9C;!YVAwQ3fWo~onj?!T{U+5W0xPnlGGqZcXe~_i+nQgc;kmka}?KAK7 zPiF9Q`JxLF!$+ga%~3J*DSX2V@4<2QrgQ9D{B_p4K{K$mdf@%dwmBweQt*w-MC4RG zGfsp52krJlH~kIzk>Cg*<|xP#8i7Zj9H}J<6s#1YD1&WhO0XDCqoa#=*;O|uD+N*$ z$e|vyq-v4*cY!<-?M$OAFHN>3Iz1bfJ%E-HE383PYFal_**P*_i4C|D232Wj#RZEs z9_glWcFlT~mh<((t8YAww-WSS99wi!!r^CGft?nah6k;DB)7p=K zt2)ICqX<%~79$Nq8{g($5RDoa`o#WVVuD&_)}>Pzj1J;sL;eVh(*9608jRYnC<;%^ z#QdRdR+SoNu!$g=F<|xR^;gKavGs1i>IlWC^5MEG(6})vaje8?8oaXb!814vUiI>m z@-J41B2yz=G%;$qM3x`4f-Y5wSWVZkZN?ueyQcCP(l|Hf38-DYf(^XBHPgIdQ){nt zE+}hc-B`m!!>h;w5or!Go8bMRc`}y3*79CB+r>kUs9nXY@Ojp-opk9PJPDv5(69wA zFrR{;2d&&TYRkhHF4ldzYgavO2B;EnnZB-(x{X?ZdbEbEyk^C_Gb%+YUE_r|6-?Xm zYuTHD`h;oWA%<}iV(c8|Z{-^2B$lZs8nzmN5P3f6j80ucPG(P5BCSzsM#U-oT2qz5 z7nNc2foOuzZ&>2!yq1~TY~&f4Q5!;njq61LMJx38abLBv z?)$A>Q<(4fYp5KLi>7fnXdVX%OBAHutxIEkjo2FoQY{~a3j~}p#IS0V&njTFpI;2U zuX9N6^-5JVJOqhn1m|^E6)5$&BTmQ&qBFOq20rn3ZY2d+Oouv-x&KpFkSUKz^vdOH zom-#d=k38yq}RRPAK#v8yDs*$`(*ZtD!iV#T4{*E+6^m(-P2@DY_6d1!n$ zCiLjusCh$@wLAIs)3u{y%XP-;{r1#jYD3VjIVQv6p>1=EscHK06!%H5V}kp!{=n(A zt{QKfn%`ZL#?;JZ_y7;W=*H^&Q-${i?c8;3<3m9*f^VbA{dgTuXa_ZNk|3MgdkWk= z*nL52B>AY|Ra3df$p3k~bEhXv^moTH-o@(-lKJ&2TdnBncK!Lz9uepJ1kP4+JD048 zdttzkU%*nCftLmMhA7YXo+$mSgGYmxJu#?i<}J;}{9<0ntt8H_@-OS!_x|G*WjUJ_ zPIUO-lc%0OB(ZbP4aGS8?hX`}`c3QIS8HWFEiBZd>KWI^D%)V=(32u$&iCN^3MD3r zWD{qdY`GS)dkW7MQWxS+UNXwOZp#lOo7qK9VHAPilbU9Rw6S>Aezrza(TKw9sjX}- zbn*-+EftG>Ifw|Sx1jpVd`#|zBLbgl(TR|o*l+=<3wSpPNsi}udbonB{lz!V!k%P3 zsPwKdYn`kvEw1v#QT4`4flx(_c-oi9RJGvi`L{?#L>UP(-D{9u;7thH&msjT4glQ( zvW7z@Yd)#%Vy%_Or8EJ|j>ITyuY4>kVs>d^z;3=Hjg5s%TwXor*FHQ%m5b+K^^cCP z$cgG&^bAs|<+NUwLuEG?M1`E{Kp71>t2;FyCJ34D>pv|;D7>`@-y*fto}D`D^OE>$ zQw(0BW-1yAusXhd;r4#P|~ zu-^cU-yf3yK3GeUlm7qdS#Z(ZKchq=Cv`IFLU5H|a3xW4v~n|%Y0W#z%jgI8K`{jR zcg$R(?CeCt0ZlZ>v0i)B$-Dqdx>;Puvb2nQf*b#s36EdHxFbfW5E#@N8Qxeb(w4!f zI>lj%6yf*O#xj@%5*mg+Z+2hV$`h#r=I}jcV(+h&N2|5tsG?BH;6H}6J=mY7FK9kU8{d;U7`*Lo_8G0Gx)H4%AJ`itYMp($Y6WKlt-Y^6( zDdO}+ed)kf&pwuCdi!ofu~>sKAS`@wgfIBPeJG6b3l@fK$%7Q@Grwe@CA&!AsIVSo z>X21OZ5+82D_O6~DiemR6l<1W5R9_pn-r_+J28Cm+%;xd51njkWfb7joi@Jgk(C;y zqKnnXyw@D*a5ti~XoG&N-!xJL+R5|5QFmJazNo(=>j zU9A6W(49FX*Lx_LfjT7}z?HH-p`NTq}Zm}qM8Ly2p^;Syf>Bg~oyk8#qZ-s{%ua2_r{u zMl*-g=Dv?K_a~|o3l7CfU(-D6>Q5@Dpu*IiInH>W4RR>!n z35weyuKx!SFThIQ|1cu){njsA>0Omc)njBk`$k{yWy$N^(@|!|OHMW@Gwzv{OHH4g zlELlUv){TebAnGy(S;k}mhNhWdT;gi`(6*|xuwEw`-?fGX|v`Hn{_ur|9G#c;*zm3 zEv=tD_`g?r9<7`wpS+&dBZBX?%VIKlEwecGKk%BE1$Ba z((D1?>tx}Ytz+qgt*1KM)=gX8!cnZsZP9g1hi+&`YyM%AGhB}Tj4G~Klr;bN;9x28 z$NaglbQco(_{(fthiuE!8CV`$UAO&x^bR3n>`x1!3bzZ>KB1q&TZ7*nhgL^c$F#D{ zGzViQZ#X2@WbmdZswWkca8tXze=KS8De=S-%)MXNBkSj0BH|tWwA7HgIz)jl7zc93 zYqaV0{L(A9FFruXJJ7T@rOxv-nm-BGPW$uQ6J?OEppJ1Q-Dx!BW_~j2o=^v47&GaZ zI~9VZq9^SB@6xe!o@3lMt18as207h@>?4uC-UXi?Zi9iSR!KLt{0Ud(z#&YUP_39- z&3R84Go;*dnE-tm&k0<5qdXoRT5)4pvi}crX|;JTP-K7DPBdr)|0p6oF!#URgyvy-geMj~unYRX z%`|bViU~C4q=kz!M&pBvJ0dhf^LU>$KzlCBk@*t$AK-&0zXb0kk$t7;sMh^;9e6iQ zl8_DVuuOD0Rbi2RJK`(lv@1pIp$H_D7It=J!xdFZj<|^l{BHWN4oL#DTA|(7smm1dc)jX3>*iI*lXAHAC{8-jZ_jBf-rLOIGa>8k<2~SFmM*qfd zSLXFV!lJA=0tJ%SopPxCUpXN)i+YlV;~&ds!FT6h$SUoLmxU-wwISY{QPaHU%=Wg|ubumbb;vVIQxBsD_0ko@t?g_ekZW#)MUyp);Pq=XTW<~-~I zf^m!X`f{(cf8%I)5dFp}tq1c9T6tBBNo*M!Rtb475FFovzM_Y>9dBj*5Q02KnHl;w z20)lHE1@O)5ku3i%Z?5nvre=Uli7GkCWz{bfP{EcbGoQZr(VTUuH)#eWak$)i#KXdt`pM0UvgBIlEZnZx>8`16j_;=6GaBC zQb7MOB4PodxLb>U@G$cjTi|$ZvpB+9j9+7pHSOS8bn8e$xlUn0L_t*v}eo<0ZLx*aPdj#OfoE_{+P? zM`+|^M*DhKk`wOFq1TRFWBw2pYvAD4`&IQb_1gKZOE*NMy!m*yUzV2j4O5pN z6OuRVG4>|-Ahaj;*J{6KXvTKEH(}OwIhdU5r$6z{+n*nxkqvYA!urXa7(OlEHRjLP zXUymO8n4KkjcWb9$!Nh!ewIi}QB=R8>7vQ)$aGu4!(h|aY5VKN<;nU4&7W)e5I17r z;eRpe@+7q{n5Yb;Sbam0y(>EK;X@KDcWkGMANktxo4L5W2vDhY@alSi_j!#a_1Tpg zi#|x=FH&0wokofBZlEPR^PgX`Pk00+O1trj{tK%b7l@2eTmT(fJT%jIj>{9;UEeTv zRx4=@f0ODAA$TH&BKPVOO8FwreWz8*F(z1b)a<$ZTR|NOeL=fV2Tgm2I zA*mXd68s1I4}z4tZaGK8#zG4TRfOIGvG5|Pyc;YzBady^>Q@=fy=yf_pLMDlw91OI zCTSDmim`;w5ruLrsSV#*2g+M_$!UI+s=a~b2@+)kUb~hb??98Z&0XoKySm{A0qH2W1by4RxF*|m9}s?R{HP5Sa?#Fh* ziQO^*rr%NxaPy3)LBUzOBx`=+C&G^jk}c$@AF2if&QPE$XTj__*0yWgU-r^R+K&_a zk8g1LDnF$C%sAhpsAL!|^An(+(nu>Z$(%~cUJKc05D#N_9z8&k5C_GtP-Wd(G$wkF z9!s}`&&GSLn$TA_sH!mTGo%YzG6al=BE)54e<}naHK>oV9P?<%CMYBN`n(qtPU?THZGnj|*B)J9TAwIx5F#F#9qDfRe% z=hxO=#e=TxRg+S56@Q|35m+fn*pc^#dxy`K4I#UH(Dg=ZO!m=?6F$@B(J8Kj+)--- z-lP5N#`|X0_{UUrZJ4h_WOG8r)|1oaEu|M-j%fc27Qte{zY!3(uZ`OlgpL5?(sy@0 z49TNPdKb_8w0w9ol*`HBZ+L4%|Hq9lPl%r#ZK3txqS0xqA6H z3P=G4*w127R((Z%93Bi-PrFL$z!&m)_qr`fd|XjwTcE-!#jb>wlXciXrK`va$A(}w zklrA#3L8UeZVKiet00kajtANxuqwFz@H{;ID)%G&AGGAyI91(b4zG32Co1aOBr zNvkfaj1?tAsK`bw9(d+x;EEacLe8IHcb1rnR1tH;zv$G(BBB1taM&R%cE=lT1BVE2 z%T~pI5}-mC23K#TobUQ#q9HCt+aB3P#M{3y9EsCOi)FqnD&100HELm-hSQB-*HFSG zwoI^l?CeV4L&r*6kFxt8t*QurMwgSSyyu?K7{B$>+E}JaUkXr!_<()4XZmpiKO*_O zn_4wWi}V<`+a+m z2qOqZ>?<|f52afdPxrkj_Cu2YUI8s@^pAoqTpGz6nJrud3_3A_z>q<~=pPs|Fo%mQ zUA)Q}84M>6_~UyJyBxwQ;b|Q4sn@3U(jleRdNdw}Pr!tRNM~bb>JX+qr_*qJE)o96 z-!?hZG_(40g$auJLwebW0}SGBxso~h)e*;R8!$LJ=VzSEiu~PVeoO}+<5#*XVg)1& zwPJISOsa8UT$}DUiyXPY81bc;Q8`y)6jR`-@*PYxxeQgfm7&x(o*5BRQ+BQC0^nAkk zq}v!fmzEqa$6@_9^7{iKX!$RNegf5xxh3z&w~e0s@477AfBxRifjo5GgaOs3M`l9E zGS_Kc*6M{coj)(O+w+T9t0l^HL8=Uiz-rVGugd}i#W@Ixra~PliVVeGQdv>V%&Hv; za1!^F_Nih*k>9OQnVN$~^#oh_6&#XlF4=zCL zg|wxm*mroPn!|7>KxHx~r`JGfqdczEa8DswfEIVo&}j2KXDlx~ITd^YjA^wsqhc4M z8J%SU8}O+vuSiu+LUD%uGjMUB^oIwTnLggI(|>z2?F?}^YDBu^eP4QyX@9iwl0d4oTT+;VVN9jR=CLE#Q1F;+}|NFgB>(_5elwhpc6f=wQN21}(5eV>_8 z868muLq1OYNs?A?dM&FH8RVjqP>%FddnRZlu!6db9xTGdl+m{+Lg*j_`(3jZSMYAC zJG3F-_MRf%jTTn?YrW+eY&33*c>IW6m(L;i*@p0wDz2Py&~MHKTPMI+Rg?jI@g#&R zqpAprqw5@DhlgRad-=thl1I8(&u45iGud z=-V!|778nl*L@ycuss2j`gG5t`?#xaxQ`231Nb{vTs+85TFxc8x-D zAKcyD-L<$|ao6JR#l5&oaS9YGGPt`t#odd$e?y<={oZrVuk&Xn$xbrKT*=<|z1F(d zez3Unh>KoZ^Y(e?3vSp#2(VPG<5th|A;XkLY41L*T!{N0p3buud`$+4NcYZ1bK}68 z^+CW#|G@tVj~Pa3x`fSAgjJ!(;r%WR8V)sEhjADakcqlgv;GwfilK0E9E+-M&ZHPi zYUyZHwY(JJK#~QaB?>D_$x`zouMKv|_`qu6)ER!!{i`j9AT?Hgwsr|r(%Vv!q7PW3 z|IfzHRO6yUho4jS!8-OhDqY0-yK3>(5nUBr0M*m}e1cE7jO&U-Yh}d;xLArsAd58W zrIc_p=J@k}c#7aZJY^YD352IO9`8_W`(O%F?9d-)&#LP_+YrDjm@WQZ5` zpn?v2nX=m{G=$=_RCSckMtM?FwUtjtZ87sIVQ(NyG}ELCUsb9zOgQ~Wj0SIB(pbL4rgB@UZ4&nj{|LVF`nRjFn9FbzL(I_6 z-7LcbzpI;_UNSxHcwvkhLX?VKMdY*QWtr2&maQ7u)LHH;XI&~&^uO%Q4J9*Jx{#-0 zy|E@9Qe7^;8dPj}+9|fFJD;%(*b<-9^B82Q=_FtZMlNb{kI$I2fw;AyC=jFQW$MiF`z^G^>BkXcHCC9XlYbN?byUC2qY%%kjH5A*B zeUwKw*rbhXz}B?Qy@PbXc5wr7!1l*evum6CqJBlD=P4+##j76Q{qsl8=Em(JEio1O zmt7lIU{)Fws(6;C-F_6<^O1ZPIG)h2yG*!oEeehV&?~`i`%>rA9?0ISmVgR$x z=lc0JsJH6hVG%Gkfy~#^D@!(#6voaSkTvj0D!s~mF%uc?GsJkP{M=Mzr~>vKj<=AZ zqhhrM?$+4;2=mb2()zW3n1qzMV$R7h&GF@XlzH(yS;Wx-(Pt>qWndXKY52kK;y&&5Wmq7wJYpis-kr{n16jR0qVaqV!XZGriD z;d6`VLm>LmWyXPh>sJ;>2us-Gc%qkAAy<pCd*NST3Xz;`@$L+)8ZXeld!#lM;AF&lUmYx@ z@@vfJdQv~$F&%tLFn_wVkd4wjV<&`4V}WcNL+Pa1KQv_+TC3^4In7O>5xM|I1`!nl zX6}=c%IVabEU<4ulS)j~<;EaGaU{yI`eB%<>yWbf%^P9RVArr?re_d(M8Vou>Je-{{4n} z_>&e#+7#KIe-giXIOEiyfZIjsb`(!f!QH%TT%3rHK;M=}nThXc6*-q^sORF+U49N- z(NTB^Ey)eSI0wh^tY>ZMoa;cP6EVu)N8*>L+OQP0)^=S9 zUkOQ+g$P0^iLp#Nx-6~DXkzG`WDxhqV_l(*n!nwk-OT&=l^1Y&4=tz*jj;E5`#j$L ze!XPl(x~gFQ-`eq7=8E3J2dYX5{Us~5A_Eg}9YyIpH`_JxM zo0#&{85WiR15n9)+c8+R_QhGst^gswujEBkEwe-{vcZ=SEg({L$wb7??`cSPa1j4nm6bVRy!YdlS2TmRz=2VM1(92)h*fF!oi#URYc)x4=m(U?Cti$buF{_y)k z8diV6BRBhs&Bsw38ITigXHOa%BrJNKJ24{{@2V(Az8!% zFby(!)X(TPa-^gkC+MVd?Ef%U;cLK$X%bud-}^O+N^tcugVY+d2k5z(Ktq^ofmI=< z9qlYaR`Gmx4Bb5bV~??U+=*?b^-la@o(EeM2ChYrDw(YR?@zL|2;0n|x4m_v7_<5P zoNKuzDtmtgy?l5Of(#-dx*4j9x^_=t>p<3m&~+BApFMVkXLbUs!B%f?UUt)FUuU0q z`7Oxy^(MyPHCy(gR4nS%U2u$tZe_O;|_Kkx~G zaE0`yVeI$oc9^U;J`vrT-f-~H7d~ZDWu#79GF~>7U~D0k7J`mNt9^C2dbs3Fx*ya<_W4gt`I0Ic-Oo)_ zZ1##m-d_}%AW~(${p4Qf^{j*LVKCh4dN6#|&u`Uk!yuZ)s^hV7{pp+XZ)qxEfCrvF zD(X105-XSxllC(bM{D)725zpx7PHOf2`+wo#LM~G;r6|*^zcu0sAOHZDc`15LW9SP zyjDr=+eS%8AAx5ql+-5S&{?Q@qz{*7pXv{nW*iHu#fdUBUz+zs6qf_>2Zg^_?!6b~ zL~A8dB^8{p5UVLl>lIy&Ne|XQK>{w7BgT&87q%6b*Z32Q>#r)`crMH2gj}1z-+dqt z4&RN>^|SD~e{*b|-_ir3{O)_JX!l-K(J@&KfTw3ftrZ3<=={@a=HpZ z)9-#tpNc}{f}|7kAhF_3&*(ly2KR}QU7O_|c+Iqbk%Fv~$77__%CXbT!=RT_F~#Xi zRMnkmD#c)y1NDfe$@pT)=Nb{^$?=(AY@lM0dX)>2&evuu7ba4xG3k0a#u$dM7@OF2 zPjD#pbSa-=k%i{MzBjZ5vuu)<(6*sfa;}vZLvfUL47)p;zTBF|ZIBAJc6ez&Y$@Yw z;*BJou=cmq=Rz~nM`ScuY%wEKWs48QmMqw8;r<#a8*>m`Tx5_gftypnQL4SGK(R)g z$Vj`l_LyRxR9w%0%Vi%*TGRQv-@RiO%fz56uhSTgZQR0KJeM4MII(BxdgzI~X7_iU z<*NVa^|thdt%H%e0H3f2^B}0#6K!`VWo!G%qKSMDR6!-MmN)5$S4s@6psK(TGd~ux z^x~MqJi?j4(b4=XtbR1OvFi>g?FWia=gEqlLA^z0#pz$@cFW>5jEu01H=K97j;6L? z=G)&9#P%c5zxe2H%)47#1rW-?(XqtT`+GATuh+52R7ZZnaQ~)jX=`(@3ayr4Gq=-! z2Wr^AIT~VOEUWG#Ilc}@4fHyuGmGb_`>_3C&(dLH78XGC@L9zpRoL{Xdm(rZj*S(s z1Il%b=b!78;sQCFG_>*O!aI(eg}~+-&s*lfe%d))lLsx|*cOzef{e#*_8#)M()V#G zy)(#lzb!+$PM;ds=Zx>F%27fJ?)y?Dy0iX>d>l)?UWAaphWdr&G%(titsn4rqCJ-< z&BDt+g=wPt0JCGCGeEY8ix^f%(tmc?s}Bfdxo9#w+N(y1l-pWst@-K?9;c;esLyo$ z`}!6c^vFP8L-k|^FV&2@Svq2E=))N3d}ptd^!3qbPb6MF|1t7odTqRS{?@L3?A-7( z3)$!BmvfY_e5&@I@nrGP$Y_Zux}QADmyy*V|uvOAyLQcAVGd&i9wlbiCQ#?PevF zkEi`lz%A#H_yMPEY|m!G6;KbCL9n_3j!cxy90!Ufy zLi!>(dPT>=STos4)fnoW@N+j@d|;Rb1Sw2^`|SdWVA*j(ke84OQ4!(u6|KJXj$R{zeTIQvn%VVqm;F}6YH4GvAb^)6W1x?2P>EPxw(vj!z#Epj1>p*F& z5~_P({pGSuQS4{ScNj^2REt2C=#pzghI{yg0*PgweS?)-Pom`}6*ie7d3KZH@05$G z7^&S#8iy1+VHlxvGt26ZWe9c}iPQoU=85!3esCLMTta8<10}JG*d)i1yZcT>vDLW< z);ooJRta2hW++Jow`$V(=WZ+e_uuQC;@pa2QEE2hxxOFu&mX0EtW$iM7|b@$E)q}R z0yP)K0ujjUd>@SCxjGtMtd<`-PBbCvFWbkJvbfI1hPRw9YFSPc%#L@Y&A3R43(eSg zV^AbK2QJqBvWhjh&ZOrbB6cI8}v|tYu=m~97PQ%%8YwSXcL|B3y}MWQH2#wRayL1&fOU4={~5MJKZE$XIBT*)H=Og!+fjkL zw>x_$UhfM*PZ68`Qw~CXFCrh4`}o{_G|%`(WgVnt+wC8}lt38Im?b?c$WCV2ui5~D zUy{8YBnO1yh$_3>&NtjMdq0FqkQNCTbvvwWiV+-n(ct=@hZlJ77`6PmeSL5$B?#N2 z(&JKa`+Wb70+p&9n2lI$)twhIu?IXlrBFPk?5_`BpYMSxH^T3hyWji2V2xVBoAXVC=aUzVvq+NMgKPp*Pf`#KZqZ%Do89ULUb2ebq)t-c1R>kB?(jPI-P2CWIL zu1XM}ou3;R{%XBg48u`PVY0+PtwdbiKU4CEBiRDG9~$nxx-SVEE>y!`|0ym6c_}WW zGx%IX^0|tTg$}Q@d;?bd{L(gb89Z*Faj>|axDzJTna&O_kSz&%BwLo9An1&yASAUf zOOIBRe-2jBO)HVDe3LJxHx?;HXetik7*+u%N!_jKnq1s9nGiF(aBj`2I+f}QOFe8kB7wB| zH&yu9v4>e4lWm5EA=EV^4Z@;&iFB z=kij2q}xE7r3J=HqUr6wH(gS_!581OKk*~SOdp!SO^G!9B`Z7ukhj#D*hVBw%Qn(t z#ErnovigjTz-_$XUP?wVi}|X|K7M?mZbt(QLmmqDPYsa`i_*!)$U0yzCC9!0#xXm) zjE!#=^iB%)ii(bp2({#cCgMXcVyGZKhd>~u`f2WgM$ZxfCngUt32IA4MZXE<5buK| zrGjM@WfUf-vVvcike^C}G!^~W0e~Kop68hKvHR3F%09?S8?9bQ!5%N<&b$`k_(1{@ zPAhHjyE2y3Y<@3^xcr_vmF>F-BD(x(pybR#JkdbeHKwz(=#Xt}_u;YR&2f0kfwdf;@$(v^5_A5hC-B(S1k ze0VwafPnJt=B5x&@+8siDx>G7H_a<-$Y3FELooI1!K6UO9NThZ_r5OfdgbK#ap4&U z(vT>AZV$1=XQ2}x&fLACxi2kk6=^MEx7mQsLW?>_->=GoC3!6bOtGgk3jbUTp&}DP zBhjh9;dl(Ia9)T~@h#broH8UtFj7(0$f7ugL-lB@+I&M$Hlo&KE`<7_%lZqkeE?d4 zUU_<8_^!KjhMmrw5g&V#IiXW(A|BHFX+p7C5Zlq0n?8oUoiAgm(7Z}I)+tN9p_#2n z1&&#X!_CfnDA@isSFjSV6grX50&LQ^d@LVS7RSk}`-*92 zP!^RLtu}>xKY3O=JbiwCv^J|9bFzKRv6Rv8FxTK+d&WD1Nuen<-Z-N5m*V=>F=o9;b zr}5mnl!|vUV1G>*Nfrko52PF?uMX*!K=Zg8%HJtG=9tnsUX^vFIZ%j4idj(1+J}b1 zmJ3c;m=B5|&WEtjr#PUN6p8CVtRY}a;WFons1wGRsoPY=3UV;2(kTo#%}E=_80~+% zkuEJK*(B1lnz@`D7-;$&jW9xRHgolzFF_jPAeXX-hGnmdbZoJ{bs;LUZ?G<18qqdN zR^)zVy}gInx*4thY zOjsCDf8|C?AxfD;v*P%eu=qMgI$EEF@10+CKd;*omzV?#08tYc;_i>!3k5tz&nWuh z-9y_ zV*$gRWL-CS$Kwk=n-KZ`eNVOXi~OoA*R58Ss3cEcJ^>6Vefs*GlIx z`87)HxZ=~-Lb6bN^nyKl2>+n8Fl&@PT{&hXqxLWVWwL zDs454@u{Al?OvN1FM3PGe<`yf&um%s8`MG!5HtL?^^WoDY2#~sb#P&CN9WJC5ta%2 zKb{>ty0z<3r#MzFBQz;Fx6gci*>=B{_%_3M^H2+5OecytqBznX;}|an#;sW{2D)1J zUKB{KIf9vU_nj1XI2xDDSe0gb7-2AVFzM=?-fxrz|Y?(tdv>Xvr|t7wuHd(IKBfNRk<_E^swb8%BT<&zGS{W1Wkd z`30GO-8Muqsa;^#y~&1v(%(ER*^L|`&0WSLn=vm8T#SfIqXvXgEK2q~Qd%=+Hgm$qPrX6`>)cIE#&- z4@lw~VNcL`og(DS@DdTY-r}Fd9w*v+{m=lvG%w#v57Yyi=g>Q(2qKM*HWgLY4aUZ7 z^!!1-cu=!8Cn`y%J&<*zzky!Ef$uhn!oe>B( zx<(UoD5ls_rFFO;91;6uGZ{NCSP+LS!u%^g1|dSTfmP@z3r*6YVONn~RjxZ6NWI~5 z&CO_6CeC|&<}e0Nb-1N`8v}r5UOE+2Y+AD);+0+@3IPo(HgPyQlN1T59>CaY0o+gB z4XQe!ts^e&?X z6&(ABACtDgg%*dC9#_nr2YQsPREeHPm2R9dF~=4F7etBOVWwU7lI&NZr3}xMa9rOP za$NzKYK6CeL?S+d2pw)3`KqZK)0t86UW?S84UTQH*MLCvqu@KqQaax8EWgV;}w3pGC=_vwpwG-);;3}h<6|906* zr)@*FHGdQQ*gabb-hg5R$xd3%uU!1us56wg_w+K)o7ngXK)%X~LMjEzYQy*5f3=s{ z=yg@q%0P>Xj*ySK<<}n>Ys;nMt+`WsAAgmMbQ8rRM`{dM^@)u<<+dk{pHsRa43PQyZvW-__!77lV|!TsjewJr#ak7MIq{)!wEXv+ zSj+2gK6>=QoKm6HM&EF+jM8{iA(QU<-nN^30ebVkN=UiFShSIQs5CNjP)R09YVxx4 zIT?Uit~)uBT`E*FGYN%32N5lnBJ_nhzf?P2KPoZ-DnNo=(uqE=0j?zMmc+#IYV+w-aR8)Gb$lS*h zwd5I8khv6bCSX!l3&-aQto6yhq14JoK;Dswj{{13e^h0T%_5!UcF##9T|ffPLbW<0 z#SwfUukIA>@rrXc`HnW@6sNN=(JUn!n`y zMl~LSs>YhdiSExidYxk5qmSs6jCA0=6&Ua*=;*x07!yt?`PgvYy75Vz zk0X7|$TzT)2}>p-g%FrMyMQsXkJU0B0+sN(wT&AR!sL=QxloSHVp^MxN2S}|Pu4lS zV}6Pne)O_=JUV{nxhlm}bd^MQg`b|hFkK2Oubm-k)YBpH=1c=yFsVf;cwXaDkUP34 z*z9{cyyubh@>wy77}G*!-hn-pr^pf?`$feI4;T~e4nYvYwyji5N&03y^AN6P9VQ-u zI1o|OGic!VzB!^#Z#*1sdCh? z3+ajErMOHnP1Jf*J}aMa01JSiZ^SVBztjqvvF0G1AE=S8dBFTYHfZ4P0SK*5(Y0su z&*h}NzX(Mfm5=FB!Pa22!N?f>(DaWga-TS@j!vNla?SI0desQvwyS+T*P)ubH$~%@f5AD=Rkzk;sPDz}Ox+Mn z!0+(KsVCaq;QJQ4YoE_TO@n+_-7trCLokDL+s8Mf{0@mXdxeUuiqrW+FrS4$$F4vn zpa{LN48a(#@Ny9Qo(rC#v@+ZkUw4;r4JP&^w_~obh7ZRyXu9#`>eFoXMQ{;4B%s-I zVg_-y`F`ac?=(?Fcgakj{mK`BPU+kCb<9GR$5j+i&|bnDhb}iG5XK{)b>+2P zYHjIwzli@<7Kcq=7g%z&^0nhP6S z>MfxINfKXmKmksXN`j%rtJEfDj3H>!v*eUywiA8wDiW289^i_a&#~iA#+Z3l6+2?r zHa{J^6ATd@dAx^7wF;J^R3oNyX-@WqU{;&eNOnKR)rGS9F;a?*ykxX9RXYPwc+KyY zVr;OOKd+phJUMq!d!c}tUY$GW%)q?mS%95a=~Jw-9B$Qz%3Z9U z<6>|)UNq$H6=DAI3j(kl_?H(QHj8b<0HR6Y;WVm$I3zhN$P=f zvKZp<;z+l+2;jBN3~je%w)tXV=kBwIeulSm)%o$L^(F+ISdoPaCq2_ss*d&6x7>I- z7qRZTJFzdLEeh50;My?zVV2Et=B>_NN?`opISo9>5jh0Ib{OY+Ho$6z)xUhy+@n3`{rvO_}CORq#`76Z@9zqOK(*i(N z10`YPmx3^3zxj9XO5ERNM@geMTX8{Y?)%Bpr4(|jT5ND>IWTq_(u?t7cL-$=HT9Mq z#yw`Fg$P%)nep4k#m05qu$$0y69TZkw+UgV>I3~eLz940*^q+WsTx5X(4Qpo;B2(} zXk?0MEx6pSI#*`K{#eeO2&iouwaUk+@-SYVFCVmbTHHvC(PyYLvk+iS^UzYEPcI{` zR%`>qG(F*o?npHq{4%jxqr9WGg?zV3yO}sc#I}ER27Q6!*q}^j=v~jLff;wM+z&y{ z7*h{AceC`U@{+bwmvjYNaKZv|g67*wdpcw4kLw-Yl@R1 zLuZ~%^#wXWp`Iyfbsz=@OZu!r=!0wX3cU|Gi zTm+#1F?X1*u!52XBxq3x%>Fe*SJo(-O7x66gk|SYa^6+eb>-dRFXaByM94E0*^6ehR>R5%U5mk=Y z#o-NIEAJgJ+w#1oUzx(8UZDda?D}%QRxq{WCh==?A^LGVHkz2k$c6akYdd}Fxe&W` zkxGWNneFFrl*jF-4jWj@PCfqM@oRBi>UN*!a0Tr8I|XMn>-jLTET(dY>|MX~*cF-6 zW@A;lkneVhp$_TwLk?G-OO>ZzJUEz$?DKdVmPuB9xh|U4nX5ZeklVuK-W%ec4?+a~ zB;QTuW0Z8ZbObMovzh zRM__^6;|?ak;tx5W2r=U6Dmj|HfI+c$mE!fm+v@1J)vsJ%Ywq=l%~J4zKh=s?|hN? z5yB}k`bCSe&HE<+MU^b$iUdIs#hr~&Ns-+M2WFCtA*ImtOOK8iAk3VbLWae)Ki@X= zvH&Fxxz_pHxW4oPA*FY7xRwrBLw0t|gwyul;XeP74cHK{<-dY-j?^MYDm#Y` zj9eT+q%!ysxJ-0lU6qbXr$sdk7rm3b@70|lqmek9K2Tf3H;Q)F*rQf8slZ;~43`5- zs_GzaM|^KUuC|hLVVR&in6TX8%~aGFmzpPO^PD6&7O|j2+R(mem$kvKx+1ucuq@Oy zCvL+}g{@U;xbBr?W^_tshYCy}+oZPjs>H!wvaFH5$*noo) zG-GH&-gb-QXUXjS^98SX_VkBv*1Ih@qFz<(*Y5LZv^T5}Pg`G9?A^AVIMV!YNOKRd ziQr0p17Wt`T6qWjTkyYfp~{Rth5>Z)^L0Scqbo#h#Ktm}Va*H2K`rEK~C47;$Ve=cBC<99bx zG+pBsq%Gg#h;nTkH#gBx*Hms@I4o6T58s~lZy3={`-Ut9`0CA6Ow?|)48HB$zQ5g@ zzm30ey|Nm-JY8F+FZjQMlee$d7oLvl6?b$z61;c# z0*3-JgzNbSmjW2lZcLvICRz_J51y}4yt3Co`NS$S(Um(bP|7EFLu@vT+VA?j(|7R? zVH2Ax{*R4`eD(|6Z!P2N{%sxak3xz8ul@Zx0WGh{26xQFSl5$wa*Hna5BHtH%>kYI z1CnQzs+Dt{d!6su8=dXJ885d1X*mn~^jKa`KHd;@DWF($qYv<->oamKu{yNxMaeZE z2_1R>zoEZp)8zgShj*SI?@yD^-yNy+jZJlw#r`2D1!;wC_x0vQFq`i}m7 z;%t8rcwZg;SzN2E_2stL?|4DC<5RHV+Mw3xZ;4|nd4ykMn8 zm+ieQhxNCIvlBxBV&%{R-P~$)uFfBm`3JgP8V*ci-pEQQ*K^;t@wF13AGcSb<{XIZ z&-Yzmn2$ZL2OogK$=>YqwvS7K_-zV>k;P+bw%lnv?=0`IDSwZ!o|&9YtlP0G`&I=O z#ppxd1ic)I$Gx1;12UP{Jt1!GkFKUGyh2N@t{f58WZdD}o2nm6Js2gd4aXg-lA_<| zBbO)eLno3RUx;k5HgW=5yR|k-xKWsp`8%2TPqRkp7+Tvx!F?VFh->}!1m$1DGu~P5 ziLnfC=O>Y>9JtzV9kwKkss!KtJI1;}_58_!DedZ!9Nj_$+-cv^` z3r~IO6swJS%oY)OEWe7i7)y=##+rreO&Q0yXd4%|rVK=IhRVXVyIg%E$((WBuOO{M zS~Zh~W+SPT*=YM?ULDegX0A-R?nuN#vAbStdUIT2%p%6*8C4?W0!B)6SwMIUkkDjs zV8A~f3&fcbbygCw!e--^MAj4ON6@Gn$O5X|!e`VMY{D19a4w_--7hvp@pn>#*aD@^ z6`^8&Khuykdpiv;|0&iOcfZ~y&EKHj8MKzd-XR$&E2Q9!i$$U34s$M(l1Qe9Z_h!* z?9FW1oJ$3IS?ACW|Jp*%ATV1FCpZ|x@3s#l)Ve5^!HbA?=w67dU45Fdx33wL06w{y?zxVo@})j{2ZH2 z0(T_V_)M#nOF0Al#COSAxd_QDXQOE*>*}95M^P=ql~z1IFdx;l6R2(H{~nfhjqy^) zxI;p=T&K7h7xIBmlH-dzixvwa=YB_R1X}Q;x&2f}<3nzYtT1KV&~D|_8kDyFX)I_) zI09u1IM7|`Oxl-r&A~g`(Re+cmge`6UKX7}PIS+l_&lRHX#KG^VG;b_jq&xtML8rh z-vP2;R8ivN>(w|(DNYF@>eU)*_WB*zaYX%d{Mwqeg_rwdeg1x#_Z>+&Ej?}I7WcE= zJ0`sYY-)9BS)UBzOK(opk#Ayyci#5GKD;JoVt?{Sz2KiNiTq{=`9k*5FkY8*PYuHD z(+HWBF~K|6RAC?N_z=K5b5=+;7cJ4iJ7FLE=wiQZXq<|Hb@DUiaGlp7tdA)w!L>Y= z`>Z|v2CMTY-6PyGm$If`j;Nt2KM`@L`h%xiQi+xN`)&zdr(_F`)Sa!pK^RLfLqZRC zdjz1h;P@83m)WqQj^Hw$Zfifkr$ud>cQ7LS@ALqK{fTcADBxkDDERRw~g_AY?38 z*Rg;=zkOyLAh7?`&dFz`#R;^DJ?CVW`Mgc$Y#?f7W&5rXbWFq-+12$0EdUTm=#R6y z?rwK5wX$*sf=O%IPuKScm)A8rQ!h4l6Em-P5;OH~G`|l1qN-b9S?kt6t7&DF@1WH> ztvgw>s|?HkOr*!OP3roK{nS<;p8@DgSHIAN`OWK$e{Wz)&7lz7 zyW&BBo>_6w^Kt4)mVDkGU(h-#6$kOSk=X2kp1c)Np*U;)WAWYwOa8ya$3zSrJu}uh zed=%WTM%02N5n_LanBV8H+~$%%$N^%ZEd^aHDpy9LS93M}3$9fZpv=mvCUe#NGQ5OJ%CMqN5y zA{NM`-HcnFQ!-A$<@ zo#P_u-qlpANqpiwgF9bBTtY^ADynu(Zk0)iiZJ+OluB+Pod}Yyb~(tyoWRHcoI^FM zZ&-POHK_nd_$8!FRM500Q@)(FuH1p=GNdBNd0m7SGcZpVZuGiFLjPo98bVV}NV}rV z%-&Un{Gh?ml;06KVrDt%Q1%1ZA+209F#Y=lj!)D=0B~fX=k*8UkP2aoY;6pS?>I*dD$iHdMabH)8(`ODohhTmu&|xjFm(=L& z9=iLJJ>naC4kf+B}7*{|2_RUbZQLHVfBCJH?azJ)YU!%uZ&kmjh+Hs!9M|B zqSZ+f4#F+Sz1n-5>E!7q4|De8&xH=r6iAW!xW)8ayF!C-%|E1Di2K1Vr1d6s-IYCi zGOoqd-pAn|r}3n_=@+MWG<5oRPai~i8yj6y{}{c6fi6f#hwGn1O_uV7iV<5<%tZm$ zG;@zO#2gNkISG_}A;K>}z&hcXuPw;lTfocQ7g(1H`{2qLdQn)5xMNrOzO%hl9Kfe; zVe8;*2>c@L?Oelq!A{MW#C@aoNk^;v@w9FB&|sW+M@^*?CafJsYyrFgbFD}XV|&4m zEkqQi!e0EBHmb)8?-T4$5Js`R(DcT!y_^Qo^a{VQ(DZhK1a`P@ev6gRW)Gmeu>i5t zOJQj4Ds7OgcjE`@sz%rk7UC%-7N$??9S zC6uLGzoqln)Zcsanjv33>>G9D37gIml5>g@_o=dzkrd1t_kq9cZZaT&ALy5^XYb%@mnRHiJ_tRvtM1bC^ws)Sa44ra`6Tspy#)&w;JZ zo^vIE)_|ns1A4+nXH%1X)P_!XhGq=}v9Ibsk4}&&Jr5I=h@X^p2;?@B4?bwx#h13T zp^wdmu|~K*$PCS{lS2gx*o`q%DRs78Q_0W^9V6~w5Jm~u?OKy7wdw=BmU~fx1x_1s z#INh`K^Whr^|_tDUT$Ny&fAr?=W+?qr1h$vb}{jOp9Q#S-5a6~L=wEJPpLnR*#Co; znIqW#F*=PO)}v?Qdo7cfn3RmnmK>wUq-g7Z!19B+lTDWSn)BwHAYvD zo?Y~UQni)@T_I>cUDm{+wm*>_?NvvA{+^b=WbU4Rds2*QV}!zXlY;Dl1p&uWEOu9o zMTzqu68cUOs2JpH^Y9WTspyu3tAaRu){GH9xa1q;Eib_;_G_7@(6)8W+^1lRe>N@vlZ@aZ9qH5&fy)+sR`h()e@Gp}6S8_qL`+`xJ^JFKqU_pz zI#T2Y1hOS1)Ibz4horVRN9tM1!{^33NJ8FmM`H@m;W_+~*^rg-^XavpN~tyuZp&=B;h9ex5*#8)f6_hPi_Y(OvK zSz|1ynpQB^8h9#?$zchwQOURU5P>F=gk&HgnV8#=c6C=Fej$_P-&38{upp;M8Ksk4*che}Px;*ymbm-JkfP}*>ckg*MCJ018a?ga{XURY{ao4FPBdAROFI4WYFxL zDJ4}SVg_Xt^Iq}MM*FBT6R$P|oYH+$Ee1+biz8*F6Q2B7hR)7RHLJgLP2FDVEf+1> zd_r6u$2Ldwy8H3&X()8^T(@{WDYUw=QF+vTKH1^@euKO&>P4ekBDUV@;UTPaz`ZBg z>3esEjM7%)KK8`hni%4kHRvl-wcSgt$)uyv*&Ut zJjCawYE)W1;BIc+zaJ!jpOkg2_%TJY3x!i)2&w# zvU~i>itIYu0u{EEirkR9{VAq(ln<|7jz9gPE1+NxahjzTApsQ%HDJcn31NPc;c3%m zB-pq7A%zQeiyC&FU@Rmd{{DiVdq!fP#$}3UD?A2gLo=L={@G5WxEruahbBIvI zA^;ysti%a5dOVs%pP?lv5(xa?}0$8|f# zDoZ5KEEAmwvjzj3EU?M4aoOzPGYkR!qm`|R|1~TeK1CpYs^NHI8%vhxZ^DttFoeAJ zzo39X+)!@s%XB#rA|*<0m9Rm0!7jKgQQod-D~T)-qA;Q?(XUeiohzdaw+is#U{FPe z?p0R?e(tCs=9$^^kNTAiiot|60>d}3C)#wYxLUP#3i;vO)sjsNKGGSSrZ|S?M~5ag zK`L(6<`3c0V=(G0Th<U+^Z0m9_gc@^a$MJ=9ORcA1h>(0~W zzC((JPv2JxHl(CuB6=(lLZDe}vR=HnIZ5HywG$K;Z6?Zgx5Fw#x-)(z`(z^EEO;%N zO&-C;OWc^-g@_rJN)0ZFqD&fsiy5XkWFnY&xG=Cq0)uO^RsZnL{AS=(sbIs$(N)`x zyTJ@jS;!}yPjAZqESSIke;)8q%jPh zuKJ~-0->e1czOE#J|GIF{_Ig#{#(3OSKy#!)koQTB-~0I(7m-S)B5YQ+r`JFp#RJKx9<0=b^YkyL*oZWPo!r83(JBZ zul~Rz!$1rEUJzYO`FAPouD7}%<2<(rzU9<>T)S>ERFGNwSHdHF%{THRBx|v+3yH`; z)}#c>UatI=G{1xidz1QrNuS1bG$U3Mb=C;ymiI8RwJ~K6tz%Ij(}7p!OBxjxcQnIA z!R2{>=y!$Uw{r*7B1W79YJWZ?*=^t25Yl-syLWB;S~gJ)GAZEoc+gHdpeUEoV9KO~lpag>HS!QRso)}ZvyC~mslNzF zk$oA|j@{ym!%3GW!I>Eg>InyP)TIOeDFQRDm;L5sn2y$298qMHn_CO@D}~gB2o+p!*62`-=2rL9d#e~li${Ngk-*S*V%#iOPd`MFPh8Vgfl&_n=CzT z$DwzBmrkb2-5W?0AOY*?uz3Q)nC=XJ-W-k@#6_S)WFP$2QY%U00|$9L#$E;9K;bZcZqu3 zkuuR7%>-y}=Dap7NxPy;BE5hBx+9wBktQE{|mgqEsMw_2v6}pt3K_VwjR|sU5*$81rP8z}xjyW}y~R zIda}JN;z^2pk3mQ5uP888j;RAPvi5}(jpu-QY*n{3I< z-T9qw)&3EV9puRO?x&qxjmdwUuW*`iRz zO2DD_Q+^1K{ZD?N-4*QkyZ>4Oi-Cjr6DWdOP|fcE<%bz5p!{$gXb)P_Pv=tHfKO%k z4M&MY?QR<=LF`ge#$L8>S5DEz+=6$%g5+^a-wEJ{;Y-EvZ~ z@|~Dz#r9Bg5r)f}vMvLMaoTtgcDaV_{UoCw4JADDM~^RDYiwCh@DW(ok-!J z7wDihf&ymTt{XLS`~8#-qH@87h<>OFVQ>P(G@pTCG*=Ai@8@;jNsb@mac;TeaSFg$ zvW#VO8aOp95PLr{-|aul*BKAfDYOj<#)Jpt-h*^u;aLmWp%Ke-|GWq3>P9n4BM}41==sYid z|Fh0y9tGkp#-t572LG~HGJl%qvXu_j(VdH*o0)EgiSXsgpLh!(-OivWWq(JNGxNIh zzlne5)Yc$55ep`pIwjB7Fnd|8{MB%=>qv)X*8Y>dga z2CRg`4}oRkXilqSZR^>YRZCjX)w<}N`XGq%R$PG(?dAAdn=@~Rah7)tKRK5aPZ)h2 zw7sjxt;2MGm6u(eXu?0vg3mw z;bN48IKEH+YXri@@gL|7cmhyl7?1xd(m+~syu^Nh2QW~ydxwj&0mVDpYRD4dERKUp zI(kDI<5_89V45X$3_^hp`zqr()`rT`pff-qW0t;Cg=EU6_6aH`x0~BPYf{!$pqPws zF^kp+{H5x{aA%*(ESXy|Q-)g>>iL5*(TkgI%MM9`yv-;9eN{B-sdkHV@qJyhz}K;~ zwSHcNor6t=VDnT-fz0BcVgtp++M3V@WEKdY%mV6@S>XO-7R;Z_0^yTcm^+LEnFXM? z(kdZveV%K2%vvFiT{*;Nc@egTjV;x1Znzv$^^T9n( z7B?Gd;K5LjHUid~{Ft=;^iJc??(?khH7o#c=VFWZZtSx-dgsm98K&m}yowQ(45fMb zeRkp#Lcp{bI69Rzoz51;d-bKqxA(VSqiY4E#O2S3+t%P-&5n+^DJ2P&goLS;zO)Rm zd9X>Ll%Mfha%=cJnwxX#U*)MVi#M}%gxn%Dq-FQ0$^_Jb_(QNn2I4PsqifMx<(^bU z7+@ZsmnRYO&&7dIZa9Zh2i=fl+0WlbH~7gZ_{4FB0NmmWoBYSy#)gJ`f?pWojdeaR zPywdrC39bcSh!t1lx`@5m=&@sCzF|8tCE_y{)}{yTI&+UfQ+u;BidmyD(2JqE~@qf z#W$TV^dd>ithtuobXmQxsDWw&nCZwbx z7+NEX>Q%7O+WD|G6Z9OjGwC(*f5FMi(Vkg%6tG7n_|4tSGVGDwG|u%;_xzjS~~sO*wN0~=if z=;`J7c^;)~7$5s}*kqsf#aF($yj}5PjIK#73E0(hswiN>@~j6eHkPXWHym^wt#^3hJO<8*90zRW zERAIvfLS${bJQf3%#*bWM~^$hqm$SCll$9e((V^-=dkOc9+5D}tBtctCGrpj8bup} zUfm{|@o=nQJdt@lshG>yl?fd^%fj3I|%V znUnM^RI^NXr=+NLGXr~0!Ac~Ku}N&rG_x=^-C`8T!L-qVJ9*A=jfCVVDi|uK?fkXP zZvTe?Do!PzQb!lY(suwyA0zlOAH590P}s{$$N#Tom(>5K>^hOA-c7|m`+?q{QQjO> zTl{7y?@M%5d6!@Sj8|hHK(q?X3B29CKE!b`z%wjQciZ~jBR{w!Kb%e3rFR^9Ug)e` zPkua(vCu3<9dAKDPYd?@M}o-u7BLaJr(>#;0$@mwZcW{NJBGy5CNa!6kM!1vj!kKBGR4CtsLv z?fstxzkM8>wd-m~F1>4Ez(ojYe&k0y3L&!0*!9U*&$_g_-fAqrezq0Kzjh{wyAC>*g>pEG|*|_DBew zqv0$vvs)+}_1R`LOqQ^)D%$>?9RjrR9cXFNMD8QnaO~0@sX>V{)zv1ox!bTQzN%2J zvv+_@6k_@4wUX~0Iw(mq;wIUldyutQtwUS(2KA0zWgeo6vQ&}XT{M-2cKlX_QU+8s zd_#g$4P0ig`=KiV(H89_-}V>OPlR8RCz|_j&lQ1()W!i#t3$@l0JoF^Syk$nr%Zmw zEVZW%L3PWtbG)nSfXVZV>$yP2{QbG$u7QYO?La=)!LtOCp5;t5TZ%MfI@l7663|yD zCtW1Ay@7J4PdQuBeOmU7aQ&%q5NC3Znw$$|^4j9w)@57#4;*fpX@+$T0R$%WA%e9FpX}rnw9P*NbTGN>ZLk>#&5iN4N{2(FZ6i-|1ydCseCUvna~2(kJA0 zxCgIQVZNm!uodkO9g$SM$VH9nv&pJNNwW=`9bY%S!- zLCX=1cHh%`whfy|3b=0r`P;5VOA-72fCiFwOnVE0Hjyw8ho0Qx1KStnh_+L!xoaqg zZU5=E7$d?>Bx?8~O?jwE%cY$Abm3N_z#f;CsP)${4g59tO)DW=3;UabaztfTjwX_^ zJ4aJa{Jl-?GI@!r_%82an*vVL7@G&#v%%tRH5TFXKJ-jzHT?F0WXfW8mZHzX?DNbl zFBORVrppi2j#WdU^hJ*SN!-&n^xq@u>tflAP4#;HQ!R^(uu>_NMgfOy6rQ9FgVe`+ zFv0V$O2(pm2X#~Gvfm*o{D%`>pVpcJkKaYVq^QQ9y`1^rPDcHTp&EzjF0)9%aSpRD z*vcD-)j-|)y(T10YiY-64PJ$RqA(|P7KL1n(AYitrzM$zYpJ#XYJX}{qv8;JnV%L6 z@hgKKs?<@0lv%3uxOl>hp6W2b+%tnFTgYArG0rk|B=k5?*gpPLOL@x48d2W)3sC`S ze2+X|5HX66zpN1dDYasS`MRcx_-iZMWia6S<+kh$ zHvZkxmC`Y_N>a|FaK#r4JdyIJ7YB+^Ib*ErCvQPK^{~t*&Q;FSRDTP#padmZd~6aC zPin6VqRGgTaTYOLDEy%e{HR0c=>)=#0$7SgQ6e>%8Tv|7*YM7~H+{@R(d8rl{%Do) zNF|;#YDFNDpu2#c%pWUPHqzEZ@#2$hd?S4xrRI-x{i*gZREnVUW zfbtLKMw;Uco8@r#kWgFqw6rA-BMocYf!{l7F7m;*u#bzb^3<11%0Iff?^0l9Ir6f! zabdmpMc(VffJFN&tdLsTV6Woju+>C>cB(W7cuW4hbvi*gJ)bc-gc7ZJ; z$qZ5~T4{7+lTma_YIy=ksX4I2(_oqYh}bG+&prSJZLuW@ro5@SJZ;2e>u-q+W8mhT zPCidcpZAJ}Wm6z_4g*L+EF)P|`+;Y~UHK#-8DK>;N*Vcf1VuE=>TUm#kVG&U)m(N+ z8P#ZjznCT5H{s-B96y}oVl5yEVITS=A#)g?BqSqHK|W(wiZ#R7WzyGNHvA$q+Ps!I z#HbNCn=P1940NgAIq~e(r1^zLaL9jVd~kt6QqxBO>(YWKxES^w{DAj8Y&BhESkgE%#Ngr+k^h z@_HE@IaLQjdT>)!1oI$RJRToTE28o;p1n765h{!kh7z@2X~7P_c4R-~eK5QlVWVK$ z&yUm+Py)!|DQ~LAuBhm9R@-JRl6rZc}c=I!}3wN4_W;U zsWMDpN5~< zdZeU<7;`X0RYSrgt(ZEEX^WEI1LEL(xgl15;4w6EuET~B6nY}CrJ8B|jBbnk5OOxrMP6Ay%PU9mKY5v?sIO{7+D9r?8J&k@*HOfNo~2$Nk* zaU%~It)D3Eh?1Y$#N_M}KY?uwf$hG<@;I4f$9*XPQ9RadbXFs|*QSGsEP~)XWwtL2 z?#RNLa=|SZYu^HhEC_7nnEsbDK_hU;{^{X-o&flAeH5NgXM*6m^nKSu%5lGFy|u4;1_La7;6JP6Kz%Z@vmH;3ETlxtoGy}YSDv9))2wzhZ2q&~f!!G!KxBz(Mq zW_YPhV9)O9MhfgRGj`bj`NkVkZC`U~O(8hqK*ud`Gl~2yOXB^Jz&e)w)|ECPWHCLU z`n#ncusLPJk2c!SiLfdvy}!ml+UHj>vTN+C>b`ngQ2po=3Pi9rf54kzH#4aXwj(LH zyS^mv6Z`YO#yjs*@HUPVRZT1(_%m3`tHdp2J`*s|S9e>nfTE-%*JJ$Lq#bvZmo%O) z)n>>;W6W6f%elxY!E9~VG2<{2h5`*Ri&IXoSZQJkV@sbPO^POaqM_>-2P|Jt_B+EA zrVT zZZwPt>SQ0dV<}F$1WK?%R9ow>tu9VHO|J)aGo#v{9rPr0z>%w0wtn;LQYhf33ng&+ z%l<<6e^*beme=7=kgPkkB}Vnh!Ss3C937eF%?BBJ5)>}FEZDNMrd6^rLYicz?N%4< zhm2PDSv1peBIKvQSN55k>NRAB-6@jXUsaD1kp(6TTleRr^3V2lA=uQ+Q6`uj8F^~R zLeHK)4zC0ZdlQ^TB}2^B?(iYrk?w8wz$9oD$C-+hQ^r8hn*Mp2Y9(pg-N4xz zYZA5BvMk#dD32Dkg~2(jytj?$6iabOknH|$ekIR1E2DTwIr&c2vI?kJILnpl!m zCl=4$oO~0A&CUQ=4HXBD)srw!kiGbx&=N})<#VU^iMTs<%nQ;)~s{( zxSJ+;R|207zzC!N9C({J7s7`$p?S0_IhW;9Ov1$1ADQFocdH8I<>={!##OfyWk-8#wM_s4?4JY`nKjDPu z{{IChb`!K-YG%F(b3bHIaLSv}nwc9W8Ycl@voR;o5)P9Aau{myeA70t^IH%QkDFEA_C-M}J?j@zCh9}EF#Ni4j5S`sM#$C5bw&ysN8sw(*Te_0aB zYU%PoOJWCTNo05YZ%aZtm~GMP5B;~|sIv}r+SfmX(R8z5P-8EAI^wqDiDKU_Sx6t7 zNj*fUTU{J|Tm<8~t1^~Y-O+1d7_|k=XSJ`k#+t;Om&^%OYz%o&HiibUHzWPd?0}2Y-`XfnA1tLRnoC5zD+i!2hP0%M z?||(;ulK1{-}@hdGXs-mIV1A8{}VVP!AAeT180vyna9aBKoW69`;SCW5B^UQ@znxH zyFTpJ&vWOZyA!7B7clLwyDxrs4e2txO)w<|Do?G7CV{^km9)}EPXfj3l?|z-r+)We z2e|14*a5aw?;wGn!JNQu!sgfdO*F?Ynb^)cSnxl0?8Sx9c`&LO>0aAGwT0!Q#PpVe zS}Ka}tnf+U9$JiyW7@X1y?5Gt>kBcQ0fKi2?Yw_WJUfw5_tWD3E?iq+P)LMWs^8%g zg9Zm{?k&@T^zR47OIjbJ*=BRoOsJHW0zGTWU?q7x5m#VS6lP(FV?&FzAVQJ1AGE!7 zH(8be@VD;FL%aX#vP@+H8V=nIwx78DyG|2ZkV#N$VX%>x97tND8WB>bcnE2r?s)48 zWE+Q*H}0TU%$7hL4xvPu`rrt4j0n$Z3aBDUaA?((AJ0tfxd*UC5swO8v^C(I%+oh+ z0vePZ2w#FL9u3aakgQDDy7i2eOJ=S{Y<%u=OZh2{RLCjGlei&>^2m!@2cp?G>IOw< zZ(_d2Wq`2AS1KkkfZ$0;r|*2h#&zqjN1vXn`M05Qx^LyfnH)yR!NKo50FJp-{!{00 zgzu@6=b)Oi*Xzgu!6wn?=tv>6|3o=`6{GGA;Uo>zh%0@)800}etl(@r9$<@+4-#Px zM5wVv+JOC%(xl-PcVu<2SLMmGu%Tk59 zS?+RGLpZ1Zv@aG&wGts$IJFWSmYVQWjPAfv1(sK4;88#;*){UhN?xG3=M*gGh1^qB zEpeb}*^{y!doSFszQ$O>o4#H}y2fDsC_ZQCT9TIEQRs8|2tT0t{f7HFA!IPieEunO zpGIP0_z#2Pj!0KKZ%C@nFy%6jECogSSX6WePN+~R6k&$OQQab~32e}E4z(zv zw6>1a>fS@wB27KQ#lS8WKH(w_*dooNxohO5Mocb7npP?rMzucu885nmcmD2=-><(> zi&wq{2PTjo3`tC^wU=Gw3)gku$D?7Kc~1zup6}IA?w5CAP>1qkRSOw88RwqmNt8t7 z^NphYl*x-;teb6{Hz`ICxKK;y+u_-f7Masi0&EoXC5RE`fra#l^Yws;8}cit`Wv5T zjUTows^s9jqfr(KfbNwfxMuM8$7&!#8A-nM#lHHER^I6w>_42Cv^akn78+L?BdCHK z(+y{4ydMi+;MPko($B7P>&0)FfjK$fs&G=jPNf=z;l21v&-w;Leot_N!q?2L#@L6Q z*id%nFPFbPZPCRkVj>|cPPxRSU|=qWYt+LbLTB_wIk!8n7dvJ2VBO|G%9LoLRV~%R zmowN6&eSq?Py*#FL{eM>aJI%x&0r}YGy`>sC?`lpf>Dvaz+v8vT87VsZZq2lryG^T zZ4@7bNEtbZNQg%%liKzS^_Ac*^w)}^fnOnUJ62%%#hdem)8qI2_`-q}L)#b3#6}o0 zcbuX$H-IQfytcQ>1RXwH20oRcJgXuDU+k;3sWi<)PtH;>T1SB6UXfwQ*kv!Sa*~6)ZAZlbN93qM_@o4%a#D;U|kLm6-IvW7QEF~5h{OYPQglaTh-&3c5JJ&vR=V; zZ#_5INH=1}VqNo?Fd4{x!*u)}{#A5C`*U9ALa0KNs)0KmWs@u$V8IWH0r7yDNtys& z-dOi9H-{xw$&Bc}m`qXCENLDjS)mf|cT)K>mAa|IN&RC9@%c6Lx!%?XJZ)Lgq-QRV zWp{!mc8%!}9lU~~NM+f*(JzPQXC+Fq1^@EqR+b)>1*yXz95_wv%pq;O|Gb1-a4XB) zR46OUXh4D(1L8N~g*jj~zA*P$ji(NOR^vK&pVhdmD1l)^fKjqF1NK_x7RK=Lo|L`J zs&1YB1Ds)&S1~17lofN!2juI37chvl53E~&4p+qJXWbHE6%9yT)m7UobFDJtxF#o~ zq+>NwQQ#i6F*ufkp;d*+f~N+p(JPtZz~&`Mrr0%y4}++_OXScc3{gu30rP{_Xh{I3lOsp?CT$j3AX7~wq>AC3s#kzq~f ztw}D)!bfGRXew6uY(rkWQx~#7>kQpQSwbxDvmdbk+;CofAI?a`1N}BwNY1fQy(PC$ zfG0+z9s@Ni`H~m+?1fQNI;?6GS1F-OZ?f2|pGlKy&sZ)vP{iFGxl6B$+~lyg;>)?% zx3#HGpiGF_6>*RF(Jz>`n|>mDOT{1v|G;|R|AE1Q4hANHgpg4VW%9MQ1DDk zv(gzT+LcXquJU+u9qIf$zlEiy(l1fr<>78Hw9xZwC3ld96O|kyF?2mfkHR}&G;}UjUK@N>q>nEt-E6J%BH+T0I!hf;k3$d~v43;dznnRD9{-spwU>z(d zA@c-YMIGSxgLMQlpeC+h9pt7$=A$VkM0&L;%McfuS0n<0;^6$&5d%Zl@cAi&0?cHD zvT#cCSy8VL%elD(Hly2LLrEnb1CK)ALs5n+&T&DE!An@^Mq6>3(XqBYQvdsCZnu^| z4oJer9+unEwD0I=+KxNhw1KTx&ayMx{;fic%R1{XXT$UzWNdp%%^mq+wO0`3rX-Wj z(i!!uW@n9kQ>%re8WAeZ$;C3KI=~j=nH;eJ!f)aiXT&c~v1XF`s-0JC*(~dVCJLZq zzuUE(o6ON747VVL7mJ#HFiqQ0@7lM@nlmP zItdWfj`J7*_4|HG*QgHh7v)UeO+=xVpy*Ob{hk1Mt}*&l=FD967I0D-f}&A z^CUPw0!#T-rh^_69rVzzRTIU9=A~L;4$hB1vx>Kqg>I~b7-H#*o<2TsRWkr{gUO#? zoP)d)a>H4%TF|m;P+T_W)v?BelC(<+rft-_OwyHP}6)3uXCpyRJn zHDJfwbA2TJpB(qUdUdx0{~Ld~SZRcj5qFX+O^8s^8m%P4Wiw)PNA{+_V=dOY1~?!x zF7W;iBYOrD=a3M02W}OO*&zn)_m<(rIZlU>D9asbCt>R}lZFklfzUuC$T97C9Jq6%Y=|7{NgjZzzlki%sf!221&cK>%z!S*skiW$Tp-A9cx2$0obi6432m*HADCtYv0iPJsM_ zWPet_Nzwv^?3|RpCls!{sar>gYMiQ7;o^;79GY3Qs?|ib2@jfd!Rh82gF2szb4G01 zh0N?5z48r}EEI=jFq|XnL*>Lw9tR!kA*%P*sp88tnK!B~&e@#E*Fi%{vAm*CknF>d zSnXj$YIaWPbSYd0xk?Ke6`5vDGM`VX+zo zEKJ7@{>?M=u4{QxHe=#W|M@3`H@2{tfWK^%W+GF(WD8gKJ`h$Icwdcj!g)o@-$pX% zpR4wh>;g|W3g|Lp0&*}&`8qNs9uy#YG1NM?Z)BN1PeNS_EW4Kf- z9v@Y(a=;b6iF7}5p;w+$KJkj24h_3n7mR9`Ql>i7@4i+v2E*LW=>qkIW_mNmQ+^5H z01ya87|1ln*tm|eK>BfUfYPbQ_{_EfwGK`U9OY-TO7*w5v`Q%}b+bOeO z(C%%|;f$gJaWp5!7GYdX^T1RH5!6Pmly&DXO0mHjFTKOY(zdqN@nEd!+rA%!;?j12ZsMaSCR zvI&-FQtTN@U9OcLcVq&16E*`{UH)uHPfN%C4J=}waqdz~WvA?gsmmm}-C>8?i;^Q~ zB;o=wRCKtMPV3B7QU>C`XcBQ|iZxVT(Wn(=rr8QY*s<1e5r&0~wvBJpSH>;G{o@d* zn_{`Rlx@@}Z3TPN+~6*A26_DszZ|7CeCvja7Jb#NVqpSBbI*nw^?gX@h`IcXH2C}$9 z7FYK!U_SK&AMp~k#7#4GMolyZl+iJNK65-%5MD+n!eo3Jc{pWw8fnW@qM+|sxmix) zIy5`vp4lF#uXhS37=EMTn^EswVqV{pBHrMC3O8DH3%}OR{-aikmZ!q*eW-)|x9CCuS;7B4_q|6U!x zcNGthmE@QsOSh|4rWGxrBl#U6+k>0KjOpO zLU!}caPXKEx~5iMMA6KciMc^0Gn2e&3yHy!K9(QwG@)8*qqvIDHbpey_)i1HKPxo#jJ-~U`@e91A;Jzi>zOvLFogeQ6&90>pws)S zFg`mlh}maV&F%BQx5)iF}?@=JX3nvXg8Z0#4jZ|_?t1I)< zob5)ZtUl LGGmY;=vFlPN>lLem5}f5H(qC<(u+pL0uU4b&=nOKes)kbxg6quqyo zvQReo=%;3izV4^43H&>K2%5S9vM7wq>=h7o?vXQyX=5{5J1s$`Yxo60Y4+m5WyV_vfQ5;x3p0~T;fcH2=^u{VgBv0uQ9rQTz*8(H}c(3&qx z#Y9;xlymyE#!yc0M+6l;V#_2XLxU^fq&3U6!1lDY=Bl{ z-KjEkO#TT?_R*~Aco%!VUdZVzf9Jukjcsb@TgP1ChkOyd*z0Ou* zW;aY*MQuW9l2%D_L%6J($=G@VuHt*wt)&Z?GM3}a4zS>9oo;&ir*M&qU=xwrwYTeNce2~2-X%joRPc#Qyy;$hmGW9&8vuPPeK6lINh4%PIoA-f_p z{i1n#d<;P-MXg48Ukm3KFf-66T{2fjOjI=&22CJ?U^4n^=zCfy3YI?ZrQ9LN(fv%l(}_Kx%zjs0xO`Y*Jds6#ycr zcNz(gzGD^`9;>3+x_&4NviC#pWIuioh2|4h2Q-RupIxR*i01bM3|nGrIwVn zR#?*4BovAk$3Z#V@sw}E8iKxF@XNf^Jq3F&9NJwvfus+&xhZ`pxXg{anjs*q2S-2! zpm~I}-2#XTyB*4ndpNJ+^!tqjbzJqRw>adgb()%)sXe3KhXQ+Ze&h3u`*+(11&4ym zA3Le@@`LTJ=@8zA`(pIl5!uJ=RNYEg-^(*Y#?%Yh3J0mXZ=^%oY=Q+;>CWf}(uzYp z{{h{ho~(S~)z+rXfZ^_}13gGNv(`SQFb4;ob&BKe%LhQNgb~F0$gbywRaIb;6dm>C>EM8f`Vl2T1mKR zRt8hV9Xh5p<-MZ9gBPlu!&|zRY$9GU=cGiRutHHAF(=Wp_4=U6|K=v6><_kHKPO>a zd9nuBt(CGUXAo3Yc^%1NEiOciRuStsrII6>+QYUVAL!s_CURKj0jq-h`)RC)ynDy@ zbw#?&?#=NJFly|-_J|9XFdkAZ*>jr0N51~-I>oV%rr1$vzc9@(`TCjT;|-AhG-dD7 zzQ-vCRtU_0ygxmhKIJ_33_g^Ms7F@3Iixfii!B65fSY)dm#WMPg&RRs$~bW(v&ULu zR_k=}Nxm^v9J>l+RvyU$%9QhqWL7Mx)%^KpSkdZ2WdMr_F+B9h9AD5d(G}YG+1z$t z45?1hpnA=V+r}l3xg%GY-O3YZNFHHwkIqb6v%cZ8j~VX~JWVx`5n)5`s!F(ecq17m0F_LUJm>5~Bt`~i1t`CG;YVot zx0HK-HM4Q|y6Kd0P~9-S1r$*@tWCezJ&nH;P5P8IK98-sAeAFQ;4uet_+!Ni|61=V z7nYj2Pkm|hA`f(g^DIz)AHR-1#}b-A5h4x{0-41U;+E0+K^)*Q0`UW8w~A+U zfrl_yD)OQ5JRc1HBEp+iRxrgMRx~bGwMkMr_&rWm`Ysq$f)S36LxvKBmw*%^ua_)r}R2$AHQ-deP-2k5?`Lqtkd`8wiFYY958P7+O#R(IfK>U|+~!%|F?m)w|# z7rM<)g)2sc_%%6i!8oou8n865-~G&w$ug~kg)uX{tWvxwshG<3)Y|;K1p~(>`#lHn z(xlzpAk`VmH)_WwDW^}^?U+|K2ou+WUnBO+{#cS{aHw#!T)vU*1pg0S;rmsYa2AjomGRL z92bdtm+Rzn4;O5OiWI{EI-j!YVuLe>lWvWyb`=jx2rg#z+j%O&lo4LJ3h&yv9&0@y z@_wQ9n6KNq?kEpzP&_<}5e&OZkMHr>sL9j!TyvL9)(yPw9p0XuDRjZMTn;A zSK4dy@9VZW%fHn77Z}n!xGyeXDN}mKUvm@lpKnuKnXx6sQ%){gBfYgd^{Er4n$>y# z(ko0gC}>QNw!>ueF|zah_375*d-zUL>yRdKZ=bo8wdWtEq2Jx8gKI0{J!U}{cyCKx z1WnzWrCJbkGl(wL*iXFncl`x*Mk2MX9@Ng_&<@xm;6kwr-jU#p`3-8XR;W`2K~T_2 zR4;3a`b;4^Y@TZQCy~U&+nh*>=PswJf&laDmrMWp^sb4+Z(wU5@5@hThG<(o_MHKI zik$&irJTyPUgvK@Rt;m`eE{;c!v?j2ZZTi&r8G%$NB>8R4f_k7BS-(AJ;ON~H>=Zc zzsKu)Kq>z?Jq?cQwJFz|hzq_Sd_0}S`9DtQ`fQ(E{?EBEGnnfmj*8kbz6_U1SH zv6;xNJef9F`IJ4bS}607`ia+k_6l`feY4p*gxaWWe zd469${s^{ASS_-&ap8A`P?3&|ueK%}32hgxTE<2P8(>0!p}Q*Q$iUkjIp^@E#B$>d z8U3=qoa;2mJUc}BjIlxcDifq!jq(y%KiE&!zp&`Ni){af++~?OnT&+QcfZ(MN~@hW z4+<@n!1}BHG{7o5`Bn&6x0((vL1>^(MKP2H80hG#wAYzLbru?nuuRhG`d_6B9(V@2 zpjeX3(KbEM#;4ZN<~ZRbV3Ah&IP(hW&_Ux-5?^?2BrCKigD@S;mokj?6bdG&z;B_` zb=_Tg;4CzmRWd-7H-~F`8Q&JL7vy4B^daBPjceu+jUozVCCajk3Wi!KMG)b>Wl>qc z%p&LKsCd_azQKqj3*81Cm!RJ^bi8gpee51kT}!>A1h73lr5dOCbm~BT*D4!J8c46` zrKN(RWr&ki&rO2Ub8-?~IRT02cc6zLhmpEy2PcnIk;9J-C{z`yC$RIX$omSi02Oom z$`mf~`+b!thT0M}zLSZ#Pm18*@x0*V$rgcEJ1|m=WN1|5Of8DUQ};3Sa!m$PfHP3R{}_QKoF_U@-wQx|B^szZ#r{rB@QEE4sfv zUV~ymZ4>v31h_8a_9kkuO{_+NoUwvn*{}?x{XV65uSXtU^TR}NV+_0W=vC0 z?5CeeFOk${Ol_x}Dd8An710$mK4zFm*D@(Bw|O5bsO%XPq@cF8;OzO(zdTckdq2y$ z{87K}M;&ElOoRJZibbAm_B;J4+fe?GFRSlbfV|lP+T^Aq#J?ujXSJ0-g74R{-_)hKL?(^X`%Q?cicIn0+Z|ouu+RF1{{M&icpeRW+y}(oWS=Ihx>U$HxJl7W@}y?0)QFCoUDghZY6`#Qf_&)YXzJ3%i!u zez^f%G7QIda*~8-&xc)y|1;nS{7M;s3q+*j7hpBgVuD%1z&usGE*&Qh` zbC~ul5ymMPX1v)Ik3Q)B@V|eLI3=<-+^zPupF5L3%)z=*#=uY%>j!gUs=<0QdKS+} zZD$TMDpw!vX?Vle*|dr#vk&0ZMTaVKBYsXeA0f|YZ~kkqArAHz^aOarN}Le7DOjg1 z>1HPAHQOKO)FPi-8;6gdiO?mZxQIUjdhb_g!e6cwVRlglNy0lsQCg}>#}KH4gE0e$ zk%S2XThGZL95o?#-E_C1!5u$%k;Boku13c6cN3|oA7mlH4djM!gxPhA zLmAY^3}3hXL4+{KFa@?d@l)9P^A-A>;j$IqhLG|+yzJVgn;#7uJ__G0{U08dFa7as z{la@b?gZ2REPLEze2FwB+&LGh&HnC)9!2DFyZ4AJ_+IewcGmOo@fer$&iXcqJQV5o zt`}QS24^AN_-z|+s&P!4dD8jX2LDPV;!sCvugK-z>vk#nefbbAgT7nq90r6}v&z-th`I6dr5+;+YQTp$LyB}pgqPrg1W$qM_5oo8k&6+O*> z?0XW@K5?2Db}Moy6~YP0$Q$4s0OdMeA1SOk^P}|y)Yb1!+_6wDz3r4_d2R%K(r9&G z#w4jp;;@vAEjr3F_`b4Z|5ooXV?2U|;DAeqXHDzOjc?0JZ7UU|SG#R&_J5hY?D^QM z>B;`MUKjK?{}$h71224twzTyJ4-l0iSNgZA>X%-88?p0AWLqtrF=J(98_N38^J#ii z6SlmbAFu4+26G&)pur;I(l`Y@D-x{IhtX3bR{ZITKox4$x=!xuTolmGW@<&*QYBhDi-qd%jX4U&?mgckERiV{ z6>~YflU9uzE)Y3QJj6Zz_;0Ux{Lwc{!pfB3rkuX^G)fGcf1;=H>elY4FG*4-E(mHc z=u{U_&}jeG<4r+l`k>&tG+i4qK~uusUq4%nG7(p&J@js);0H~4G{FHf@dc(O(nCaQ z>-dL61{k@5%Lcg70>lNw6f2jK-46^t97-^=Huvk0D`?n&88+qf92hd#-5{$Gs zF^Qyx6enW3(qQtz+4DVIlp#DPSZZ7Lojfa0x0CI-I}~ttzRfeWqR#~V0Rh@CgM#YZ zBB#nA_Ecnum8fT(J6?NI=al9&X@uPWI9W!RPifg{CY(2n1HW$Dwxhi%bX8bgMQ@V_ z0m+h$&{MR5#%_y73p z2E{IyTR^T3i^5n)&*qqAS#6c(Y5xw@%JA64ko?0FH@C6kI5&?M!B2%)T=FQJB$S({ zao@ey&GY6TyI`wn10e`UQTAO=mCGxQjY4BQW`%7lEt@`F8-oXn-Orr(q1O1I($82b z-$&=g`S6Qg^qldn4)n=7t*$~CUI!-8?qBr1iXDE`o!RYgk>E2ru%3aAd5lG~fB9JL zNI2x2{@R1e4XMUY{tt9Hd!xTNo?b%qYHjr!L{? zDjA<8?gVJQO=F((9Jx@3@BHOKx6)evDt+@Tzg3-jv%LB3!>6Eb^i=g-iE|!8 zB{j#E%bYZNq1>(f@=?g11F{av>D@lUJ{O&1GDw;&C+0UVN=i*n^~&X0n)w<)rf;Fn zRr7$I-L+hj>+8Jw($V;ivpuu)%w<>F35zm$zyljRGrGxF0&US1L#b!6r^{l-;@=*L z%`fvlb?*=q;6~X#GNrpE9{h42=Y3sg{vYfF_fF0DcfI5BZ|GQZ$>!kOo zu3cT&yHeFvz3uVIk*fG9(7I7j3Qy2cgo+t|8%)Qcvr$YrSIYMJYG++^K5C5X2S99I zHjvv`XW5x3{UV)7l`Hr&i+uEGj}OoL+cH?x;%9FuMZiq&2uv~oIx_5|><=WY&OtsF zN}8@#iT-hz+<#QfF}J2=Bsvd{P3&>a*)OPcQH&C6>QHbCeySVf#q^9duH*gP-wK~JY=q4d z2>$-7bdkqiQ^5~WhFS}@qUl|X>2a>K=BzT=$E@?*biOpOKC4W6d^iyh^Ir~YoMYZ%!%=W0hz-%TXKOJXt!b5oT zce+RMhNI1>8v3=tH54@L{2^O`EKUTIvJ zl@acpg6tct0^@sDm^pjSXP-h3dF83HCiNw|)CD~^CUPhV>OBNNDuPbj{rNj2DT|o# zAtouRDEZOyn^A1a&IYYaSk5_OL~A-Byu>X5F`2Ls)OC3@{MeMEx2|kJ4uY_jz7i2Z zLgTpp>zYB!`T*heoI%#!Bkrf?)9@_&=ehldd$Tr^Fq5zEvz1?Km>*Z>({3~5d%M@^ z*TxqSwH50h7e1WL$}a!0&o(9=?<>*cZr^f#LZAP#;lc(KK$P>dF!Mib$B+K8Ltt6R5 zt>&Os)MiL(0?aZ*!m}|kz7K8*3cZtlna3fe18*+K8|V-&csoaNs`XsDaU(FtB7t_R zLkkxnUbGAJMZbm@E=KX+VMEI<*`h8-z|m3vtRFZp%VTTY~lub-X zm-`cqcw<%+vF5^Ma73Jry6 zhmb-44-Ed11bFjx%uVABhCJXz@!f35O~<^JZ^wCJ&gotM3le3sNwnE4texW@-XqAz z+1blsMeoMS5-?xYaxL`}2+A&z4b|LVEVmexT{1^Il2YD{>tIO!j>odzk5Bi3$+Z4J ze^vLNb`CVQFcmWr@vtnd*&Bm&&_nksw*t&s>8V?*;f48&!^lggWj>5_(?`%VLdC_tWDZnth5+se*5Zi z5t5$sFq*4;C3|f2y8J^$k#@=`kgOJ+aI^cSR%l0VE1ws*ex**mQLoz73C*E80&jLwGrO)+JP<=YucPKj@v*Z7xl3IjaYdPzW$)-}iCf)VtsWXtK zGT@m%q=^8r%$86t`NjHS$v-5?0QUOoF`U&#uF&v|57AAB$JgX!LC@0r43QExt5dVD z`d1AoNH&gBD)##B2yP#g=p5CUAJzbS7T@Dge8Xn;QTQVjHO}+#fok8oz~H&js~ysn z-q&04ZcQ>5GILe}>AE-G7a~{sKZtA@>-a&(8rJ5{q**fkU@I-L$K<6g z63KSJ5ISSC`HNL6J0|{rzl64-Ec3uE8rL;sSrfZMorz7Gd@P$)JoIpP5~9dB=7eG2 z2;oDnt5_wN_%G|Hhn01Sox0^su;8sXS_OUM_YMTi-KlA;8Ilz#l}1eWEN!x;?d2wl z_QsZlz(5dyu%#=vqmv-rmA*oj`Zw?KSeIMJ9E+j*Ls>gCbclq9g8)9S{w`79&cu3D z0BvV>B7(!{^e8p^jNv55d_lo)x}btC=6rP1se+bd6)kJ1a(Uz_ZfX|U%W+c{rdO*O zmik}9RF=ibo57npOm9<5OXEe6Orvm(EsZQeX|=kFuk$sAdxv#kppyn7Kgxk!qyM=b z3I>bzL~d8Y3WcqPP#&bgHy#QmbRAQu1bvXgKF+~6!_jB5%qeKv3ThtNjk5u(H?a;8 zXQIO#5|2h|+mg{|z<=wZ!8`879y5=3Sb)8qLg?WBy%@Di9$qJN3nn6whok}=vEyz= zgAbenCGC8K+z+P1IBTfA7vimc!fG!0%7Mg6k<591$At$b$McVGPX+@WASfojF>ntG zD|X{Z65ek>^tsR9GJ4lJ$ziT75KSbX3q4CRj>)V2$o6s4odpw2ndocsGTWj5xcJ*V zN?RMX6)b1BdJV`f@08XdE7WwEqOYRa&50|$15W_)r|@D^mvI=Sn3vOBir2ar=ZFLu zuU2g?-qEnE{-)IIAi_g!3bkTe3Oldnq70th|Mi?SK53jl2~h&ON#_njez>%<2S46I zg#Y|##eLlC>b^9Ej@&fM)1Bs}5=Fc2bFh}zu;1OqsQ(e(vrr z#!O3M4C&Vl!7{8&B=XqF9Q@4EbT3nKeGL}0@3m=RUmJ&*vO2=bJwIqvd3(ukFE@V# zG++FRaEl)kRP`~$ZquHvBDBdl26vo)`%po_C&drd(kFxnl6*+CsMYLPvV-{$F}!r{ zM*O8T*`RL|`XA#sGTMsL!38mU>d&lT#U2l>VEAO0G}_*15d%xmOLn%jh8*s|5CK+Q z3K~;CRnru0<5R2ArXzBfqBCG080puoOAGLRl|UQ3#=9_C8K?hl-l=nvdE)j#FC+6< zD!(woYjkH9qt+sP?;_|RN5#b@)ngD(C>+IpFM00_EFx4FifgQQ0 zev$CA2HX;qr7OtwK2zH$K(lFd5sJantGPs0FDdts+@~*vBf;@X(7=Yb58Ik24E^}y zBfSk4lz>abw?slLpXe(c^)TzD*m|Nk)3i8 zH~uvoRj4}WTPUTBG4B?ugBBdP7(AZyRVVucsK(kKmAV@RJ)v=*?lD!tj44g6X9tju zfpC4lGy-=RTi4tXQzA+0M;St!hVT1z{91E5K02V0->ePVx$6393uCH1%18-IFw~yg z_nOp-D&468&^FWEJ;g|KYE68CnjaH_;wl*&L+1tXCizId>m_o&OP`;KpY-KVXO%~z ziiyxUiUr@*HTqvz2`Aphi7n(Q#j0a6rjjqro4``|{Z{G0kg}6La__<9x*vx?8Z@VS zUm&fVaG!$aTLj^g_9(YquM(mEp3>-+sA_aBI%gT*A&0s7cVWJey4=b2Pi;!hMb==-HW)KPTA(2$iPbUf4n8dPxI3(X_7 zAVdr6-DmX~6O_>M-b+setE?}RU+yUMgQ6a6G)Sb|c9|Z#CD8H#UAle4jWflxbz5SJ z9PgriMhK~442xl$ujx&*SjB_A5}uMz2~EVI(G~@YgUB>S2ZrC1EU`~_A7lZES?0of zDOr6o2A0FH6Ay1kKM_EE?6_VSHT!4DFNw@X_kY58zR&I(ATLM`qggzbuh2LvGC(-d zn@oPjzZQRNZX0xeSv0(me10x}>DC$Sud2FJhq(kcfA%b8X*@I!BJsUCyay9~&3=78 zZom1x4=ehmejWuIiwpYsGJqe1$-%fu)8569(WH9C-<$?i*7odD?Kui5^^2WW&VWwd z(0EjfQNYH>l{`XyKiM;)bMsisl6w{ASug;C{zF-vQ zhM+vO{}MU;0QD`C^yByVXsWz5i`!$N1pGGX*5?BoFd7pD|Wg;#GtmIO>drpg)>#Izo4i5vw?9D*|^*JsqR2a^2H zl;n9I?JZ`%3W{}?m(5k;GIjgHbh(A2i zm*;1=D-QtpY`JQ9m5r9k865Cg)l3OsUSMNJ2?)qpLb>ZBjjt+&m~*(YCAPx(mNYOI zeK}?U#(>Jsy_Eq@v&@-=OkQ{bJE>`y)>aY@aP#evOAUv(z_wfoMw^^Enb&kaANbLI z8Temm6dJZ0o?QshE-qDTx|0F+xs|eo4j1--m9NZov$6qBm*MLpfBT+`$QO3+DzYyR zb=QYYozoR&K{?JR1;;c0_I|uxE^iX@ZU9{S7gQpkj(~8%SWAHIv^iBpqV>+HeYxTF z_v#~VFw`R>|GLx4h&moq-0*s+g^>Z+lKhwz>B^i<{haqnWFg)dOitSG(&EyGE$MZG zSh6m)w!pt=67s9hi3wYtQ&pTGM}o;$#M7O#b?p+WgA<`p=RI}n-xf&@n+d2TQsHP; z3NEUel9E20Eet7?CgKt1dI8M@g@0(xdF6Vn8h%3Q*%oc9e^fFC`WVC?io!|u2g!na zAw&NTPLgfV^;|$;NZ!Vt?d7#JPK><&3Itw;N5vv%l+v9e5+roso>tbBjcp-z7=?!e zevvE`y_Mze4pW52=NaP7&dRo5R{x2pn;!q zm`el&IqZ=uupUOz&U6NdAXY#&BWPp1<|?!~j$_11K)uHDp30!B3i$B77g&|lxl-u? zip1)AS{viDoe$Mo=++^)J_+>RzAaN^J12%E4^w&_bMSLhgG>6v+d}#J1jkpUB?9}} zugejTGan-6)-6I$RM82XmNh0_I78nnc+IJ!3>K2A7dB_ryU#uL+^v68vsu-%VE_(R zjOHRxl-2(ld7Zkc`*}70sZx`k(w%_BWt_D?Rc2$?HIC{^3Vix=bi#XAa9(J3_I9il z)uv4|>l^xayd#Hk)E8FvXmH+wc%q=>m=E{-{<7M-REn%px|fo=lwO2 z-}AQL*Yf`L=W{gh(vjeT9nn{=-|_O`NuN>Og; zd6#ulAy86sfG2?BlK!>XXSAPkmg{ zw^`n$=}}04^_}ZdIbZrColZr+1juD{glSe6Sj@vTnTbDTRkU|K{J@$4JP+io>2raP zRJ^3=Q`{N}*K(3+d!Zf+DY?-=+&bbCotc>a!6F%98DX0g&)k3xBgoTV6Q>XPbe-gz zF}~>$V9H8Q;U)}q(BfgV<JK+-@1&zy?#}yu}LRyB9DeFTGXglj_PRGq+ zgms^eCIpCR0cr@Mi@G6|$Tw4mvKGcysAfYgVnj+u`^Tuav>c5B*lPf-*hV(kcHgwJ z9?k9<=JEouVJos5F0{o*SgoxEr<38${ZI#E5+*v~O|HVD8v!=SeOKq5jR^Q4fNZzk zA30$D73gF-ANKn)(p}lKCQDqau^3B6`oh=M(^U(h1@Jv=W$NT}qHEqch~G-`8z5Q2XS z6*Yvh4slT_x<@Ms@;b&Jp$k#a+ClFI9ul~H745u+*+3n#N?axxlY2j%5W^7E>295_yrtfw008G<1sOflS9r{v{`Yzh>F5D{?y z#)#A?wkB_$mDNK`$Z&AqzF^@^GRFLTS=npu7vLf5R8?H{CFr;9?$|4L>4Cw zyMb`orw&lIV90|JL(%7*0+7Oms^KaH*5y%#%AiFMH)-=4Y_Jd;Pk~Ta3Tg8v89wOM z4(#x8b0NzTCsD(lE!9G>Y3JVJ*9I;}IT?i-J4SlalhE@*$&Oea`f5>zrUhleNm6S^ z>YX_R?f_0!;`d=5`pBY$@RiX&aqJc0|r}7uv)-P zkN}f~(sJF84_7*L;V2<1yp(Du*Gc z^+$N0(cIhdq-w{=-Kf{*h%MWxX)^+=F-M}WLEW5eF_AIVn_<$&;;+^eTM;y;hwndKNc(Tz$&3Eyf>*v3@ut8&ih zZ%HGlA=F{Y?gH8%l{mteuRwlalm$pLO6wbkl*Jj_;;Y-3O`aMqHbMCrK~70t)WjO0 zaw7foA!gOKwL7`x(CyGIN=8new)FYTiXh08a35l8?Uj6ih5x!1Fx+Ag z%YD2SK_M6*LD%6|d3@Qi`ja6x8yhylU!~2y!s+@Mcbj+eVo8n+TnaB|qFzNh? zz$CX-^Byqm61T-wGgtwk%t)SfH1soTl7_sI7G*Q9%ND6jo0Nr7%syTYZoGbq`bBQo zJMH#q8@@2eZBZ*7iPAZ3*Rlqh8aFyAf!V#$Mo!OWW#CE};lAXwbsXt#Z$K?=stK@4 z8)>X})!=s_KM6{|3}u%)3Y~NwOI0MUa_ecJ3mGWRnXRLKP+y26(kANkEQ|< zH(VhF4yrZU`MsNE`BnORxJeU93hlU+RxgCX{_+vE9_r5bA^j5>1MJ;_fGX2U1b z5`aj!b|4)z*5!!m9-+B?3Sq(kAAh)YC57KebW=PW9N2$&3AcMf7cyi+jLlIIXLRpa~K)P ze@ZktS>sW@*qc8oZ-hyYlAm1KMqBdI-*nZQJB+qQTH-BomR;7D*vLW##pJL3U2}-F zOn0LF?gCw2dbuE1)e@8$+6+VHrhM==kf%&0G|y(s(}XHzTM^*5rEZg~yI#`tPbdPx zYZ`O*a^XRi>sG_!WtR#V29ud~sR%-$y)Bpdg^J5PXjTUfqi&J7I2^2&2TtZD4Cs=i zk+`csXiJmv)^Ox&l}lwKDc*6em?!^`U@yotoRuEa=G%*a5jXY4lQIeQ$g=+gXE{zi z%*>{?sL#u&qOJ;s$3jv!4=g05IexGytorG$>{uI}p9YtFB<_-tsYX+F>LrmJIV=Bv zwNH5!u7~pZeCds;)+uuh-6DPJBmPVPww0Ce#_55U|wIE^H)W>fxP*jww$QC*IXJmqwLMPd<%+5Ffsk z0F|kN@ya!udJLn$`lk+*16aMal4fN)EPx+nXJu$!$}_^_KjmFmU;4dM0l~0t!Gk)u z$-<&1^?`$*aq5la@(~ru-`FP6%volowhYuXNja~^l0Xz&|ZLOpsyiYKG?kK>j10EvrKbu+0 z(P1cFtMQ`~5M-_Weo zJC5FJNxib!zr|_p;;S;G;NP>jbNev;Del=}yILzuE%rP3*d`T*dNi z#8~uJ)7P`5yhoM_KKm7UNzRnJAJZ9l!6M+oJDW)@L|LTINks@>GsXvU-t z%)|eZlg+(WnJv7h*Pb@m(;{Cmdpv}xNt=9j{n03h%dnql_59&1aG|(4^e6=z&sq=* zzHZ(eaz>8=9a4g<>=7U$mPkrl8u2Z=SW*lSa%PF5-sG)Wo8CN2_fDZNadGe?3{||; zNDNLH$$u?}hPE+g>4!*T8AAn*qE>$>aiaTJUloHGMV7G!A#^DOG=~)gSC<;Dzq&cT z9lBN~1v5k}1}UAQQb>i0NnuH0NCmPMNu4K>2|%OFm}*AG1tKXe0o;`{q!3w_B#8$p z35>lEaXK8acA*M;K;`WxjpnZe@l)OJS-6Tt4tXXI#|D$9ojx_^u*QG}#FOGg|1c#= z>iU}4rTn^I)P*VRZMZVh=A1t(9=?l8KOWUmQV#|`AX-lRuw;&hi4#J#-56Q!5~+xi&1_vuyuNt!;=E9_tRQx_X;g=T-@X*n zEME$arjV74H>`^uYoAI?`$fSQrhtQxX<@=fT|41Fcf#Y+8bm1>%5L8_ahN9jTj}=yO_oo?AB6(a#Tpe2yPy(l{uKa8! zrXB%PX{~P^Qsz2HT-Ii(_K5$Kd@eTbZPa}-U!3H)o`q5ax%SEjMnp>i#t)|myEmSP zqOfU8ya*4aLgFfNp@#mcRU40iz(z_890dlIcvCSgAU|^cD#bZl-nIYhoUa7eUxF+{ zl0Xah6`?e?iA#bmLKCRcj1k|}8FOv6a!AUH9Z`s(EtyZ%tf4^^(C@L!M$>3-N`F)EpqdA&v#a*m0Mzix8o+gmYsKjxWQ!!YvVm@>mG6k238l9DzCC5(>Slx%!iWlD%Y;?Tq;f68AA z{)>+JEpBePkKtlrD1{bR7>&(1;?5w@I#`_58le^J)xc^&7Q)OqLYxiVO2lFW0WD3$ zL>DhX_yz%x`I`z4I9!R)QHdne*9asF%33C*blhc1w^PH6!HX< z8nGJry+S%139}dBFA=b%chgK5Dwh&W;}R5IQ5TUwrWK3G0aAcd*^FsR4Y~TuEs#|= ziHpWcQ;$!_cgzA+UKI4H6UGp=;fe$l1(6O4PrE$b z!u{gAAez?+R>DRGAj6TU0d*-*i5Xva|I!C07g^-Rkv1{RLCFmp+65FDZa)WEgd`A% zECV@=ZAxC>8YUNLR)Hcgi->`BjQQWm@&qhT^7^tN##PHNPM1JjOv0QhTT#21afQ`* zel_EPar7fo|9c#U^$F6ss)QNkfe$F?85JWXoERpL*LH(S2UtcV$IgkC8@Ul7xTlO3NNons|1eoSbZ6i)Jy&q5=1>5&$TjkcJ9QnfQ(sWQ)r%;R2UMDXX&l z$|v&~q5xw;anB3Rr(5>|GGHOyIf%ao@G$|`5XRWU0|y1Y z5UvP^lv+$FB*$AgF-)9pfj~QVDmoVvn;C!&#{$HAJfIXI6FORmEJ_mONq0t$9mbZ6 zq23tTmFVO%_gjL^x2RGA-R1oF6%#169oSw~ASsZFVam?CB<^j!=J%h!*tMv%fAQa7dcXP^2S-DEQ)!nJ)%gs=R?sjcl0I=DC| z!_-*;+73>lsDlYNc) z>ff~NixZ_a8PvUz0*)=dpYOQ1WyMB`D@Cd+^GD+~KM4F%f^HOV@15=7y5sTiO5HuI z>)iCwywDSi_zeC(c{asKG=TJ4>`C-lG64R5w6*#6r#N2N98War7d@3U0 zwJv`y^MG1Y6>-R@FiLsY!8JLrSG0W16*+^yD_fnS{N^ltQds+hn=zo(Lm8xq$qk#+ znO4um4v{7nIh-=NdHWj_n4|I#aJIRglp$y(P7lNh-RvyG&>R`Z1P@nb>$qi8J`YBYr zHSEK*7ob@&ZQ{yibFNa-c-R-w$c*Hh1_p9wmeDlSp9VfHT{|LjZ~1y8)x(G(HyGr7 zurg8q`#`-+KIED8^$7ke+hCy4i~}52&-$kR%X{Q~-1Xee`mU<)ns@W1eyG4O;7^FY zQLHiXTL%4u&iinD+8wSp_;gHi>XF0#KS)cWZM!SPbx)N8piA6g*8BUHfSn0+pklh3 zFrL&*gHe&qE?@2Czn2RWncf#SX9`{>%((*8;s*=+s?vswSpnkr-F*_TG3&5zvkbntqHLz1#)xhBpF=@M7F`sdc z<--{`_uY9q3v;rQJIZDieD?WrQA?2;Y#z!n{&lX*t}QOB)EoM+JT9;M((9TW*7qi~ zXm`v?E@@@Tm7 z-LD$D^}C~Tb9OENGHmO*Nf5%yZ>MY634!%?kw?`v9sNEP8E`g~qC6nu&oowM`rwef zslH0NHDK37doxz%jaEIicxl@~*JYm?d_Q@0t;fop>t!N63&nXV9z3T}gWFUREM?dm zwH=1=4q4BqflV;kgM?v@3L_d{U69EN%OU0)aJn54mTn5YWZr$W9Dxd zDgb}*Y3S)~8yMsl+*{@L70&LlD$dJuh;<|??{Au_^Hhv`DhTlC-JI{vj@0bu7NBD| zu2_Wu2A%T_t5zc78n1@iNxT)VGUUf{ge80+unfzca=&rnHBhJoQT|e|ki~xS%%$Iu zII+JwCgCH>{fvTY&;o8qmF9%+5jY>MFn}9q&n9Q%ar&y|6YDmZKnrg2ZU^6g5C~rM zenzb>rzcivEs=NT*vNX!7uGVJFM7~|k=l%=9M_XN`|z$O1OcVKaE|}1*iN_6hdvEJ z&DFE7d!}!@Gk-oCGDyl*A7xk{Ok3uaWLVCqq7pm1okH%FZQP@oKX#=f>A`y!iQF5gwDYhft1wz28Lcu zKm|#iY{kQ(lIG}f9jd4hrgZlqJ0^&qs~dD%fNm0S0x=7l7k|#2h5eiIWhxqQx7R8~Tvv~js6^uM`8aiMbLO#Kzc#5d*tJ~Thtbd&4 z1fn-|ISLPv2SuW$-qZCCk(!;0Wg|NPE-0mnB8jTs}fE6HIY#SJ-{8aUW_&dNDQgZtdOtrr>H~O8v!!`2qsS z>G-^x^+LUTau``gs1$0EQZ;ifVM8Fir>H{NT$S|D35}@H`CQfEIpach#{%soE=8i! zaan-e61GWzAw;i~^7FDWm2#j3sgy4=auoR>F@7t|cht71Z%6C#Z--x#Zh|e5eb)d6 zq|Z+peI&uo&i9*3mouLoMC$|waxU@V@~=15*RL(!{JrhB^ha-YEyQDH>Mz%2qR5Op z0QbzFus7StBEh37m@NT!yt*$Ys{CgwzKx1{v5%*0&ho?JMJGR;W1c&j3dyE@9N#u6 zR|y50Mm|GA&+7!Y_X77C@iAU~aJYUfvNoSx7k2qY4TUkc*&9aY#jCt$M!wvuyjeZ0 z`693LHJ4m11Q`+baPubW_w$xnAruRMa5j;#Ry9F#fax~y*e_MW1IxDAogFsaW|#b4 zT+tZh2x4p+xG&EsyIy8G5*8*RFw|-SE-&A3T@QT$NBL2^C2T+-P@ANcpEZqXjTS5e zicrNU^?7aQ)f~rE59N#E$gY00QK*hW<^Nw?mU%JQ#c{^ysC_6vRG!-B7qQI6jq%S$ zoIw2!=a%d0twH^#)IePzRs2RZ^yA@xSm<`mp*{=W&dz>7onp#+i*x^7fZ9XF&LY-HiP zst5lO{2B9~DT?oM38NKl=0M`$P{@tR3R4CsGq4*%e(tmuiqT9Vlv!Sr-lpXsz znSuBzgPcap4rHf{u}q*+95n)pAG!C1}QRl)Ry1 z{KCA_9N4|?s1Rf@5yG-RAg}qW~e%|s!>u8@cw(Kv3-ZN=6TtxK2y5EieL~n z4CpDKey5YUENiJtBjpsfR`$XD-=DO0dsdY( z#Yy0Dpn{i<0r>knbpJTo6MeBe0Ft(~hUT#~v`XLa(rel)ek%0{7_N6Jk-To;#lI8} zdZXJ=iPwl;bUhq?d22pBebF?rr#hC4`=!ucyKijEEel|$_GTbOT2rOFmMG6$w!PAl zE93r=Z_`8qkT*@c0CyE(D&ww?{H+XwFoc}r3P4sW8vLs!(za`?n)Q~h&SN8kNH~?8 zyRE0WQKBk>qnV*o#BTIili0?V*`Yv7IZryPnnR0SyFopU2cQ0E=Cs^VK(JmtW(SZI z&?GBy83N2@jJ|qk(#)N{mv%rj-H_ER_Vo8QJFkMo8RFNZC04i!Aigp8X9iT!j3Wl+ zOn`kaWwPE2MBO+I>dDVgLywnWQ;9or$7#QkTDGPfn|Dbx7bhvLDQkjVO<#1(O+aUS zs*3-jt4T1`V!xCSQn7`R+kO4p^`9qFBNcZ^@e-xH%k=v01ep>jb<|m>3whXuCqk3D zz#Jw&SN@}F-4XjR47sp?#{^NEE+GL98-hwgdzUF3924gd=+(fQeX9~~|GTzF@RdE0 z)t7c6?{16Uc$CnX!PUFj5+Z>gi*GQxH?@SnkLXnHYpOD~0m?G(>Hrq;qsl94*YhCh zMpBrF;%ym)GoLF#^OeA<2yOf}={9E?ERQj#^cYGa=ibim? z21rXOAHu4NCuXFBbOpOvS|xO$L>8f_;h$j7e03iw`UxyTtq);Apdtkg5I0C9q!2>Y zlpFnN@Y!LR)vD#r@)Vv_2HosE8(EMz$Mg;wRRV_=N zRM0+-aUp!kpRjPHYN(^7%O8`l`^o){$i$RKbt*bA%gbsP)(D$_erYx9C?xhJc|9g< zH-}ubLZN+W%k~DHbcKC?39XULB?5F9wfQBXVM#s3UIEjUZC?^kk&XWb*6<)-8`)WC>IyEwwBxTo|M`-!wSgCn2zqd=-kDG*~LtM zvgx$yICO`8asrEZ3m8Kw;PYD`eiTC(Wx7wmLc2qK(X>}vX|euxcviY+ZMNEHtuCu8 z6pN)ci*6?y`<+%oyr{;P7D zr02Nv3;i)jEF+oTUkHFRcm8;qxsu#&1DI5DEF+O(vQq~aNnyTL4~w2*rw;36stnWRpB$!u=)hfyf3i__&FrEQ=!J;x`R^Ac8G3w-IdFkD z4+_2J;xmpKzzVek21O{lpn@p9g~?D2$h)MxW1qJ;&XzUwGtDSfmYN^> zjG-CGfEbR0huVopGEjsKaCv#(4`{-l%J&XEn-^6!97r9>wk`w^;*;2*v#9lu?j$%e zHgtdcrlT%jxa8V;_;OOQ&0sdh$b`33XXNMcxS`28Q5M7@6-dHBvEJj8+GcbWE}0km zM*746_qDO1iHg&82-V8uXmHRq;&YwW%EYF`u?w=rVIwv%Db#`Ee0*{RN;36$)2?D7 zWm`YotYAwsD`9mV3FTVeh%q)@-oVt#A#vNU_$4!Fc%@Wj_=&CjO;8|WoikB;ecyG1 z^W1gZqi)jx)B}{*H;Sv=oIhG4zx=pGl2JV0d40oD{`mJGqLVHkbOb&Yw=FQ*bl9?> zU1g&0IO5nVTBHMI2K3^-CS zZ(8X7TD5*Dq+$a(j&lm_nD0ec!=9j%+N1t2thP2}a<;>si8V=0-|;i3I_0#>O>i!o z!HzI6ni8lSw=NulPb;X&7#UQ@QCje)tJ~eA*ZHq~;>Oy}^Ki+R2HcFun3D*G+%{2j zAV4UfW1tFejtVy%jTV!&*AJ5-xX#_iOI0?0S7+VK6=^NTyrtGJmG&mAdN_*>&nG+<~5J@1<-)BuGr@ zSpJgnDXg33cRRGGSz6{aS!4EHUFzKl^T+cuVn_Ovy`}DrHpj4wJ3Ujcn|sgB725&L z=>(=B4msOrg#&|I5N1?U@-bk@I+@xD3I>-+S|soNn;7@JO)Q#UhqZKAWo{gf!jG2^ zT|2>e=)d-b!VBWH;uf0uw^G_1b0XsX%e_uL12q&=IjF;AJRN*{a^E3;R7B*N+Itf_ z9R<>EA#C4!bH5xg2Pz`Q2N*IxLb4n^@hBqH2O*n!Uu%(>YK$4Y0n9Ds{~k^ZIZj0% zPRN1rsj3h(oHYP`IjzkSNG}|A9|hq+`F*cAc^z~~QB0Mkkd-ZV%u~DQuL+;%(&M)i zxN0hxij%09w6IO#+RrsUm>fw5CZ4(Mnm`OPb)OVsBQTuuC zzO&^rK=!n_d~Y7{)EVKj*@b> z9@m`CIdy0)HY$Fa{-!3=5-PHNQwrp}8mo$V!3>b^sUl9&C8M(6XdbGt3ucB@%{7;R zy+y!YbcV92syyt9qg!Y3Q-~4q$0n7p|AmRY+SfFQJ(du8y*kp@o-}1j-1W!gio93a#;mEpU!P z#^}N@Mvg;kbhmtS;s&2nE?m{;mY3mWtUG{8qBlMN{){ZEV2(E%J;xV^H>EFsL(W!b zVlw(q!zkdz6MOK|Vkol1DC{yPwl%ut)(O>))?Vlm8kdvX=wd|+9_`sNJ(&q5r}t-N z<&PL=7G2Fp2U|lisKQWfX?_eMl3EeB<0I2S+G+`;Zqo{YCxJGLs7n9FR$3jMl#c`~{cRyQ zH?8q5G_|xta*)Q-qd2r_J8SbLz!f*AGK+i6C+3p#xRqm7(J$x#t|0x+Qpi`zBla$< zmxX?gm(Tjo&z8TgqiT$cpGK~kpGF3hvntgOEpa?ZC&Wc!<>C2L8n8VT5_IZa1BW0W z+Yw8*JUm6_$jCO$pM~w#?nIJh> zky%_E{Ry(PmRV+qIl~>Z_v+%3g7;(AB&;ce%stWJ=H9J+EQSA0=hu+?8FnfQ>pn2S zG7-U{ieK+S!X{A5=KhyG)h7~Un*6K;q8M1K3~9|eTG92S!qe^eZvthG#-iDUoMyNC%y1zMjNqpGryI@ZiATF}t=!d7oaMESCFCIuy(+2vx?M3V^- zL9;z^s03q3hKxFKBH$n$ORxOTm;B(;-`2|)ll+9$r?Zl^P3+XCcD-DByA+RoBU6*D zkq)3SGu=bUo8C9e5Z_B2`M@0^f~5vxKe17dZ{ClP-}Cp3mw&9C23OY*?v~DZ@?nFA zRa0zZ*!bhl>9Nz4zvH_`xbSVs^`BH|XS8xr-YZU7))1VCtdIJfhJU?OU0p9DCtgYC z%t7R=xU(lECpSd!gyd9E%qdy4)q+t|_=~a!H(_1HYJ^#hPY4%R(*X@gu>ss9nzsR* z*%D#b#>Xf5C!BqeqD6?ooQYwkg6xw&SaMzjyhlMFQ0w>xwP;mmQTdolfZ4p%VPIeTnoXuPoO;I-zsze zjlNDrW}T`Y$d~Xm2A1tigPOAn!pVhI8`oa*gQB}11$b=#KeGNhDvsy*K|+9_ z!QI_81X(Bf~zfw8%gN-wM;O9qPC!zBM}b1Z;6} zmZx~f=!>4SNB>MHs11fQQaChBaE^pu`f^ko8uxuHY?xY-(7N71SP-Po9RkE)M@d4!0Y^!x~Yr;4zMTd(-4hvNQH<`S7{gB*@Z<>LIr}zEG90nTA zUn!ajOB6nvff$^4`XQPNqZDODf~3E^+B#AOB)ntaT?T%C{cWMSeKl;4L#ywfG0cCR z{K?YAtsd{yL*``xv=Jba$H!7}mHde=h#mR?J2+ZldTT{2;>ASf{q|(YT6L6Lr}12R1iRX!2L%wQq-S`Pmo`{Y&^TLZ!I`hbXxESnBK)>X6Ff(g-*g z99!&fLrH?eAa0M}!pmE)Y8GC+2BLZkj68N#cXw~JCdh<$aNk_sF?VyQF_;vwAH_be zow*k0&BVN}j7q~3xxuaZVE(BDF~!Q6Mf2Wp{6JdLYjZfcRTJsHsgO%=bs^(e%vO@> zE+)KaW&{<^G%t^%0^G$4AY;tT#Z$-iza#b#z{LYJ6x-k1>Wgej*pxh=DH7^ej*BK` zByVs<{&HWR2bE#i_Q0qotT6@k$InaT#)^P5qHGau$~&z$By#0`<~lfX66fdRym&#; z!`Wc)tmEJCLgo3=E7+C&iGPMA`%2AUi>o~9isnV&Gt0=1vgbzvEMOe#vZg~rM8puQ z`C}Vcs7wtvo*wJA)>DpQe$~_Ip%O&D8 zWrbhtN%_mmBV7Q}MliwNZ~eLtbSSCQv6T#i84;c0!Pq>NJ;^2Hj;(#rsSRUkqg((T472a_Q(eqHK)p%i$#U+vkvN z12$8ja(rZZueB&#Ktz7)3^q+hjW3kruihbg2WTl|edlqjTpb=;3)B{@=IReuXDXfl zEav9Subz>zR8#6*wwz+0FaNypwH4;LZk1hqbk=pvZsAW&6vZ}+}pwk3>c*Uv1 zFjDUH?}iMDwLOnp$9suyfB(+>5(b&$#r=xF`<-X%x`zG8aJ34)orhhJLzugEmjAiP zjktVcYCKzt)+_W=KeB;6Ye*(ZJyG6Ov+DjM9zdnn37?b13!%bkd{FZ@*4-NW5B;XNsdF?WO{E@DnrgOLDge z63U1aESWC61=lxC*45Ff<9-nb69a1dFk3|#g2jvYSofv-;7VJERxSA~2=imf!9G-Q;a zbb}pmPX=ze5+#=lAb;kWb6fLAF~^+u-**=?-i<(|D~5Wgk|4YL*4c&z>mLxklQC^F z-CHZ1b3%$k6*~iIU$BEV~HU=Ho$a08t!6`C$=t5o_ zyL#plTvfyd=?r&f3+kHvOD&@O%IM!WLK_nHRwU`F1G>~TbDh}S4a^0OjklOqXu1%f5SJmY|6>;FPP8C*gC2vz_FD4;W(VK z0v@huH%TWQQjNl91KZh3F_&B|$_C@IblJ)NOFo|e^92&A@FWYqr0n8{U6q6aGqtp# z4oExSAW<%~O&gfa;}+d9nr4-}E7u%OU*>uaDeQ;#7H-{}!o19!a5iQOBvE7TGfo7r z$wYIofSxnfz^2L2DQ~fl%r8GBv}LJQ98A(uMn?54^sE9ssK%jJt58((^9*c+1p~q4 z`#W&OdCS~P1yRA-w;!t|TY-=BnrbMW3Nx9^^g(2WYs0OKL1y6&{daAn%a+1nxiZyO zKvyl9K$4rB1R(lc4Ml7I&e06^ADG+>TA_9SMD$h_NfP98is%3x_Nv}SzdEex9Cz9f4kqz`K>X*zY>@J*02&hngsqg6gKJv#Lp5f zeTCdcD`;a0QabAjd-wf{RxK+}ENrUn32neUYZqOiIEahv?NJ)d@%&k;@D7GOsrQ*h z_UiixNob$xoi@iAfr>*5D99(s|1Q)fuuHU)b^E7r! zcl0nNMIsS15|P20sBkpy9D4nJc(dzUGu$wBF7}>_yV{h}4mk?FF|rKO`5Bt~S{8n* z4v`uxHooSM86eE=%JM3342$g}hBfNXO0RD9zO;K`x>4EbSHbbtW+^jYNIlkA_f~iK zJY`lE1daY@xIdrcMMHt8NmPkQ90UFrW$uxT$=qE7flII~l0{^;e+RHW&}F;KY-F$T z#x8j14(FRCca5(g=SZqlQFAOSshQZAr`TAzzBBPh%W~|*2GA5<+Pb*{ez(Y0aUTrM z=4?E{bzyH))N`bWknnk%eNh}N_PdCJ-lf2uh;1el8!h?a-rE>S?1krUc27m4A`|PK6hSE zmUf^qVE>+ENziVjeZet^wM0ja6tBsBW8SC&$Ry#%g-SY$u^6`4I&V;u%l2A-X~&|M zd;!})b;Vd%AtA_(jMEb{or>Vr8}*JZQs^%7gd3cvGnR$KO&`%q85M=h`7C#oedpri z^ZHgaxfk;AtoQCP=pAJyx0y>d_vJ)W=+Or51r-UCzv6V=`}+C({o(l6e#gt*c=lrQ z|0&4o%Rr}wQK!T`-)wF&KgY6k`jOdqAk zC5oMkUoweDy^3eEAE}409O`d?Ug6ezI7ms?2KW#W_mw##x=+)GbFfMpTC;246x(h& zN<=&e<4OqYB|fdNDl?_8M>%7aY?O-R&qU#YfCsjGZvL^(duf~QxNFV!beo8sBmDL*NixK{~SgGGdbLwPMrr z2?CF)vMHJKzk=bWvW9kY#+?)d(2{wD3dB4dyol-WpO1RsDF$>2Sa`XdiCfRrY>uS= za*?;vJ>nJb^N9W;1*9Q_W7gk=_Y}MfdYsR#aK#lMwcl6999qoZ3E|vFtUa;tv+_F> z{+gYht}~MnL(l02gd1PQrK*65BlA$uVB$z)Y>tp*Ry@DTPlzv{qJ-o`%U?v4 z3`%HrzuBWgg)SC$YFdh^I3(;)xOoOgHRp;@eSF4U^aAbc>D~7`d%=mM7r*cM z&K+10j-Fww=Rd#TKJet^X6M!nw2RS|(9Da`{03JbyA9sUvmSj_{YJNbaZ`~rob!vn zO`X?awm;(LN{T@>`A9PX-B~5_hN;~6rb*^Fm<6(!LjTCZ@^v$ByV6c8K{J`jyL+f8 zuVzlGa&Z*p@5?+0oa^LL>#38k<9vxEGZ$vlkXfp<^ov&^vRbjK)M(kuhMs=?tFs$z z6xEN=q2IjHQ-e_rnV@(cb6%PM%8<#rN}ENME6%7&6`Ar zO$-W4r6vDsIiKUzX$zb*^iSoV_j+@WX!w98{#OJ0@c~Z#NqQE2-bG$wob=YaB@wKqi$S3Fw8veZ{| z`Ycl%XQukoZjm}xvL*7x-+pkZKp3q0kUNA37{+1MBtNb^_zQv`8}b&`8GXkIGjZm9ZTa-k3eZ&lgSR6tVzc;e@=jv@CReG$Wx1S~Ug*TutZ1 zT7d86gnB@iNy*K%s4_!h51boVU+dJf4r^^M&06Pt7p4wn(M~tmkc_gG?!mZijThp` z%vo!>aW@0!rxvF!wO=70=FR{SV>PgxJ#pH(DVawJr$~&)A%#}LhB!ph#t#|>0iYl+ zAzv${@auZaj*Ln|Ue_-Nen_8|wcao1!6cjK5+j&zmkPw+c_Jz+n?wG??u!8xYr#)j zkLWOUMyi2)lFw+3r|Q_h(UB%zwOJrF6~n(GHENYSm8{C@yX0x2_2A@~C-0n-h>A|K znHYiVrfH-%AB?NIzqH_z`G?21Vz;^cmFgybBwj~sY(RoufI&_L8h#`4;p zL(i>X#}6A&kQWy!LBM2ayWW(eWZ3#HP$$bZ8#ipQLIwz+V7^Vvle>sRJ1kQ8HS(1~ zrisTz&Cn3qWnWr$lRR&nY!iAf9$SX%8-R36mKA9KDmPgyMc zf+Cb?nWC!SHw}-B+ukb_845IE&1gS!BdJQuX)?7AGqWVV6jFZ0oi3SxJ(P^i`V8d2 zJVcoKDkm=?$HtjNO@77l!yRZ1dpLMmG<|H&AEkfk^WH@N&V==5X>+SZMfIAt0yR@t z*j>vUwVz)D&pLHA&19((UD?Ik%=_aAA>+1HWRw>eZCw-U$QRTRKj?@qlN$Ltf?)Revk}YpgyHBL^9+P? z3*V(aW^Vu)UEww}dNj#p=MQoTz8F`GAVK`g3BW~Q{=xKhQ-Cw4_L1l3tE(mcLQRrS6MS+|D}0Yg4C%(3Y_Ai2^7 z#r)Y|6Qa0c(_3Z?t2fC0y)$&5HrM|#S6SvHh;>MNW7_TJCsH4Kkx8XWdS0ofLVi=s zUwrtN%5P^RY`(5Nf%da@NB{oD`Yt{=I=S81iiPQS0O0l7FWU>b2;&nqK za}okRZxHT6w0L_`h650$*iFPW&hZOL>a8GMWQ}-)QIs~A5XUo#LclGIH+lSi^kg$+ z?$5v!DQ-Dcri$ns@Ai>l?VXg6gWW=j!WN~+xilrZORgbKv=-}B-=&{TiNSQDhx|>_ zqL*BDZcXoe)fil$=3@kA_O)-c(Kf@2l3-@2rVMqr% z`x2ZNRDB8kt(z;U*EMIjZYVAkFvHjqVkO=;M;;}uKl-$q)_K|btQLo6aR3eVqzpLM z355;<+pbjUbI$}&Y_fzY z0_IW%7Un=xpjq7~)1FUN36}U7y;8V%rvb?jxitWqb;@}O=__6-SCs(Ekr? zhPhxf3Jbjtz6S#k+p~3mJ`F^EkCR56j(z9GLeH4SKuE2D>!8Wp%O;< zUT9y0K|A#h{nb5dUo0@A2bN01BC*y-=Dp*nXd$|!CG4ry!i<$I7mgTZe=M{msIVCu zvwuaHiXlPnGUAr_5fcpVG&XWB10~WFS^;q~Fag>sH_;JzOyaS~cB5p@Xj5*KqUF@p zb~E-yx|D`^L-3}ruXTEfAx6hpiflceEz85_6qnpZj;54`>L4JgXe;rkE`{_2JFzG? ztJ>O?=uTX16oVIoM)3({nw7P=iDfgek)^k2g3Ahqi2-Kf_tyuQszXo$QE0cln8nV*&nKxTnT&_emUlSwz$TK*v2nRK}7{4&i=Y&Vh}qPNY!0L z_33=X5DPTrpuBXbFiERKx`F40p&0qeO)IpR_8$xQNAvZh$1$C&zU3L>+z|WdLV1+m z%l){0!Sx>~&0jS)>8nE<(ifjpJq!pIBV2aypI1o~yZ>Dp)69}h#XoXRBONYKIzi1? zjeuAr&*PgB9u69*zrL@viPzGUq+^juQn^Qm_d-Q45?u;yf$Pupd!c3mIs@S)_!z|a zTBE2MuuESA|D0vlv@Bm4HFY)?K_>tkFVl`Pu(9q*K=|mOnV8=hV(_C22(vt8&mPEt z9~GE!RC6v)_zU7D13laq&;~PdjVq~(^2fls%pCx+q8}DVZP8X{&Q#E5IPLb>U@Q=_ z$r~P7X*W+KDsZn+OLTqV+iLWEU=IhVq)GW9J>roT-_ORp?W@<~v&>B!+kF9vl&{L% z#h^KUltp<=JN_Y3R@aA|3W(}u^B}?)vId&S>oB`rI%%ACfdy+|7h6TSZ*lC7Pz*6P zM#nh$N?bpX7JuP#1lj4ZcBr_1H8tHXq_T^#xkWk+D2YeBg7f{okOKHgV&$;(`d<)} zm?io@ zcIgvcYko+$Y->oD)4q|)+D0tR+mMi*p2My*>n|bIgg(SH<|c@ffTwjDPz$k6n)YA- zJe82Le-2H^Qbz`>e*JEj>o^|wB1d8ZC~b+q-}XsiPj^a65dG9SpVZBxQR`Iyf@8Hq z1|w^Dk%9n3-y!?Ci8>&uEkXCuP7c50DG-qHQ{W}pvSgul;o`8vAdIKs^pol@u(XHe zkppAT6f?1!Fwf3-r~y417&+}3F42pIE9R%!n`b9#n;DYw(M9CSrhg&}$syE>|3=;^ z9e}DPb=47>(`bM|5tIAxlgd=g->vw6x65P|>OFD8SJKrmv~>ls&^TD;x^+2n$GV+U zCzi?P%d6Y<8Zxj(XKz?w>`?v#rw0;7X3Gm#@ljsI4`0X6jxSSUYf7mhoS>&URA4J6 zjolh(YUg84dF%@`1Wc<}RVD5@V2F+R{ltVW$?@dp|sqp|)j+4gbkE>CU1$8UM(! zde^NCy&Kq)$EjQ=xVRQp*7&j{q>AxPQ-{h*Z7tKV^bm0uA9dWr5k@YXNJqFCoFgdj z7{ppaHHBF~`z@b#6?NQ!lr33oda37ndXcZI=K7g%+_BTH6VR+BYe?O(fV1?@n-mRSuZb>Xj0zBSb*n49LHl3j%4ySM3`B5QP+7D z=~s-y$D>Ea=qdm+h!mF$eom4yYRgB${I~*sx>6jFs}1xLGA9VV8@m2F@jb!@zlpKX zQ_t%aQ_ahSWgTRK4qQt;b>Al#N6oFned-w|9h7{fl|x!3`oRN#1#eqtno!Rz6>B7s zflXS#MQ;N98B!?{o025bz2Q+Pk;7FYRWch(@dZI!p^P=2vdBp_1-(dR)lq$g#Oe_bh32Qi7+vqtf zqpR@OWTZH>G6ecWxV6G~9U);?b9h61hFknfX9SK~1tO z-nM*%`$oxpFpyB~{*tXhtg&OB$nZ7!&zCuqinFxfQJAP9)>mZ_S_rnHOiU6BWF^UB z-sSw_9eUFanfmZT)#nYpMGqHay*~at)FJXzQ;|U-j&AQ4l?(&}KUbY6>zH;k%r0jj zPbNA!$VeLlXFk?`bCJkc`(NY7I%AK(pxz$N#KK^#{VUwwB(dewwDf?I#SM3))%x7A z!XN7sXl}JLkup*yfTn@wj=)&*oWjS8J4tF>8XnJxj0i;vU!cVrb3FdGm}SX9YHftY zp$PqsGB<5k02>@pGCrk+l*W3#OWQ z>8Al>c9scO0nB)V(gvuZt)~=mB7hQU>+OSOcXqFnkQ4aAM(Q2Y(X)erzMW7MVgi3y zxqR*uT~*~1zqW`zQsUS>3=5R3P?59%wj!|onE$51=N9@n&`Z01x!xOYB{$gA#*=ES z#`-$6it(4!N!(K#c2^cdv=KQu`IBl(cpfHyyCkmRN(s?2_dX=}RXl{HS=^US^qGmT zZ8RwKK-yX<(Jr#Ywt@sJ>snNrZv40U)#30$EwO@IvMfaYEZO`bielVk^&MArQ`HgHV zj*vbBIKs4u6;vJ;m}e?nTV$2+pj%mHiGSt3kysQcRACPbU4>Ap$1d|bx4s&1pw2Om zK3X82c8K9?Uj%XW_v|v%LR?7G3}R2y+j$5Oon6dOALuqk4k|7Z7pKpNG={di!^wtr zBkb~818ySL2lAmD$O6@d(a25-!|;PDTvgs)kCK)P7NBCK2%WyK%jn1XUg zVE<__r0UvHdf<>2K93dV1ikxNp}3Zn9fu(zp+dTYy+UQ@M_lM&N!pan>hpy4I7rKD zNXYbm5zNYn?zV?2v~?sa83{6eUx|y2=w6LqRT&65*;i(pr-F5QPszwJFN&<-wNW?) zMg^mNj)KbVWMPURlG&NUhbJ&)qnM=ChaN#=H#^flW#KpL7ky+(9DO(IKl@q!rGB>{ zW5F_}a}#cJ>R0^h_3iuE)%TE)SGZf$=jRT=_q`C;`~4lxju-n;Z%Hig7vMirOz%41 za9-($jtb?Q#yX$J)sDBlb)U!N-DID~b-l#~LvcYbFNWi2#PThHYU5hO;OD`(E6&slN*xb(hp~qD zXp-%phA@`s!iwa0GG7GnZYb63`{+L0oz~)ik<#W{XWwqu^C=KvJq**ru5VJ%*JHR2 z8a6o3&kmjTg)j4hk!ZFlW8V!53F5P?_cv`g&8f}Ln@&fqmUpUb_A5p`ED3eV?kD=6 zhiGmT+vM1b8{EZ-J}t{7SDg3V3ZH}?C;f@mexF6TShCOP0w`8FgCnIYP2fnW$NwUw z6`7)BPOnUQznEi%XSc*vH`@n>8sb*R1!Y6M^G|Tc)*cBMH|Nw!(7UsrS8L5MOz zpi)PsZvM|irsY`1jq-U`}-N*+rwukIuNUA(OJSs+g2 zkTm1mn0DPINt@?q@c^$dpzzSTs9iyb0eL>~MkUAT2hJzuuS~aWb#Hc)m**Ukbq7~? zu#wqJmP7rOwYPIt&NWbU?@ouu2P*{hdh_O`>Lqz9GV?kV$G!E-va{5u4VhG88iy&% zRj2J>b;fgqmeyff^+SDPugz|!#9yyK+IzE)3n%-bT2Tsky^d`vhbt0z$mCyV{d^1EO0nku%6Js5$%-fNNZ zTlBb`$ulS|{7~WxUYI0b6vS1HIUNNFfNPg*GcKxsM`n=`b5|L@w5}@Bek@TB^ZD~3 zOvjpwZHHrtM>uL1XAHRqIMc!HdsCzYr`+=Ck!hyqVpqoM`ioVyj8D`14fQJXL1sH= zZ;ad-yZ%?FmT_ALpReO$*XgImPD+i(Z?MYikb%ILZ`c%U0y1B$#MM*gFrmpB@y>ZG zd;=6&WV%g??`D5i5c9s#ko)8c|yqWmoXr)X$_T4YCJxD~mLR z=QSrnl$WO1W;2z$lUDc{sKouQ%}8;@9YEaJ=S!Lh&} z)t@soHruFO$#TM#h54@?;l#}0D9`gd!#pNhPW7Ksaj}zd4u(gu+;YvctyC=Vgc*Qixt1n#=bgM=y zU*p^E2If0C0L1me*74tFv<5gTh=Pm+F=M*PXACl#e>&$*{92M6l#G{#Os$`0JRg%B zb5c@=;ItUaeY`8V0*dXfB(4M*LgJdC*|q3UA9Qw{>SLC*RlHOmj)#CW`6C%yjQ1;B zw+K=}l`CA*^4xz)dFDA=Pb`}j5(t}|_Igl|Pmv?)jK*e$doEww%F<=1-inX$f(o0; z3I9j1c$S^CDOFe_YrY-#A_CJVJRHLKKTX>3H=Fcoeh@59-<&@P7GGAMWQdz(@Pr(f z(N~l5Aph^5pAM27L?pQEKj$sK+Wfzu7`%>J;mxA|ku*+^^R;q?+Jd6vh?-Z||KAh~ zk%o>guwxItLPR$q^eSMuEY6$s|MOQr8n9hHm>f3XjbM(JOlTeY2cF~R|JySZ441Nx zu8krcRpc*QRZ`rXy7;_YabDdB`n(7DA zv`~E~OHwvOqjfnKmq}+don<{tH1VhVWyq4<+LCF&h&4vgcOhWJ^_n;>h~31iO*%(6 z?j7Z)>ydr*OPt9gyH<0P0I2?AW5%6((TdS0btE}{Jpb{%n!}rV^fAYY^0lKYo%m?BnumAq;Hl0LNV#vE0oZZ7nMl_36Pu^h0Z|5 zr^0aQUQMY z4mtV2en&K`zZIC#!j^o>1!Yf+UOKc4a)73;i2)qD} z&r<8tH>CG?zy{+e{PRIAR=xq#37);1scw}N0Wit~x!id-gm#E>4Kl)kbPupX-OavD z&WpBk2{B}jVz*!u1YsXqrmxqG>Mo(DEAM7TPSmIPW%mZFgC0WX=U0U~t*Y(|XWlex zGrf4Y1+uw(d7IJY#XW;IEjm++T^T)B6RAmalw*@x8G?xhLGtlKA8~Xlq01lR>rZG5 z6yErmTF=T##8Mz%RGWfpBXESjTVRp?tWSIMNWo-sGnoa1$mCcOls*%}>yVAvc8!Fb zY~$1E388WtVPN$`SzqGVcXSvJzDgOkl$}t#`&`|Es_rWoYv;WnW$ekJ>F zDXaTVVgl}Zac7@D9=fg>RgmfysBczKA5qG91!Kix@$->juVvC(Q`$|j8og3kKBcVY=xb?}d*T^*Ba$)rHkE4kD zu>-3c0AB?hR@`8P!wE8O2^r6Q95$Y{d>ea`wY<-M1Y+#7<+(T!ME7K$ncmbH^8H}& z^T&SDp{(rqb#e~Ij!pmjq-6f9<1jc${jOA*#xj9-Q>TNCrs1B>k_=4q2$K^SPZsWV zg6212XU(kGyv-=|R+laEkWp(tMo1X)L`5$X-~j~2YR)oTk+%CtluS{;Zv@yaU*;Tb zb^$dQwvxYv4!JfOx>UYXfnhTkBe8B~0e64S4mVOi1#o&CPxrVcZ7ph%zu5Nk3SFdv z9g337-Z?amte7tfZ*3kvlRb|0g!e_emd^;9u#h~@35p$ZgU;3O4ZPqpzHA#`#nki^ z^MZjM(KV+(__Tg0>0`AvyWvjW7~U0O)IUizXT1;r+dNXZjt;;;j|*lEpXNKU(B-x! zhqKR3Zv-um&h=@O>jq_B*cGN{XVCgPD;;0p0ThbtX^OGtg@Gy@Ul6wAB5QZIQ@VpD zC0GO$!g9Tlmcb;#I%(t|;Z{DyEh_btOeG0Bvo8*;dfrH0vrLIC{G`R+Z2$by9v7#* zOA-ZZ#s|ky>%L{1rOO^pr+1}sJvn1G_dfrrgkcRMsIUsk=)>) z-Y-e$PbgXAc|6p&DJGm<+d}n;-(^@>T-&*DYh5~Vb98&x__L9z&$wt+U+u{f(VH8# zwCP(MkT1b4k6pAzv94C*6rtv1W9Hm`hm^m&(=4O_M#JqsUH33h!J8jW{^S&t7DIXA zx6S}j%^aTQ8AnR_$WrF{Ay_eR&5{#nGn3y&;XJrvZm*!Cm(J6ct-97Ak?@32V0qv< zXpEFiV$F=?X-t&txh=>&?isXv=k{3sQE%-jscPOIkjcyzdF#xP76KDrK95Oc{>Tm8 zQ0lZ@`QmeYMnZ9KdyMRc>c#55)7k*gfP@J)v-F@aUL^RoOz8b8DCkOHz(pHe^CYa3wf!IyTtg!hx`RCyp8E}Z%ze>L z^@$^Zed)w=z)qDJQ1Al3S-w}=qv69VorVwqclp0m46x|?MwD)_A6Wf;IBcX(V$4-Q z5$?ZnQ)D zkd^UDI#T>5>|A%%`j1=ppWE|tp6pKur-EQYXnQ? zgn+dFaazQU8)x%Lb~{_9Uqjl)u|3=T2#E{=o~c%^-yA8J6Vc_DTVtua*)8w#@XgLj zvN-VfXxsaK@2>sVsm`lGeCD(5oJv#jsX3!_p-0gv!|*#`TFbMQhW7gM51m6AqO^?j zxI3E> zfARlwfDXY9kb3eQm1GkU#f!JWB>oi>XZ;^~xD#WI`#C}ep11Io8PHr4nIimy$6ng% z3B-^Oy~@kj>g1JERAG4Pu=HHX|34R`&gQDN%kn`l#RM8 zg{2_xa++gWPvuojr@iG5>~IS|HgY;W`=?MiHvH2h^M;#HoF#f@)mHLVul%Yl4TBVL z0tlJmi%UR;6J|!DILEEQA~2pwVopeo{?%(1*{ znJBOW`YxC@V!YO>cw=_ncY*r4je75s@Sc0_!}xxc{QUm5toQ!>_RHsCfbhI8d$;oZ z{qA`E_3@3-=kZnW4D)?d@N75xz5D$A>G=I6`uY9E@3oohy~gZ;PU+|}j#0pu^_gM3 z>6@31mn=EE=Xugz^4ymwQ`Qisn+KG0gy1Y??2qToxZ}m z?t*B)9(o}1YjF^ge=`Mrq=4uRu_{OSe;-lMUZDp+__Rd{NuJQso6ndu4u1UCmO7|i z41p&xQkA+P_Ez6UenPvSp9~2V=WIpdxuI|>+TkE4_$$)EZ=OrM4jD}tX!vCy^b_qFzRvTG`loNz^J^@ z4w|B$;x$C<7`jo__{-GwQhra-m8XACaviz)+#YJu&YO9bZt6{N@j9MR(;CIv8Th0U z*Mt8x0V|P=X0SD9tuD?p7vQ3oe7)*mvieWHn+(8->bMKO1Exx?2Mj&T$Nzs{RCD*QK2Bp>PSU$@^6WtVs7qOhr+u+u{)jo1$!U zE>j$i1JaOcA~YSfaUjItH9*5Or0kUizx@i&{QM$(5(t*JRLU)RtNNOjAI@kW$9=?P z64F?5>hdb=htV%X93w&m7D0;<0x(fezy}GHG7_l>Y_xUk4++go!?zEe3ySk(b*~Q^ z^Mti8jDCxj!}O@CMK3h-&pp5Y$e>UmghyC^#B z?;B=7A({bkHw~hXM4$;ZF&!g^sQQ2@nn9aOVBOf*KBe04kvE^_NG?of!yFywK@(eoQ#w$VtwZ!S^yct`ibX^ckf6 zsSGMvhAJC4oYwY~*AM!l3}23>ju|9K_E%Bc=!zOzm5}~Bzj|P#F21rt9{sF{*09IL zrHV@18A^Hirf3X6-vrsg38T~()2w?2C1-L}{L^=UNt2p(J&wVxcJC=NX_-&YKWb6c z&~oq_5ey9+YDutQX8G??BCwVtrselh6;9W&bHu+GVv58`B6Q&C^Hm2RB4prHVHlP~ z2Z54k7f8RQAK2r_>@K9Z@@0yypIq-}qsi^+pvOE%qn1x zaLwlXZ;5rEDo2~b$$3qyt_m`Gy%TOX-9N+ni1l^ZNynJ2LWoq_!`~5`E7}^@pzUXw z#k6Th$tS@uC`RD|M1=243R6rB1*W&e$LmSQ<28NxsE)1uWNISVVlNN(fW@x<_B8=6 zKowvZXRBYJeHj%1U!Kl<>@$!7au+EH3-%C=$ypFivQJmr*Bym_Ul)3G@a zPtkzEYeW@dtjTlXTf)MDn&+J(ySipsu8QZgQ!qrn3NX07b`b0{EoEyHChW7)v~yRZ zOUq4E_drq%dL3nn`~*nF+0h-4j%~=^3L-KrBMsgB$erPNp1(#emqmJE?$}D-D8B*W z>`Kt37JN5aAlNo@nxrfqw9x{HVW0IcwYrRvQ?%H8UNvR3up1Ifas>6aXnPeyK_B)e zMQzH2_5H(^<~tRY6|Km=MowK%&Xg5mu!|}uAse^m+Jcov<3ud;!z>6=gK&OIbs`#7 zqp1`B1rL&tJ}7kua(nZO`YlYkX@q!@tx!@;-@R3c+96SXPs}Q$4&%OquezqJG+&ev zrg(%KU6Fa)P{&T9W@UIyQ-gtw_tNhUPx;~?VGZ~?G)r*Djpeb*E!7o6>(H#)UUSOX zg#s6AI4Rp;O%U=|1^RI~hwQdjRR|OMLU#j8=A6^+6g1{g8)#rn6l}|3(8Lp5w0Cu@2PP5t#k@wem#QK5%D*+wcYj zRg0!XT=+2z(kAeK9dAfU3ZHyaXo^f#kG}b7;9t#GVghz4Y)}i^$2w$h;9!)n6N2;+ zyTA&QKm4g_;FG3=nQkZZRt@}3)6H24y<|v$_82Dcx#6r7D*SgAnA>MS8hO(&TX^PQ zu!>+s{xZLWnK(Pm_6!5Ew<94-L5t=6#E9&4Z+VEII`}XD$&C8QLzs|@X%hR2K-^BD zLl&z-gwNfrLFYhMm4X(c{bc@b8N8?XIKl@BD}Km}ek@{viXtqI2gG0%(cR&anIoJm zzT+#L1go|T-<;2!5dX?;icO{?v$faYlw|YleC6y^%BE(a+<6$gAm@4Ly{Es3obHc+ zA4OkzUnyaK{GViR%z`9RH`6uc$C})p0jMykx=25&If1D6J_ z*JQ#00;pLjQ!58Vj-@=GBL5!pcNW6V#xbNihwomHt7Ks_nrXxDk}UYh!Kk1J2IVZ# zykZSzsXN@vPPyc#gBUoiXKJopW*#m&jd+%7!Gu z8I?O=OMoU_FQQWpp%(buXs+{0r4sZ4!x(eW2>smmB|sFC7)-j@L^%4f5jy(^QH-g_ zn#&*8pjSNj%U?r=P!hmnv@I%5n5Y$g*ExLtBh%V%F8{AeuNUl_@Rp^Y#)Isj^9!2C zPk~y~`{yNfCPOrA1uCg^XwqUHII$V?{Wk;X8#O4{v|MN(FDl~465B8Rq24ld3W$|L zbbjiPRlQ|K2&M_uZuZ1U66wNp%sYEP+CU0u8d_!5K6~ScJ>U?Hy2^z! zv=vqF7K%8uu#99+En84bSNh(yk0Pxs4k+%G@jVGjXB#loU6*E*x@d=;s7*7Bh(K(c z?HnCe=84VKl1f1BxzOoim!4!e10p8Syhj0aHv_xn0C0>MzAneJo(%}v+`Xrd9h`$@ zo`4$Zf@8AUM-ELD+3mW|R}+juvj*i%Y2Sb@fzRWKz6ngvNw{0PP;O!2#wYAX=xu+vpP;Uu^LN?I(u{9^0R$`P z7rj7q1Fi*3g#c^v{1T7kgE8(kie|cHE+|)9ab41Wt+=9aq_uSEJH-~n2iPGmN8UyX z03%!-Wx0$upi*jMfWQv8FRRgk**2|dR9fsVcE#6P7B&g6RY|zvHKf7ZNK#Xt_Yqb5 zKk5K#!5_>K_^iL;PNz}ZG_!TIaf6|XBedO)Sx@oZF=;Q(ZbAG8)_i-C-+osF8fs7I zid%z`0s5GYwcTQ795mL-3*env!C&Nk3{3FRFMPFw_cx&h)BZNa2#2S*O3=P3#9%-Y1Wdr4BIL6+&gPEpzWe2t}Jbw%#I4j z!*o%2fTFg|=jtl;EN%p!r)X>Mua&u&Tjic#|hSB*ZD&MbkLM9xWOhUWKaq za;XC@CCDY0w3c-R*0ON7YsQND$+{2P2AF};Q*1-eo~X`-GW#*N%FAt~ZE4!a|G_d^ zopNWB@isv0EbbKwr1@eDh(1J7<n2cOxiKMdhtl9rTX$9F49V<-M65#vVmFtqYv z1qRF7+JbpLGiAHyH2X~-5kdA+OXb;*p)Y06{XDLdUwYSXpIDkk-7j=&K`YvktGQ$& zEnPRgc)5Vioi&BRlP-CRqOXp`Q#|e$K!jno!;ZY}Bj&??WIMA8K1+TJGOMCdB+ilT z#|*ZRlSX2fDObXpqKqV(>*zqRRW=S9lPI&KIm)kuBjgt!aQ~oA?nUd@V`Y08Kd2M~ z|86kr#BYW}?enm2&eGk0eIl4KViD-fGjXNM-VhhAIVf{o#Zc7LVrN4f39$=+-fim- zrUjFs5?W0iAF?M){%_!*N^H7PyYmVqt_Kni3 z45jFPE#|_=IVn4`zOntkS!3eC+Y?r-jmaPT7z`dQG#F((jxFyp1K|jNPD(xpz%p(k zQ(lW}J@+R19j}eYPh4dw5}Pgp9|O?qH%F`dDKXH;+yn6L5aG-+w@WQ z$L3Fg`;iGq*8&tM)aw=66o9IAjxfsfm(AD?b81uLq^U@rU~v24ZS+{tP8km-#lRS! zk8yOYCs(wa0RuH6wi^MN6$vqM=u2f!P*;CUc$XWMP0LeoTqYN^H76bX6^E#b{pV-q zdt7VSg}tJlco>UaDk=rf`(>p%+wB`5RFrc6a}g(4-IJ9C>=rdjcT`-d3`wvR>k!-B7>kS)iTQ`^8tY_yZjuH9?OhRD^7 z@}yzM*9Y2^&UYKE{MkK=CYfK6Q@jC{K=WTsVOxu^%6+cMHn4UU4nt)!!jhfhgnh&N z3J`Xndu4_ojtB$6PscmVcpoacdcb#~pl-yK^A4l*23zbpyv`=PG{NAHNY@u*S+L)t z*1Qa{hu~EZzsu8lXZ!6L8y&!Bnrq z0ipYY(MnVH{8J3ozMo`9LOk%$>r7+GLsDo5>CtQ07_r`iU^v?cfyt$&eFc+|2^}d; zTe{+wl878ACd3W84`ih0qjV=6=RQ&yzPL46)TwKg1o-)R9;{;b+uK)~T-X`-qRYAQYC-={-Kbw*E3bE8QejB5-%6&2DO~Qy(Q|DJ6P0w zO>*gd})i^ngtYmd6ncV-&vawlZb|?VF{T$tUqv` zl?}r^&7a)HcM~_OIxQx;8xB04SwYt|@rG@}y;X3&MEl?^a)dx*ijpE$y^CtJX)XZL zhj5wb7&)Vd-NEthh|gG6`nxi;mE;RtF1U?Q7^sHLS*ZgfW8RpWrI0z?+GHDQ0wbPF zntfrbjmSb}QB&#Sn(7qWh9F27XNTMPp~EwUu1lgB#qiL;{wdL`NjC4-!Y{>gHr9DG z>2eM!Cn(W!V~nG$QrrlF)r;APESXWWG@{tw#3Xr4wb!;P!oV7MgoF?XHyHN=r!lOf zGT@LJA};>_29S{Jkn~71R>JR>M`U6$v3)uGGQC*R$qdPU7L!tan1Mh+@C3R@1yPh$ z$o=`^n1O%NkVkcXs45L*LT!>?jSU03bU3<+2eMR-UKSTtBVTp9X_F8CLAUg&4eK?4 zX;E^8cq$G`zSRuiMa-SW*tC^5y5{4#xk0+## zwGwt+9+f}aB%W~KkGhZe&4PeTj&2&9EiPZ7K;spfXqr1&K{-}|qGX1~D7GeKz#?m{ znC@MJ>}F{mq@-;wVXtY=gT&2jkw^GUYS>AKOpH8Hu0TBd&?l>S{RUgQ0m&lZU-GNS2Otd9LSj_(Gf?aPM%2RD5{^*^KR8_a(=3fHr(!)w+M(j< z36= zwULVoxY`JY#r_uT(qeEBUtATH!^W#Me)C9QO@;!3OAK#J`A`v+B}&%f^yS<^F2md~ zF0RFtNC*U5VD{{>9}m5keI#9kPS;nV%yVP^SDQUglGJlH!+ih(VV{DGkK|1|$z2L@ zQ8!i>wzO|1Wf+8gG@^f90qKB#KnK`g4CxaEkn_U@U>|v~!2n|AiRX`ptwJ5En%ses zPkavFk-_AHvzV-d4;&%Y`w7JPwY;_+&G0So-r2DP&DJT|*7)_(nSdVi zAYc8CwB`-n8=U3)^M|y{@F=z->74`dF2q&H=^#+|Q&z}q2T?%mjzCq_B#P+5i zF{J4+JS%~6tPPo?u&`(yGeeu6*^c{gvjIx=lU8-TZ!Rzm{UF4mp0zRtP@q&w8pkLu zO~X0TD|K}gNe^R=%EbFSkC#jJt3#Zy#{Bwf3q5p!ZkB>b0@kULfkfDr?WF2xh) zj|1TT?T7{$!lzJ)$dmEN|ChOvq52Vf<87_7JNdHd7op@rhH34Q5OC&PQ?mF>wJ>6I!Xt*ne$J`!rXY9aYPn}y+9SeQ;_ym#kzH&b>oJxan|J)1$2eX z`~(KGu^r1NJVVD3G`Yn2IAkP|Mq}9F23kRTAoo>8xC*sx{=FMK6Q$)pv=R-Ac#n5# zaE*QJK{5vHN$SQPx7j_e<)A2Iu{1qGM+}Jy1h3M1{OszRTTWGnS_a9bo=Z(5R0L#{4HM03U^SB8zw;7WJSu80d z{#DgySm$v`?+!PP3L!6&@v!+C5?SVjaZI4Kel6!b98NcY{>LX!lZZRFEcaMMB-u-1xC{5eg12MdWPX$;cYHhnLO@QdZjkPg%eR z1)%mk&$77>&E&=q_6Cb4xcWxpF-~k&c9^n!-4T>7t(eh*fJSFWTI!QEbd#% zA?WcbB~Qy{NDHUz1a**}Qo{-bVhw52|Gjey)l*_b04ln0U?!t(QSJ$8kp$lO32kms z{|j*sfO7&!A<6}063$WJL^lG6+SV&~?~=4cLiGB`Jx&g}g!FL;B3e+VkFnOpaqvUs zWs-jr{+tfh)Dr;2TQTr9yqb@w@(zba)bO9RFFM?@91Qtrn8gr{RpX$2f2=p-HSRQC8c|?F`xK z7gvD9j7vW@P23WI|8j!kDcV>P-33BL9Cn%3$JgRy%I7*Y*&+f)x&h^=fC+LgI%DM-@8BFGo+9MIb$R%OHoTnE=bnWT-iZTs}8Nd&tgz_ar{D~QwM+zyv zaVWNtoAl(tYNHv91Ru+ph>NGy8roK&O|{@2PYQP}3T0tF%mooiQ8{*WuRcn> z*>gU19U}g5+ZqJMMT+dR`zP(**tP)fsgyWL0n_1oz=s{OT(=Nr%+2A4l(J|LL?($! z)aG@~`i2MJ(7cDZmhG^g#`FtAUKhh^&=ZDEsDdcV|b8qqLdcF#!@6X1R52Kxm+9l ziu+B(3AodVy71wj0ywn)036yn$9KqpvntAxDbBltPdzzp>l38;$kw#S&5@1WQbi!% z;-MhhQvH<-Jn+yz4~%(@dd}hY(VegS&NTCB_pQ2yM>fD5UtR{oe8vcPtM3Kz@=KUD zfj|a)FxLSJ6m3XHt6+=dy`_l2BQ(j$8&c>!2w{Rj4VHRDjLjekpPH=Z9{*J6{-0B)?o z$(5hkXj>&v^N>DhNXUVvH1sOxG^?ARQ9Ou?**5@8MxTjwtx&eM%!ZNKGcOI!1)bwam)vO zmVa~d`!w7gKr>Bh2HP7?fJT}q1K9sD$?H3YDpe#d?W+N! ztGXC^u%~bhO?CV3c+`RAxyspCRe+9xQq-5Z8=`~M#hU&&4H^^6 zaoLb4q;3q>2^?)n_}(WujAD09V7qCR>I(7dBzrR}jit<;DTMfFF)LB{z1)t2N1l3` zUy2KJ<3iul^4}SfJyD=fE8!wiA>co($!A#y9%UP>Pk9vaNnbGus`P2PY@X4aMjn~bm z7>7=gl1jgT^5?utET2fF3QE-X5Wy|Ema(Hjl7_`)c~-Lj4ggiQHzBYxZ*`2xJQ5?& zqC~44qC)E_`EaN&z6HGPd&|*VO?NfY8_dl6^-7%T71gMi$%w?XIdLca`RPA-&@|a|6or(LQL$BUE1k)SlB~ zIAX~LHR_+g*bLWIR!8D>V>G36gBK2s5(2-ilhx-{YzKO9%Sp%_7PZnK-tb?C&=t3TfAUvfT zuD9ICyVIH>r2U{__+0#M3djqZ{-m}eZUSK{D5jqXS$JIRKe9UP_aRviAGhLf0*?uG zx3~b8O#uF%%fe@Bfo9Sr*U@65L<4k1MneQiGdgUY`bIqkNWXe|{*OwGt)I-vZ=^?= z^YX`YxXG@P8?5OH)m1a z3zlKr_;Mywugeazo%u`{KLx@Bia z_iVqIeP8uu8dM%{PXaYIVKd3-YyBY+Fc?{4(d~an?LmgIAxuccpPEs)qj02F5|pVA zm>ARBcYE5RkQ~k^TIw=TZf!= zq8fOfOEF^bo6Hd)Mxtm14a6@b)|bW(WD-R{-koq{j}lt?^=|?pY*LBXkY3rJMA6v1 zrQbsibW)C@AjJaQFiT8gh*Uq7y4^ENdTHF`nf^6t`%wR<+eFb0S>Q5f_P@HiKz&fc zs)aLUzfeb>bfVy2E?k+IKo3B^)EGBz95|Fb4D|aX4TG5r+S~)r(Fp(2P4!`Ld_K7RugW1^TU;pQe{zD@v@|Zp-~J*yci_ogH;lUMTQ?$&FD^+p9koE%2C)GM@j5YX6(5J85!!;&(JU(gQ%@a<+sz zUw%B8fG75+#oLpkr0vT)=waMT|Ft$v}Cll|O-R0_HMk*Gn7m>jwsTYe_~1X&TU zUmeZ>5FfUtVvSg=fvJ&jz2}_$2e6(2rXJwY_3D^00h$=4loN_;?K1g#_mAA9i}Dnn z15<)=_OfxEKM@Gn6JCX|T13rKKx3q)w6zWtgeAh#RtH7JW-&-+6z_$qme+IfPy77I z=2e&5gn`)P4GUlUZjDY|L$nJ9tjSDZYApjQn3U+@Lz~ zH#KDr_P>cc)q44ndIlq1o7jsqj!vhn5Qcby5!(U%7 zn40cLE@h8!zcd3)jhS+91(bEzU+Xb?d1pM(^vneL$&JUHLES5cOK$IHp_)_+5~N!O zaDoKs;cxJ_1lScrxR%fhpf|YTZ?M0=OV}O1yyz!Z{NUm8dYgl~Jdo8U*ckobZ*knT zGYz-5gmA4RLAW$xg#~w|nnw(nLb$~C@u5DKNt)*Q6w=7e^ztAP;%wzDc5Bl+_sI@D z*7&WV7-=pr63-kKL)vamHev|5i%87{;SR^ED=(#ZkM!>j@A=u-iFsEvq+L*7Ea@jf zYzJ<=t}d=9^H0J~h&(#KO@x##(tl_0=*(!*%nVCp2%*8e;8^05;esW6hI3>^V;G@u zvmyfuCd}nLN$wvzF!@pN8OG8CY~wbVFd5{f?w|K){*0iegD*b6?V2#AQL~q7j*iAf zc^ACoqo;snf9qlVgi!G}{)}D*9)}`m2}9-PqxZI!lVWf-CnF&X;f|^+tKCH4H?xO8 zk&}X#Q9dQw{Si)22o}50vD*mbA%)jy%6$7H9x52*>*iY!Dj;qtF)7 znq_*{C!k7LZ);N@PsN4dl~)HE9vW)rw?BO@%|%K9c9Vy)DQbR4%D+6Q2zhYdK*Y~O zZd9b;-YnqcZ5mY10Xpgd1NHdO!MgO|euFgzsi!Elf7f?8Cbg4CqpV>cRlWM^UVEW^ zDUdmISHqV4`opT-e$Cvt-l>*?x(ngZ`Lxyz3I#Mj{2#+>RsPT#mn`G~d&*OwuvYAB zc^R&pv)YhA!;J@R*?KZoK$<1N00Xmq4C>2Zb} zdZ1d3_u6VUQgIDsCl~S?w`rC~)%B#mcz112o9POD-z|~o(tEVWrHPs5S-${h@?YNI z0^{GCWVxw_b?>G5in~J_PH+mf6-(3n!4v&jPn@f6GK4j7)AH(0V%~=b>GCTD3B9RG zIt>zRTW~A>-Eeu|#IV`;C`Bg;a`jjo3`FbYM(D%+5Sx!X!E_UY0m7k9Q zA?91&&0!uarsuI|^>?CcWL?jZX(;*e4{WG-F_Tf}!2v=N_xTi~rWOOSxocyIUUNKQ zQ`wq=yt{WG2TehJm{V@pkpkhnmnX?}-~E$=Vcu{3I{%Y{A}kJi*C|&75t76HML~Qd zuzIUo#XloN*5I+D?F~sr*~UBN$a6X~Y6_RlWmf`Ur_xcO1r75D>r)pj=JU3{Bj4FT z(Pt9~0kV{FXba4Kv0J_U$D1qW71njFoMo3#F!-Q^S}}I^UCA!+q8%Omo_z?d7&H@y z<8?PWU%M@UkXqoH!VJH_*&ZcdZDDkI(BAE z$2&L3bWLrfi^}FtDk}Sa$Ea3|ETmw41U+|Xk3MYw&_BYY-maH9g7h*jd>nTz(nrqu z;~nYJkt=ZD%4sq#TW*Z~n=&FuhYU@|?fGt6ck!bcmw8WPyFw(s^H!!Pf79#SFcz%h zWoF{B&O8JhtXg|nH;72Wv1a{h5eZ);EaCeVS_GN2m6525aLt1}1A{+2g6DpzkYle| z(Pj}ga9g)$D*y+pLk!zeG^S=N*#QdKo79I+EWyIkgif7g<95mh zC!2T$HSJX;+E0zf6ah~IB<86qQ6FNhON8|_1e z3@Jf9&)EAiBo#@*u9!0rJAf+EPECWh?s!&q`~iw5&dF0;GJ>({Bf85@n_i+&m8Sj%2xKJD5nn9+ zo`PptkP{|{A{SWhjC?z%F&GPjgL&eP5~P01VO@jjLYJ)y3`<3r zPGB*+6ro&H(>X~C7TRnmVcfjyt-a|sb~*2l`FrEOvN;hALJg?aysXL(ziUtaE8>qE z7{*!XF-mTXhKu z;G`>a7I38}fUb!d%m~esDa?)(<-EeX=_>G9hK9x@sr=ge9pG ziO24kW-rhc&L}9z-b8xv6aT_9rH;8LJbeNUD)<7Rm&N-^XTI~i+4su`E;AQeYKEoc zj9t?vNXFnG&w+ZTo)RwUX6=zI_Ae%)h0UY&NV15%;Mv%!Zanp3yN8Ypybi{s(PYq^ z9S&Xp#))2smMrC^Gm5E-OrV_9Eiw^ILH5}YO(nefm4P#S!WiXT!~^lu+)qbk4krJg z79vJbAClM4(mee$@5z$4RyW_FCJysrZ{NVxH4%7CRiPO4Mb%9TTp`&_R=#<|@h>#6<392+&Fjo$#Uhcaf&=dE zMC_}+ho|^{8Y4FRI|6#;GUVlQLL8RUfDklKt!+pkt9$(C;9HSNp;yyEt<4tE+)pah_`qFb`r5v0 z$c(L`B6@ad7f5#u-r@KsWcS7L=7YSfVIjCFjKTb~2|ZQ_;fFP*8uE}<-z03cBqY=3 z5-!$C&^EVo@v*(@;a|B1WLpqd(<2Z^S1#IUKs0nu0DjHU6)yW{RIgvh8kyR)RM&d3s2B<;Ghtc_QfYU>-v*!g^seceF8oob@u0(W9O=C=hSwC z6j$kVqm(wu)PxU+@-9)kV{*7dO;prK)(XPR?xdL;HQt6U$UGm{sFTHwLlti~50&p2 z+B-yFeVDVJeob!O1aj258eIY2X-{l{(Hdp(KmPsqfk?X0DNVjCkJ5My&cgF&&kyO` z-GVorbhpW}h1I)wfFoY`zN5*IH}eZRvkB^Pr*@v4Nkvt-IBF>Y)1>v{w1YLDj~*z% zHGdu)xvHV~=5!246AJmo$)yzlH;$_@2#Xwd@2f1AlTz=V&~Sm(Go65#x=5W!YvtOi zfzG}^H3u<^M)!H1fB(@0X`D>MOys2v71Mfq-u;L?X4AM^_TX^ywB;&WFwONyZS*D- zx!Ah(9sX~?M~@_GxGPqiFdhK7QzM~Hq$K()g_(M9oOZ$&AABXPY=!<@_$UnNB}R-D7n#h z6}M-RH;ANTQ5uOLiG(`nl&Hwm*||~|hA{zFl3@?qqIsnKI7SQ3bp1GxNYwr99kaa= zUR)&OzUYW6@hEBu85N0(h659rP@(XL?QqJ)m1!k z+K~f9k>$czE1fWEBmUPv7o2@RTcUBXBmjgmh04-|3_OZZy^BtLh`@3X>y^BY#70uK z>&xj3C9b6Iw^Sg5fOJ*$NSb4v%NqD}-LQ%NlH8=dl_MFp>7Mm<9WzbL8MnXCYwq2E!co@hf zi*fBmeps?)+9Kz)-@U|tNnzANIX6kIR|9n4x~%7iAkX2Zo&FjQBU&D|Tfle%KdP^_ z9r0U-F}ui){A?oHxp8bD${_~mJLFPBCQ-uZiAwebQA0)yukLw*rjRI${>bmSgJMZ_ zQa+{vrQW>5t|_(Gbi}jt{QH46EC&q*1;gn{Ad%helBMl7N@i*`>tL{Fj$O{CF=5DF zS+Er>h9b${#?j2p=QLh%u%OI-HEKOw_+w=4VW0&XOKxuf{b`Iwa}0UZ)uom9mKx%? zjVNIZ!%g{^`>8w$O}%w-;<~CLozi5w+ES*_>3Ca)o7)CfsseD9gjZMbYi@JJPQ`fYhI@uM zwg_X%iBz^SD=Vqz7BpPlFSv@+#bS@&EJRjjiezUW8)n}gr`DCrCB&Q?j#=5Rf>_|W z$+j*Q)aGy-EiYK)bhNTnCa5b%10))`0JF{1hS|c}Q+1{M*61kRFkEPrY^OuS?5n7V z%~eo(lzuyrOb~hw2!ivb9|XK0%zv7nay^fNKb^L`X>={wdN{7JX-aMR1>LPP$s_tc zMPak11yf2@-cP`{brh4ogV2= z0P`=Q0^fqW9T~k?hWXNr6Z`v3p1&YfAB3t!^8;l!i}uE&R45|m&%Oo89^2+Bc6bt% z6zGSo49Xnco4;+$lY_Z7^d!Y*shxIeYM(aN~hHA2nmc*#`ztW_KP9Pwa5y!pFZY|S8H-Gp=`$E z=!+Fvq{D_DewvKA?O~)cFdPDoWQ@n)YANCYqL7D%j3WtedSk8i6Xb+Jw0oXC^&OcP zym82iix%h25)QgsJRG+ACKotfqjB&u37s6e42O~Z=o?+KoeTA(^9B-$lClf4sZEl!sNpfIPJDIH?I0fFP0K&Yal9@HS3i zSa2VZY^;-ctxLnK^xkzDNCBaC8HEJEU2bKfCR+S3K&q|?%UdFvKSw6erwIueMN9ya zmOT?{bc3-Ngp6Itj8iZEiX8~Fz&CxnFuD_DVCk7Y#alZ8Yy_2iH)@*9v9rP4)7=XL ziqXh1T=ve`Y9OvmTF}DMy2vSi_##hF(82L43aRqHRB$T7;Q*pMkajMuqQF)X?0J-f zzFDg1K;bl=sMGgQSdvPr&2*-9159o0L9Hl#W$|5{hYlBwwVaKwd3vmP66n(CU>3fy zUMnzNni4X(U0oy|(H&164jS52aY84t~H)QuaRgVsR{z>+b0;vR)Ovu_d8=*j;hVp^2C?_kXS?|Q2C^{f7=O4^1} zJZZ=E11gPYqS(Ns1D7G*Syt8A+4kb`aWji0Ju?kc5=5MCuzZ4ub~M4s()#nw1BeJI z8VDYUA3?0`%)T0e4&4qEc=!X`6>ZXggidIRI?PJ>@<^UKq3N$Bax z?s;ib*M!Vk@`S+nfy_l8CLLl@*}oB_yWC#2uwpXlNSo5cn3Plxu9b2u&X z;Yrt@DONb0Uleo4;%OKNy@h9K?^{?j5sf`Yy7!*5SCd#@V?Nd8;$a&!ubn4PdE4u& zS11BNTcrLNQyyoWQY~^?4VRn~Q3t|n)GK$D&x3psc~_onUgur3rVT4I<)cqQ;|qmN z^48kA#tF4e8xmCi+>x{>`aokhFbT*mins0VY8scZkKS--xa@MVpLAC|vhz1>ueKhz ztI3#5Ia)H+1I{IFTH3FH>)mG`gqK-u-znR>g6+bpXxqAy9lXye1h7mB?W>>a>XUC$ zI@{M~@mN(6IPN?)O1dMi5`6$7$OA-auvJ7%%L>pfcN=u88zoE?g%JunF3nEyjq->! z{KXsFW4bU*WNo7%{U5EP{#X{`vt)^`J5;i%WtORr~~iFrtec> zgGhTvWL~?pO}IhHkBKgrJzXrKl4wt986-QT>QXc(nS!DTFAW!#$c^8 z_NEf4K;DEBQvKA+;hq)c!M>aoMIAG%8d|nn0R#%mwU*CMz|6voy`(}U8Pn!6?skck-O~-wi zLmutKB5N|}N!!)c!3BLMm)TXoOm3T^A)K>_YsBVgFV>$~y_j5m7|%W*SVZPR_{M%# z8xJh%8n~_JHNE~h`a6_zrh8FcrlCX| zP@Y)mab8K(dVrZz0E`ZE-tqZzCW47XynAY$9{A4}G8b1nE%czGA;V7oQ{c#< zJC@UhbgS4iqj{aFbD=atk~`fzckgw(z}w@80P zkiQ-2^Z)Wp2- zWaYSY?+LgvOy+L)8kTMH0knQ;=XcXxYE-^KM5o6((u9({@R%zR9cQXpf5{FiU!dMc z%Y<~ml8znOq!j3JrTLLTw&8u2BWdoFm->}^Sn1dacm7ib>t|x8>9b+1v&hv8soS*f zo>@KgQ@S=9{t5+*^>zAbW*gzWdPnr-Ry74D{RWe3rDEfZ#QCa#zhT9{sfFihk+{^E zfV=EM7w+&xpdRc$odHn#meN`!K`ZyXlh!4-zvBzROO|0D91VjMO4e}xQdR;vy(dWM zDq)JWSet2Rxs;YttK5&_CIO{eNp3dP2xy2*8Ra!9?_{OR*f1|kF<1h*GWL|I+|LV0 zAdUtl2>9#5M!S9}E{&E3hh&Q>H)tJ(lV47q2tJ`M3*f#A7XFIDm^l&5|CP!5>FjMr znu$zc$$p^C;^nT0Kx31M01$Uwv+@NG+A!?xzU^^1G zCjM-oeT*c5HZ*KW`)TAI@m9lHrY4~c;H^hkPARY(o;@ZHS;DIT$iKbIZi#jJja8&d zLGG8MW39D*1@e%S`$>w!JKF{uajIe3n|*ref}OsE8Z-}Mvk;1CW#@8# ztCqwYy%iztRrlVb`(!fvd~aoCx|gYYf7cxfVpf!*XU(_V(bEK6MMX zY;~CDUgo3j!dH#&=hgJreRjn17wKnl_t#s}2e*&={dV}ftsCv+9XQwf%=>ir#n>2OU{Fmp;cCzosa`*f4*Ap)^@BMl6@hw&n@PyRdQ{tC%yGN;8>#+_|nk7Fh<=8Nn z?W57lyBUtWxI)!_S|s|P-#Sz6I6x>G^Lg#FF9zY<_T0;IZ=Vx1>Pg!5h4CNfmao{v zYJsQ%VCxTDk3hrG)7K1dnB3gI3F#8MRT`gObUGgpN;kZ&;tF*UqVtl(hU(I1$*~W; zOXvuk_Yq2AS~RP0c4gXQro6rmww*im%cAdS|8R^?qv#d4_q8`wjdVWcCWv4*!ZW5; z@4#{1x-`ma*F}G|I)I>dgg%o87Z-P2M%cOI((3BZUgB<1J=JJzxBt=Tx7qcjUTn^| z>uU1&iFatGR-SnUf1d`8FsQJ08abtAI79jNhEd;?I*d^zZm_hZ14-<9^mmKif`>h` z)waD|Sfe@kVQQo#{JYSbt0aR*p9}3rK@; zqkaE|k$&uuh|Eh#?Ll+WY6KgUHU7Yz%!1Xr9>NW@ln-r3+Rei&s`F&3K#L_NGxE%# zLTL>K>jV$ypYh6HN+3W^14&-Q^zw7F`e{~izeEArJc@V_^=7oBQVS3lc9(mfnbPW_ zYns$n0YLE8bFtxGt_4D_mt8NApG>g1#OaQ}&DJlrc^0RUgi7c5VrBOz3-2k&6>+)Y za($Edy#>b=TBLiVLLp&QTIv5ZYe z4U=0rl~JVnR)~jaejWd1a(Ridi7Kq_N`^R6W~i!ELGK-aFj^_y(!JL`kivvG*fbt3gan1s~6t!dEt1IjedZxf_UXd}*I0|0n{FQg*%JbXY1 zQ%*w&BlS?vbW()xkqA=e5>Ks=dJEFjBuu=@Qi>E2=vkst4CYgHR?NsJHcq+-QY3Gm z+}ZufiIz1^UJ^#dq=JZV03M{6#Keg_xi-##z6_$M99E*;0? zU_2pUhrnv_+S2@WQ|$Xv{I!4e)$w_e{dIx$wngAS3JwnlYGaY#_~=%#Ntoi_7lVv# zExTiNk01pIEIgQIcA6}UAO(mjJP0B81XM(;g^Avipw$ZeGKqT5`G*|h*#{RAKjVo?VB~JSC>^o#pv^g8CXA7(4nBKMR&Z8SJz@122_=V9 z1xNBk0u=?mApKdPCZIv@`R522%0V*4E;K6!z<5G~(@l3u?<|`s|0{LJ>{vH>%{{Z_ zrTt@$@zYCmOAx63B=eC82Aq!m&x^|v#t$i%2Otw?&^&9PcxAw4YY~=N5qgMRm*6;j zUJhxOLv<}g=zPL%#w&8aKO`e{lYEi(laV5I4c_ZKrqH{oe6jYEM^Ab!QTLO74-Y>Z z>joIU-x}NiRFREoLjU^*su$yTam4-PV%op7J}=9b1GLnZsr-MxtApe8QHO4s;~8)r zo;&tQAr912k(cPCJD(XtzgaxR+(PQIaQpQeP3F|I%iy&JD6Xpii;*+?ZF%$Y)10|o zc6oO1dAiTJJ!`aj+WuyK^T|w+Piy_*5?`lki{{MN{nFz_l*a}q{+PLag!NE%E?Vr= zqmy=XA64NY6q{$-dw4r&XaC*4-G{o_?wQT=wN1m5tEc~Hzm0R_;;07cxFX?Gp+VN} z#CubGk^iO{{trt6<}M^$bzHGvn1b%VjqM0O72RUnr`lvcv5bEgW9!3Q?5}BvFqg8Y zHPK+t7bsONE;TjwE<1$SBT))iF%H;u#qEuiXDQegc{P^nU0v87hfQ?~`6%xTibqg! ze%=d{$rm2ozGaa?1=`!4kYB5@>BSojcKPm*;6x!FZQXRLU-LhPOFWTb7e(Z#%}Oh| zGI}>Kk|fDPe=MA_2edOLsMtXzFZ7dpA&;W_%iBa!FG`v_OLDjC9+^1|vnhu-V>Hp} zx)O)*^5&RmDZ#C{(KDy-N{*@7O(KqrMF4h#eh=gMMe_1@eXkm$_EbNbx{J~iu5!yR zd$LyF<0)kAX0dxna4vIG&vsd@b{6 zIl-j-+_`)+_O*SO+xu+7W;ob_+H((j5%K=(qiu`Jat+Eu6#HEEdxw3^YEO8^Hbh(I zla#qJ{O!7s)B34KBBGc~+*`)bW9pT8whJwp(cP&JEmOOIunksh6qar%bo;W!H2RI1Q|U zQ?LjPT=fCH8{Tn^jFNpsHWmvBv^OQ!`9hTCW|xJj**<+et%G%*;ro+khqW|C>bHop z`n?w(o!#)6jr<(Yr&I;?4ny6TnS<<&YbH^_PAUvAbL!M575mLym)%zTX1j**VvqR; z@m5tA4=V*ver+jjL`M!fswf8(u^cF&5lT}fggX?P{ic%?3Buvo#m{9PN&Umhs^s&* zEl~E#y>g-Dh+4+#NghI4&gkIw%4k{--km{`out_#-QfC^u^$IO&G4GiZF-cTD!hb|}hm{l6ugU(^t) zrT<7n%eOx9ssywa5mogyu)hBVc%X$MQ#M zRTH8M*f|?o?LjH4fY-)v8^ikYIFZn_uB+x2Qaz;$t>VZjzj%MpXZ=D98Lg=6om(GL zq0{2ax?CSEoY;-r3OAo*&a1%srJs8M#gFP=0eFxDuS2e2_?wstZ-jC*``c);3lzV? z>UF@HutLsG8L|Riev>8d6=hH*v;lW_GhC&dZO{xBf8hW*W8KA;eibp=HAZLNMd3AD01no_(Hi1->Jb?WG8=DrMd|w}%C)@tJ5YWo!2cDjXsD?v`>%D=``9R)zxtKbmZ9huSLhb?@|DRN1>}Nq09IQ1 zQHX>AY5mtY9~{%N6%czAm4-9f!M}|w2pYLlP`M}q|5aBBQ#gc&5IR#v7wxG0&u@i7 zQw+9N`AGI>W+LhUV0i4E9{d^p@A%-f86<>Ty#xKvRICRGwVXg%20eyUg&Ls(T7;vM z`@ao>sAd}60kmz8Yf7>9P7Z~0_*JE(1rw_dvn2cj3{3Sq7Tx!x(;Ey+s4*v~5ztG_ z78TWN4DG(iW*yf?FY6mq2`w86E(6D^7N|w(qX_(7;lEVKr^x2~Aj+ZcPQc4`_C6%> z3i=#WAWDb8OTjTqH1d0(5Ksup038}yQgO5rg@K@~kMkQuSyx9FM<3QlJFu6cqGblF z!a#(euI)x|5pz%(q7q&MUAWSo203iEab>-6eafmgxwO-**eoCsg8LWmqHOJkf zSd_AIcy;``Z`Uz0hFB@r^mhc%aeoghnrdK7X5TH*Yx=^WxsN~zs@kk+;1`u4%HdT2 zl?$sGw+_sm|7Z3H*wpfLx>=WQ44qa`BdVMMGm9GYg54rGvq~tyb$y$nMGP5F@a7?? zl?WHmQkFh+M!(f_iCI!RW|B)#HTHfAU%j_M@ZUNk_`mB6rzuYhz5p0O6X05EwRaw$ zCVhSfmV+);^|^gd4LBqhC3#H)_PBgRlzV7_=6_R422R?s_<&fyY(xiv*++Gwf-K zUSSKBLrdWm0rqoC4Hn{krvbLWD)zp5u23iIr%*_85EhNS^GgM#lo1yRh@%)#3@CjM zsUl<%^>;eR-KnAq{^D2{^?bNTOqt~aSzh_*S006sGPOKPSsA=Ce%ZI*DH+o!qx#MQ zYLESh&_OHr#w+ThI2Xm+37*gGfs#2YG_)-&M?VxI9BR9<>e-ev2*QKrR{^vGR9%FA z0$eCYIYm@7rtuBO8qfg9ismiN9SKNlc(qNonzg*C|GUt@DnRjpRZxHdx2YF*Cr}kY zJmZH?aw@MvxsJaHJ1cUFeB`~DYqmK2%l5c9!k3TJ7yCaYJG_Ivo$j!M zE9D0Mu0Yi)I}EL^Kpg@cBfRE!H(3d{Du1WHyGirnsC`lJ{SZGAT8Yd+REe2IiCGN? z9!%x`%ph*H!IGs_s3?eXfG<&T4pM$QHYTeQz~|g6tKBX06DfBgs}@iTs`++My%f16 z1nOY)eg7X>-xyq3v~?SIY@OJ)(;eHkZQDu5wv&!++jcs()v-HH-syY4uimSA|IS)J zcGX#XtU1QSp0mOQJ6KisP<3ZTyKT|?F5>eaKDQ^=;04vVw9<$rq(@_GwZ+o+VI7xa z4(L>Lh-ZYdQ#d~{98>o&e=w8I{3DJTEgt?Uy|l{5K|F$PE_h2rPBVBz;wGsXE?lkr z-TyTs->RFI(S(X}}A4xZIpU*Lw1!6y9s^JB2=>fu$$n*T6v0_h%z zQiT^e_V4~2?(TcOJaoLFLRHlL1q-BsP#p)H1Xl0@&G>)W#w%|EwLbwyL;?8fI2G8n ztGB`h<6)&4h>Cgp#T-eFg{%ZTS7tfLB#^<-CFms$N6>#9 zb{O3#sH&;<&n^O2l>s!g^oDC#1cAV#f>6bZRW_`L3|4_IPh_15RWaqo5Tg0FssS%g zMumR_{(`;ds$B(xqi@NpS2nQklTwnSFR0uQQ?E5O{EyiWuc-;DVJpP^$K3-w9r=~d zqk1x}o%YIYJ50Gu0mUc=hKI2AOGQXFA+Y~@bun8KWdK$UUGPSgF4#kA<{~u~7KalC z5g`Pm>X}B4zqQ5Hfo9z$tU$^I*lY^Gg%U4%rG1$h^+RA1mT09zFOgb0$Y;%C1$Q$Do?zh72%beY&#E{Bf z{SYYDI#CHR-Rd9IjR+CjX4yPM*-VI(zXxu=e!Y34tUoJMzj>SnDP9>FZfK;CCA$3x;n- z*6Kl68l52@rk&f@x%(5+KIPA5euu}@oYglLdIJdK`MKT5y9MvFxOjy#<;{t-9>0r; zCamH_HJwmbvK^|Slh)1Ma+(v$ao8 zDLvy0YSH~k6j#ApkZ>@puEJ})O|)v+KKw@IL7)UKbG(eBysl}rqFXtvdNk{%QKX+s zdj-)~u(WW#eEn^O>tVeAAZv^TiZ&9ZCK?^*ll)mPFn5Km4PEE1N`%2W?~nNK3M;sU zZ1nsvh$KrXV&$ObogqJ?aoFLX-RjdFji3vS98pfVSa)irk|JrQW%DYr5qL_R)TXo9 zY@jdo`xD;l3aW!U=XKgg_mXr}XH_%x3kAYp=%$%~eX^z0 zK&apUcvW3|bcHLWzOYVQoSOQ)&VS9&7z0ZL4Pmq$ln2$s{J=5?BMT<(B3a#$D$@>6 zzfIAWt$@qPYxiC)+^4G!cyMIGdJ(ykZ#s!h;zq9=tY7}e%ZeDxUcF8rv}z(aeIyV4 zup*q!yxwTvR-MFu5FVBwJeiFuW#hv`uA1;~gkvmyJvp+u-#GSQm=*Ix`WE*tv+qPT z%pf_fI4pbW$?xcVWpK&MAMf1W>cDt`_wB)s{>XIu#^k$|>g8sv3O>B3DZmzw`bR%E z$}SI-f_rBv*LIa2LDD)e;o=LpF$j7Mc%g&xj%J;_d=q&pOzD> z#~!hO`R2wXw@BBtS(EkdO@apFH_iusT{>4NHN>K7KQPCab#Bv(M%tmHZ;_`7pmB?b z?1nnt%vOYR6E_hpPtYjES^;Mz!4M86AUg%5WEhSp`Oe@Y5gkyOFI8z`QOHqwabwB_ z_0koibZo@}dRzk6T0_a%jLu?k2Vri5mnnYMd#0nX7clNam$z>6eAjU3l1^}<0VEMD z36&v~n`HvFv57X1cw~x%O9DNeywp7hA*|)xEHPC_=_;1 ziitEAtp`JsTltD)*@syO)>G5_GOn8W#VCR5S5dC88S61?rfMt%Q{{@|3RJ+rZ7Af$ z1s7>$@!km!GYLj(F*B&3m_MJoXx(cU<%b8v2hG|R7C1@ip0eHuz%X*BEwu-!9s-o7 zD)t4$&!SmC0|ZoO{hp@)sdhrg@EMIjbvBv}Se0iwN62UdT1gD7XV(^kr%q9m5{j}G z5PU~YEMB%nc9*e7y9pS0OijZzihoUp|9KM)N`XpZb(c&eKSmS~n=|q z=vrjGe@yIQ3PJwwH?T)Inz1^Ru{w4q4sHjI#l_hVsTyP*;RK(#|PbQ$SOaieb!XZzLYo9yib^;dztYlBWmnFN2}G z-6C1o`rX$7E*Jvep^Dyii3&v@22Z1qU!&2LC%pwW;)~6u+|>6fVAEm*`jmo>M5W$` zUPv;frcsmksP>$1RF;R=VORv}CLk6>^DPAeShQ7vt3f7-{71q3X*I^DsI_yuj_}>$*Tmdg z7cUK?5c$GkFudoj6L6JR6`s!qs2@J`{vDe1sLSc^}v`y2KVPV_JS5+iV0;M9EKZcDT{Qjiyd<*d@Q z#PmB>kmaX{4(>&?$iSWQk{)g75b6vkTiFS^66}>!U$$Ct9bwsQ(?(MyD%a_yb?mXb z_avB9>a&v`FHtquj9dbkJu1uS*_Gsu7Y!ka8dI~xzx}h}PL=@PQuU_Y$d?I$9fC#< zCS^BIv?t*bMFyRiBcjQc(;;b{jrlyqLD(SWfT-0#&X><6$>yRCzu#@bG%z!hB7J1y z)sm{y-Nl=k_Gh4rIC-ibQ}NoB&)(RrsT=V8Dn6Yer5J%yNyg#kN{INfv2z8I6as9w zBf&EzdsO&%2;XuB$vwHqi%Ul@e}+pVF4shmqLtE8E~P{?*1e==ftY4+>HTO#L;E({ zmZAzdvqJM=yrEOJ#A`862~(>qAJ6VW7#X^;*@6OpLuCKENj$_awFY(anTF@>CQ zvd~o|EQ?1oVd}-oF{LcD$18t^4HVaHyY=ipqlv)iMK?X>jEF`2;f#@0EgfdplP0Yk zNg>0D)^=*NUQw%rM9&^x?ur+aY0;dC;VvYtO$k2jS$88@`kyl=W)UK%eM*t8r5Os2 zmNesG?clAjH7MbEV&6i#EJ06Wq1&l~WF3sYyYTxZ$thSwX4nLoXqS||XM@eZ9P7^7 zaMAb9wjEKG+FvTq}cxn)0#|Zv<9CC25=NGuscBAc*vjjWpbB zTKn-9*kY z!Qxjuk@u_bEcaM8ek_SIrq~|N7Xyx!pj0${ML&}Anc3(Zs`+5Up(o>?92$P7gTkj- zlj+y$cZv2QSk|S)Yoq`+@TQ>}@yuooc=~ezrK6;ukBZQV+SAl5W*GkVqv;qe!$=qh z5Vxkq3JRhQhCVg`=dHMnO~9L z*%z3(aA*l*J0RK6^E`O7DJoi<6Ve600K%1MCXwy)?66UZ7n^M6A6R*CAwAt*LVoKk zD{Ayd{0${fJY>x$Bc4~oay=A6woGoFEs!uK56}nDKJ#D^{VuxzQh&ByEPvAcX<>hu zby~-U6(}T{#WbAd5PGJnOwNKJ{YTFUUeRwv@dP0_TJEzt+l2V~NW`TXkdbT(>6t)cp~E>>mk;u>ea zRDR(w@Qb-#tySWK4gZh5|64!ixWQ;4{Rq`Bi^KwZHh*7dtjKmDN1 z3Pr`Nx!LHA=1o9XrqSpXHB7*W`)_9NXzJ>B{y1h z2`EV(iwHh)_1q+{mF!_;dUgc(bX?mZ>28u|c7le*cP_s>cwy}oLc1O&+e=IAq5)`b za5brvD>0VBR<*FvRm*KuHSh9&Ue-X?Z+rwK5Y9V8znqG%e+0mr^*DP&b6)W<8vuDMh#9nbvJy zb#7>;Qm^Q3<}zEiv1qxt6T6B)KwGB*q(&`JP)9nHgEtlgVl!*NrMecC+ht*O0v|yQ ze_!PHN#-<_FF=r9lJR9I$ClpF!Dpf+poBwjje3X}vr?ourESF$%%ZGw(+3qemJxCh zPe{|FE9LV;)SqI3U$!J9K$9{x3Mu9Yb=U}wQ^3VBpQ_rv9y9$+tj)UrlCqqKXwH}#zjw>!HJMK}?c{7t&H=etB#F93t zgL>E2p3b{7T%vbXC?@(}YNXQ~7MYis(uMVvStwFgmfgH-c!Z@9i@|^q-|?E*n1v|| zJD53DlWdkv7Ge`m+S824#-dD)bCDtHVaCnn27d4MY7|81{#<`wO0{@e2yX&C0p-vCN48GJBN|3vB^%tt616! z7lU3%pdGJ@K0V{?Z=Bg$6@?7~&DZ|8GnfU@?)2e`y zA9tAiWz+PRN9q%6v+|ESKQYUR$VcYbE<$zS@Y9j0H^Wk{!;knUpnIj&MOZj*l`#z? zw9SYQ<=M;U!5xWuxH>k zzYwa<8~z=O+(wp@J6~peSlG`#ycHMFBgpErqKg+3a}wNClN6d*RPvau8VzUF#>g;` z0PU!e2GSI{~? z;RYDBCpCMoTG+}_>|*(6tqrdXsF|Evty;SEP3h3Gu(BLS|?PX*c5#X{_u9QAJ^Y=W+p7Hn-Gz3{81 ztckL&G?xAOY89e`Zh}BrCKrp}hs`fSnh{1tzay#@GPG5%F!Wq!j-g%do=@es;8L>EGGVJH2 znsc&(GxpE!1b{w4)&OBG8d)ErLin3@hhTk3{IN0xDdocAS{oGk878&PA+UY8&hQ6# z*dV52sc9zfW3cM8G#C|;x=ECuP-fEQi&}ST(sdu-t&705YbsG117)13)5BVGAWlG~ z&ZDl089ly7b{SwNkVhO(h0O}tN?=42OH(mqsB$XDreWY^GBds!U5DW;F0z!roj_r1 z>Y=4FV-6um33ipQjKOnU&0dDWw|DAjl7PV+!QBJ~N=QmUk_mYT)=*<1EauTt)@Dt3 zuxP|CQ^vv(ePdthZ*Lew{M!-XSN06>*UNLS8fRwvi&Qcp|co!~_?tCf ztXW7boem#FXQ&?$khSxqzsz_ccXE=2=dU%5I9hre=ke)w^>N_!@r=%2#ew87x3dQb zQC}05m@(Lk;$u)W#d;rkS{rK{ddMuToPL3FfOG1i>$CBYQ2~;kOMiFu$#@}F!6g#V5_>RjADj9Rz%R`wD zLAElV2KWhacuIvDZz!E$DJ`qG<=0hJC-OZJec^02`GA}#%xo(6rsKN2n20!gzHix# zKAna-17V61zJRz{T0$6;1?b9XN>~j8wjjzMG3xCFg=y$zDKQgahRKYV*u~KZl%xbh z7zeq^Ses?vCp!@;cBvYv{Ua+tdu693w%TDXY)z{ zbQ*)`z?K?3p+dR?HEdt6b#FNS_Ji64y+=p%yfN@g>9_!b09&VNW%KgM--tksLLDF# zT)Y2vD58>hzXSjt8#Hod>y~L8gi;i@vw1y_H;SPF09t-qavcp{RyN{GKJJ zM7*RhP|fbJ&uvW>Tv)XHAf*VFN|9zv#hw%hZ6-?XvJsdEuZx&}VG?!3Ze)e3R>f0l zRN=UWb~J@dMjIv7jl>`E=;n=bC_?K3{($Dh;YvXM>e z+W_;p6(0Z#vByI^NtF~WZQF{k)VMf<~(;8A+vfj@G^56{c|P;zidCka*i zYqmJj#vrL=xnnCCA+BDpBIR)e++@>{l4e^f4!7G`Bt21jnB;XTHtg-fdyz0~J&x2E zm-3~x#xf4Wz?$HNs;xs|jf=LXnFgq8au=$344jSe=ERabVXx{b;H*N<(2&7;*D0D3 z>_WAV<^%2@OH9^h8wzukXVy1BV2ah8*56H~9G1I$OBmL2n!~VWL z+{SII3@r2F2Kn^}2uKxBwJwFIqoF3!NO7Ub9%*h_22<-7ujDmJ&`R`_YCozH;jdkX zzUJ?{dl8dH)i=9Kh_X=cDo*UwN@evFnn)N2Q>&w&#luTNk`J%b+3OTFXP%?1IDY(a z^A=%1Z6EvR!-z^r;r0Dz_0Hq9OVV4Fd+=6U%j$l56DzZu_;#+W!!+aaddW)bmuw@x za1eC=QonmT0JufM8u5ox7LiwWKtIvfMZ5I)9>;Ntpf}ukN(YrSykP#VgYUYvwpg*C zwDi&a`PUNX4L!j@$Wzg#Jh}1kMmhMeTxsIMOXqP zsE!>U-L144KTX;G@KY?FW%``!*a4T+%F(-L`%$Y}cHLIxK9PIzx+}kC2>Inp0zFn< zasHC5N28|8;Cm@({Fi*Q`@SwuZXxcKj~}Qv zLz8~Yx)&uITw3orQ~OBcO2F&>cgyF)=bFHmbKb1m?^Va=5a!+d3Dwq3fBEgtt*0x(3_teL2U^l7l55DDa1b<4Kxy7+y?cBCw? zL1qt(t{Yixp2HytLsrx_)W zAlxk76iPgjfrDuJJRbAx5Ip7KubAI>NPqvZjJ%Y~9Bfbe4Q=PR{V2F0$tU-t9Cli6 z1Ucqc6MUcCOhmh!)j(B}l8Ng+Oo?3V?SiDj*n^ED^Z{>_@Rd&Ex*3@(&)S$$$Qx${ zbg4?Gn9PfAiPPYp0(9=+!HQv$qcMRHJ+d^sCFQ&C?vGmU-*>X=S>MwQk!M%uwNM}#Us z<_KS{A=7vFX&-)#Z!Z3`NBC$Du~Lv<#$R<_F9&F=EZd*V!*AniclrhDC#(4Rz5YFb z@!``^U)a!r)^4d#ow>M}r@;hjKo^JgWONH2nZQwBgp$k>TUcs=uG!^fBwmeUm?8+X z1?Uiasz?%7Ab>UoV?@h;8ZUncEy#x_-~P^94KJ8r!}pl10Ccglj{5i22R zpi{(xVzP9wr8|f_t(zRK5yD0jI(c&9R7DoGcx4K9HnX>9{u5~yla?l6jIWhi$pFKg zt&ZL{-YQUYI-@oaqJjd)eIJNQ%zUCuNT&}h%dHEVy99-1!Ozy1xpi{fl}d^tN2h}0 ztLc#?l4g8%G%*WsciyQDp>dJ47$EmK#DKwG*HLndQgD0+*l@Wx6{7r>P!wPtxE1BR#@U@C0-9ony9H^ z?N<+a1h)NSz2eO1D+mi0*=8li2pk>v5GW1nLHm>woc$DS9I&B=q0A!@%;v77g-JTW z=k@phSbiNr$VBaM(`TP1$bZLwyd4T5CtQXM#-A}!rc{%ORd-D1$?iS~|#xXXh%G^9%ulgiM3CQV@*s3eo5G9?Z#snO~r zQeFEigE|SHCzaNzFG>xEAR!JdTix!#>r*Z2M)^_d$%~NS3gaYiWHC#wO&+%4#_FwM`%yy~HZjMz>n2nrz9MoZBq2kOO zy$PA$9cVQQgefsakD|ZdMJ7UvO`7^N4AIyAT8&U!R4OkRyBwk!Koq;L-L7|xT>Xj5 zEqaK44=gY%wSWhWj?N}=ihS{e4^iex9pv*}j+LZ)+FiR&rLX51la%YG*& zIfmO#8A-p>`Kt^nUJDB1rzWQhgCIvc(b@MH9@{!$5K2e9&UUv6QaG8Eb6%FOV%i%i z>Q)@H_SdI0Fwz$QspK?VjNlfBmo)<$%+fLjaAt(|CmZ-$zulsl@TFj}oRmX2P>GU} z{LMUmnC`Ve>-nllZL}}!Lb=(P#8m0hLT}hL0#8~&J#%Iw+Y$Lt$N$A&%F@t2uDEdO zN9|v_UwcC6{i318#&yH$z(gJ${@)U@R7A~=e-dTha%C!rR62}K*O1_((IsphuJlK5 z`c+R=&b{;TBsZxWV(kp{r|1lcv@u4dMLp3F>R#Zmv}tmK(|BqHyFOnB#Ehsi3Ks z6&==@9FDjGr z!9$sS39+3F&RB(!jcE$) zejOdQ8ymCK8`7|3jG16Y`}>R@+6%l2^ExpRCbjGipL1({R<3RF&a~D9y;1~r@1gk@ zD%@iwx9Bm(qIGxmb&k#zA=xM9e8Z-v-}$JEN}67|r$};7#ire*vH0{|<~ep`ea5y` zJ9CwhwQ2cOd?M#MCmtjk0DmX<+md}cKec1tI{T#;>f_xSq4a~S7#%TxDfGI#1kOgx zoS9rp))qa9y0|{XztM_jS1e&{SkhU0noN^gS>US&fc3ocXatMq$Y#S6qRYuQ_lGdU z-_jKG09@m(-##I1N|i5o>Z`x;NLQNQpxQ;za1klbkBC2xU>%(jw>4KM&VT5Br7+8# zXTcds`de)BkJ;3DZl$Xbq;8S-r^mmv0&`)*R#^`&5?8C;VMc@$j60RkB)@j%klZ%X zy`?v2^;$a*w>Jm%g*lr1iUH-tSt(#Wd5#sxZI+G#tO#D(v@p%ELCZ9o6D&4L@)D%Y zbR5x=vEP>f z=pB2E%$7jCFl_~{!d5)+^G**nV6BW;S=C&;xooIlPBY}J*ZZ>Flj&ZuXbdG<`;Fo2 zsWxtCzjMx&(FO(UGBD>G>{x(OdyEYzA>tHTmfqqkdVrEWee@s98e<&{HdS#b_LW4Z z)2&Tqp^h-(oBWPB-AARP93a~hFPvyEvq$9$oU!ekU(K2nvnBFYElHQ$ZIH>#DdfCg zbW*I+id;~A{K=VU_GoQB1%aJ3k=(tpNJV_>bk)$q%PItW;et+GR~Oix?dS?Dgpq1j z`ludeZZr^XG)?1l;%7^#9H=nSNbZ(Z)EY3gc(p>-g|zN(h>hrO&5^{DC}@%Du%(?vu)^Y*7Y<1nW|45Sy|gPf1 ziH7kuuQ1h=M|6>CR>a{sxE%)d=q~vuHhjv!F?BR$>C_W#5q*#8+SEgd^q7$rq@G=M zfhXdXj4eCY_K#~`iQ2zD7T<_la;iX^0qCLCl(eJ$%Sk!6@yU|}9n;H6*~*}$znph= z{Ldvl5C$Hk#VT|ySG^ki9Bg^a77l2@}|n zss>NXq1E~0x<|7A8dCiguLg0%lAcF08$lTwkLIDk!Mj*^{Tb@kTO|>%`~y*lput9R zBX&v=@ze&c*cebEQ_-OV3qV3TqfsvcPN%Axt1pjRRPrRZ4kCRQ7dX`F$avI4-1*93 z{+EPSTwPr2EJ*tn_ZQ}MHtyRb${5|g{Zq!^Lg}M1;b1K&HhI^dT>K71+~4d;Q}B?P%=hpRajA7QVrnrpi{Cv5~n_K^hs)}bVUD@^c_2_r^z3r2Gb%aeD zeKb^N>?(IX&B#q`ULbBTgA6^)t$*Y{j0<;d)wFi<<9Qrkv>(OEQ4Z3+8-6wgb|Tc? z@96E-c7_ejeGDSfo$rg5GVVA6ddHn4pkGd>;Ss8YN zlt#9*%)8a!b);D%kjttuOsC%+nVq@&!SrEB{8L>WuS!o&SucPR5R*p$klh>Pbd)_M z#x6@NQD0N~-b?W6^T1yTVvDpC`m^>(x}BG7z4Zc#%S9In0l&iaU{zaFwKb2eU|!17 zXN}j;i@A(r5qsFdD#PR<+ZB)(oEW^Ir>YQ3n3k3#@Y5E*w<_hV$p6f9 zj*X_|RlkUIS;O-5F1HhoY5v-KM$mI<@6TI;dh;0sI~x@{!zWcjOGD8OE!#*yPSs8UHd? zLMRmB$Rj2(p+X5J*yxe(!TW?dG*H_;Im6Pc_35s4S*u5ZVsxld3@SDeIj7vFb&t~; zRck_EJe>8+30f0@UJZO(`8zvjjn82dyaBk^VH)p+P#b0r*qC2sc;BM@Jw^ui3D<;y zyYn`WPx!zMvC(}(gdpQvB$HC4uv+^r!R3m+eL{_Q@F@QW2@c>s-Dg540o|t~P8~)| zx65su^PnoiF#ile&(1!fnT1Y?bzf%hSIX1f#4x|h(NG8G7YJe2JfD^soNZsUA4O8T zir&qO_$F(X;jE1bOTsuEc5ltIcpRRL?`>SInfnvh&UW?kQx^2!Q2F;5p=o^uWAZqe zaxiQJ2K#m|pVi^<-ORdtJst0E1*K{qweX^oC?Kb^xPeybyu<8$f6LWUY4TXm3rTI#80dLx(3df+ zmhHX$;U-?Pb22+ia`<+F-fW;kR~9=ErPUXi6^Nyn?!1@%-tFZT0^cY*|11`UfEz{IpA(@?Q zFt2KF^A&6SZD{solz;!_eC~}W=d?Yn7+jn@fP&_&{7JZ$Z}-jX4FmaZ(5N}&F|*(^ z?up>oKi%o4UNhkI9Vhqz6j!S^GGTFk8VpLG?gs|LW|J9lQ$>Gu6L8!?{Efz?JpD!<9go z<&eoxNd6T?5)AEATLRW=G1^7h4nkU#s&vQ-BYNu_JxaTPW#CmN@=njZ5bC@n?0|1b z2Ma2)eSUD&-Qcr=Yrw9sqN0>Pm;8m};Nv&H3AfjLBfs`n@ZoeLQD_SvspteY!@ZRI zGpa#{X6(vn)gSqV?*&30iajOu;|v^BodRo+6AVrxy#xytWLRTOBnw*UqqCAklr99b z+y>>MZ2Ai9CpAwY5yt@&sR_HGniVGr^^L0)#k(AlyS2{3X;O@&$~L{qj2V|tt*-=-3*9fdD%p?lE%7=MVX{$4s?~1mj7+L9PmA_ptG95^(LABgO{(9$#j;*Ie=_^X05gfof4%SAekiMquSC%9 zA}N+w&;h!H01Q{~#BH+V5(T_KfO=;1jopuVr&tu-S7L#1+M0btiYd_=BfcCqa38kT zMJfm~TR;xe)Ab+sJnasv9LLhq#BiGY8spUA>Xd5EuZH?6)9ibQRUU;wQ%Pv4=y^fO+2GZY?ZsZzGn6;TwZR+Th?!#fN z%%n|4ZT3CJi_@JEBxD%cv=q$PX*UBy5v997)oM@obximl{lZW8*_k-NJDGI5obY6@ zo}$A{%>VvQpC6{rKJuRUQ52*|vY5a!^(7y>$-rKRMk`yh%V#>n@FAwU#WGea;%! zDvFXWa8d2xQoq4rxtXuY{=CVMx!{bIpGHy|zzZXAor zv(w~;UHTy087+$ZJUvA(Mb1}7hEqoh{D+L`fcp~22AAi{r{hQFv2)Tg>BYe%YoCkz zOz-fIlh;ot2>z(&4d3IsMvH&qPljCQEcaY#b8>AZBmdJBcltm-Hh4f>ukE5@ybm%v z{uj8y&C{C-8|J(g*+SP_&SpyVTr!LPT3Hu|>*r-e<;x6}ciTzW_r-4>f662BpO~kQ z*UYCL_&OVCtuu&MX+eewLp&eiWqY?Tt_fGpM@v1tJlw7hPBgnThN9lq&LHs?H1l)D zKF;mDd!0w`cHpGO?O&Yj&&j@&`5eVk`FJ8&?+CrfaY^O3u2mV5W@_WMb-QP21eC#$ zs+dL;^s`oj%7T?){REiL6wb+!bXDe!>Z%%wEP%~>#;fUSwc|UO%3T{rnrSSz$+gsO#dDlb@)&=GAAWTGkr9~mF(~gV@tLt6wlC& z>!l|$-F@t>-(-yWj%`)O^1iBX=XI_oNA;STojgPQM?79r!to>UzMd;G+Xk8VY>wraJ z(COzqXtFd8mD~7NjbWtoh{bTkC<$0y8QFcsR-+bCak)~c8y(dy0Smn^E-EJG&BrE_ z+a?mm{Uin!bVRHi%|Y#;@>4Q76+0>+SNnsLkPX z)=wBwI69D4DzyoQX`VzA>b81j8zi58%uF~IEF(-uV}r)LNaaR!H4&G5x?kdO`C5-{ zz<{3@y_SIw`6a^NHby_VD9q#**xQ=ifH- z#mAi5e3qanOa%@00uMG*maTJD=EMbw=$P>#f~PSPk|a$gKV9Hcxzk?@Aj7~QSVf1O z+N0aGsD{n5|B&yg1)vQ8qQ-1$QtF&B7}M&g(o)v}Aut_C&(Ay@>_gax`f$ybw8KKlVqz;j zf>jrzubb&}m4Qiy3Sx|9(8O1CJAC(rnnJPX_g}l_?390c(%EJfye?C@;aB5XLjbQd zZwC$?usf>MbW8I4q4U1~e!BEA<{a=CNSbn6M52~#ooVf@ArJNPksIfoJI95 zO0ICYHn(&+b04t7mqyV8@c=tJ_<-V*v30`#ftad0{Ux7%r3_ztdl)!hx|{3I75W6Q zvwV0My|lUp^X{#}`g(kbeDB)n85!PF&mvo`57Ip`<&)*!pM7Y*WAi9HmM8DLYv0KX zdpjmPbIFv4Inad_M}Zfx`sa}EWwDhs5q+x&I#qQ^p1GbP@cEdf5=a@$Xb65yp9!K8 zr_$nbv5w5%KT4bO`2h!eBp8(XZEFD429*{#ht5<6w=lXE3S4?-t|m3eAhD4qAGK6P zs-|i$^*J?IVrFg=I5$$|Zk~kP5St%U_m6Y|8CmJyzz{rxkz{HH$h0FRtY+yClJj=O zxy3Il{CcR!{`6F@3PD++q~2d(6QtAvpo^zeuz7*el)Kdh5w|u=`5ej7fYnmPcQyfI zL?q(}mEVFApxOpsk9f%@nNQT^`zkntyjn|okgCbbM$NDzj6s-6x_KSo7^#xVQXnu` z3d~ou^}mG#htXyF8|2stf{_;|LUE7=z)C{jls(mGeg!T-C?8$HC)ME~1zh4o;vHKV zMTAve_Y%?^r!EfSyT4r9TvXhv&T&%c1NsxF?HXl=niSmZvEkOM30Q9m1u} zSqu)lHzN#`n^JAE2t_P)o-8OUWC}+WMsI6>G0$_F)>UT}tDF>fS&9Zo>Z+FGY+&ed zrxY*`bIp|qu~Wntr8Y8Gjtl{HT4)8cO3YETKkpIv1qJH4e%@U^Q(Ug{SD=E&(lj9E zfc%-=NX$%)8Ket`h|zq#!UB^T>UbjcWZC`$Zlny=W-;Y`SpT1XL(7=zx;;PBe;DhBSn5Tl!^8uQI(&ALYY)kd zc@P?n8j}K@O$}elM#k5i*yrMa3P{F4i7PY}G3p8b;Na@~4AGb>(wq>&0IBl7Z9LP5 zcvKEd0ftV}o?SV&YD+tZ**@zv?G4p*rHoV%-Ns=7VKvgq9&)8S&-k6B3)lB2<|ua` ztXBHL8k}99kZF-WM{CS)QS~6F7|?${tvLyjV#1JP(X@!nK4i0alurHgB_qjMZ`j1G zsKL+lRkpLjXuywQb%S-T;v;pjE&KeB)>`4D_!12j?i@=F4?aCV8rEy!a2FSUCjBQS zasSJ%<<{x(;NH@8vzUIrVA{%^Q=fmQR&RIQJ0j<*aM?N8ZMwDYacLN`BT=tL(2zoKxEib)uGPnDkphc{;?gBe!A#!vV^XMrgbeLM)S86Fx=k z#pyP?O`>xgF70LwFPcwYqiBm_tF$b9pt?P;ARI8+^gD3@^%R|i^31cJ4L1H&KaVt( zj=IvI-gSkwXy++A$f|fyQH2%~5cl1%)QBL%q6~qWG!c3`&Bbm?s<>hK z!j28y;cZ*QETduOr6R!G@5!y0Xa0hwR%y``SN}6=xYX_Ll9PT&Zc!BtIvEOsMm3<= zcbA*gi6#5BD1qBEiFjW7l0;zDq)cI1neW@V^0S{Ew)Rz6xa z%ilk@Ma%{~mVJ-E5=xK#8iob>QT_39qKUrMcUsfGwvi0EM|2w7J0M|QRC z1|ANdW6gQAlaV_TC#*n;>QUVZC8%#dyOJ>4aiiEsnxndLN@F%c8jrJ>BxH)KD6ndS zu|y&CK`;zwpL6R^K&rz{RGGD-zi1__8~~FkT07>70{>UK8Uv;4fgpAZ8yw8_*?)yA z3_&;x>$s^%dA>{kMc|A_mySeF!1xAvP^~78cy^Ws-C9VnVW_mFL71T7YCwn~;9*e| zHudFuWUrL)hs~|}h|IO>l_}&j#kc&;b0+wS?wJ(tYRXqdg)qiuhKbsXsPh4BOciKVkg0LQCYC(Ei7q-qvPQ%^KtMy0G zzrs&yN0Ft@xqFKf(E0c+^2(-D)3~hi%5MH%j{kb~?f!smJ2b3cA8<~2bs)Uv4Jf(14joty8>g1w% z9XTygn6O-sDfu?!qG!C|vPz)-j5(|L#JUV$QeAcsp4R*hFIUAbV=P#f6|W&lk~ zM&GdRijMYAd|Gj<7U+B!$In;%SAWX$1{gTVF(_zEjQ&)_0|f^zzayZh&OqPH{&R4)y& zr@8OvsTB2SK9y0b+Dw)89u-N7T7$+dwKe|)ux1AxLsC6{4YL!9P*pTgYZ79mLkolb zeO(dNRFsNVNK8sP-)#+8M?zPtaRDC)Tlej%U1%*CsyMSPzZRbXnSQ}yR<8g3@YVj3< zU5#P1$YQ|4-eY3vV1Pl6L;pHch6=cwYS!_N`IIpMXHeXn8T#YWAs_3O7-QTS{Zr58 z&Ijq!FO%E5=T^`3i~YA!n9gL%uzsneBTpXgtzyYW$<6%N8C#Asw(+nG$5%gK_}Vmj z>9$_WcFD)qCXl^=w#mnx$yl5r|M&H*!!l)~CmdCT0I(uJsTI#vvgh&ka~VxgNPKm8 z!8qWn7`UK|bh@3~6cj1Hiq7eP;U7fe1so-gZgjYJ#LSw!`8=jLg8JV{^!!v%{Cxl9 zr*em#_X)S_!qb>kFA3&t4>V~KC+an@2y3&?=nh4xcFSmw{S)P>yCtUJ`7oC)^@$2g zOctsG)pP^Hi!Su(DBYbnr8V*Wj)vai9z&P%$!J*vWmCBQ99jrJ$8wd6xu}Yb<9-h?q4;OV~hMw4oTJYC^YVjYO^v zZA$f#wo2ao&Z0kNWuRuC$7xE=s^w_ge0x{RZQHDENjux`4+Bi-1{tx|esyXChGRN* zGw!3FW{8FiZpCZo*F49LUScCUSD}5(X}D*D1OLdb@)6?_bSO)O$)jN%yU8Pl-0-$d zLk9F?N5bJYXNHHiy^2tstA?;^&a_N~m?je&vXpWUmyXAuA?5VQB1_4|2-8OxKS5MQ z893DgCFQ1uI=1xV#|F**S9meF#oh#dAFN5DsHI1UpQX@=ud52&AxGRV!T&2!ONWdY@e6mcf0L`OrEiY zZW&Za*;-YwjfV@e3L-vnk{++m^%S_9zbBnJxl(0Gn68nG+vv>yOM56mAM>=CG;!>- zGcF}$I*^wF-%<~Ud)t4=4yay;D4O8h2@SddI|cF zY9F$x!5^cE1K_ZLl{Z(8V;5t+7Ow94o#FRH?2MtTqLey@>M&?>^4jX3*OGL`kgFq!PYJ?nrx*!UjY zd36-1AQqj_kZ!5OfSEM0;*z8=Dnh2s_q4mg^3HOE{2X_vIJ1?0f= zmFlKR-}5)5+jgKC3+Za8=XS&eSh>VTT${Ndp8WNbP5aGfq|8KM|h#W#$$N zDrg$I5q0Qtz5nF>*6Hx!z16;i$7kCu5`xV6OXlK&pD5z#q|{vC?95PaK@;4#i>}1; z%(d{yF~9WrWnss>nx$#0?u;02;b_zS%=WNn$y)tq?@DB_OU>S=-yLu;zZeFZd^y90;;5u9@iI-eX%bk-5 z)dUy5sHRx_Z}6o1tP7K2c+TQ)sAI|PYYvT`(T19i68<0!9Xr!kRfh(HRy1oo@jo`b zty=ybnVKJBZ_-jvkF$VZt~TK+chJ6XXRW_2+|MAQH?&I#J?thU8<)H3b2G}EUTH!S zD?$daKqr4cjP_&4QB@|Vp2C5*Tr|NdQuGrmymDtS?xWfz2kni3WnK{(Vle-K4TCae zCgmikDh>OQ95@TW>D3hjZr`dj_fyfWrf11qsD*ef5_lk37+_Wx%os>SsO>-^3I-C9 zgd32Eg#INW3TGe@1%DDzK5qKJzeMyjVoZSqBqEv9;b1$NQy>w+YypXg!Wl?J?uA#Z z1FEty?KAlATa?a~pJpwkv(xeBK0iu3c}t?|4Is<^MC#A=MFMmBGvlY}6Cq=^{n!-K z{&HXtnmJqDcod3a%8)b*KOJRk(XuUb_2k;*#?W^cKmT@h+nqkgfS<1lW>Toc>s;Qw^ zQ9xFwx2Bk`mhBq^e?3>$;rbg2S(>iW{KZ@f#=eAh5l2UZ;c!%GsB(!QCT)&v5=jcz z%py(YcTSq9ll0AY+FrOSp$zkRWhxWQ6s@dQBrw(O8`-0RC)7ZnJpvIE3vy396g{8${;4|ETBl1;AGUsV9gR zNIh_WKBXPTP`;DCIlYKsK_@YSqYDqOwvQ3VrcFB^iWxWBFL|tAxRL>|*q0D5Ka%40qL*e>Y^j|BaX4r(HQs*Dw z`w|F*jb){Wpv*a9OaXNJ^*Hr2(i?y=RZnKAB`oQ|9~WkTP%nq>1jKh^WPi| z^|OqXrX)!^TT9zPO#1Ag2^iz`dUTsHN!&1H!A34P)N&geBP(H>rKViyYA9wdaeNLk zXMz83hc?)zm!o>Us50k41w~hrY|Kthb_Q^l`cenqGGWY< zu$*T<55iTOqytXrt`EHtA*+(&@oou)tpvEB^H?V@{Fz)mLlE22o0uujU#U8GDr*_u z-}o+Ba%o!tXKc1VKJaY$IXQT8<@Q7$v91L^sJD5m{rn)4wg`JvcyDK8ecL0N=WefV zKOS1*rXOOP{azkn-hB|7H~S`z1Pt<)cmokZxL@~v>>4w`<|;q@Hp}GA_<(;+pmcAm z*1PwU1DpF0@Vb7-Yje2pdgu2Og>p0gF$mADc|CHG4Lr)J{=wq1P;>2M6FS?0=_V_G zkhq*eoV0r2H zzItIal^Q*?QC<*=fH-EtU{NC#2fo>?h$nXrb}9&ewve zOlG9-9@c8Kz4%655&|#(l%Jyq^JKzts?JPy+othg_2P-{e^hGQ9lG5CnE z7lK~hHm`*`5Anjp6{Cb9wJS84@yTn3c@(kwfkXf;w8KKNO185HF}+z#TYml#d@aA6+bLsi zh)V~>Tb+52xC)^t5u8(|rCS=oFfo~VJ)WryR6Q2qBXTq5yO9(UMr-pUGc*|u@wh5U z74D+EZ6jMX%8@8MUp+Wz;Iy#R=_vGhVXCk_sWmj4q0TBaW(xmR?Mp?WPm^dd)Nv3d zzH)C=faZ?qj>z@?*oiCV<=LhvcaXN*WRyW(U$Qnw*{ z``f+q;}&wbkjihb3axJo_|Cr)W7h{E9g<(Ow(gXuZ2eER9)7qHx#?J_1=8i8%3YGA z#*{D=Q;qv7Wis?sUH#E}EQ0`^5`j?)J?u`BDs+b#`@1(T4XKygo><#%ltYTD7*1~^ zhP+CB%>`qth0zyw$f;7Z@P*O4qB->q+f0L{N^Z5VErcx4}Jmn>#!+ zdgszCI@5mT2Oruw2@^eil?s{z>Y!|U2HH9AUa%^{4H2Ax)~`Cx{VdHSOAp6_gnkKF zu0-%aFrF_kq$m_G$b{jk-~ha9xn}^%&S*WDQhgi%{^6WPO#)@u@&trjynmerHHs*b z?B*8nDZw(jqz35ifJtPaM&U0A-VRV5e^ms9AUt!~1 z1MnP@$EOME6lulhy`TL-VK|ef-!l`@+y7nqfb`Zu_vf6Yz54}=UAFosflho^ zCoQ^K`;duU=bNzqzfgNi|Q4+=_fu_iAE^RwbbFCAU1h+=^T*g4tnRuChC}M6{@bM6}ZRB%~q$n}h?+mVJ2Pu8`GK zCOgy6mD1k8)WQqf9KOW&Hs%be89gW^DzkJ8(_FE%J1n=QoC8S@=*KYag+Jmy1o)-Q z@egT+uS1=VXXbpH8}#3N{zz?+z#l0i z0L%zIPMlONKtmKn;@%j2vlLckfaYHBD|B6CY>!*&k$Ys{ovQeYTu=p4xGL|JNR^R; z8JQ7!xGIsFqSJeWsUA0L*1D?!SHgSHSu#a$+4$Hy3x(%&pC8RCyDvbR ziaAsAR#+DO&a=3iLkQ6qI_VO`Uz z#du1JY~$3RO1?B{7j9~>8_~pT^-+hlxB$SPx4HX#ympJ6f^M27o5CEqxr8OkooPAJ zd&LNamk1f)80Z&m|2ip~mKTW$vn}QF6scHNL*Mc1ht_5Y)5VfyU1v)NdqK#P{h)7l z(U42Pfi7<|S4~Pw)4ITw(06(5&Un6^Nuo!{{;7rM#$ltF{e_3umbx^x*?D4X>Duq4 z%lmk+_|j%ICtdon1g$__F}HR*)s_Vy)2eF!?GNC_Geq7)>no&L>R98BAq6UHI$*4d zr>92Hdk}9@VclNMOd+gV}(VD}o>;=;tsY)gKMV2QtKN+ED zd?h-BE+To$di6T@H&9Ti;p+VPv2>19mI}D2V$^=v@t{|AMh3*zbxHIzX;TlEIU^Cg zWiuoPfV~4ZWr?oN_U5T6gqfZWKTWA(^ACSe1gzQNVsR;XV~3~x)}f=%iBt;UkaHl} zvafB;k|YKHJ%<&05uYKkPg_kNj_|#FZdp8pD{%nJ+LBh>wSMR*QK*-eYp0x$u($!? z0Kd>}02_>0h}tXMqUTTsP$vOt^4;okbs*^WGMou%V4$@J3cGOL5$!TJgR&HxD_SHi zUg683C`MY4A3Cb1yq>Aj<7jzWs?)WWs_Kw0PjHC+(Zb!x{2#p_o{)(oEGd1L#%rqL zqa^N9|e{ym4jPTFJLUzhF~^Nthn%1mg7Y$Zri zM`Vig7LuYgriu2l7HF*ak{PCCk5uNgvbTzcL&zj#~VvCOmerag&8{kP#FlV=Jzr9XpnvmaRHAE&k zQ>CUFTXLtSwjd79|EZOyp`+K|;C8iq%3n|gD?WnCBy4Hak)^jCE6WkzSDKv;y-aU2 znMG{1W$u1SPE~%GJDo9Rfviz42tTuVzhg~rz2`DxVNP1J_tm$23g-sA&pToT0#s`D z2o&we=g3aPhS=o7V{fBNn2{qlsK&Mw(r{CbCQD$NsGHbAPQKTwI4tc=^jY2g^!z33 zQmdp$#%@^^hi|ZZ<*EvvX#Vkc=3%I*Tfpn>{o-I?VC(Irp=Mj)+Xp@#^h@w=E&A2k zfUTpKF5c_IkL@mjmlXk5{=YP|+j~2kz6`^eto02cVK#qZ3Vhrq^&7k%Al~dyg^Sl} zFjKZBer+Hc1A0OLRT5+GV-WX-kh){;LyNiUiiuqthvd`l2lX8|V3@V=NV<5Ce)?#y znn;dnH4oiHC-i=Bs&^0QRSy^s0{q>4J?Vb7ep`!L)4PsER+!g$iq&T|FBjnBFHMa~ zxPvlCtd@<&!GGSn^X=N`NG~|!5MQ3&PULe7mafz0ww8W<-0uWBgM5>B;NaTk7b3_~ zZ}H^xoQq4Rg@}&a0z*ukS8KTY{rvdrzF1ds=$6w&4`4+Z1_&wi{faU2dan(rwMl`k9 z9>S9a{>Yt18f6G{2Fy8axT9d)(YOT|eao=<&>XKCayX0R_e#8ZMlb~eax&FIN8VjB zk`7q}y&0sTfxUZbQ!+OnztULWc( z@Pior;EV<)zy)&_q}Upb`O@ZwEI&`#evi#K!hwl&IDL^{9bXDt@@zDYsNs7wa*&27 zD$4Tg8)oB9InVV3`lV~?i5gDcI`oh;R{mjOc-bF%x*jkw@ER`nXkHC{|36=x2V6aU z74=v2`Y2T&n62MHuu_Aszk${g50}pspj#4(!RMp&IY4cy<6l-%BQKV+V1g)@Ee!ar zM@u1sfkUzZ?I)Km4=)~3 z6$ESNVD;;Q5QROGV5(G7DUmrXrN(H_&N#$*{Zv$iuP_|o*wft!uYlw;v?E6lRt=Kl zDYM$G3#))!(k-)^{bx#7Koa~avtly9Q-xnr8mTC~P6Vvw!NE%}5yWG*D=+Qx7k7sRigofm_DRmpY~sysf7~E%R}=oIS>UX1qn*0?`NQu6T+Z(R zAB7iF7MIfikC}-z~#&^+DC$If`!6?-P`wr zt-qI>{Zzv(gQ36a>gEJh%zkzQPdrg+{sA8E^Qs2H#HNB%z)N>)6g7JRfXewMARJ_C zi;c79EI2V&x>PL(a%L#jFL-J!*WXK!-{#T_b0lOb|K@vXGOlEl(PiVjc%ssNg5*sW zfe~#*AD)Kcc$na?Y*`)sm#UjV>Ow+^G-hAQ@=RJXY9A?|ihR-D)n*sk6B}FIE5H$~ z<Dn{eLZ(3f?TB4$V4T!z)M)&@Zk|DQP*ZwZ`p{xVsxXIJ-t#u&0J zJTkoABBtcIx-ucg@1(O|-wBr+DNF9^YKE3)N}b`6F^$;m=Dg3MuE%w=1i zx7{}jcIFs%u4v5O(gWbeAIz})M2`(MG6M`Kq=K@N%xD zM8%Dm0NLEaXJl@g!?O6o3hs|Jz?VYug!*$f6Hr*zQE=V>5|PAJ-W8#-tYWxs9z%sf zNd^%qcxiT03KTZUMyUe2NMnWqwC+=)!)VbQEb=9WNTh=tYZXywZC#MV=?-LcV$Z-0 zDZJ1~q-<9O}MS+qVaNbYk9RMP#F1E*c>N5|^%*r)*A15HOWsK~ZRx zU@T_p$Vj9zXvGc!mEcvJP3mU8W|G0rB{dQWD%0EAwMdld)a~X|DpKQNdE`=5hj)YO@lVQ@KXnS^Zj7)L@>@F7eQ6^%l%&+yel8|FzJZCZgETYrE#AIbsdwjgnqfy*|INy8dBH<yZI zU$EOw&(`<%-h7Kxbj(OP!=TlxZvnIhy{~q5mUFME0mdiLDgb+`FVj(4h)m8 zg#6cCCNUDm*gh?Vsbpd!!cn6`U#4)==$&gbI7fR1*#-mSgOPZ;8YDUY5hpknykA|T z_Q5V9!d3G16pKNNN@iL{c%n)7w+A+RF`o(xD1%kP$pR*dufM=XO9bMzVdOYURjKvu zy%hDukuDBh%X>aTrs506`Fug_gX~3!n}07ra25>iBpgM4{2MlOorEO=tQ%|eUbg`% z7XYvfLS1IW#z41bYx#O1qzz4??TtKm#ksn6v6qZvF(nBy>i8nT#DdRqvJuDFRP`?k zYqd2iz|to$!(Q${g_1W-tt3?vM;dx;A1<&GI+Q!{$U#K87#uSKm%D%ror1jl2!(`o z0C!SU0D|YLZMX_1ttkZOsuQ=4qLVVRI#^c&b=wlkx}Wc!=|yuZgncjD?pM#X2I^H^ zEc+hVa2*BSZN#swnd?r;RHhm3YA(qzBU!HHU}IVL7r`nR#FwJ}jGLxxy8!Xs;KX%yd+)ddzWA(N{Cll&5aIlTd@3=sb^5GAHQ3N zcIn2T1!}Q$Xdc+VnE6An35Ql*%EDErG1YmD<7SCTNM8* zm9Vl|XUaB2^mp>G8seSgmO>@~a@JQ*3H3}b^45eKY)iNEHu1BZAg19*{2#-QkYO9g z+ORIjS}+KN{-Csd37e-@N@ceq2`F1TK}@aEJAv(`VKy=oNegi3wJ5K@Evmprr0h8x z4oIWjD!|RPJY##MZh$%iV)9?S{CJhRp=LpMCJ=#04NTL{`I6Ur)Q6lW=nr&A%qN<( zchpYL+hlB{saar5E#;ZKwx|Tfl<8sFEC(%z$o4Y z0s{>XHS%9zs4>iN*L(tlnkzNXm>LKSI*3nTD18DWE$|;;zyg7hrUxrG$%~TK@62Iy ztz>Ux!DF#jik6kWjDs6D5%e|Omg|?@KPrRwe^mzcBT!|Wr3T`TvAqhPRY~>zuv-ul zYfyyU<~N`z-u-Dhp+ki{qBSzXI5zT{c90r4z!^S;KnKwhj9koBQ`6yWPu)6$-NfD( zmcd`FWM9GEh`9nT&YM3MTb>qZtuLnU#qu1(`!OlqCvHkNeh*)B#K!g?7?glukp2%0 zwrKkz?R!XB#NmyL&m{o-WJ7xMWp&EwC`}?xzO5#b*5yda?JP?EVj=snvb}Z)lfU;H zh0fE4XvTMToW|}!lJ)~2zo1ytny@P^(Ar|Oc&A9g(tay_vHdSEP?5)b3yb*Q(*f)g;-UMtAsR5rz$mvDz zL(UO&2O{BQyrG|OE?6B^5nxU~Wsvh1X1uq7Y|H~i((-^V#2~_Im`!@GkX#NXZBtZj zvNl*;$3YBz30snMx@c*gM$(NMjPOCnI5hy5x>CCfw+`+izt!YE@ z8zGeRz~O}gvzT8RV%&qo>5XC~`(*8U-JP~$OH#u2^0%Pg z%fsiz5bm}GDF7X2RiKTDe=@J~>L=j&mPV@HEt75#`-hIJy74Y(^Il$5`|foVD2KF# zlvBQ}fWF$Y1)~5z?9bwh(N_WME5#%-n*`g@a}om?CLhSJHE zPvS|r-Z|sShkmCrbN5Dzj(ic~tDSbdz{NJdvh`ZPUoRGU81GeV(gTfJfMjYV8#}YI z&MfZ&Ns>(I___+NTnvv;yNk&#B{QeU*`A}%4t_hF{ekHadm1q&U$K&J33)&O0WedP zIlsipPu}ssfvmdZAoQ=}A0E-Qm}$R^iHTzqt4v1~WfVKo8NY8LItR^0aBqs)N&NyY zf|6E#M;C*xxuj(gi%$RcoJ!n<2W!UlL6m zizLFZLbZyM1AU-8@c@N6dhKA2DO&mw7D>$C+Vy-{{H!DBX7cgPX}C3pL+VlL9wVUb z@y|n!aeSlZwGVd@JgHiTWZ!RIGjKQRt+zKZn1-wfS1Ff7lc@=}-QjZN*h8_J z1=vcASGQ&ao6>F&uiX$YsjYFx{1+h)95z8+(1to8DTH46n`}*iu|i#~_3#d47sXAn zJVuP+U37A|ULMUC6-{btw3|#F?HoaCOO#Z*aYQ93Izx3Yqd_ftG$MG#i6=LplhCZx z#xT*FNM_&VkJw0)rO}f#60;7a*dgP6O*}T8Vl;ZM*&MYa4v)p?cCTSk0{-m!nhl0Tlil)2u@!a_MXxKV}|FuqxU^VHXfk z9gLq}iRyXBM1=~#AyXuZC#x?|k5qcK2dJ`7EbX|XMR-G)r#~A(xs-K|WmaWSKf;xl zAgK79*Y?U{YFN24 ziofi@odbr|p<}N#`yCzBN&A7pJ*Koj9S+yD;LV>g^akio=P^bMr@(cA)N_ z?V70Jk#FFA9AQgOPz1@Y_W_$|f#|{!|DpP2XkXeQ`EI;Ch<0k?dRI-Zn2}hL)iUw; zvm)9U=#5wWnG-q>)a?#JWXiy!O`Z5;m@Bx#Y8+~K1E}KW)L@6vMWH zAkGQLH1*@foggo3P@{9IHCnL?TjV70%n*IB`kH4mGY`Utb^G{3gM@XH^Rc&wf3h#hu!mmf}3JD4UX zLx%G^8w_8@uc?eIUzCmA@Wi#jNV{`~1CV3W*T;j!^Bv})z3rXw2u|X5h~t8I5&m$w zoRI!|@dlYNV)+5-fp_RoH9L=ET2aG)=m1pQ2a^#ab4xL!2QnrFV4u&%kNnmWBRC0h z7XG~cP5|YRwZ1*(h3b)&793CX@0*PtTo_?`;C&#E9uUPfSZ-~)XYILd_*2CmF)Zly z7-w&Ln8BI9s@9?%RZ*KYtbz?N&z@zFPLhU_l9`I@gZ?VRnvM(KBMJ?|lG}Rv@1h5I z)X;j*cQ`0!Jlg#4RqcViMqJjc;d_%X1Lc7x;d?TszF^FFgZ4-R!12L-j_>pO^Y8y1 zA9GfkNbKiZA{cRn?*Yfh3>@F*djrQeX2_MS_1MmU}`+0`MJLi%8=+f%7#aozPirD@vZ zuJafF9wzYM1oGni5xDO2Un5lywxo<|xwx0m9qlmte1$)odAzSKV4J>)K*ddS6aM%; zBe1`pi=}Jmtm^jOAgbOED=E5UiKUBf#?-z}+CJ{S(I)2!Z)^;m4B2_tA-KX19mj`s+ zBzxsx@r@nNmHDpHe;>lMNGTeba8MhAS;0`|DX#r)_TURzYVPRr#X!~&t0lI(`$qpOw(wmvdsJCmXof;2mnnl?XQlDJoLs(KwZ(#?v})Wcckn z9bS0%y1f=7$u{W2_%b~M*~~7__ zc#D<3e=!Bcy*$`YLFC;5i4ObRZOujdZBs>)rhE=b)&;L)@1T5M3;EQi{k9h+i4hnD ze!b#h`H~j)nFa>O8|JD6^zyPJDc$xaCVM#D`hcBP#_p)Mxqk4j?E@X)AqVpTj3t=b z=iea7i%d{5WqgGI~V>0RHFtM)66L0vupz{ZFWq zi*pQ=TfXd*xl?aXVJ0rVE?y3peXBPa0woH+FxjZAG!r_(tnEFXmcssVqcVT6+-p@h zP0@>(WYj&s*sLC#F>ys*{lpRIq74n=ac2?erMzZbiBV^OYeoDEmRj%5aURxJt+}PA z-?73mD0xM#Wmm+#;I8@RP*KHkvqXK4!EaVs88&}u?$_g(>bjul{qVNYO~@vKrps*Jz7=_Ho|kBKG%7+dCr^BD-@ zrXf=E#b`xEy+Ma46b~t%NkYrW-~hN%?6`vM(bn+yGdCD!;RmodyEiW4;VrAoy4yU& zt)Pd>XJxrF>R@6L0MW(@SSk*noH196KjP-Op#oxlcWgx?Bg*+GmlqQTk)cLmQ_L_+ zxK%xnY#}crr&!1i{a~Ph6CwKB_G}wXrkd>;X1~69wdB$>?d} z;IPUB(rRDU|q5bN2P$ z&XHkAHdAUUo_7YcY}4n_KrZ`cJ2cQz<{mzWE~f5sBB1VEOl_{EvSWv(n*!uPPtc)( z&6`OpS+dQbNk=i(a;g}1bM6V$bfxMBvKSXK`XnZk!$9)QVM`i|5~sCRh&T3ap!X{> zBup-={kyge86DB9U|FgbI3S?+`+L?H5#;@xL526iS^L9Bd`LLXMTHlSDK;`}bg;%v zpy!r?dY03i!#5E@bVyi*S7d15KA_AU>s}K0dTX8$HC|rlb}PZ(HwL$bGz5`jrqtLA zx4qZJr@;LENeY<12RfV4yD9Q6hO$X-a>B@%H4#abT^-Bkpn63`h5^O~Wy}Vid?Le0 zj}4yD5e39%XLo!*z~Dq>Dpo894@AgRv}HxcQN>KNaDFC-#IZfns#7OXL;w`(X6aCQ zr}yF7>F=hJal1-2jMBdBikZ!lkr`@A@uVPkz-?~*jP(C=(ewV)-Fp0BUbB=uNAN}uVP7w)d)vV2^l~^mBjddK zC@!i~kQr0Q9Be0!yYze}tm1IxvOoRWgZ2*(3O8>vD|Qc`(WJAFZ~P<^DJQbV8e8(i zXyhT?t7jIqlx`ghjnhr)!ez3=$r?bnvl2xjBts^XWRNo{)L;qv!r?PfQz@9!lKY{O z726Jj;b~=m>N>9-Rfw;R`G3t!ydaC-V@j<&m;Nf5*bkRT29-#*onZacgX70(YLey= zgz)5jEw(|{-aSf?cq!5TzH>|Vu?xkG)1Mlrc6Csh8Rfc>!5kjt_4=EVv-y8ai#J^*7_^GPttsSvI&7*u}O+>nZSfAvHH`bW{l8u>+*k=G#y9>Zg^ z7{S@-)#X^5v7i_W=B;)f-H3DsyY7~@4Ul0?3lz*AB7T)FI{KpqLe<>*Cn5%N%|6s| zPC_U$l*`+^Akmx#|7FQFG4NTM>!z`5%t_Iq`&cnbAC5BZh6Z3&<9Z?cBYF#PbUdtT zfp^lgH643xc5h!bhI%=hN8Ouvp*5(C%6Z7TB|VFxaM;AviX@q(Y=vGr=wB~SyVEbU zlr=_}ASUtwC%C>@`qvVL!Y`~7F|NEZVgUu~Mf1nVvisrZqe!B+IwIxaT=LxDF2O8G z%IVlBs5$A;BFm#$$SK7Uc2(FL@}|IOm6;tD?XPK7Ii+z74n&#aE^{aj1i$6#DxV2J1p?qu)`i#D;k7*(E>j>ku1hFPwYFn=lK#<{1STHb>}#6l(V%wFdW`# zMKo4udH)RVr@?XUWVy32a4-ZxpWnkD2Lkmkd4XV9JnaHaRWAE~Kc`?!;PKo)&z33L zmys`0X|!A&S)y?{IX=3y@U{L$V+R}TqFJYJ_<#g3rwPja*@AQzYypC|5ksq7B?~%B71q??vK|q(4TZY&o|}a zg3~0nM&n%0ArjbzA~v@=N?;#}I4R|9P1u9Ino?9N33A{^A`*|e;e#2>6W{t0FVFbR z=3KD3dP(EQ=%$shxe$>E!0gLYfb;1LoK$b~P&ZH5}Cy0l$;OO&)a~ zH0x=UpRu7(g_x}W1XHN=LL;A$FfUi|Hp?*Kn<6PgliS#|Nst&8Hz7q}jpeD<-|C>( zg4#))O#n+2_n@XAP@(CzB{gb0-_5y0GYLLmc>?OE)mfZYd3r3oR`;?0{+|Enz|Y!$8jBc8h(5z-}P-6}ADy5*nynWur=J1|?1^#{-MH*wt0%ZIV> zM;=)+B-sy}r|6o``7AqF_nsY9mRflF=p)A+=GNrXvOOcRS*$snZ8Mijz4cbNR(%{N z+`_cBN;>doDQW7uBXH+7VIO)U9D0wpxFdxq696|7tH#$pEYS+D6}3CZ?V6`$6}J;h z>7w4?WLiRI%8Q{LR`$e6$Q<$=m8G(GqTz!H$dm-*ES-lB^T#y~QRgX29&^ZwnD1`; z5F!jy+R91NN%n^?9JDV-II}RcnF`mKQq;hag<0ujpV-{+iJKRPV$S&OwG+*ZLs7&p z;xsTOJ!kg7sMRP=DI8t09LvYcbr7rJT=d2#0fC&_#EvExUyz;*Y_VdDE}A2i{I%rA zB*a?4fVj^ZKI5F*>ML~&?@-CYvrI{(IbaT$5&6O&v@0{R(-Fuj&jRQ^x6nt=vYg^} zodlnf{}oDr>WeLZ7Wx^Ofr=q*v}uX|2;w-D4r`PJmMO!Xui=wlSr|t<9K>9i!kkH;YYYyOA=?&7lsf^)u)c6fPhz%InE!? zOC1Up4Lwd6cP5ibjeL}davhC!k}T{MB@JA;=tch)+a(nC%{>GGr;ZJ!K25aa$=>C5 z14S=n_wMDW-JEen*DKeB#}ocaVYlbjilB>9PfBspvxr02S96Plxicc{jJ~`7Q^|)~c7O~M7T$E*Mzcg6)Qlm*iNdikc1&vz9Efyrcq!O|vsRqN8 z{ghwL%kx8XmY1f}s%bcFNfEX|afwL2*%uPJ7}w}L>|I`X<8{|e#2XF5h2w8*)3mw@^U)Ga32GM{G)JOTfjly~{2b{G29EMuZSCv8Zib)uzb1!SJ z{ZvV_;~z<9@)BJ#8J^tfzFe)Vp(#=@3~%S%RlGuiw~eO!GGUnF_IBaME=4EdM#b>f zo7yu&Kf;{5zT7}|AB`-5`Mb4p@6+He+Yh4=D>a&+czQi5w*Mx|W%d2YVxB8xpNFOD=?uD%6JhF&A>Cq=4|ucxUW6!L0V;rJmlj6=E9e6tlYxM> z&vWk;5nETshp#G!YCI;wWDFUg?hZ8*+II#{6C`n|X;p!6Qcv7w5C?Ge$Xf&?sBJSX z-aZJ4GpTXx$!q6jAy2DK*pnmtAw^#bVM(YSO;*%!#%`0L zQ``CioW_fGH5089e`z2=B4cdQ&?jmXS&rLQc^H4e_Ae9XTM17D)k#G1W7AbO` z#72KJmb&_M=XGuEUfuh@^xib?5Rg>FiJa(=?+4Y&SdSH!N5pL#OG@Rc3Jr~N{I2Wq zWo}F*+aQGBuY0X1>h(OQ(}Nl6xT)is;_rxJ1E&g!q3SH|DrPtMpj)E@eiL{NSnHyv`7)%g(xhF$U*S!Gc63NEsNW_#&T#ajn!)zYkN>D6ZJ@5O+ zV@E}afJ6i85Y#gT=ocBBdv2gs4kyI^4lxJ2tu;>>q|hrKs?ES=F846wBojb@J-|ID z;$-AA68;D4dl6Bj=0YO;YB5x(fw&Sg@kmH)vS~CPBKN!ymK6HYO^Kb#x@nQCr3E-Pu7%+AoyC&!_wyr z%aCOz$c%t0O3gVA4okqB8wu(ZEvdo${7wVQ<8tH!QnoeyXLB6psMIxni%bE!VNwNw{DbQ+Z^5O6#-C!FBDXd@OUHS# ziXkJZJZk%CL6qB6OJEBPiNf4Y!}j|3ZtD9Eh8A^C>2UySj65rLaU*%PXF=pi*_rJc zq1V~uaP|K>cRzjB6C0NAM8magL*Qc>`KoJlPfQOp1FH$6dB6)`k3 zN;DZ7L*``G=#<$w+op@z7m>v1V^jznexeQpt3;L{7dn(wAxGCe2V#R&6aaO-jH)8J zhfAd!X+`9{NOg+AS5;A-%e;!R5dsVx6}S8fi_(qfYo3Zo&#J%PAq}iJ2fVGSs9|vY%~Z{|OaTwMi;k3l zUvbdBR8zeMG}WVB{^6&E+&RvS?n=GetbY0b2z%?OIG&(w6nA%bcMrkc-Q67m!5soD z4#C~sAxLlu?(XgqEV#>ElHdD%@4f%rbN1}^)J*qmO?S0C{ZvhP6jkM$0DfZ&F2Y29 zTg9&&tUqb{bghp{8}VJuUH&w0dTaXrZ(m*OnqaQGI9;pbI3q?gv7#9B1es#1CK5xYcK2j4sC#@0nccuC>1X9~NG~k;mC2ZTNY>*0 zVQVNja#W&)!F)m~_b4gX(?Jcu3E5vx*YtBC>34D~3V{s19f2QEy8_A=bcNf9ezspj z?tb!ujKpS!v$%mlqL#4ce#}zkQEETeEU_YT2*n$~;(JLh+tKgg{xDN7vrx2l1izxacBIXhM8h-GSH(E# z9ylqjXh+WafmeDZu=En9zH!Bwr#h<3Mh=l7d8IN8bP&)#{1VKXbv)NL=SgoHWqr=* zoc7_fToujdJZiDyMUpz+XZL|;xo(gj7(bn~FFNep24_(>VY@a_YhpLKPt~un6?6&u zw0As$Bj^Azu39syeXdE@c=4HdwSnY4?LreP`WSPfRSw0O%o#Z|nL#=>>ugz4sbp#} zouk_oBUVq%j+uKAkR*JaH=#D7+KA0P?# zEa;5c*ZzdA?%lOMEN^ys-oKq1zAv?)R#b+8bhf>4($%!YJkwx&y zcca%3d9+VPFqF>8Y~8r+(^m2DaVotk4K5) z{H~w3nr&X+x6BpF-g2xbDyy)h$m3Pgg(>!@p57mh55NqHe@Zan8`d0R=j7w#yiWe{ zGxTYF0^w(W7R0^)P!c;}_tP^-3I58WjkY;lF_7{-Nd^n>=fjXPtsq9al!f88PEM|; ziinJoIRpY-VqKwzg+Sj}5TiUM_p0V&a4oHhsEfIWq=Wq?px5#%TtK=sI45vv35`nJ zow(~=sSc)a*pdgiLmvL~D;Fg!>x`z2I*GvAS1MfdJ{3|PRAPI`-DF2&Zq`98!dwv@ zWsS#Zi3cgz?86m;n2We{xcoGeudC6^XX8$ZZ~Q|L(VNbea;VDrh-+NPEKM*~CKi42 zDCA-Q6lKkX9$xaO(Gbsg$^GD9H_384d=)00#vEQtcvShByxAy$fq+C3B8&dtJ>S9z zw=gG)rj3>4Q1U4%5rgfNnsR-Rwt$hn>~IprMA90=VQ`e-9LpQp8TUJ_jHJF2V9!+C zsF%c=1+e{rCv6E;`1%Qz=#DUA1}Xt3@b8HJMQNgyDS6n$!~UoJp7=L07b2ADBRCkK zvr}Wki~=5v3^)0B7A4=F1U&l*C7Dj-dPxo{p@_>-;dGwmD37jf6ef_sx6r~8qoh&&5nh`>A-ijV?;1U`6D0v=;d62Mm=vojcF&X%X+g)$== zDG)dizVX0_Wh`Jn2=KtzOK*Nxqhe21sCsHzx+Bk+7@^m`NW~sF{G8q+Pm3SSd zZN3n9n&O8(GAX;h}op_)j$jagG8l@apRp;9aPmUC#_2CU~V}io+5U)o$-Jq-Tw%;u`KI-84 z(C~ylqn=P)p-_a6bZMZ+)>DZRsOykNNdJ91Q^|s%U@WC+x1TkH9jZof+?PgP*vnBo zsa6I*fA#2)iJ#@$^-j+fnJ{-gP6%sy>@KUp94%U}f7Ps3Jg@70!Od@B8oQSb9@D6( zlYA{t|Dirg<1Nx_0sz9Y7c-lg@I=rd{040~t#4;bH43%N_JEUsj(aA%Fqg2q0{a3^ zsA7Vg%2#z+^9v&Zc^jslhjbFIFM=Yc9R1909Jo%Of^R_=(HA;cWUNVfh3f*j(PwDR z>03*CEKs80kJ&MPrFHlAlk^azvGZD&MN;Eff0()GF<8m0BhTy9?;EdA-l#0wa#B5) z{Yp`2nXWArP15)PCDr0^t8+bcfQXi`oMlDHB=TF>3&~Z`5b{D+%!|>i_uvAGzVt1B$H{pLIgjiy78d>rLM+&`kK}ryT1Be0mhE zGuu0Zh@L?Go=0y_A|p8rG~SXg;xzD|-kI-NZ!CO0-v{+w{NMN8k~&*jI)+0gmomRL z>vzvPD7w8hF0C6EbJbj&KX<*pP73-wH@)98SFKJxyc%$C+^YLr&er5GMO?6vM0*(J2su8+LB3N>px4T)zho~<-Hw$qUUEA5F?Q4_PA)3J< zV3g&S_k1B)RSmclx=3FTv9@t#oJqy+atnRIyRsdsnFmreXaFILKg`ujNa2)Ig)w$u zv91FHzOltiXeYvjsXOCJ^2ru%XqudMF;^9e@CnV#uj9{p4!kX3K20tf;g?AL}qo&Z5W;L!&Nh<$yfHQ3({1OZJ9 zQkV7rfq-XapAX%DpoZQUJoa@@e>)HaG%@%90aF)&^DXRa9+w^)Bi5P^5HJ;+U3GSI z3!ust6IFa}fMh!vMa2$R?Uy*;z9qFBH{k7oS}0NCX={%U2&5mKr9v&v1yVJ_6@W!HE>c z17w3bnQ&Pce*-d1M|`-^IBx zZpM?uQ;nyVwh1%hE8z)uqOvx#D&IclmQDba(8*VgtK#Uzrw+CN&gA+KI#;xs@j{(v z&2uKpZ3u!ixhXl3q+ycsbBhYSW|FCf{vHPvX!5(yn}3kI zT=J_8sm`7Z&4Fxg*bWY9(Tqwf#vCa>3*d-Ue0emL4|!igY5j}yMFdnZ2}h9}ZC;gm zLs~X$o~OjQK+wzN!@BE0Uo4=Fst>e(XMv86V@D(m-j$Pf&NGm`qG&oBlz%Q4jMpiiq(gl3r@r(YY!$6vH%_HJkMXjIX4Y)kP7DL0t{lrOR8SV0`e3YOe=wJXfCGq;7zDZ-k^u z@7L_>;tbwy(ub(S5w}=Ttce|$HA^|9*Hw2ZB+}1-J*5wL5MU7qOINPYOW|S+l`y54 z8Gw1i_?DPJ;!rDL)=U5p3VxH27A`an8s|13ocY{A7P zR5zaNHvX?ZFcXGx=bihZZZhaJw@fX*PC>=TjvHPX_nDkd7M=0f@(F@z70J`mpFuLa|9y$)`VIMH`iQUP^+qss9vQC0 zU_t+x#sy_7j24!V2IsJhWZoT@jVc(|Ob*FRj>-NH5t9w`6Id@Jai&x7&whVq1FzeY zUtJf>FYxa@|9-rb{lC0lY?sbYm0q<;VySC(4>LxtEa?cVE$UKF7JQF*Pd>vhRfB)5 zCI;Fdppq3*`ByY@tuA?8vSYcG>3tb%9nc^@KR2{uiL@nzxG4e+GLp$r;U|}fZXS<% zN^`QB(+I@u%pj1Fw`5$S(W6ybMyZbgB&SQ4Rk`BkC09=|b+CYt7R$gagFkz%a96fd zH2+i~iX$mzI)ka=8i4D*Ck>N47Y`b{eCTi+NMuvL$PGI%fx=e|5sE@M=Oxca1Sc(Q zUyqD+!cnD<-dSN$JjFW}6DG_!0^d+TQO?c=+N5h#VP_x1!!ymXtVjgvehQA`IupvK z*liJc8MCrXG#AIk0Fkh7xRW$EuQ0ev$WS^PZA%TPIx3ZU1BQ(2?vyPil{pDUiUH<4 z$UvH~zZ;%&fMG68FGslW12E)9`Gt!IT=QAg@T+Rha2AB5uY%Ue_y!}2IIRQvIKERd zoIGaK{dI2nIB606m1ljqm*{9#5$M~jUN z3_qHtZ>S!p)BKS7B5`i|6yKFZgdNQ;e7riswT`6-Z$m7%sNuY8vCP6JeIz>Q~QxU#)y>EZPFHnQuG{YG^%I}v8u#&#>50_V@E$|%QMpR#+ zVygJW$t%*13}qc(`A!S?f4*67#vrNZIAuf*YE*E1|EV6Xx8cLu6@db-OIqGD;$`o* z<&Mu<4zhTgRvxL`4<(UC6H}17OtA4y+TO(4_#s!MF4KZ`9?IZr+McyNV|^J{V2Mh3 zW+5%Ala`Xr{|mpDHiql8TTh_?qk}1(TV)OGQDY=3ZE}4)!CzPcGo{d*0T&a9CbiRM z0(-u*xji8BmeOn9mb*_k>^j&;4sG|;^0i;9+ONC3pB#Vfr#P7LmF;k(y*xP2SlySu z%gg+2cN$2qeW0x3Qu}HAy0ZKD6ZY_}Wr>2j0aE}xVNdYN;f;S#g7n61K}CjnVsXW_ zl`A&n`+>q^%qEe+zRllQM;3l1&qUdr8)|3ZjW>wqb*;-?^T_)?E&8trIYlYI=i#7I zu2i2-dxBQw5~gu6!|7H(HS{?PX|Vw}1xiT`!O9AQflTK3cF#w~KiL|FB2Lybdov$V zwvtD5c{qoBhrAPau1I7~a zvtrw2Sylpl4P9UGO7nE{NewV1aI(67;Tt!dEM?Ia|RkxFQxXxsbK- zSLJGON|rm)W^U6JY(~wcDlq(0zQV%B)SqUG-SE~NnnVN``%FG183Pwjz<64mEs-l~ z`#ti)%;ohHk-6aq!4CGGwZNdzg3LMz1Cc9ym-(ML+hH;h4FK{W%wPvTClj8yB)Fe6 zCcr6Gv(8o$C<;R0fl*dvDgxuDSrVh*WP+^~EbO${CMwy|Axcf;Fe#tUdBuiNC`A)1 z&wYRav%Ux?A}F){lh}1wBPT{_Q%~ynqLayJqzWgVDkYv?zaH;wgsXZ>x z@*CJ*>9)n{t`ua<@!U|9 z@uvPGPtjz6WDnTGir4)(!D)szTy;PyWzQJ9w$fNFW6w#=rU=y-U%)IqmzaD^T1~(= zx6%|~+nm>P;c2Ala&sGo5bCgN0Lr|w`UBCmXgi#h@JSzIV?Syfx8(^nj$W)9rKOy= z3%NzcB-;_vK`lul-5U1KGKVr-UEtRYl`=UbLUOFQ2)pWLGdlEmRBiyhf>u?^4Vk7b z=J@{yg0w$RasP`!E>CHG;E(o%Jrt2!_*6-(Vj%w;fF$UFjH4y27%KE+3MSFchOx?9 zw1uA4X)hdU!4fU}(5q+eM^Y0sSy#b#25k~MngNRQJL z)rM=p&Sys;!K6%DHMN^Bs}guf=;q4dC2d0o;{sy*vm#@??1Z?;ANfjl_kPXuT6Q2+ zR0-N6WUY@CO-_mhIGb)~?`gJ6wYCW4!p2%5EUP;U4vkDcJDgZ{l1p$o;wXr5w4w?N z)pl%Uc`$*72yuqZQ;eM_$(Po`Z~aPSBERqaOKyqInU{$}N@TGt6J}G4wy$i)={G%o zDI+7ypd;xm%I`fSmr?XTZ9j6ok09L9_l!65r1<1bVElmWH>}IKOd@>`Y9s9ZOxyJt zqDs{L-Fk_t$$TP{V)X#@7fN2X>y5Z79y&)WAo|NIz(Hu(&Td4tzo(c ztp%F_TS!0m&<4~Q2`T*fte6JnRa+^1(l3C262vKqF)JpeDOl?Q3Eo&PIxYum@;@?e zt}sABOW|%D*A<@V3XC;*Vf4W!qNp|bxfS^?eV@cisrB`5D{^bjq`I{4qAONcd|)5t zWBwhG0j9BBBL6adB!)iKeEYZ=VLdWABY6p9d%q$ETmDLT?HwH6G>b6#QL-3^pi5(f zM7nU!Ub{DL`)^eVG+Oe)s93ggUSisU#>H4Rkr9}G61?0f3QG+#b3meU0ihHwW=0ct zoclayVbnodh~&tSEyBOc()~Xn6h#%*qNM|IU@2VAF9L+-g;i8rPg$)3DiY{hC?7?Z zE`5Y8qQD4BL{*WH!X*V33QTl*LVn!(IMo-&`;`M~vs`U5=u=(RnaIY`Q2X@zHQ|-S z5I(7cn!CW2#FrXU2S7XOKMBV#eCysQkqsEnk4O0l_$a%{^w%TWr`yr5hVVV3|GV`1 zPe@*S9GiwH%2`X^5dOzsbJ)8QM+rThyN&yl4ifk6qrm>Z?roPid(p9)E-xh!Kc+#pJm`O(Y9+-a;Jd!A!rt(HU3^a)%T#BgdKo*(06T91I zlgHbGgau!yS@Fl)HZ23@YWu6zT~zVLk7-0#7#^Cqvvdo&@*Zc17%G~$6vlWLeh8ZQ zfL4=1^T7^O` z@@cYC1er;>s`v1A@t}#wIu9R{Hvl!60;XXYfto;x$cEt1^)SIS}`8~{|lHzpYIZ&&1O zqC*Iz>_DSu69pPQJ75gupM>KV0xms96%$?Xn36SAS{}8g6kV4ye(dz3!IuI*wD5&@ zhEYd6!4~@{uDq}rBpvCh6I`8*aTMkCW5Zj-vZ9v4+c+JdJ~psrl!eJ3`T)nVO0u;S zHes7GU>{pbX}xWzW35z}Of|_#@)Izp@=uo`sE_MobwvJU1nMHi$ls(gqlfM1d|-Cn z`O`3EHE5M$GQ>tXUZ?j!_;anjk(J_@v~Vgp%$HB+)2?fGTwg?am8pJyyO(snPj^Sd zAQ-n{PH90^beG~Iy#(~Bu0Klg{p<+oLq}8mPr`h;XR(CASq>cjcgk3T`euE?N+kMP zJ=}83WJAiHa@QZ{(@?C^We11@sA^at(ow8La;@LiSum{7?0iS!non_mdSz2M8z213HT62Dfyf+{X<7ca9+A8K|^TIhK0SG(L zcWg~A&OH9(jqm^lpjtz0K(!dq>*W4PW)$-VWmgzN z3^p0kC0opAPFBlpi@n23oj`BTzB{5&PpYe_XUMr;hgjtQtcr!6af1YgFW-j3emd5=Cf%d8}H|3+oLtkU&MCPJgfbtJ6c_TKrIZ z(R!EAMcJ3@-@m9$IWu$9aK$dHudEzDi{$&9AvR;&(asJEsw+N_T)CGC+t-ywN0c?1G z{~?qBtj>DG)@=JQ2t-c%z`whdJi7NPT?}i9Y{9QMi=z72toX293@76%w5TphURZ+k$t=hphyp=~E?_r%1?*<`va&PXf#V>8K(0+F zL)TrrOmtBE(`Lh)<)h>J!?3GqL(8zkAXSdeqUwIOjqOU3E@WI~>usEOIg@bs+N|C$ zkiG2ofmm;mbJ&)TCogn9jCNwd;!D0Z-As*GoXB5D-RW^2E_!Gbcn+N0c&CHl2CShw zDgK+>uoCWN|I17Lk@%S0+~2INseWc|)$;2A&A=Kp6UN@>I5Y9=prJB7DOn12R!PA0 z2y{pC!KG(IKPb~BvsOF^? zbq^JjVU&EhYN9lcLNjhhqfW1=c4B*+TC2~ft&Z=z^L#7}tyT#T6^p!@!(P<9++AiK z;9qtZ8o(vdK=Qt^b-G`an{h3w|M_TlO>*o(foIn{GeaQNP#x%-x-F_A z!^n@D$JSMzYLtv)&PV`!^>5@$xe5x2Efr*vi0gr7l37%@kZm+paZwtJlV1|8crcsK z90YyI$~b@cE~QpdBEf)~O?R5e&jWZbZyh0bJh>Dkpl>R*U=`B=A^&x1Kx!YXh)pBEKvnl@$L6bT@G*+>NYGWn9Nak#BU-ZbI~0`%Fm-5kh~i_bE<>Wx3m1tw)tGhc+EIx;NFqphx`?Y1A1A$1|Zjr=^a5!0}zieGGD4exm>2c*2`~ zn~pJEJZ9oQrvftwoZy3M7NuEM%O{zl zNjP8x*wuX`&Kc$0!L^}Q323kd!T3x-2Wd>K&Lk7rG*;YbPkVA{IeQaOQSkwjjN{_Y z5$cO&Hx|BU)6Z0lZ-WaN_x@Tjs)xg8CGVdrca*M=&3gx9@)1Fa(h{wLwkz)*BQQo* z5L9SFBe>Q!`1Kl01JDli-J%BQ~Z>w+;D4$*FEom!fg%0De^NlL-LpKi+(CY~>H*M^?uVo+#RVPWdiJm0y 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�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