diff --git a/.buildkite/scripts/steps/artifacts/docker_image.sh b/.buildkite/scripts/steps/artifacts/docker_image.sh index edd82152aae2a..6be490eef2c47 100755 --- a/.buildkite/scripts/steps/artifacts/docker_image.sh +++ b/.buildkite/scripts/steps/artifacts/docker_image.sh @@ -65,3 +65,23 @@ buildkite-agent artifact upload "kibana-$BASE_VERSION-docker-image.tar.gz" buildkite-agent artifact upload "kibana-$BASE_VERSION-docker-image-aarch64.tar.gz" buildkite-agent artifact upload "dependencies-$GIT_ABBREV_COMMIT.csv" cd - + +echo "--- Trigger image tag update" +if [[ "$BUILDKITE_BRANCH" == "$KIBANA_BASE_BRANCH" ]]; then + + cat << EOF | buildkite-agent pipeline upload +steps: + - trigger: k8s-gitops-update-image-tag + label: ":argo: Update image tag for deployment-api" + branches: main + build: + env: + MODE: sed + TARGET_FILE: kibana-controller.yaml + IMAGE_TAG: "$GIT_ABBREV_COMMIT" + SERVICE: kibana-controller +EOF + +else + echo "Skipping update for untracked branch $BUILDKITE_BRANCH" +fi diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index a83fdd9ed6bfc..920536dd30007 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -3862,7 +3862,15 @@ "label": "AsApiContract", "description": [], "signature": [ - "{ [K in keyof T as CamelToSnake>>]: T[K]; }" + "{ [K in keyof T as CamelToSnake>>]: K extends \"frequency\" ? ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.AsApiContract", + "text": "AsApiContract" + }, + " : T[K]; }" ], "path": "x-pack/plugins/actions/common/rewrite_request_case.ts", "deprecated": false, @@ -3975,7 +3983,15 @@ "label": "requested", "description": [], "signature": [ - "{ [K in keyof T as CamelToSnake>>]: T[K]; }" + "{ [K in keyof T as CamelToSnake>>]: K extends \"frequency\" ? ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.AsApiContract", + "text": "AsApiContract" + }, + " : T[K]; }" ], "path": "x-pack/plugins/actions/common/rewrite_request_case.ts", "deprecated": false, diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index ee662b9c89472..5af6f4bc32d27 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: 2023-01-24 +date: 2023-01-25 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 4b62794804f09..b959b3c28eb54 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: 2023-01-24 +date: 2023-01-25 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 efc8fee440e65..63d37dc999326 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: 2023-01-24 +date: 2023-01-25 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 a9f9c13e7a73a..5f517105b65f1 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: 2023-01-24 +date: 2023-01-25 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 c56b5f9550718..e4bdaa18a4266 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -931,7 +931,7 @@ "text": "APMRouteHandlerResources" }, ", ", - "MobileStats", + "MobilePeriodStats", ", ", "APMRouteCreateOptions", ">; \"GET /internal/apm/mobile-services/{serviceName}/transactions/charts/http_requests\": ", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 6795d650c6d27..76cb793134ae6 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: 2023-01-24 +date: 2023-01-25 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 7f6d19eb01edf..d96f0d1e71ff0 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: 2023-01-24 +date: 2023-01-25 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 b42b0468a7dc7..30deb966dde64 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: 2023-01-24 +date: 2023-01-25 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 20c1b79092539..49597d58d3bdc 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: 2023-01-24 +date: 2023-01-25 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 697aeac448100..9b6b16e48821f 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: 2023-01-24 +date: 2023-01-25 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 92f9b58fbf61e..27d8c02de9712 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: 2023-01-24 +date: 2023-01-25 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 719e85fbca149..9afb82f5b3a82 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 07861197c1a9d..86b0adf6e8c9b 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 9aff276af60f4..996490eb633e1 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 2799b15be2380..5ee2a651a1234 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index de3eb208301c4..3375fa1a35d2f 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 1e38856df3e4d..a013c776d0f01 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: 2023-01-24 +date: 2023-01-25 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 560bdbe4cb872..a1dbb3b029ba4 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 2ab5f9364ce26..dcb9d22fa212e 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -4377,6 +4377,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "controls", + "id": "def-public.OptionsListEmbeddableInput.hideActionBar", + "type": "CompoundType", + "tags": [], + "label": "hideActionBar", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/controls/common/options_list/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "controls", "id": "def-public.OptionsListEmbeddableInput.exclude", @@ -4390,6 +4404,20 @@ "path": "src/plugins/controls/common/options_list/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "controls", + "id": "def-public.OptionsListEmbeddableInput.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/controls/common/options_list/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -5959,6 +5987,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "controls", + "id": "def-common.OptionsListEmbeddableInput.hideActionBar", + "type": "CompoundType", + "tags": [], + "label": "hideActionBar", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/controls/common/options_list/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "controls", "id": "def-common.OptionsListEmbeddableInput.exclude", @@ -5972,6 +6014,20 @@ "path": "src/plugins/controls/common/options_list/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "controls", + "id": "def-common.OptionsListEmbeddableInput.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/controls/common/options_list/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index b61657e794017..31476cd710f52 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-prese | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 264 | 0 | 260 | 9 | +| 268 | 0 | 264 | 9 | ## Client diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 56a598e85ddc6..13efb1d24be0c 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -23997,7 +23997,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -24056,7 +24056,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -39189,29 +39189,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -46168,29 +46168,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -47370,29 +47370,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -52441,29 +52441,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -58936,7 +58936,8 @@ "\nUse the sort values from the previous page to retrieve the next page of results." ], "signature": [ - "string[] | undefined" + "SortResults", + " | undefined" ], "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/find.ts", "deprecated": false, @@ -59394,7 +59395,8 @@ "\nThe Elasticsearch `sort` value of this result.\n" ], "signature": [ - "string[] | undefined" + "SortResults", + " | undefined" ], "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/find.ts", "deprecated": false, @@ -67468,29 +67470,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/core.mdx b/api_docs/core.mdx index af4d87f06642e..91e0e52480418 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: 2023-01-24 +date: 2023-01-25 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 b18f322b9a33c..9b6af9cc6cb91 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: 2023-01-24 +date: 2023-01-25 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 2c1bcc15ceb43..feec23729aeeb 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: 2023-01-24 +date: 2023-01-25 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 c2bfbeccee8c1..bcb2b88e7bf2d 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: 2023-01-24 +date: 2023-01-25 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 403980306ecd4..2f9626f9c64d0 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -19512,29 +19512,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 654ddf72d4e44..a43a56d4e200e 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: 2023-01-24 +date: 2023-01-25 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 ee16a8981997d..80957dc35eba3 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: 2023-01-24 +date: 2023-01-25 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 bff96335cd044..f488f553f7771 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -3136,7 +3136,9 @@ "signature": [ "{ filter?: any; search?: string | undefined; fields?: string[] | undefined; aggs?: Record | undefined; searchAfter?: string[] | undefined; pit?: ", + "> | undefined; searchAfter?: ", + "SortResults", + " | undefined; pit?: ", { "pluginId": "@kbn/core-saved-objects-api-server", "scope": "common", diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 6346e509e1958..160106ebd12b2 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: 2023-01-24 +date: 2023-01-25 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 a9333f758afc3..0a1662e016651 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: 2023-01-24 +date: 2023-01-25 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 9d68b3c6ba463..bb705e7ce002c 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: 2023-01-24 +date: 2023-01-25 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 29097445d4724..121b2e6cb87a5 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: 2023-01-24 +date: 2023-01-25 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 33efa3cad42bb..eacda78b9debc 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -14709,29 +14709,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -21483,7 +21483,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -25561,7 +25561,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index e768c489ceb0d..bd5619fd081db 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: 2023-01-24 +date: 2023-01-25 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 81adb92fe00b8..8dec6a11d7920 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: 2023-01-24 +date: 2023-01-25 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 00f340eb9e9ed..a05179486e88c 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index da4e8add41adb..8d4fc0def4565 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index d8f278d73c778..3f35753b21bd7 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 3a56b077d95d3..1c6e416374c86 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: 2023-01-24 +date: 2023-01-25 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 635d2e8f96759..a0ac52e82c99d 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: 2023-01-24 +date: 2023-01-25 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 8979b9bf90993..bae3c41163636 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: 2023-01-24 +date: 2023-01-25 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 3f599220eb93e..f07dde4281915 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: 2023-01-24 +date: 2023-01-25 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 d9e812b297e96..266aba87981f9 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: 2023-01-24 +date: 2023-01-25 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 62b0a673bb7cd..e1ed3d73e2249 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: 2023-01-24 +date: 2023-01-25 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 65d10d0825dc0..7c27689e45745 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: 2023-01-24 +date: 2023-01-25 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 bfc0712dafc9c..e2635f2590748 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: 2023-01-24 +date: 2023-01-25 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 bb5e46e84bb45..e6a8142bdc1db 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: 2023-01-24 +date: 2023-01-25 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 55a604878d144..af7f549d9b42b 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: 2023-01-24 +date: 2023-01-25 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 f44cfffda3f22..f0723f37b1ba6 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: 2023-01-24 +date: 2023-01-25 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 a04a2957503b2..8abc539fa23b5 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: 2023-01-24 +date: 2023-01-25 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 2fadac1a09340..4496774bec1f4 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: 2023-01-24 +date: 2023-01-25 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 f05ebe8c92eeb..8adbc59645ee8 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: 2023-01-24 +date: 2023-01-25 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 903e5983afa5e..119b574fe01ed 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: 2023-01-24 +date: 2023-01-25 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 ac58336f0cfc1..ab318080e0972 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: 2023-01-24 +date: 2023-01-25 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 229f0f2ae93d0..7357397cb3986 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: 2023-01-24 +date: 2023-01-25 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 87ae065fedd54..bb97b6edaae18 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: 2023-01-24 +date: 2023-01-25 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 cf907eaf211a1..d330de9bdc629 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: 2023-01-24 +date: 2023-01-25 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 97ce462e90ef4..ee84104475197 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: 2023-01-24 +date: 2023-01-25 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 b18d830e6d937..c621072c2a427 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: 2023-01-24 +date: 2023-01-25 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 f66a0e6646622..f2f7f1510f045 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: 2023-01-24 +date: 2023-01-25 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 93691067e1d8e..1479ea52011e8 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: 2023-01-24 +date: 2023-01-25 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 b6635cc643d26..f2ac9095384e8 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: 2023-01-24 +date: 2023-01-25 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 4f153b0d369fa..fc9fe4e811353 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: 2023-01-24 +date: 2023-01-25 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 2092476ac17bb..ffa55135e6635 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: 2023-01-24 +date: 2023-01-25 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 7cb01a67883d0..8c1a7ab843a44 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: 2023-01-24 +date: 2023-01-25 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 bdc3e2e247c2a..9e8b6fe879351 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -1222,29 +1222,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 0ab83d5606956..d39f390aba066 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 99cf4542f5de0..9877ee0c165c6 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index f3e224cdb290d..6d9c800e6de48 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -13808,7 +13808,7 @@ "section": "def-common.RegistryElasticsearch", "text": "RegistryElasticsearch" }, - ", \"index_template.settings\" | \"index_template.mappings\"> | undefined" + ", \"index_template.settings\" | \"index_template.mappings\" | \"index_template.data_stream\"> | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/package_spec.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 821e254c50156..7cb30073063ca 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: 2023-01-24 +date: 2023-01-25 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 150d16bb72c93..fe32a1154699a 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: 2023-01-24 +date: 2023-01-25 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 3a528d8f23559..49e61881496a9 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: 2023-01-24 +date: 2023-01-25 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 2283ab599fa41..ed85f8fd99ca9 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 7c4e2831dc9ee..b1975215b7af4 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 3e031c32d4b2d..548addffb51d7 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: 2023-01-24 +date: 2023-01-25 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 cb17975618c53..495d32c780f2b 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: 2023-01-24 +date: 2023-01-25 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 4c0c6adc0c501..03c2e53777649 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: 2023-01-24 +date: 2023-01-25 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 0b32fc334b641..931f22ae3d371 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: 2023-01-24 +date: 2023-01-25 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 ac6ca29095a6c..8c0ec2245391e 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: 2023-01-24 +date: 2023-01-25 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 fac86811fdce4..be1c284eec447 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: 2023-01-24 +date: 2023-01-25 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 9523d4da7a6f7..08667f5ffd983 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: 2023-01-24 +date: 2023-01-25 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 3658c5b1c973f..1d40055d1429f 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: 2023-01-24 +date: 2023-01-25 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 ee1c6e83f952e..ed85c5bdfaac0 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: 2023-01-24 +date: 2023-01-25 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 9d3dce0e9d663..dcebd7dec001d 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: 2023-01-24 +date: 2023-01-25 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 fe7efff171e88..18f8ee0e44a0e 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: 2023-01-24 +date: 2023-01-25 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 22bee408c209a..a2821ef8bca47 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: 2023-01-24 +date: 2023-01-25 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 e67370d7f53b6..95b4d8f249599 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: 2023-01-24 +date: 2023-01-25 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 ee2ae4c4cf208..48c04d4834bea 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: 2023-01-24 +date: 2023-01-25 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 f504e359989fb..137bc7e8a99f5 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index 33d0840e0d6f0..f1c7ed247aea3 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 535f185f730e9..ab07da2337de9 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: 2023-01-24 +date: 2023-01-25 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 b0c73499eb35f..14689a5a10b27 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 84f2cd32521f7..e390f2cecd7d4 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index f34ba6396445d..0520c482b9c92 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: 2023-01-24 +date: 2023-01-25 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 66c0531adba68..328180b31b8b7 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 22074415bac7a..7c784b334d0e6 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 798d1ea47cc44..a6c1fadf346ab 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index c7e89ef4fda08..b1bc0cd414a22 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: 2023-01-24 +date: 2023-01-25 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 62fd9645d31ad..7bfbac69c5e5f 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: 2023-01-24 +date: 2023-01-25 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 d41d712332035..6d0a4f53629d2 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: 2023-01-24 +date: 2023-01-25 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 ccd4730a24b7c..d8ca189536e96 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: 2023-01-24 +date: 2023-01-25 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 68ff2a75efc68..71a260fab038c 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: 2023-01-24 +date: 2023-01-25 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 72d29bf9709a9..7c869e64566db 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: 2023-01-24 +date: 2023-01-25 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 8b3dffb1858c5..66dbe20320bea 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: 2023-01-24 +date: 2023-01-25 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 52c56bf87d4a5..363c398c87735 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: 2023-01-24 +date: 2023-01-25 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 222f3df422cbc..a253304dd8e66 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 4a09f79430978..c5bc6fae58061 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list.mdx b/api_docs/kbn_content_management_table_list.mdx index 6af82a887451c..67fb4fc2d268c 100644 --- a/api_docs/kbn_content_management_table_list.mdx +++ b/api_docs/kbn_content_management_table_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list title: "@kbn/content-management-table-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list'] --- import kbnContentManagementTableListObj from './kbn_content_management_table_list.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 9e766ec2e133b..bd0babef68b6d 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: 2023-01-24 +date: 2023-01-25 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 5e2c89aaaa06f..ffe6c513319f0 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: 2023-01-24 +date: 2023-01-25 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 80032ec023528..2b17d37d624c1 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: 2023-01-24 +date: 2023-01-25 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 6b58db6685a1a..46478fe6df7be 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: 2023-01-24 +date: 2023-01-25 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 5aa03d4cfe624..e58a33293e84a 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: 2023-01-24 +date: 2023-01-25 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 5f5251fd39c7b..6728390da3389 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: 2023-01-24 +date: 2023-01-25 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 64a1af8376e16..925be935477af 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: 2023-01-24 +date: 2023-01-25 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 f1084c72fd024..3f2deeeda156f 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: 2023-01-24 +date: 2023-01-25 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 7e07f95b9f9d7..061e56d316e1e 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: 2023-01-24 +date: 2023-01-25 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 db1f77402c1d8..2edfbff89d204 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: 2023-01-24 +date: 2023-01-25 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 c316f8c6ab3f2..e65fed629b237 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: 2023-01-24 +date: 2023-01-25 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 726af557d00b5..c6a5cc07ce9d9 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: 2023-01-24 +date: 2023-01-25 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_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index ff8abdcb2b50a..46ef2a82a5e48 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 65d3fcd35af2e..3eb739cda14ad 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: 2023-01-24 +date: 2023-01-25 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 12776a9260da1..b0b534b6f8397 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: 2023-01-24 +date: 2023-01-25 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 f9418e8420a0d..f22fc241ed847 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: 2023-01-24 +date: 2023-01-25 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 6a8bee0c7e79b..42b26d5bbe40f 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: 2023-01-24 +date: 2023-01-25 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 69274413d9f41..0e29870762ddf 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: 2023-01-24 +date: 2023-01-25 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 86d77bfdffbc9..2a5975912f6e0 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: 2023-01-24 +date: 2023-01-25 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 d3a5adc910f28..f7e136ddcf886 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: 2023-01-24 +date: 2023-01-25 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 09da55bed853c..089611f4f982c 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: 2023-01-24 +date: 2023-01-25 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 03e27d229a061..2739a16c3e26d 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: 2023-01-24 +date: 2023-01-25 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 b981fc083f250..ef124b9ce828b 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: 2023-01-24 +date: 2023-01-25 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 7c8ecb21590f8..3fa820f55e2c1 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: 2023-01-24 +date: 2023-01-25 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_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 9e8126faa7eb6..b0588f2ef34a6 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index b52a28ca1c58b..8f353fa408805 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 9e881465cb9a0..c94056127d66a 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 0d26238cb5473..965df8d06317e 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 0dc300439629a..d17f96da63f95 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index adf1c10887c67..112dd38004af3 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 22dcd664f082e..7657432fe89bd 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index d0ca52e0c4db1..21dfb0909e8b0 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: 2023-01-24 +date: 2023-01-25 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 0342c3cee5589..c7d03b4c34ad2 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: 2023-01-24 +date: 2023-01-25 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 03acb31d0719d..383aaa98dea0b 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: 2023-01-24 +date: 2023-01-25 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 eced494bc827f..d353993a82b5e 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: 2023-01-24 +date: 2023-01-25 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 c7c79d7eddaf9..d684649cac4ba 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: 2023-01-24 +date: 2023-01-25 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 535bc28fd8926..60aec58ac93f8 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: 2023-01-24 +date: 2023-01-25 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 9c154ed89a334..4f06adcb4c3f2 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: 2023-01-24 +date: 2023-01-25 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 64ed8ea4a392f..64aa85183bf8d 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: 2023-01-24 +date: 2023-01-25 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 f0980fd0c0d60..7916d11105022 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: 2023-01-24 +date: 2023-01-25 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 834a2b4c0cb0b..faa09acc52387 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: 2023-01-24 +date: 2023-01-25 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 d6ea3c3dbcedc..b5e9a4ccb8dbb 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: 2023-01-24 +date: 2023-01-25 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 ff0e09cb04f18..3fd2bcf68c1c3 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: 2023-01-24 +date: 2023-01-25 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 296f434fab2c0..0f4d736b4b50c 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json @@ -706,11 +706,11 @@ }, ", [params?: ", + ">, [params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined]>; fleet: ", { @@ -1813,11 +1813,11 @@ }, ", [params?: ", + ">, [params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined]>; fleet: ", { @@ -2874,11 +2874,11 @@ }, ", [params?: ", + ">, [params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined]>; fleet: ", { @@ -4026,11 +4026,11 @@ }, ", [params?: ", + ">, [params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined]>; fleet: ", { diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 7697ff7fcb5d7..433072f2de56e 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: 2023-01-24 +date: 2023-01-25 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 8520715b8738c..920530d733a72 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -1377,29 +1377,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -3020,29 +3020,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -4222,29 +4222,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -5677,29 +5677,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 5cc3b38046f30..c278fa1841f2d 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: 2023-01-24 +date: 2023-01-25 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 ecaf77f49e977..eeb2f6e556374 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json @@ -500,29 +500,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -2130,29 +2130,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 3def6c9accfe9..9de835878b228 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: 2023-01-24 +date: 2023-01-25 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 02e845ca5b1b7..a83b7ec2ee3ea 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: 2023-01-24 +date: 2023-01-25 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 bcd2f6fe78590..1984164dba728 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: 2023-01-24 +date: 2023-01-25 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 13930259b84b0..be966e3aa9705 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: 2023-01-24 +date: 2023-01-25 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 b9782ac654b11..70dc4cb32b0f6 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: 2023-01-24 +date: 2023-01-25 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 819f665a21d0c..72722d95c29e2 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: 2023-01-24 +date: 2023-01-25 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 db447a0679a4d..0fb8d10b2c639 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: 2023-01-24 +date: 2023-01-25 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 1b0e91521177f..050e7d8eac38b 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: 2023-01-24 +date: 2023-01-25 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 62ed8b99d97c7..ce5f5ce67e242 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: 2023-01-24 +date: 2023-01-25 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 9802b65233558..141e9c0f3d3f3 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: 2023-01-24 +date: 2023-01-25 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 19f5f8c79c862..47f49f142d2d0 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: 2023-01-24 +date: 2023-01-25 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 b54a3b4081f5f..d0950f433ac81 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: 2023-01-24 +date: 2023-01-25 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 805d4d19251f8..2daf9c2050d40 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: 2023-01-24 +date: 2023-01-25 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 81f5d1b60e840..c797998ca49d0 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: 2023-01-24 +date: 2023-01-25 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 30281d6ae449e..334bb46a06c8d 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: 2023-01-24 +date: 2023-01-25 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 dce9f917dd8c8..f45a3ff135202 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: 2023-01-24 +date: 2023-01-25 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 007d98bf4219e..07c8d10e287c8 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: 2023-01-24 +date: 2023-01-25 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 ecfbdab084847..2887d54d6c072 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: 2023-01-24 +date: 2023-01-25 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_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index aa400917eb71a..df5ce63b82fa2 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 6776e6987716b..4f586c348e4f9 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 7e3574a7a7895..5f4e0c12a0e98 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 766915cbb3087..88f02ec490d03 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_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 019a83b152e20..759ecc1c1e737 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: 2023-01-24 +date: 2023-01-25 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 c8ef99d88dfce..3d9b8135292af 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: 2023-01-24 +date: 2023-01-25 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 f8368d9b5d76c..4f64e06e9674e 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: 2023-01-24 +date: 2023-01-25 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 516f74ee059cc..bfb80e821eb29 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: 2023-01-24 +date: 2023-01-25 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 d5535294fc4b9..c8a00f2d71d35 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: 2023-01-24 +date: 2023-01-25 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 65f67046738a9..d2f969d945c1e 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: 2023-01-24 +date: 2023-01-25 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 261dfc9f5c204..4f332e0faa55d 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: 2023-01-24 +date: 2023-01-25 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 6644269274ede..30205cf8b4b7d 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: 2023-01-24 +date: 2023-01-25 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 071bfeb50e69c..56fa415fb9377 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: 2023-01-24 +date: 2023-01-25 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 cdf1610024037..621136816a6d5 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: 2023-01-24 +date: 2023-01-25 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_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 0da436dd13722..ecf12a47edf6f 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: 2023-01-24 +date: 2023-01-25 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 06fc4b6f72f79..758c27360710e 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: 2023-01-24 +date: 2023-01-25 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 199da06e16dc7..0faf80f8b1d64 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: 2023-01-24 +date: 2023-01-25 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_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 9b6c9a35bc247..96a072d386b68 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 01a96d04157e7..686555175a670 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 210800431c180..fd28c416c3f37 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 060fc3df12514..35f5efafd3b01 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index f681c2f225cd3..88ab5142cb852 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index fb31a2c42a0f5..8e0df34b9aec9 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index a37300afb1b3a..9aa390e34f0fb 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: 2023-01-24 +date: 2023-01-25 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 a86ead740e849..05d00acfa64d2 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: 2023-01-24 +date: 2023-01-25 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 33c5afe3a4887..dca89b485c853 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: 2023-01-24 +date: 2023-01-25 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 f5b792b3025c1..724da2d16c5d6 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: 2023-01-24 +date: 2023-01-25 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 f8f18a24c933b..b51a7ae9afde5 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: 2023-01-24 +date: 2023-01-25 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 464e2d46494a7..55b7e2975f629 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: 2023-01-24 +date: 2023-01-25 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 094f75f31c31c..9857cb694d986 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: 2023-01-24 +date: 2023-01-25 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 de7e7f97c8dc4..8338c33c8391e 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: 2023-01-24 +date: 2023-01-25 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 bf619a78e1e0c..337b42b96190d 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: 2023-01-24 +date: 2023-01-25 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 2db60dd101638..4fec95172600a 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: 2023-01-24 +date: 2023-01-25 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 d018c18c3c891..29e715d0d55b1 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: 2023-01-24 +date: 2023-01-25 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 34505b85debed..c1621620d938d 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: 2023-01-24 +date: 2023-01-25 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.devdocs.json b/api_docs/kbn_core_notifications_browser.devdocs.json index fdd20afaf2828..7b8599aa02a93 100644 --- a/api_docs/kbn_core_notifications_browser.devdocs.json +++ b/api_docs/kbn_core_notifications_browser.devdocs.json @@ -681,7 +681,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -740,7 +740,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", + ", \"children\" | \"onError\" | \"hidden\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"toastLifeTimeMs\" | \"iconType\" | \"onClose\" | \"data-test-subj\" | \"css\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 2319eb24e3236..d7e1099d545a9 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: 2023-01-24 +date: 2023-01-25 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 792f9e511e531..08c1598007300 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: 2023-01-24 +date: 2023-01-25 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 9055549a9a985..a19ee6682f1de 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: 2023-01-24 +date: 2023-01-25 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 bef91754d4892..353346d8b2134 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: 2023-01-24 +date: 2023-01-25 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 bb6a05dfae46d..b19493a9538be 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: 2023-01-24 +date: 2023-01-25 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 3f33090639c18..2bb7d9828fa66 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: 2023-01-24 +date: 2023-01-25 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_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 228c897892a67..0eb16427a9a12 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index abed367940ddd..eeb1c6c9031c0 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 9e9e808ed9789..d279efbb46f03 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 4fa5e21be6729..639f4ec5d932e 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 6db32880dd1ca..34d716a4264f2 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: 2023-01-24 +date: 2023-01-25 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 fc964a4fb5460..f2ddd9752409b 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: 2023-01-24 +date: 2023-01-25 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 9930dae2f0b04..2dbe503efe103 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: 2023-01-24 +date: 2023-01-25 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_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 86134874c46c9..f628611b6dd89 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index d5a444f71090f..7bee735adc7d9 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 105aed347dfa9..8c9d4f2a11c08 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.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 5a16d5efe7701..c0d01cc0786dd 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.devdocs.json b/api_docs/kbn_core_saved_objects_api_server.devdocs.json index db45d1b863086..13470d08ccac9 100644 --- a/api_docs/kbn_core_saved_objects_api_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_server.devdocs.json @@ -5554,7 +5554,8 @@ "\nUse the sort values from the previous page to retrieve the next page of results." ], "signature": [ - "string[] | undefined" + "SortResults", + " | undefined" ], "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/find.ts", "deprecated": false, @@ -6012,7 +6013,8 @@ "\nThe Elasticsearch `sort` value of this result.\n" ], "signature": [ - "string[] | undefined" + "SortResults", + " | undefined" ], "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/find.ts", "deprecated": false, diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 6641a815ba250..45cc33cdccd8f 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: 2023-01-24 +date: 2023-01-25 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 1abd1ea4b0ded..4cb0bd225724a 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: 2023-01-24 +date: 2023-01-25 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 ad3ee348eb01a..03e009ba04b02 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: 2023-01-24 +date: 2023-01-25 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 f1926383ca672..cdffca564cd74 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: 2023-01-24 +date: 2023-01-25 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 1d1b233d2cee2..187cff3f40b42 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: 2023-01-24 +date: 2023-01-25 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 b1ec0efe5ab13..460dac8573db4 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: 2023-01-24 +date: 2023-01-25 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 33fbc5f8f82d6..ef7070674ac26 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: 2023-01-24 +date: 2023-01-25 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 96619cb4cbaa5..95fd818c0a922 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: 2023-01-24 +date: 2023-01-25 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 768ef4d59b257..002444fe5b442 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: 2023-01-24 +date: 2023-01-25 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 c1ca4b00a4006..d3e633f0de9aa 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: 2023-01-24 +date: 2023-01-25 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 9f2862d610d86..55d37320e6d36 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: 2023-01-24 +date: 2023-01-25 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 da558258bcf54..4143641d21a64 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 @@ -2555,29 +2555,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", 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 c54bcdb0fda62..3c779e4848996 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: 2023-01-24 +date: 2023-01-25 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 a7f195711ddf3..1c182be9cdb07 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: 2023-01-24 +date: 2023-01-25 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 53b2d7dcc6915..2a9401298559d 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: 2023-01-24 +date: 2023-01-25 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 e97e6cd8cd6c2..2e40c1b5b1871 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: 2023-01-24 +date: 2023-01-25 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 1657ac443b71d..e37112ca2932c 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: 2023-01-24 +date: 2023-01-25 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 063d8c1cecbdf..3c7a95f4dc7d7 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: 2023-01-24 +date: 2023-01-25 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 1fc00a2098912..ab77a4f75b9b8 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: 2023-01-24 +date: 2023-01-25 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 c7f2f42f724ec..c1fea24307a47 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: 2023-01-24 +date: 2023-01-25 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 aa8ff77011a2e..20ced0d3eefff 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: 2023-01-24 +date: 2023-01-25 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 6d8279fdebe49..878afa6f4176d 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: 2023-01-24 +date: 2023-01-25 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 2f2c50e13ce65..c229bd8a6e0dd 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: 2023-01-24 +date: 2023-01-25 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 afea67842ab80..1fe2fa49f42c9 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: 2023-01-24 +date: 2023-01-25 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 c728a8ce7fea3..38bdb3014c5be 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: 2023-01-24 +date: 2023-01-25 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_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index f4cf62e8bf3d3..8436eff2da97d 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 4d858126647fa..51aa63e24d4f0 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 65fa5075b909a..ca50d95ad63df 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index fd90e7d6443ad..b9a8fb1fda494 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: 2023-01-24 +date: 2023-01-25 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 d97e70cd225d1..5eba0869f8339 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: 2023-01-24 +date: 2023-01-25 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 dd5793ef7c4af..1879c357339bb 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: 2023-01-24 +date: 2023-01-25 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 93d4939ec91f4..ddc0c181695db 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: 2023-01-24 +date: 2023-01-25 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 2e858c6a0873d..ed2194c8a708e 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: 2023-01-24 +date: 2023-01-25 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 842158f180cc9..cc1e5629c0cca 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: 2023-01-24 +date: 2023-01-25 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 e5b20fe13d50b..788e20d34853a 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: 2023-01-24 +date: 2023-01-25 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 05ac4447ffd39..982e4e4c68261 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: 2023-01-24 +date: 2023-01-25 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 bab23e0a2500d..4c83bbc9fe2cb 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: 2023-01-24 +date: 2023-01-25 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 7e26b80997763..9fb8da253474b 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: 2023-01-24 +date: 2023-01-25 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 69cbad0a2203e..b27796dc85af4 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: 2023-01-24 +date: 2023-01-25 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 8738ce3716ab7..c8f6bc900e15c 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: 2023-01-24 +date: 2023-01-25 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 fb415f6540e28..a53913bd9e65c 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: 2023-01-24 +date: 2023-01-25 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 ca954ce0af387..aa9ba3d5893a3 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: 2023-01-24 +date: 2023-01-25 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 a88fe8da6ab96..88233251ee0e7 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 92b77f212f1f6..b2c73b8236f1a 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 0a775810aa370..14761aa0366fb 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: 2023-01-24 +date: 2023-01-25 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 03346fd31c1f6..ab5ba6a8158a3 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: 2023-01-24 +date: 2023-01-25 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 9b8b589af34d8..dcbdc60c41500 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: 2023-01-24 +date: 2023-01-25 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 b1d312a5768a5..5458a945a9da0 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: 2023-01-24 +date: 2023-01-25 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 22ad4c8e3b367..7614c0594642e 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: 2023-01-24 +date: 2023-01-25 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 80fb1ae2f83b8..062c175e1c508 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: 2023-01-24 +date: 2023-01-25 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 58c7a91d1e432..7e7bacb575088 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: 2023-01-24 +date: 2023-01-25 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 a165433669f84..e15698a881a79 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 08bc679364971..bc85360a07509 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 715bfaf2a8d84..542f528a53230 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 77840497e205a..190b8813a020e 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: 2023-01-24 +date: 2023-01-25 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 5e8e2ff6f15dc..32124a2f13116 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: 2023-01-24 +date: 2023-01-25 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 9d9f179978bc3..af07f6922cfdd 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.devdocs.json b/api_docs/kbn_es_types.devdocs.json index ca374bcfff9c7..78b06f6002f53 100644 --- a/api_docs/kbn_es_types.devdocs.json +++ b/api_docs/kbn_es_types.devdocs.json @@ -169,8 +169,6 @@ "AggregationsHistogramAggregation", "; ip_range: ", "AggregationsIpRangeAggregation", - "; ip_prefix: ", - "AggregationsIpPrefixAggregation", "; inference: ", "AggregationsInferenceAggregation", "; line: ", diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index ec25924354dd6..0e677aa184ee9 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 4b1d7030c1d7e..63a54963656d9 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: 2023-01-24 +date: 2023-01-25 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 a9e8aa9f8ca4c..1b2af2ce4b674 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: 2023-01-24 +date: 2023-01-25 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 a4845ffedca9e..1acead1d0bed9 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: 2023-01-24 +date: 2023-01-25 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_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index b77c117435bcb..a098db47c7a5e 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index ea21d29eb4548..9589093a62f46 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: 2023-01-24 +date: 2023-01-25 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 991d96a252e8d..26d4747e0858e 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index fda449bd2b776..e65e2f4e5f693 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 90bd183da8732..7456a0db34383 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: 2023-01-24 +date: 2023-01-25 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 05f826ccec91d..76968ee9d6cc3 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 6fbc6cd541194..895abb37fcd6f 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 6e00d68e0ae2a..8cbb1bd05a1a1 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: 2023-01-24 +date: 2023-01-25 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 0b39341ced45e..9a1886dcacb91 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: 2023-01-24 +date: 2023-01-25 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 24ed791054794..792c3f0a66523 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index d2f66504a3c90..6989212d58b26 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index e02fa3bc6764f..2b1162e07c2fd 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: 2023-01-24 +date: 2023-01-25 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 4d77a5e346963..9ca750959b931 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: 2023-01-24 +date: 2023-01-25 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 992ba877b7987..4ae7018ec4280 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: 2023-01-24 +date: 2023-01-25 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 0ee55ace691d3..5a715cd188e76 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 943925cee2d63..26de7f7f4f750 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 57a83483c206e..fe2837ad2ed80 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 9107a16c20abb..b9927c269d964 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 719c40e99f357..7347d9af32135 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 3a562a3d16c91..2355da9366676 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: 2023-01-24 +date: 2023-01-25 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 297920b1f118f..70fe8fa26e766 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: 2023-01-24 +date: 2023-01-25 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 f7d88e64a1272..149d817b26211 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: 2023-01-24 +date: 2023-01-25 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 79fd443a6c806..296a61a6da707 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: 2023-01-24 +date: 2023-01-25 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 c237b3a552fb4..8951742444a08 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: 2023-01-24 +date: 2023-01-25 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_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 8ecf5eb6323e2..f6a00f1901bc0 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 771070a756f5f..1923c9ad41140 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index a765ee3ffb8c0..4de14def9d2b6 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: 2023-01-24 +date: 2023-01-25 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_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 36093fb823848..b50aca3102461 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 2c8f7bded28e7..1d69c3f1900d9 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.devdocs.json b/api_docs/kbn_ml_query_utils.devdocs.json index fdaa166265247..bfbf2cfd4aa35 100644 --- a/api_docs/kbn_ml_query_utils.devdocs.json +++ b/api_docs/kbn_ml_query_utils.devdocs.json @@ -62,6 +62,154 @@ "the original query exluding the frozen tier" ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.buildBaseFilterCriteria", + "type": "Function", + "tags": [], + "label": "buildBaseFilterCriteria", + "description": [ + "\nBuilds the base filter criteria used in queries,\nadding criteria for the time range and an optional query.\n" + ], + "signature": [ + "(timeFieldName: string | undefined, earliestMs: number | undefined, latestMs: number | undefined, query: string | { [key: string]: any; } | undefined) => ", + "QueryDslQueryContainer", + "[]" + ], + "path": "x-pack/packages/ml/query_utils/src/build_base_filter_criteria.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.buildBaseFilterCriteria.$1", + "type": "string", + "tags": [], + "label": "timeFieldName", + "description": [ + "- optional time field name of the data view" + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/packages/ml/query_utils/src/build_base_filter_criteria.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.buildBaseFilterCriteria.$2", + "type": "number", + "tags": [], + "label": "earliestMs", + "description": [ + "- optional earliest timestamp of the selected time range" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/packages/ml/query_utils/src/build_base_filter_criteria.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.buildBaseFilterCriteria.$3", + "type": "number", + "tags": [], + "label": "latestMs", + "description": [ + "- optional latest timestamp of the selected time range" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/packages/ml/query_utils/src/build_base_filter_criteria.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.buildBaseFilterCriteria.$4", + "type": "CompoundType", + "tags": [], + "label": "query", + "description": [ + "- optional query" + ], + "signature": [ + "string | { [key: string]: any; } | undefined" + ], + "path": "x-pack/packages/ml/query_utils/src/build_base_filter_criteria.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [ + "filter criteria" + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.getSafeAggregationName", + "type": "Function", + "tags": [], + "label": "getSafeAggregationName", + "description": [ + "\nReturns a name which is safe to use in elasticsearch aggregations for the supplied\nfield name. Aggregation names must be alpha-numeric and can only contain '_' and '-' characters,\nso if the supplied field names contains disallowed characters, the provided index\nidentifier is used to return a safe 'dummy' name in the format 'field_index' e.g. field_0, field_1\n" + ], + "signature": [ + "(fieldName: string, index: number) => string" + ], + "path": "x-pack/packages/ml/query_utils/src/get_safe_aggregation_name.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.getSafeAggregationName.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "- the field name to check" + ], + "signature": [ + "string" + ], + "path": "x-pack/packages/ml/query_utils/src/get_safe_aggregation_name.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.getSafeAggregationName.$2", + "type": "number", + "tags": [], + "label": "index", + "description": [ + "- the index number to be used for the safe aggregation name" + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/query_utils/src/get_safe_aggregation_name.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "safe aggregation name" + ], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index b090bfe6ee680..ca77d5dc51720 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2 | 0 | 0 | 0 | +| 10 | 0 | 0 | 0 | ## Common diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 75301de28a629..5191d4d7b5150 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 2e9ffed1a40cb..a9afe8b59649b 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 81f0803e5c886..b8dbaae5df26e 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: 2023-01-24 +date: 2023-01-25 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 fae9269cdd0d3..90dbc29c587e2 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: 2023-01-24 +date: 2023-01-25 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 0d661b2bd5302..e6d4d69a71021 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index ca09b63a28fdd..23d7624d1f48a 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 41bd576dc38de..332e40a829133 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: 2023-01-24 +date: 2023-01-25 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 06b05e085c043..002aed65bfa35 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: 2023-01-24 +date: 2023-01-25 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 6df3b3513312b..5aed9e74a7398 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: 2023-01-24 +date: 2023-01-25 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 aa726ae629b75..1c77865d1c656 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index ee54a3ef70177..f9a9cbe4987e3 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 0f7a2a7e57d9b..d5d1710941535 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 6def69c3ce2ad..d199e4de53700 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index ac153a55c6429..b85beabfbdbc4 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 3a768818b2a4a..4a63f6dd0ab83 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.devdocs.json b/api_docs/kbn_rule_data_utils.devdocs.json index fdab2a321e5f2..41036062e5590 100644 --- a/api_docs/kbn_rule_data_utils.devdocs.json +++ b/api_docs/kbn_rule_data_utils.devdocs.json @@ -104,7 +104,7 @@ "signature": [ "(sortIds: ", "SortResults", - " | null | undefined) => any[] | null | undefined" + " | null | undefined) => (string | number)[] | null | undefined" ], "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts", "deprecated": false, @@ -1416,7 +1416,7 @@ "label": "STATUS_VALUES", "description": [], "signature": [ - "\"open\" | \"in-progress\" | \"closed\" | \"acknowledged\"" + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\"" ], "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 c1457a8a99e90..35eedd5ca226c 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: 2023-01-24 +date: 2023-01-25 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 941ba15d506ba..09d54bc51541a 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.devdocs.json b/api_docs/kbn_securitysolution_ecs.devdocs.json index d6503dc7fa76f..677dca8472308 100644 --- a/api_docs/kbn_securitysolution_ecs.devdocs.json +++ b/api_docs/kbn_securitysolution_ecs.devdocs.json @@ -975,7 +975,7 @@ "label": "'kibana.alert.workflow_status'", "description": [], "signature": [ - "\"open\" | \"in-progress\" | \"closed\" | \"acknowledged\" | undefined" + "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\" | undefined" ], "path": "packages/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index ec137d55a30e2..60ef1c3351db5 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index 4f3c195e28f93..bcf1477f303b2 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -905,29 +905,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -2149,29 +2149,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 99687e53e5f59..3477818b17c91 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: 2023-01-24 +date: 2023-01-25 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_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 24f44065a8755..c0c4dd5b9cd8c 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 149e7ea6ae96f..7606fb0f3c2e0 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: 2023-01-24 +date: 2023-01-25 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 fbcebfc8d3377..1f6cb59abe6ab 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: 2023-01-24 +date: 2023-01-25 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 985be2cd11a44..471bb7daf7382 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: 2023-01-24 +date: 2023-01-25 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 bbd9089552ad1..bfbed76e3e700 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: 2023-01-24 +date: 2023-01-25 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 77849eae26fb0..726137c40d6e3 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: 2023-01-24 +date: 2023-01-25 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 71ec9815ec586..b682cf1dcda62 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: 2023-01-24 +date: 2023-01-25 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 c495bb3b37aa5..fd5f8553b7698 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: 2023-01-24 +date: 2023-01-25 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 8fbe26d6bc7e6..a889a36d1dec1 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: 2023-01-24 +date: 2023-01-25 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 ec852a2c263ae..c1de7b28e108e 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: 2023-01-24 +date: 2023-01-25 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 faea93f5db66f..d6947e192818c 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: 2023-01-24 +date: 2023-01-25 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 f2fe3f812fdea..47aee2c288d13 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: 2023-01-24 +date: 2023-01-25 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 1e1c309e9a761..71c950c282de1 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: 2023-01-24 +date: 2023-01-25 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 d3e3a06f1a330..1a32fe5a8417e 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: 2023-01-24 +date: 2023-01-25 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 b7226dd53976e..be05dc840c063 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: 2023-01-24 +date: 2023-01-25 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 80f96559dbd01..5c56dd64ae767 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 63335382ce4c9..429249106c5b4 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 74e5ac3bcc273..6aa4d356dc643 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 0b95a337c5b1d..d01d88b65e245 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.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 fed1be27cb37d..9255d66b184b7 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: 2023-01-24 +date: 2023-01-25 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 5ee9f7aeed7d7..83757a898e606 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: 2023-01-24 +date: 2023-01-25 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 df30d7bd4fca6..92a4f6ebfd7c3 100644 --- a/api_docs/kbn_shared_ux_card_no_data.devdocs.json +++ b/api_docs/kbn_shared_ux_card_no_data.devdocs.json @@ -186,7 +186,7 @@ "signature": [ "{ 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; 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; css?: ", + ", 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; placeholder?: string | 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; 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; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 934cc06857309..85491e50f5464 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: 2023-01-24 +date: 2023-01-25 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 79cec7695d40f..71689235c968e 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: 2023-01-24 +date: 2023-01-25 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_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 1b3c24be94d93..c5e3ad90cb628 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index c7b8ca8127037..6fe406e5be943 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 6a92caa56e94c..ee718b45c2453 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 0079df083f4f8..a647b412c0b23 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index f64e39b85256a..bf13d02131cd9 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 561112c471bcf..95e7585d3c1ea 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index b3af472a664db..150cb8d79acd2 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index f894a306a78ac..58086c15f6dee 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.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 c059864f3cda6..3ef6616bc223e 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: 2023-01-24 +date: 2023-01-25 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_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 17189623a529a..6a9ad55aa3f60 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json index 0f5ffb13f1421..363b2f278531e 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json +++ b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json @@ -433,7 +433,7 @@ "label": "getServices", "description": [], "signature": [ - "() => { children?: React.ReactNode; value?: string | undefined; onError?: React.ReactEventHandler | undefined; hidden?: boolean | undefined; color?: string | undefined; id?: string | undefined; className?: string | undefined; title?: string | undefined; onChange?: ((value: string) => void) | 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; css?: ", + "() => { children?: React.ReactNode; value?: string | undefined; onError?: React.ReactEventHandler | undefined; hidden?: boolean | undefined; color?: string | undefined; id?: string | undefined; className?: string | undefined; title?: string | undefined; onChange?: ((value: string) => void) | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; placeholder?: string | 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; 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; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 1817408a14359..13a0e261d4761 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_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 78b88625273a2..66a35b0e905de 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: 2023-01-24 +date: 2023-01-25 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 9885b9811f0b7..1e9847e735485 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: 2023-01-24 +date: 2023-01-25 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 3f0495e05e642..99797bffe6315 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: 2023-01-24 +date: 2023-01-25 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 cceee7a34091d..d9156da1b2715 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: 2023-01-24 +date: 2023-01-25 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 0c26d2e6c6637..8902ad56a11be 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: 2023-01-24 +date: 2023-01-25 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 35224a1d37233..012450ce5ccef 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: 2023-01-24 +date: 2023-01-25 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 891c1ef5cf11f..e8f230cbbd148 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: 2023-01-24 +date: 2023-01-25 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 1f708fb570cbe..2107ab6b25785 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: 2023-01-24 +date: 2023-01-25 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 5a5fcda5e9291..f0ebf8d108c9d 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: 2023-01-24 +date: 2023-01-25 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 da7cdb477d8ca..fb29394c43986 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: 2023-01-24 +date: 2023-01-25 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 014c5a61ad30a..bf195a21030c5 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: 2023-01-24 +date: 2023-01-25 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 2328a4397af50..b6829a713dc5b 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: 2023-01-24 +date: 2023-01-25 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 e4a5ad98a6940..100b3d0ff0fe4 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: 2023-01-24 +date: 2023-01-25 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_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index f4f357b108005..8aa5b0eeec9bd 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index cf843b74cfaf5..5023c0435753b 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: 2023-01-24 +date: 2023-01-25 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 411da85281a0e..57916cc232c8c 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: 2023-01-24 +date: 2023-01-25 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 3dcd3fd16c316..60ce18487be4f 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: 2023-01-24 +date: 2023-01-25 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 aaff3cbae701a..bbf16bbbdcf02 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: 2023-01-24 +date: 2023-01-25 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 728833559ff38..741cc149bba5c 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index eafeacdc38731..b9d892401025d 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 2a905ca49cda0..d92ecbce88570 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index e459334f636dd..fa797c9f29bf9 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: 2023-01-24 +date: 2023-01-25 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 e1f166ac9e078..b915affd484f7 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: 2023-01-24 +date: 2023-01-25 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 42170d62a0446..f1906c594e7e0 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: 2023-01-24 +date: 2023-01-25 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 991491f0751fd..60b366c31383f 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: 2023-01-24 +date: 2023-01-25 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 24e08a2548f07..3ac047b60e78a 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: 2023-01-24 +date: 2023-01-25 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 4f47a743598ac..3901597fb9e91 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: 2023-01-24 +date: 2023-01-25 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 de9f86c2a2754..462366995a653 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: 2023-01-24 +date: 2023-01-25 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 0a67dd81eaf74..ce4e776280213 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 4a3866d17e3a2..a7cf269ee38bd 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 5f01094604539..a8ac08a315a7a 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: 2023-01-24 +date: 2023-01-25 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_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 0c07efce09e5e..ae8670f5dec70 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 6bf235465a72f..347fe000515e3 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 17a19f4939f35..01eeecc58b93e 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: 2023-01-24 +date: 2023-01-25 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 44336a7dba89f..befdb1cc8734d 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: 2023-01-24 +date: 2023-01-25 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 0b3c7a242736b..2dc76eb947af5 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: 2023-01-24 +date: 2023-01-25 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 2fef44fc5b17f..b64cc7cc08705 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: 2023-01-24 +date: 2023-01-25 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 f0570e9080b49..1980b063ac49a 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: 2023-01-24 +date: 2023-01-25 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 a260131c24776..49dafb3c3f91f 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: 2023-01-24 +date: 2023-01-25 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 ec5441569c8d8..562a637256b05 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: 2023-01-24 +date: 2023-01-25 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 291b5ca3202c7..0c054048d3ead 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: 2023-01-24 +date: 2023-01-25 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 e4801f606a949..685863468e1c2 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: 2023-01-24 +date: 2023-01-25 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 5c623d4de19e5..4a56ad41fc1f9 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: 2023-01-24 +date: 2023-01-25 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 222009d8f902c..9328c94291a8a 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -4453,7 +4453,7 @@ "\nThe change type indicates what was changed in this table compared to the currently active table of this layer." ], "signature": [ - "\"layers\" | \"initial\" | \"extended\" | \"unchanged\" | \"reduced\" | \"reorder\"" + "\"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"extended\" | \"reorder\"" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 91643daa835ca..ee1860d9a2d5a 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: 2023-01-24 +date: 2023-01-25 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 ef480ba5f9287..b58751f65148c 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: 2023-01-24 +date: 2023-01-25 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 8ca729ecbd008..a2cd4c1c2cc38 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: 2023-01-24 +date: 2023-01-25 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 35357f5f36bd2..4bbcdac001647 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: 2023-01-24 +date: 2023-01-25 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 711eb0bcf6a20..94c4877eb4a3a 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -4443,29 +4443,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index c22bfac5d3dde..8558d457d3899 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: 2023-01-24 +date: 2023-01-25 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 9c49a4bacd7c2..1c99a88f8d66e 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: 2023-01-24 +date: 2023-01-25 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 32a3531008d02..dad6f9bb1e201 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.devdocs.json b/api_docs/maps_ems.devdocs.json index 41caee0f1889f..2e289025d1d8e 100644 --- a/api_docs/maps_ems.devdocs.json +++ b/api_docs/maps_ems.devdocs.json @@ -1014,7 +1014,7 @@ "label": "DEFAULT_EMS_LANDING_PAGE_URL", "description": [], "signature": [ - "\"https://maps.elastic.co/v8.3\"" + "\"https://maps.elastic.co/v8.7\"" ], "path": "src/plugins/maps_ems/common/ems_defaults.ts", "deprecated": false, diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 6d42c9f0a0fdc..42822cab39150 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: 2023-01-24 +date: 2023-01-25 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 e9fff64a18949..e12ad6fdfc9d1 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: 2023-01-24 +date: 2023-01-25 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 1496a072adbd7..bf922479b7922 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: 2023-01-24 +date: 2023-01-25 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 15be10b40cc44..38b487c4e9bdc 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: 2023-01-24 +date: 2023-01-25 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 7637ab1a93ad6..6548e4fc8a019 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: 2023-01-24 +date: 2023-01-25 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 22e51d34dcff1..7c256c099085e 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index ecd955659daac..12abfa38e8c20 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index d779d39400a3f..1758977b7e0ca 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -830,7 +830,7 @@ }, " | undefined; list: () => string[]; }; selectedAlertId?: string | undefined; } & ", "CommonProps", - " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | keyof React.HTMLAttributes | \"css\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"children\" | \"ref\" | \"type\" | \"onError\" | \"hidden\" | \"color\" | \"id\" | \"className\" | \"size\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"key\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"onClose\" | \"data-test-subj\" | \"css\" | \"as\" | \"paddingSize\" | \"focusTrapProps\" | \"ownFocus\" | \"maxWidth\" | \"hideCloseButton\" | \"closeButtonAriaLabel\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\">, \"children\" | \"type\" | \"onError\" | \"hidden\" | \"color\" | \"id\" | \"alert\" | \"className\" | \"size\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"key\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"onClose\" | \"data-test-subj\" | \"css\" | \"as\" | \"paddingSize\" | \"focusTrapProps\" | \"ownFocus\" | \"alerts\" | \"maxWidth\" | \"hideCloseButton\" | \"closeButtonAriaLabel\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"isInApp\" | \"observabilityRuleTypeRegistry\" | \"selectedAlertId\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" + " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | keyof React.HTMLAttributes | \"css\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"children\" | \"ref\" | \"type\" | \"onError\" | \"hidden\" | \"color\" | \"id\" | \"className\" | \"size\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"key\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"onClose\" | \"data-test-subj\" | \"css\" | \"as\" | \"paddingSize\" | \"focusTrapProps\" | \"ownFocus\" | \"maxWidth\" | \"hideCloseButton\" | \"closeButtonAriaLabel\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\">, \"children\" | \"type\" | \"onError\" | \"hidden\" | \"color\" | \"id\" | \"alert\" | \"className\" | \"size\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"placeholder\" | \"security\" | \"key\" | \"defaultValue\" | \"lang\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"onClose\" | \"data-test-subj\" | \"css\" | \"as\" | \"paddingSize\" | \"focusTrapProps\" | \"ownFocus\" | \"alerts\" | \"maxWidth\" | \"hideCloseButton\" | \"closeButtonAriaLabel\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"isInApp\" | \"observabilityRuleTypeRegistry\" | \"selectedAlertId\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" ], "path": "x-pack/plugins/observability/public/index.ts", "deprecated": false, @@ -7025,29 +7025,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", @@ -8310,29 +8310,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 1100bdcab6fdb..b468090720c89 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: 2023-01-24 +date: 2023-01-25 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 2ae28294b8cda..44e4929143370 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: 2023-01-24 +date: 2023-01-25 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 b2886a71063e7..bdfb5f0c1f844 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 34879 | 527 | 24525 | 1244 | +| 34891 | 527 | 24529 | 1244 | ## Plugin Directory @@ -47,7 +47,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | cloudLinks | [Kibana Core](https://github.com/orgs/elastic/teams/@kibana-core) | Adds the links to the Elastic Cloud console | 0 | 0 | 0 | 0 | | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 17 | 0 | 2 | 2 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 13 | 0 | 13 | 1 | -| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 264 | 0 | 260 | 9 | +| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 268 | 0 | 264 | 9 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2810 | 17 | 1018 | 0 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | customBranding | [global-experience](https://github.com/orgs/elastic/teams/kibana-global-experience) | Enables customization of Kibana | 0 | 0 | 0 | 0 | @@ -426,7 +426,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Machine Learning UI | A type guard to check record like object structures. | 3 | 0 | 2 | 0 | | | Machine Learning UI | Utilities to combine url state management with local storage. | 5 | 0 | 3 | 0 | | | Machine Learning UI | TypeScript-aware utility functions to get/set attributes from objects. | 8 | 2 | 8 | 0 | -| | [Owner missing] | - | 2 | 0 | 0 | 0 | +| | [Owner missing] | - | 10 | 0 | 0 | 0 | | | Machine Learning UI | Creates a deterministic number based hash out of a string. | 2 | 0 | 1 | 0 | | | Machine Learning UI | Url state management utilities. | 31 | 1 | 24 | 1 | | | [Owner missing] | - | 71 | 0 | 69 | 3 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 4a667dbf1b54d..f7cee4742e313 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: 2023-01-24 +date: 2023-01-25 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 f437955259942..5fdf09635d65c 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: 2023-01-24 +date: 2023-01-25 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 ae3edb3cae30f..84df35fc21a9b 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: 2023-01-24 +date: 2023-01-25 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 15328235b2ffd..98fe9b447f2e1 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: 2023-01-24 +date: 2023-01-25 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 bb4cd64052838..cf348b76faa70 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: 2023-01-24 +date: 2023-01-25 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 dc7f15d44c7be..ee10961989f17 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: 2023-01-24 +date: 2023-01-25 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 5e7496106952d..127230c60b313 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: 2023-01-24 +date: 2023-01-25 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 4773de4ce7489..d1ae0cdd44378 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: 2023-01-24 +date: 2023-01-25 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 a208b590d5b5f..420fb21472668 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: 2023-01-24 +date: 2023-01-25 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 022f4de195bcc..4b82043232564 100644 --- a/api_docs/saved_objects_management.devdocs.json +++ b/api_docs/saved_objects_management.devdocs.json @@ -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; width?: string | undefined; security?: string | undefined; 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; placeholder?: string | undefined; width?: string | undefined; security?: string | undefined; field: (string & {}) | keyof ", { "pluginId": "savedObjectsManagement", "scope": "public", @@ -310,7 +310,7 @@ "section": "def-public.SavedObjectsManagementRecord", "text": "SavedObjectsManagementRecord" }, - "; headers?: 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; css?: ", + "; headers?: 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; 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; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index c2d4542264ece..6af81c24bb803 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: 2023-01-24 +date: 2023-01-25 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 6d87e255e34ae..55a6c8381c241 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: 2023-01-24 +date: 2023-01-25 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 db3a99f65f89f..2204398d32a32 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: 2023-01-24 +date: 2023-01-25 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 199899b2a42d2..c8dc58ae28ac7 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: 2023-01-24 +date: 2023-01-25 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 afb40e68ed0a4..c68d9d43b87ae 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: 2023-01-24 +date: 2023-01-25 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 7a4f77ad57fa0..9e251ec2872cf 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: 2023-01-24 +date: 2023-01-25 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 b2110708e7adb..5af06b37a16da 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: 2023-01-24 +date: 2023-01-25 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 1f4d03c54951b..ad96e67593dba 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: 2023-01-24 +date: 2023-01-25 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 c373e4ac895fd..7f8a39b95aaaa 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: 2023-01-24 +date: 2023-01-25 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 eb765b8abb7d0..68f9f742ee5a8 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: 2023-01-24 +date: 2023-01-25 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 6a4bec58b36bb..65b064a72d6ea 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: 2023-01-24 +date: 2023-01-25 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 e2196c70e2a05..751b42cdb3595 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: 2023-01-24 +date: 2023-01-25 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 6bb32b0389695..9e42911806d78 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: 2023-01-24 +date: 2023-01-25 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 c9b5c7b67b4d3..4d45e69fb3ac0 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: 2023-01-24 +date: 2023-01-25 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 6c7b69bc66399..c9de28875b1e5 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: 2023-01-24 +date: 2023-01-25 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 34a58c9c6dfa6..0cf2a73a4529d 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: 2023-01-24 +date: 2023-01-25 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 6473c51a8d6bf..4bb7baef375b3 100644 --- a/api_docs/telemetry_collection_manager.devdocs.json +++ b/api_docs/telemetry_collection_manager.devdocs.json @@ -516,29 +516,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index ddac6ac33dfa4..22579d69d8ced 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: 2023-01-24 +date: 2023-01-25 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 4d1e3231f88c9..def0dc23b8477 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: 2023-01-24 +date: 2023-01-25 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 147d3edc5794e..3c6462dd3109b 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: 2023-01-24 +date: 2023-01-25 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 04ea56346a8eb..ba49c3b608b1f 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: 2023-01-24 +date: 2023-01-25 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 bc205c49a267a..a88d0a629b86b 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: 2023-01-24 +date: 2023-01-25 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 c80559eab8dc0..2d9bb58ccabac 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: 2023-01-24 +date: 2023-01-25 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 1f9c656c50a76..2ea4be3a6dfc4 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -6608,7 +6608,15 @@ "label": "AsApiContract", "description": [], "signature": [ - "{ [K in keyof T as CamelToSnake>>]: T[K]; }" + "{ [K in keyof T as CamelToSnake>>]: K extends \"frequency\" ? ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.AsApiContract", + "text": "AsApiContract" + }, + " : T[K]; }" ], "path": "x-pack/plugins/actions/common/rewrite_request_case.ts", "deprecated": false, diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index c3bab17c76d18..e9c9f30000f13 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: 2023-01-24 +date: 2023-01-25 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 5768d4d47e19a..516218e9fb091 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: 2023-01-24 +date: 2023-01-25 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 9a2e2688c618b..2ef3040290b0d 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: 2023-01-24 +date: 2023-01-25 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 4af77b69a2a50..00b6cab4773c8 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index d426e0f5750fe..6b9c6903546d4 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index a18eb699a0f2a..548b3ef9d857d 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -375,7 +375,7 @@ "section": "def-common.Filter", "text": "Filter" }, - "[] | undefined; refreshInterval?: number | undefined; placeholder?: string | undefined; iconType?: ", + "[] | undefined; placeholder?: string | undefined; refreshInterval?: number | undefined; iconType?: ", "IconType", " | undefined; indexPatterns?: ", { diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 7b5afe12f9813..f272c481dd11f 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: 2023-01-24 +date: 2023-01-25 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 548439614f538..77d73b78e172e 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: 2023-01-24 +date: 2023-01-25 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 2bbad182b7433..f17065e04542f 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: 2023-01-24 +date: 2023-01-25 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 00963f3e24367..1c0052d9351c7 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -785,29 +785,29 @@ "ExplainResponse", ">; }; features: ", "default", - "; fieldCaps: { (this: That, params?: ", + "; fieldCaps: { (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithOutMeta", " | undefined): Promise<", "FieldCapsResponse", - ">; (this: That, params?: ", + ">; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptionsWithMeta", " | undefined): Promise<", "TransportResult", "<", "FieldCapsResponse", - ", unknown>>; (this: That, params?: ", + ", unknown>>; (this: That, params: ", "FieldCapsRequest", " | ", "FieldCapsRequest", - " | undefined, options?: ", + ", options?: ", "TransportRequestOptions", " | undefined): Promise<", "FieldCapsResponse", diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index f22ed712c50bb..5b48442ddb42a 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: 2023-01-24 +date: 2023-01-25 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 fb4ae1f8b0638..5c7349a555015 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: 2023-01-24 +date: 2023-01-25 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 bd7955854a367..2f54b387f6615 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: 2023-01-24 +date: 2023-01-25 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 97eb2a8aa1d2f..65c6f0898acd3 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: 2023-01-24 +date: 2023-01-25 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 710d90af79dae..5d4c295dc0c78 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: 2023-01-24 +date: 2023-01-25 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 52dad7f788308..83d3f2beca7a8 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: 2023-01-24 +date: 2023-01-25 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 f35350542f025..2359b557affc9 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: 2023-01-24 +date: 2023-01-25 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 eb1a93c15b37d..f1dd8fa7504d8 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: 2023-01-24 +date: 2023-01-25 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 0f545cb502b3a..a71e01a107d27 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: 2023-01-24 +date: 2023-01-25 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 c581d4537320f..8699c001f12ff 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: 2023-01-24 +date: 2023-01-25 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 8a598f2a8af51..fb348433b9a43 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: 2023-01-24 +date: 2023-01-25 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 9181fa899b681..c487f4833f3d3 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: 2023-01-24 +date: 2023-01-25 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 fbb176e39d392..ad5edb9b89fa3 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: 2023-01-24 +date: 2023-01-25 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/docs/api/spaces-management/delete.asciidoc b/docs/api/spaces-management/delete.asciidoc index 5b4db78c056dd..b1b453a0e2d3e 100644 --- a/docs/api/spaces-management/delete.asciidoc +++ b/docs/api/spaces-management/delete.asciidoc @@ -11,7 +11,7 @@ WARNING: When you delete a space, all saved objects that belong to the space are [[spaces-api-delete-request]] ==== Request -`DELETE :/api/spaces/space/marketing` +`DELETE :/api/spaces/space/` [[spaces-api-delete-errors-codes]] ==== Response codes diff --git a/docs/apm/traces.asciidoc b/docs/apm/traces.asciidoc index 904be1c8e769d..971d358092489 100644 --- a/docs/apm/traces.asciidoc +++ b/docs/apm/traces.asciidoc @@ -6,7 +6,7 @@ TIP: Traces link together related transactions to show an end-to-end performance and which services were part of it. In addition to the Traces overview, you can view your application traces in the <>. -*Traces* displays your application's entry transactions. +*Traces* displays your application's entry (root) transactions. Transactions with the same name are grouped together and only shown once in this table. If you're using <>, this view is key to finding the critical paths within your application. diff --git a/docs/apm/troubleshooting.asciidoc b/docs/apm/troubleshooting.asciidoc index ba634475ba457..50345e1495314 100644 --- a/docs/apm/troubleshooting.asciidoc +++ b/docs/apm/troubleshooting.asciidoc @@ -41,20 +41,18 @@ don't forget to check our other troubleshooting guides or discussion forum: This section can help with any of the following: * Data isn't displaying in the APM app +* Data isn't displaying in the APM app after an upgrade * You see a message like "No Services Found", * You see errors like "Fielddata is disabled on text fields by default..." -There are a number of factors that could be at play here. -One important thing to double-check first is your index template. +These problems are likely to be caused by a missing index template or ingest pipeline. +By default, {fleet} sets up these and other APM assets when the APM integration is installed. +Try reinstalling the APM integration by navigating to +**Integrations** > **Elastic APM** > **Manage in Fleet** > **Settings** > **Reinstall Elastic APM**. -*Index templates* -For the APM app to work correctly, an index template must exist for each APM data stream. -By default, {fleet} sets up APM index templates when the APM integration is installed. -Take note that index templates *cannot* be applied retroactively -- they are only applied at index creation time. -More information is available in {apm-guide-ref}/apm-server-configuration.html[Set up and configure]. - -You can check for the existence of APM index templates in Kibana. -Go to **Stack Management** > **Index Management** > **Index Templates** and search for `apm`. +Because assets cannot be applied to indices retroactively, +after reinstalling the APM integration you must either wait for the index to rollover or force a rollover. +To force a rollover, use the {ref}/indices-rollover-index.html[rollover API] to target the relevant {apm-guide-ref}/apm-data-streams.html[APM data streams]. [float] [[troubleshooting-too-many-transactions]] diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index f5400d7ee286a..11e9b1f450462 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -146,8 +146,7 @@ Enables you to use {es} indices in *TSVB* visualizations. Affects the *TSVB* histogram density. Must be set higher than `histogram:maxBars`. [[query-allowleadingwildcards]]`query:allowLeadingWildcards`:: -Allows a wildcard (*) as the first character in a query clause. Only applies -when experimental query features are enabled in the query bar. To disallow +Allows a wildcard (*) as the first character in a query clause. To disallow leading wildcards in Lucene queries, use `query:queryString:options`. [[query-querystring-options]]`query:queryString:options`:: diff --git a/docs/management/rollups/create_and_manage_rollups.asciidoc b/docs/management/rollups/create_and_manage_rollups.asciidoc index 998aa5f7d39ca..7a1d9fdcfe82e 100644 --- a/docs/management/rollups/create_and_manage_rollups.asciidoc +++ b/docs/management/rollups/create_and_manage_rollups.asciidoc @@ -12,7 +12,7 @@ visualizations and reports. To get started, open the main menu, then click *Stack Management > Rollup Jobs*. [role="screenshot"] -image::images/management_rollup_list.png[][List of currently active rollup jobs] +image::images/management_rollup_list.png[List of currently active rollup jobs] Before using this feature, you should be familiar with how rollups work. {ref}/xpack-rollup.html[Rolling up historical data] is a good source for more @@ -40,21 +40,21 @@ the rollup index. For example, if your index pattern is `metricbeat-*`, you can name your rollup index `rollup-metricbeat`, but not `metricbeat-rollup`. [role="screenshot"] -image::images/management_create_rollup_job.png[][Wizard that walks you through creation of a rollup job] +image::images/management_create_rollup_job.png[Wizard that walks you through creation of a rollup job] [float] [[manage-rollup-job]] === Start, stop, and delete rollup jobs -Once you’ve saved a rollup job, you’ll see it the *Rollup Jobs* overview page, +Once you've saved a rollup job, you'll see it the *Rollup Jobs* overview page, where you can drill down for further investigation. The *Manage* menu enables you to start, stop, and delete the rollup job. You must first stop a rollup job before deleting it. [role="screenshot"] -image::images/management_rollup_job_details.png[][Rollup job details] +image::images/management_rollup_job_details.png[Rollup job details] -You can’t change a rollup job after you’ve created it. To select additional +You can't change a rollup job after you've created it. To select additional fields or redefine terms, you must delete the existing job, and then create a new one with the updated specifications. Be sure to use a different name for the new rollup job—reusing the same name can lead to problems with mismatched @@ -66,11 +66,11 @@ configuration]. === Try it: Create and visualize rolled up data This example creates a rollup job to capture log data from sample web logs. -Before you start, <>. +Before you start, <>. In this example, you want data that is older than 7 days in the `kibana_sample_data_logs` index to roll up into the `rollup_logstash` index. -You’ll bucket the rolled up data on an hourly basis, using `60m` for the time +You'll bucket the rolled up data on an hourly basis, using `60m` for the time bucket configuration. For this example, the job will perform the rollup every minute. However, you'd @@ -163,7 +163,7 @@ matches the rollup index and `kibana_sample_data_logs` matches the raw data. as your source to see both the raw and rolled up data. + [role="screenshot"] -image::images/management-create-rollup-bar-chart.png[][Create visualization of rolled up data] +image::images/management-create-rollup-bar-chart.png[Create visualization of rolled up data] . Select *Bar vertical stacked* in the chart type dropdown. @@ -176,4 +176,4 @@ bytes`. to zoom in. + [role="screenshot"] -image::images/management_rollup_job_dashboard.png[][Dashboard with rolled up data] +image::images/management_rollup_job_dashboard.png[Dashboard with rolled up data] diff --git a/docs/setup/install/rpm.asciidoc b/docs/setup/install/rpm.asciidoc index 996175c724293..05dbac5ba8319 100644 --- a/docs/setup/install/rpm.asciidoc +++ b/docs/setup/install/rpm.asciidoc @@ -107,11 +107,12 @@ The RPM for Kibana v{version} can be downloaded from the website and installed a ["source","sh",subs="attributes"] -------------------------------------------- wget https://artifacts.elastic.co/downloads/kibana/kibana-{version}-x86_64.rpm -shasum -a 512 kibana-{version}-x86_64.rpm <1> +wget https://artifacts.elastic.co/downloads/kibana/kibana-{version}-x86_64.rpm.sha512 +shasum -a 512 -c kibana-{version}-x86_64.rpm <1> sudo rpm --install kibana-{version}-x86_64.rpm -------------------------------------------- -<1> Compare the SHA produced by `shasum` with the - https://artifacts.elastic.co/downloads/kibana/kibana-{version}-x86_64.rpm.sha512[published SHA]. +<1> Compares the SHA of the downloaded RPM and the published checksum, which should output + `kibana-{version}-x86_64.rpm: OK`. endif::[] diff --git a/package.json b/package.json index 6313245fc4a0e..bda02247f639e 100644 --- a/package.json +++ b/package.json @@ -90,8 +90,7 @@ "**/typescript": "4.6.3", "**/use-composed-ref": "^1.3.0", "**/use-latest": "^1.2.1", - "globby/fast-glob": "^3.2.11", - "puppeteer/node-fetch": "^2.6.7" + "globby/fast-glob": "^3.2.11" }, "dependencies": { "@appland/sql-parser": "^1.5.1", @@ -104,7 +103,7 @@ "@elastic/charts": "51.3.0", "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.6.0-canary.3", - "@elastic/ems-client": "8.3.3", + "@elastic/ems-client": "8.4.0", "@elastic/eui": "73.0.0", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", @@ -571,7 +570,7 @@ "json-stable-stringify": "^1.0.1", "json-stringify-pretty-compact": "1.2.0", "json-stringify-safe": "5.0.1", - "jsonwebtoken": "^8.3.0", + "jsonwebtoken": "^9.0.0", "jsts": "^1.6.2", "kea": "^2.4.2", "launchdarkly-js-client-sdk": "^2.22.1", @@ -917,7 +916,7 @@ "@types/json-schema": "^7", "@types/json-stable-stringify": "^1.0.32", "@types/json5": "^2.2.0", - "@types/jsonwebtoken": "^8.5.6", + "@types/jsonwebtoken": "^9.0.0", "@types/license-checker": "15.0.0", "@types/listr": "^0.14.0", "@types/loader-utils": "^2.0.3", @@ -1156,7 +1155,7 @@ "rxjs-marbles": "^7.0.1", "sass-loader": "^10.4.1", "selenium-webdriver": "^4.7.1", - "simple-git": "^3.15.1", + "simple-git": "^3.16.0", "sinon": "^7.4.2", "sort-package-json": "^1.53.1", "source-map": "^0.7.4", diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts index 9a97f2f91e4eb..183d2509ad48d 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts @@ -7,7 +7,7 @@ */ import { isNotFoundFromUnsupportedServer } from '@kbn/core-elasticsearch-server-internal'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsCollectMultiNamespaceReferencesObject, SavedObjectsCollectMultiNamespaceReferencesOptions, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts index 3ef9aa48f30e4..cd888ddb4c2e4 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts @@ -13,7 +13,7 @@ import { } from './internal_bulk_resolve.test.mock'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsBulkResolveObject, SavedObjectsBaseOptions, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts index 747a0d5f5e6d6..2d4e75654b1fe 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts @@ -9,7 +9,7 @@ import type { MgetResponseItem } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { isNotFoundFromUnsupportedServer } from '@kbn/core-elasticsearch-server-internal'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsBaseOptions, SavedObjectsBulkResolveObject, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts index 2dfe78a3d5ccd..37b29a6a94e66 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts @@ -7,7 +7,7 @@ */ import type { Payload } from '@hapi/boom'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { ISavedObjectTypeRegistry, SavedObjectsRawDoc, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts index dad313988e1c6..bd30f9a10eeb1 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts @@ -20,7 +20,7 @@ import { estypes } from '@elastic/elasticsearch'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { SavedObjectsBulkUpdateObject } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsSerializer } from '@kbn/core-saved-objects-base-server-internal'; -import { SavedObject } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import { ISavedObjectsSecurityExtension, AuditAction, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.spaces_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.spaces_extension.test.ts index 59162f991928a..adfa75a48e986 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.spaces_extension.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.spaces_extension.test.ts @@ -27,7 +27,7 @@ import { SavedObjectsBulkUpdateObject, } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsSerializer } from '@kbn/core-saved-objects-base-server-internal'; -import { SavedObject } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import { ISavedObjectsSpacesExtension, ISavedObjectsSecurityExtension, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts index e8365293991fe..550bf9560a9fd 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts @@ -23,7 +23,7 @@ import { import type { Payload } from '@hapi/boom'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-common'; +import type { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-server'; import type { SavedObjectsBaseOptions, SavedObjectsFindOptions, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts index cb23c5f89fbcf..1c36ad1edc8b8 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts @@ -17,7 +17,7 @@ import { isSupportedEsServer, isNotFoundFromUnsupportedServer, } from '@kbn/core-elasticsearch-server-internal'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsBaseOptions, SavedObjectsIncrementCounterOptions, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts index 3144460270178..5eab945874309 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts @@ -34,7 +34,7 @@ import type { IndexMapping, SavedObjectsSerializer, } from '@kbn/core-saved-objects-base-server-internal'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { getBulkOperationError, getExpectedVersionProperties, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts index 50f78f09dd684..1771012ebba33 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract, ISavedObjectsRepository, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts index a6b9ba684b568..bbe40c8dba8c5 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts @@ -20,7 +20,7 @@ import { SavedObjectsType, SavedObjectsTypeMappingDefinition, } from '@kbn/core-saved-objects-server'; -import { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-server'; import { SavedObjectsBaseOptions, SavedObjectsBulkCreateObject, diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create.ts index 78a017ed03aba..f26e75bd37865 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create.ts @@ -6,10 +6,8 @@ * Side Public License, v 1. */ -import type { - SavedObjectsMigrationVersion, - SavedObjectReference, -} from '@kbn/core-saved-objects-common'; +import type { SavedObjectsMigrationVersion } from '@kbn/core-saved-objects-common'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; import type { MutatingOperationRefreshSetting, SavedObjectsBaseOptions } from './base'; /** diff --git a/packages/core/saved-objects/core-saved-objects-api-server/tsconfig.json b/packages/core/saved-objects/core-saved-objects-api-server/tsconfig.json index 0e593db446f6f..c091f255cbd21 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/tsconfig.json +++ b/packages/core/saved-objects/core-saved-objects-api-server/tsconfig.json @@ -11,7 +11,7 @@ "**/*.ts" ], "kbn_references": [ - "@kbn/core-saved-objects-common" + "@kbn/core-saved-objects-common", ], "exclude": [ "target/**/*", diff --git a/packages/core/saved-objects/core-saved-objects-common/src/saved_objects.ts b/packages/core/saved-objects/core-saved-objects-common/src/saved_objects.ts index 12e554cf185c8..00c12280bccda 100644 --- a/packages/core/saved-objects/core-saved-objects-common/src/saved_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-common/src/saved_objects.ts @@ -51,30 +51,30 @@ export interface SavedObjectError { /** * @public - * @deprecated See https://github.com/elastic/kibana/issues/149098 + * @deprecated See https://github.com/elastic/kibana/issues/149098. Import this type from @kbn/core/server instead. */ export type SavedObjectAttributeSingle = serverTypes.SavedObjectAttributeSingle; /** * @public - * @deprecated See https://github.com/elastic/kibana/issues/149098 + * @deprecated See https://github.com/elastic/kibana/issues/149098. Import this type from @kbn/core/server instead. */ export type SavedObjectAttribute = serverTypes.SavedObjectAttribute; /** * @public - * @deprecated See https://github.com/elastic/kibana/issues/149098 + * @deprecated See https://github.com/elastic/kibana/issues/149098. Import this type from @kbn/core/server instead. */ export type SavedObjectAttributes = serverTypes.SavedObjectAttributes; /** * @public - * @deprecated See https://github.com/elastic/kibana/issues/149098 + * @deprecated See https://github.com/elastic/kibana/issues/149098. Import this type from @kbn/core/server instead. */ export type SavedObjectReference = serverTypes.SavedObjectReference; /** * @public - * @deprecated See https://github.com/elastic/kibana/issues/149098 + * @deprecated See https://github.com/elastic/kibana/issues/149098. Import this type from @kbn/core/server instead. */ export type SavedObject = serverTypes.SavedObject; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts index daa13393d962e..f963342b7e2d7 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts @@ -8,7 +8,7 @@ import { CoreKibanaRequest } from '@kbn/core-http-router-server-internal'; import { httpServerMock } from '@kbn/core-http-server-mocks'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsExportTransform } from '@kbn/core-saved-objects-server'; import { applyExportTransforms } from './apply_export_transforms'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts index 6125c9fb7d739..e440b1baffafc 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts @@ -7,7 +7,8 @@ */ import { httpServerMock } from '@kbn/core-http-server-mocks'; -import type { SavedObject, SavedObjectError } from '@kbn/core-saved-objects-common'; +import type { SavedObjectError } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsExportTransform, SavedObjectsExportablePredicate, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts index 6d9adeb8a0d94..dddefe8ad73f7 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts @@ -8,7 +8,7 @@ import type { Logger } from '@kbn/logging'; import type { KibanaRequest } from '@kbn/core-http-server'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { SavedObjectsExportablePredicate, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts index 6ca23c358f931..a90c0fd78e743 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; /** * @public diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts index 498ddde9fbbae..2bb65c891d837 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts @@ -7,7 +7,7 @@ */ import { httpServerMock } from '@kbn/core-http-server-mocks'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; import { SavedObjectsExporter } from './saved_objects_exporter'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts index bd122dbf8b392..0f7705396f256 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts @@ -9,7 +9,7 @@ import type { Readable } from 'stream'; import { createListStream } from '@kbn/utils'; import type { Logger } from '@kbn/logging'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract, SavedObjectsFindResult, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts index 27fbb09a37018..07310a86fe7dc 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts @@ -8,7 +8,7 @@ import { range } from 'lodash'; import { sortObjects } from './sort_objects'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; describe('sortObjects()', () => { test('should return on empty array', () => { diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts index 551ba3989e527..d742a60d6be99 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; const getId = (object: { type: string; id: string }) => `${object.type}:${object.id}`; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts index 6088217bd9201..030edcbca7f3f 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { byIdAscComparator, getPreservedOrderComparator } from './utils'; const createObj = (id: string): SavedObject => ({ diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts index dbace21e98ca6..a02fefa8068df 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; export type SavedObjectComparator = (a: SavedObject, b: SavedObject) => number; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts index 02af9ca6dca77..a88e0864f532c 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts @@ -20,10 +20,10 @@ import { import { Readable } from 'stream'; import { v4 as uuidv4 } from 'uuid'; import type { - SavedObject, SavedObjectsImportFailure, SavedObjectsImportWarning, } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { SavedObjectsType, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts index 8c58af772b882..13faae72ea25a 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts @@ -7,11 +7,8 @@ */ import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsImportRetry, -} from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; import { checkConflicts } from './check_conflicts'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts index f4f6082ef18ab..c145d8ee97b26 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts @@ -8,11 +8,11 @@ import { v4 as uuidv4 } from 'uuid'; import type { - SavedObject, SavedObjectsImportFailure, SavedObjectError, SavedObjectsImportRetry, } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { ImportStateMap } from './types'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts index 225db282b31ee..42ba91279d75d 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts @@ -9,13 +9,15 @@ import { mockCreateOriginQuery } from './check_reference_origins.test.mock'; import type { - SavedObjectReference, - SavedObject, SavedObjectsImportFailure, SavedObjectsImportRetry, } from '@kbn/core-saved-objects-common'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; +import type { + ISavedObjectTypeRegistry, + SavedObject, + SavedObjectReference, +} from '@kbn/core-saved-objects-server'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { checkOriginConflicts } from './check_origin_conflicts'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts index 079c5c22191ed..0d4765743cddb 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts @@ -9,12 +9,11 @@ import pMap from 'p-map'; import { v4 as uuidv4 } from 'uuid'; import type { - SavedObject, SavedObjectsImportFailure, SavedObjectsImportRetry, } from '@kbn/core-saved-objects-common'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; +import type { ISavedObjectTypeRegistry, SavedObject } from '@kbn/core-saved-objects-server'; import { getObjectKey } from '@kbn/core-saved-objects-base-server-internal'; import type { ImportStateMap } from './types'; import { createOriginQuery } from './utils'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts index e86ff1f70794d..4120aff3ef215 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts @@ -14,7 +14,8 @@ import { createPromiseFromStreams, } from '@kbn/utils'; -import type { SavedObject, SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { SavedObjectsImportError } from '../errors'; import { getNonUniqueEntries } from './get_non_unique_entries'; import { createLimitStream } from './create_limit_stream'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts index 4b830e80fa6cb..872df75d2960b 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; export function createObjectsFilter(retries: SavedObjectsImportRetry[]) { const retryKeys = new Set(retries.map((retry) => `${retry.type}:${retry.id}`)); diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts index 146e6650fa4c4..9e332f1da896e 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts @@ -7,7 +7,8 @@ */ import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; -import type { SavedObject, SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; import { createSavedObjects } from './create_saved_objects'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts index 31caf8a130cae..6276902e7b3a2 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { CreatedObject } from '@kbn/core-saved-objects-server'; import { extractErrors } from './extract_errors'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts index bebe27492d41a..d677205526113 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportWarning } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportWarning } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsImportHookResult } from '@kbn/core-saved-objects-server'; import { executeImportHooks } from './execute_import_hooks'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts index d2e3063b1c49f..c2ae2ead97ee5 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportWarning } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportWarning } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsImportHook } from '@kbn/core-saved-objects-server'; export interface ExecuteImportHooksOptions { diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts index c4d3d0e4c2722..4ce5ac5d82d85 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts @@ -6,8 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; -import type { CreatedObject } from '@kbn/core-saved-objects-server'; +import type { SavedObject, CreatedObject } from '@kbn/core-saved-objects-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; import { extractErrors } from './extract_errors'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts index 97eca4a5d57be..a5124f269daa6 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { CreatedObject } from '@kbn/core-saved-objects-server'; export function extractErrors( diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts index d598326afa136..c0f0e510e1bb0 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { getImportStateMapForRetries } from './get_import_state_map_for_retries'; describe('#getImportStateMapForRetries', () => { diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts index dd4ed3036fb8c..65d30b040b2b3 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { ImportStateMap } from './types'; interface GetImportStateMapForRetriesParams { diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts index f8a8c502af38a..485c3ccb03380 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { regenerateIds } from './regenerate_ids'; jest.mock('uuid', () => ({ diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts index 818b6e512dcc2..77599011836a5 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsImportRetry } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; export function splitOverwrites( savedObjects: Array>, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts index 8f271908bf48d..05f6b9aa061b5 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts @@ -7,10 +7,10 @@ */ import type { - SavedObject, SavedObjectsImportFailure, SavedObjectsImportRetry, } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsImportError } from '../errors'; import type { ImportStateMap } from './types'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts index 0bc8a9190202e..e1cafa319eaf9 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts @@ -24,12 +24,11 @@ import { import { Readable } from 'stream'; import { v4 as uuidv4 } from 'uuid'; import type { - SavedObject, SavedObjectsImportFailure, SavedObjectsImportRetry, - SavedObjectReference, SavedObjectsImportWarning, } from '@kbn/core-saved-objects-common'; +import type { SavedObject, SavedObjectReference } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { SavedObjectsType, diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts index 72533ba7c877b..d6876492d11f3 100644 --- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts @@ -8,12 +8,12 @@ import { Readable } from 'stream'; import type { - SavedObject, SavedObjectsImportRetry, SavedObjectsImportFailure, SavedObjectsImportResponse, SavedObjectsImportSuccess, } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry, diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts index 44ee99aa2c970..5de9d4dc82b1a 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts @@ -8,7 +8,7 @@ import { schema } from '@kbn/config-schema'; import type { Logger } from '@kbn/logging'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../../internal_types'; import { importDashboards } from './lib'; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts index 4470983fafc62..d9c5f48b3bab1 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject, SavedObjectAttributes } from '@kbn/core-saved-objects-common'; +import type { SavedObject, SavedObjectAttributes } from '@kbn/core-saved-objects-server'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { collectReferencesDeep } from './collect_references_deep'; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts index 0c193f618624d..e6b31d044479e 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; const MAX_BULK_GET_SIZE = 10000; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts index 87452664ac517..e931ec2d3eb2a 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { importDashboards } from './import_dashboards'; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts index 51a63f23322bf..052576916c12d 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; export async function importDashboards( diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts index 47579b949aced..1faaba0f5b710 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts @@ -17,8 +17,8 @@ import { } from '@kbn/utils'; import Boom from '@hapi/boom'; import type { RequestHandlerWrapper } from '@kbn/core-http-server'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; import type { + SavedObject, ISavedObjectTypeRegistry, SavedObjectsExportResultDetails, } from '@kbn/core-saved-objects-server'; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json index f2db7db82446d..6d9f8874ebdb4 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json +++ b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json @@ -18,7 +18,6 @@ "@kbn/core-http-server", "@kbn/core-http-server-internal", "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-common", "@kbn/core-saved-objects-server", "@kbn/core-saved-objects-api-server", "@kbn/core-saved-objects-api-server-internal", diff --git a/packages/core/saved-objects/core-saved-objects-server/src/export.ts b/packages/core/saved-objects/core-saved-objects-server/src/export.ts index 67afd0b011a1d..72133ce4319a2 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/export.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/export.ts @@ -8,8 +8,9 @@ import type { Readable } from 'stream'; import type { KibanaRequest } from '@kbn/core-http-server'; -import type { SavedObject, SavedObjectTypeIdTuple } from '@kbn/core-saved-objects-common'; +import type { SavedObjectTypeIdTuple } from '@kbn/core-saved-objects-common'; import type { SavedObjectsFindOptionsReference } from '@kbn/core-saved-objects-api-server'; +import type { SavedObject } from '..'; /** * Utility class used to export savedObjects. diff --git a/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts b/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts index 6dcdac347faca..64bfa8d6c736a 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '../..'; /** * The EncryptedObjectDescriptor interface contains settings for describing diff --git a/packages/core/saved-objects/core-saved-objects-server/src/extensions/security.ts b/packages/core/saved-objects/core-saved-objects-server/src/extensions/security.ts index 4364bbbf2ad8f..7ad9c37062a3d 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/extensions/security.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/extensions/security.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; import type { EcsEventOutcome } from '@kbn/ecs'; +import type { SavedObject } from '../..'; /** * The PerformAuthorizationParams interface contains settings for checking diff --git a/packages/core/saved-objects/core-saved-objects-server/src/import.ts b/packages/core/saved-objects/core-saved-objects-server/src/import.ts index e0f6a4c05e14a..b42ebeb68b03a 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/import.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/import.ts @@ -8,11 +8,11 @@ import { Readable } from 'stream'; import { - SavedObject, SavedObjectsImportRetry, SavedObjectsImportWarning, SavedObjectsImportResponse, } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '..'; /** * Utility class used to import savedObjects. diff --git a/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_management.ts b/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_management.ts index 7a67d70cbf4d4..b68fa59d95302 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_management.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_management.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; import type { SavedObjectsExportTransform } from './export'; import type { SavedObjectsImportHook } from './import'; +import type { SavedObject } from '..'; /** * Configuration options for the {@link SavedObjectsType | type}'s management section. diff --git a/packages/core/saved-objects/core-saved-objects-server/src/serialization.ts b/packages/core/saved-objects/core-saved-objects-server/src/serialization.ts index 7752d0dd99e90..6b8159f9fce18 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/serialization.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/serialization.ts @@ -6,10 +6,8 @@ * Side Public License, v 1. */ -import type { - SavedObjectsMigrationVersion, - SavedObjectReference, -} from '@kbn/core-saved-objects-common'; +import type { SavedObjectsMigrationVersion } from '@kbn/core-saved-objects-common'; +import type { SavedObjectReference } from '..'; /** * A serializer that can be used to manually convert {@link SavedObjectsRawDoc | raw} or diff --git a/packages/kbn-apm-synthtrace/src/scenarios/mobile.ts b/packages/kbn-apm-synthtrace/src/scenarios/mobile.ts index 85fdee43b713c..0d57b99d9230e 100644 --- a/packages/kbn-apm-synthtrace/src/scenarios/mobile.ts +++ b/packages/kbn-apm-synthtrace/src/scenarios/mobile.ts @@ -356,7 +356,9 @@ const scenario: Scenario = async ({ scenarioOpts, logger }) => { .span({ spanName: 'onCreate', spanType: 'app', - spanSubtype: 'internal', + spanSubtype: 'external', + 'service.target.type': 'http', + 'span.destination.service.resource': 'external', }) .duration(50) .success() diff --git a/packages/kbn-cell-actions/src/components/cell_actions.test.tsx b/packages/kbn-cell-actions/src/components/cell_actions.test.tsx index d23d7f731b156..c7b685da3e097 100644 --- a/packages/kbn-cell-actions/src/components/cell_actions.test.tsx +++ b/packages/kbn-cell-actions/src/components/cell_actions.test.tsx @@ -32,7 +32,7 @@ describe('CellActions', () => { await getActionsPromise; }); - expect(queryByTestId('cellActions')).toBeInTheDocument(); + expect(queryByTestId(`cellActions-renderContent-${FIELD.name}`)).toBeInTheDocument(); }); it('renders InlineActions when mode is INLINE', async () => { diff --git a/packages/kbn-cell-actions/src/components/cell_actions.tsx b/packages/kbn-cell-actions/src/components/cell_actions.tsx index 682233eaa76b7..8dd6f875f19e3 100644 --- a/packages/kbn-cell-actions/src/components/cell_actions.tsx +++ b/packages/kbn-cell-actions/src/components/cell_actions.tsx @@ -34,9 +34,11 @@ export const CellActions: React.FC = ({ [field, triggerId, metadata] ); + const dataTestSubj = `cellActions-renderContent-${field.name}`; + if (mode === CellActionsMode.HOVER) { return ( -
+
= ({ } return ( -
+
{children} ( - ({ children, visibleCellActions, actionContext, showActionTooltips }) => { - const contentRef = useRef(null); - const [isExtraActionsPopoverOpen, setIsExtraActionsPopoverOpen] = useState(false); - const [showHoverContent, setShowHoverContent] = useState(false); - const popoverRef = useRef(null); - - const [{ value: actions }, loadActions] = useLoadActionsFn(); - - const { visibleActions, extraActions } = useMemo( - () => partitionActions(actions ?? [], visibleCellActions), - [actions, visibleCellActions] - ); - - const closePopover = useCallback(() => { - setShowHoverContent(false); - }, []); - - const closeExtraActions = useCallback( - () => setIsExtraActionsPopoverOpen(false), - [setIsExtraActionsPopoverOpen] - ); - - const onShowExtraActionsClick = useCallback(() => { - setIsExtraActionsPopoverOpen(true); - closePopover(); - }, [closePopover, setIsExtraActionsPopoverOpen]); - - const openPopOverDebounced = useMemo( - () => - debounce(() => { - if (!document.body.classList.contains(IS_DRAGGING_CLASS_NAME)) { - setShowHoverContent(true); - } - }, HOVER_INTENT_DELAY), - [] - ); - - // prevent setState on an unMounted component - useEffect(() => { - return () => { - openPopOverDebounced.cancel(); - }; - }, [openPopOverDebounced]); - - const onMouseEnter = useCallback(async () => { - // Do not open actions with extra action popover is open - if (isExtraActionsPopoverOpen) return; - - // memoize actions after the first call - if (actions === undefined) { - loadActions(actionContext); - } - - openPopOverDebounced(); - }, [isExtraActionsPopoverOpen, actions, openPopOverDebounced, loadActions, actionContext]); - - const onMouseLeave = useCallback(() => { - closePopover(); - }, [closePopover]); - - const content = useMemo(() => { - return ( - // Hack - Forces extra actions popover to close when hover content is clicked. - // This hack is required because we anchor the popover to the hover content instead - // of anchoring it to the button that triggers the popover. - // eslint-disable-next-line jsx-a11y/click-events-have-key-events -
- {children} -
- ); - }, [onMouseEnter, closeExtraActions, children]); - +export const HoverActionsPopover: React.FC = ({ + children, + visibleCellActions, + actionContext, + showActionTooltips, +}) => { + const contentRef = useRef(null); + const [isExtraActionsPopoverOpen, setIsExtraActionsPopoverOpen] = useState(false); + const [showHoverContent, setShowHoverContent] = useState(false); + const popoverRef = useRef(null); + + const [{ value: actions, error }, loadActions] = useLoadActionsFn(); + + const { visibleActions, extraActions } = useMemo( + () => partitionActions(actions ?? [], visibleCellActions), + [actions, visibleCellActions] + ); + + const openPopOverDebounced = useMemo( + () => + debounce(() => { + if (!document.body.classList.contains(IS_DRAGGING_CLASS_NAME)) { + setShowHoverContent(true); + } + }, HOVER_INTENT_DELAY), + [] + ); + + const closePopover = useCallback(() => { + openPopOverDebounced.cancel(); + setShowHoverContent(false); + }, [openPopOverDebounced]); + + const closeExtraActions = useCallback( + () => setIsExtraActionsPopoverOpen(false), + [setIsExtraActionsPopoverOpen] + ); + + const onShowExtraActionsClick = useCallback(() => { + setIsExtraActionsPopoverOpen(true); + closePopover(); + }, [closePopover, setIsExtraActionsPopoverOpen]); + + // prevent setState on an unMounted component + useEffect(() => { + return () => { + openPopOverDebounced.cancel(); + }; + }, [openPopOverDebounced]); + + const onMouseEnter = useCallback(async () => { + // Do not open actions with extra action popover is open + if (isExtraActionsPopoverOpen) return; + + // memoize actions after the first call + if (actions === undefined) { + loadActions(actionContext); + } + + openPopOverDebounced(); + }, [isExtraActionsPopoverOpen, actions, openPopOverDebounced, loadActions, actionContext]); + + const onMouseLeave = useCallback(() => { + closePopover(); + }, [closePopover]); + + const content = useMemo(() => { return ( - <> -
- - {showHoverContent ? ( -
- -

{YOU_ARE_IN_A_DIALOG_CONTAINING_OPTIONS(actionContext.field.name)}

-
- {visibleActions.map((action) => ( - - ))} - {extraActions.length > 0 ? ( - - ) : null} -
- ) : null} -
-
- - + // Hack - Forces extra actions popover to close when hover content is clicked. + // This hack is required because we anchor the popover to the hover content instead + // of anchoring it to the button that triggers the popover. + // eslint-disable-next-line jsx-a11y/click-events-have-key-events +
+ {children} +
); - } -); + }, [onMouseEnter, closeExtraActions, children]); + + useEffect(() => { + if (error) { + throw error; + } + }, [error]); + + return ( + <> +
+ + {showHoverContent ? ( +
+ +

{YOU_ARE_IN_A_DIALOG_CONTAINING_OPTIONS(actionContext.field.name)}

+
+ {visibleActions.map((action) => ( + + ))} + {extraActions.length > 0 ? ( + + ) : null} +
+ ) : null} +
+
+ + + ); +}; diff --git a/packages/kbn-cell-actions/src/components/inline_actions.tsx b/packages/kbn-cell-actions/src/components/inline_actions.tsx index bcf8222ce83ca..7d568ebb1bf0a 100644 --- a/packages/kbn-cell-actions/src/components/inline_actions.tsx +++ b/packages/kbn-cell-actions/src/components/inline_actions.tsx @@ -6,12 +6,12 @@ * Side Public License, v 1. */ -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { ActionItem } from './cell_action_item'; import { usePartitionActions } from '../hooks/actions'; import { ExtraActionsPopOver } from './extra_actions_popover'; import { ExtraActionsButton } from './extra_actions_button'; -import type { CellActionExecutionContext } from '../types'; +import { CellActionExecutionContext } from '../types'; import { useLoadActions } from '../hooks/use_load_actions'; interface InlineActionsProps { @@ -25,7 +25,7 @@ export const InlineActions: React.FC = ({ showActionTooltips, visibleCellActions, }) => { - const { value: allActions } = useLoadActions(actionContext); + const { value: allActions, error } = useLoadActions(actionContext); const { extraActions, visibleActions } = usePartitionActions( allActions ?? [], visibleCellActions @@ -38,6 +38,12 @@ export const InlineActions: React.FC = ({ [togglePopOver, showActionTooltips] ); + useEffect(() => { + if (error) { + throw error; + } + }, [error]); + return ( {visibleActions.map((action, index) => ( diff --git a/packages/kbn-es-query/src/filters/build_filters/combined_filter.ts b/packages/kbn-es-query/src/filters/build_filters/combined_filter.ts index 311a360d9cb1e..7e7d057f47a55 100644 --- a/packages/kbn-es-query/src/filters/build_filters/combined_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/combined_filter.ts @@ -56,7 +56,7 @@ const cleanUpFilter = (filter: Filter) => { export function buildCombinedFilter( relation: BooleanRelation, filters: Filter[], - indexPattern: DataViewBase, + indexPattern: Pick, disabled: FilterMeta['disabled'] = false, negate: FilterMeta['negate'] = false, alias?: FilterMeta['alias'], diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index e5da6d72de548..6ecc83b925a96 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -124,7 +124,7 @@ pageLoadAssetSize: threatIntelligence: 44299 timelines: 327300 transform: 41007 - triggersActionsUi: 119000 + triggersActionsUi: 120000 uiActions: 35121 uiActionsEnhanced: 38494 unifiedFieldList: 65500 diff --git a/renovate.json b/renovate.json index 87e3ca8986be4..932f0a6558864 100644 --- a/renovate.json +++ b/renovate.json @@ -268,6 +268,17 @@ "enabled": true, "prCreation": "immediate" }, + { + "groupName": "JSON Web Token", + "matchPackageNames": ["jsonwebtoken"], + "reviewers": [ + "team:response-ops", + "team:kibana-core" + ], + "matchBaseBranches": ["main"], + "labels": ["release_note:skip", "backport:all-open"], + "enabled": true + }, { "groupName": "XState", "matchPackageNames": ["xstate"], diff --git a/src/core/server/integration_tests/saved_objects/service/lib/repository_with_proxy.test.ts b/src/core/server/integration_tests/saved_objects/service/lib/repository_with_proxy.test.ts index 8cb2a5452726b..e38231a6e0ea4 100644 --- a/src/core/server/integration_tests/saved_objects/service/lib/repository_with_proxy.test.ts +++ b/src/core/server/integration_tests/saved_objects/service/lib/repository_with_proxy.test.ts @@ -9,7 +9,7 @@ import Hapi from '@hapi/hapi'; import h2o2 from '@hapi/h2o2'; import { URL } from 'url'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { ISavedObjectsRepository } from '@kbn/core-saved-objects-api-server'; import type { InternalCoreSetup, InternalCoreStart } from '@kbn/core-lifecycle-server-internal'; import { Root } from '@kbn/core-root-server-internal'; diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index 7fba321d968b9..4c8c7067e2ceb 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -83,7 +83,7 @@ export const PER_PACKAGE_ALLOWED_LICENSES = { export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint - '@elastic/ems-client@8.3.3': ['Elastic License 2.0'], + '@elastic/ems-client@8.4.0': ['Elastic License 2.0'], '@elastic/eui@73.0.0': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry }; diff --git a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap index 5156571218658..c240b6cc7a3d9 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap @@ -557,6 +557,19 @@ exports[`XYChart component it renders area 1`] = ` + + + + + + + + + + { paletteService, minInterval: 50, onClickValue, + onClickMultiValue, layerCellValueActions, onSelectRange, syncColors: false, @@ -1102,6 +1105,126 @@ describe('XYChart component', () => { expect(wrapper.find(Settings).at(0).prop('allowBrushingLastHistogramBin')).toEqual(true); }); + test('should not have tooltip actions for the detailed tooltip', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + + test('should not have tooltip actions for no split accessor', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + + test('should have tooltip actions for split accessor and default tooltip', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(1); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + test('onElementClick returns correct context data', () => { const geometry: GeometryValue = { x: 5, y: 1, accessor: 'y1', mark: null, datum: {} }; const series = { @@ -3284,14 +3407,11 @@ describe('XYChart component', () => { }} /> ); - const settings = component.find(Settings); - const tooltip = settings.prop('tooltip'); - expect(tooltip).toEqual( - expect.objectContaining({ - headerFormatter: undefined, - customTooltip: expect.any(Function), - }) - ); + const tooltip = component.find(Tooltip); + const customTooltip = tooltip.prop('customTooltip'); + expect(customTooltip).not.toBeUndefined(); + const headerFormatter = tooltip.prop('headerFormatter'); + expect(headerFormatter).toBeUndefined(); }); it('should render default tooltip, if detailed tooltip is hidden', () => { @@ -3306,14 +3426,11 @@ describe('XYChart component', () => { }} /> ); - const settings = component.find(Settings); - const tooltip = settings.prop('tooltip'); - expect(tooltip).toEqual( - expect.objectContaining({ - headerFormatter: expect.any(Function), - customTooltip: undefined, - }) - ); + const tooltip = component.find(Tooltip); + const customTooltip = tooltip.prop('customTooltip'); + expect(customTooltip).toBeUndefined(); + const headerFormatter = tooltip.prop('headerFormatter'); + expect(headerFormatter).not.toBeUndefined(); }); }); }); diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx index b9f8479c130f6..640b7f327ce83 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx @@ -8,6 +8,7 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { css } from '@emotion/react'; +import { i18n } from '@kbn/i18n'; import { Chart, Settings, @@ -27,6 +28,9 @@ import { Placement, Direction, XYChartElementEvent, + Tooltip, + XYChartSeriesIdentifier, + TooltipValue, } from '@elastic/charts'; import { partition } from 'lodash'; import { IconType } from '@elastic/eui'; @@ -47,7 +51,13 @@ import { LegendSizeToPixels, } from '@kbn/visualizations-plugin/common/constants'; import { PersistedState } from '@kbn/visualizations-plugin/public'; -import type { FilterEvent, BrushEvent, FormatFactory, LayerCellValueActions } from '../types'; +import type { + FilterEvent, + BrushEvent, + FormatFactory, + LayerCellValueActions, + MultiFilterEvent, +} from '../types'; import { isTimeChart } from '../../common/helpers'; import type { CommonXYDataLayerConfig, @@ -94,7 +104,7 @@ import { } from './annotations'; import { AxisExtentModes, SeriesTypes, ValueLabelModes, XScaleTypes } from '../../common/constants'; import { DataLayers } from './data_layers'; -import { Tooltip } from './tooltip'; +import { Tooltip as CustomTooltip } from './tooltip'; import { XYCurrentTime } from './xy_current_time'; import './xy_chart.scss'; @@ -121,6 +131,7 @@ export type XYChartRenderProps = Omit & { minInterval: number | undefined; interactive?: boolean; onClickValue: (data: FilterEvent['data']) => void; + onClickMultiValue: (data: MultiFilterEvent['data']) => void; layerCellValueActions: LayerCellValueActions; onSelectRange: (data: BrushEvent['data']) => void; renderMode: RenderMode; @@ -133,6 +144,10 @@ export type XYChartRenderProps = Omit & { timeFormat: string; }; +function nonNullable(v: T): v is NonNullable { + return v != null; +} + function getValueLabelsStyling(isHorizontal: boolean): { displayValue: RecursivePartial; } { @@ -173,6 +188,9 @@ function createSplitPoint( table: Datatable ) { const splitPointRowIndex = rows.findIndex((row) => { + if (Array.isArray(value)) { + return value.includes(row[accessor]); + } return row[accessor] === value; }); if (splitPointRowIndex !== -1) { @@ -197,6 +215,7 @@ export function XYChart({ paletteService, minInterval, onClickValue, + onClickMultiValue, layerCellValueActions, onSelectRange, interactive = true, @@ -534,6 +553,54 @@ export function XYChart({ valueLabels !== ValueLabelModes.HIDE && getValueLabelsStyling(shouldRotate); + const filterSelectedTooltipValues = ( + tooltipSelectedValues: Array< + TooltipValue, XYChartSeriesIdentifier> + > + ) => { + const layerIndexes: number[] = []; + tooltipSelectedValues.forEach((v) => { + const index = dataLayers.findIndex((l) => + v.seriesIdentifier.seriesKeys.some((key: string | number) => + l.accessors.some( + (accessor) => getAccessorByDimension(accessor, l.table.columns) === key.toString() + ) + ) + ); + if (!layerIndexes.includes(index) && index !== -1) { + layerIndexes.push(index); + } + }); + + if (!layerIndexes.length) return; + layerIndexes.forEach((layerIndex) => { + const layer = dataLayers[layerIndex]; + const { table } = layer; + + if (layer.splitAccessors?.length !== 1) return; + + const splitAccessor = getAccessorByDimension(layer.splitAccessors[0], table.columns); + const filterValues = tooltipSelectedValues + .map((v) => v.datum?.[splitAccessor]) + .filter(nonNullable); + + const splitPoints = filterValues + .map((v) => + createSplitPoint(splitAccessor, v, formattedDatatables[layer.layerId].table.rows, table) + ) + .filter(nonNullable); + if (splitPoints.length) { + onClickMultiValue({ + data: { + column: splitPoints[0].column, + value: splitPoints.map(({ value }) => value), + table, + }, + }); + } + }); + }; + const clickHandler: ElementClickListener = ([elementEvent]) => { // this cast is safe because we are rendering a cartesian chart const [xyGeometry, xySeries] = elementEvent as XYChartElementEvent; @@ -722,6 +789,8 @@ export function XYChart({ overflowX: 'hidden', position: uiState ? 'absolute' : 'relative', }); + // enable the tooltip actions only if there is at least one splitAccessor to the dataLayer + const hasTooltipActions = dataLayers.some((dataLayer) => dataLayer.splitAccessors) && interactive; return (
@@ -745,6 +814,60 @@ export function XYChart({ }} > + , XYChartSeriesIdentifier> + boundary={document.getElementById('app-fixed-viewport') ?? undefined} + headerFormatter={ + !args.detailedTooltip + ? ({ value }) => ( + + ) + : undefined + } + actions={ + !args.detailedTooltip && hasTooltipActions + ? [ + { + disabled: (selected) => selected.length < 1, + label: (selected) => + selected.length === 0 + ? i18n.translate('expressionXY.tooltipActions.emptyFilterSelection', { + defaultMessage: 'Select at least one series to filter', + }) + : i18n.translate('expressionXY.tooltipActions.filterValues', { + defaultMessage: 'Filter {seriesNumber} series', + values: { seriesNumber: selected.length }, + }), + onSelect: filterSelectedTooltipValues, + }, + ] + : undefined + } + customTooltip={ + args.detailedTooltip + ? ({ header, values }) => ( + + ) + : undefined + } + type={args.showTooltip ? TooltipType.VerticalCursor : TooltipType.None} + /> ( - - ) - : undefined, - customTooltip: args.detailedTooltip - ? ({ header, values }) => ( - - ) - : undefined, - type: args.showTooltip ? TooltipType.VerticalCursor : TooltipType.None, - }} allowBrushingLastHistogramBin={isTimeViz} rotation={shouldRotate ? 90 : 0} xDomain={xDomain} diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx index 2cbfb71807742..4719ccc92cd8d 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx @@ -31,7 +31,12 @@ import { extractContainerType, extractVisualizationType } from '@kbn/chart-expre import type { getDataLayers } from '../helpers'; import { LayerTypes, SeriesTypes } from '../../common/constants'; import type { CommonXYDataLayerConfig, XYChartProps } from '../../common'; -import type { BrushEvent, FilterEvent, GetCompatibleCellValueActions } from '../types'; +import type { + BrushEvent, + FilterEvent, + GetCompatibleCellValueActions, + MultiFilterEvent, +} from '../types'; export type GetStartDepsFn = () => Promise<{ data: DataPublicPluginStart; @@ -207,6 +212,9 @@ export const getXyChartRenderer = ({ const onSelectRange = (data: BrushEvent['data']) => { handlers.event({ name: 'brush', data }); }; + const onClickMultiValue = (data: MultiFilterEvent['data']) => { + handlers.event({ name: 'multiFilter', data }); + }; const layerCellValueActions = await getLayerCellValueActions( getDataLayers(config.args.layers), @@ -260,6 +268,7 @@ export const getXyChartRenderer = ({ minInterval={calculateMinInterval(deps.data.datatableUtilities, config)} interactive={handlers.isInteractive()} onClickValue={onClickValue} + onClickMultiValue={onClickMultiValue} layerCellValueActions={layerCellValueActions} onSelectRange={onSelectRange} renderMode={handlers.getRenderMode()} diff --git a/src/plugins/chart_expressions/expression_xy/public/types.ts b/src/plugins/chart_expressions/expression_xy/public/types.ts index f9b4d1b0131f8..884562f1a358c 100755 --- a/src/plugins/chart_expressions/expression_xy/public/types.ts +++ b/src/plugins/chart_expressions/expression_xy/public/types.ts @@ -15,6 +15,7 @@ import type { CellValueContext, RangeSelectContext, ValueClickContext, + MultiValueClickContext, } from '@kbn/embeddable-plugin/public'; import { ExpressionsServiceStart, ExpressionsSetup } from '@kbn/expressions-plugin/public'; @@ -37,6 +38,11 @@ export interface FilterEvent { data: ValueClickContext['data']; } +export interface MultiFilterEvent { + name: 'multiFilter'; + data: MultiValueClickContext['data']; +} + export interface BrushEvent { name: 'brush'; data: RangeSelectContext['data']; diff --git a/src/plugins/charts/public/index.ts b/src/plugins/charts/public/index.ts index 8fd3fcf29f2cb..762271ffad6f0 100644 --- a/src/plugins/charts/public/index.ts +++ b/src/plugins/charts/public/index.ts @@ -9,7 +9,11 @@ // TODO: https://github.com/elastic/kibana/issues/110891 /* eslint-disable @kbn/eslint/no_export_all */ -import { RangeSelectContext, ValueClickContext } from '@kbn/embeddable-plugin/public'; +import { + RangeSelectContext, + ValueClickContext, + MultiValueClickContext, +} from '@kbn/embeddable-plugin/public'; import { ChartsPlugin } from './plugin'; export const plugin = () => new ChartsPlugin(); @@ -30,6 +34,11 @@ export interface BrushTriggerEvent { data: RangeSelectContext['data']; } +export interface MultiClickTriggerEvent { + name: 'multiFilter'; + data: MultiValueClickContext['data']; +} + export type { CustomPaletteArguments, CustomPaletteState, diff --git a/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts b/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts index dae50854e00f8..8bd5f8ee50b48 100644 --- a/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts +++ b/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts @@ -6,18 +6,9 @@ * Side Public License, v 1. */ -import http from 'http'; -import https from 'https'; -import { Buffer } from 'buffer'; import { parse } from 'query-string'; -import Boom from '@hapi/boom'; -import type { KibanaRequest } from '@kbn/core-http-server'; -import type { SemVer } from 'semver'; +import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import type { RouteDependencies } from '../../..'; -import { sanitizeHostname } from '../../../../lib/utils'; -import type { ESConfigForProxy } from '../../../../types'; -import { getRequestConfig } from '../proxy/create_handler'; - interface SettingsToRetrieve { indices: boolean; fields: boolean; @@ -25,130 +16,70 @@ interface SettingsToRetrieve { dataStreams: boolean; } -type Config = ESConfigForProxy & { headers: KibanaRequest['headers'] } & { kibanaVersion: SemVer }; - const MAX_RESPONSE_SIZE = 10 * 1024 * 1024; // 10MB // Limit the response size to 10MB, because the response can be very large and sending it to the client // can cause the browser to hang. -const getMappings = async (settings: SettingsToRetrieve, config: Config) => { +const getMappings = async (settings: SettingsToRetrieve, esClient: IScopedClusterClient) => { if (settings.fields) { - const mappings = await getEntity('/_mapping', config); + const mappings = await esClient.asInternalUser.indices.getMapping(undefined, { + maxResponseSize: MAX_RESPONSE_SIZE, + maxCompressedResponseSize: MAX_RESPONSE_SIZE, + }); return mappings; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -const getAliases = async (settings: SettingsToRetrieve, config: Config) => { +const getAliases = async (settings: SettingsToRetrieve, esClient: IScopedClusterClient) => { if (settings.indices) { - const aliases = await getEntity('/_alias', config); + const aliases = await esClient.asInternalUser.indices.getAlias(); return aliases; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -const getDataStreams = async (settings: SettingsToRetrieve, config: Config) => { +const getDataStreams = async (settings: SettingsToRetrieve, esClient: IScopedClusterClient) => { if (settings.dataStreams) { - const dataStreams = await getEntity('/_data_stream', config); + const dataStreams = await esClient.asInternalUser.indices.getDataStream(); return dataStreams; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -const getLegacyTemplates = async (settings: SettingsToRetrieve, config: Config) => { +const getLegacyTemplates = async (settings: SettingsToRetrieve, esClient: IScopedClusterClient) => { if (settings.templates) { - const legacyTemplates = await getEntity('/_template', config); + const legacyTemplates = await esClient.asInternalUser.indices.getTemplate(); return legacyTemplates; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -const getIndexTemplates = async (settings: SettingsToRetrieve, config: Config) => { +const getIndexTemplates = async (settings: SettingsToRetrieve, esClient: IScopedClusterClient) => { if (settings.templates) { - const indexTemplates = await getEntity('/_index_template', config); + const indexTemplates = await esClient.asInternalUser.indices.getIndexTemplate(); return indexTemplates; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -const getComponentTemplates = async (settings: SettingsToRetrieve, config: Config) => { +const getComponentTemplates = async ( + settings: SettingsToRetrieve, + esClient: IScopedClusterClient +) => { if (settings.templates) { - const componentTemplates = await getEntity('/_component_template', config); + const componentTemplates = await esClient.asInternalUser.cluster.getComponentTemplate(); return componentTemplates; } // If the user doesn't want autocomplete suggestions, then clear any that exist. return {}; }; -/** - * Get the autocomplete suggestions for the given entity. - * We are using the raw http request in this function to retrieve the entities instead of esClient because - * the esClient does not handle large responses well. For example, the response size for - * the mappings can be very large(> 1GB) and the esClient will throw an 'Invalid string length' - * error when trying to parse the response. By using the raw http request, we can limit the - * response size and avoid the error. - * @param path The path to the entity to retrieve. For example, '/_mapping' or '/_alias'. - * @param config The configuration for the request. - * @returns The entity retrieved from Elasticsearch. - */ -const getEntity = (path: string, config: Config) => { - return new Promise((resolve, reject) => { - const { hosts, kibanaVersion } = config; - for (let idx = 0; idx < hosts.length; idx++) { - const host = hosts[idx]; - const uri = new URL(host + path); - const { protocol, hostname, port } = uri; - const { headers } = getRequestConfig(config.headers, config, uri.toString(), kibanaVersion); - const client = protocol === 'https:' ? https : http; - const options = { - method: 'GET', - headers: { ...headers }, - host: sanitizeHostname(hostname), - port: port === '' ? undefined : parseInt(port, 10), - protocol, - path: `${path}?pretty=false`, // add pretty=false to compress the response by removing whitespace - }; - - try { - const req = client.request(options, (res) => { - const chunks: Buffer[] = []; - - let currentLength = 0; - - res.on('data', (chunk) => { - currentLength += Buffer.byteLength(chunk); - - chunks.push(chunk); - - // Destroy the request if the response is too large - if (currentLength > MAX_RESPONSE_SIZE) { - req.destroy(); - reject(Boom.badRequest(`Response size is too large for ${path}`)); - } - }); - res.on('end', () => { - const body = Buffer.concat(chunks).toString('utf8'); - resolve(JSON.parse(body)); - }); - }); - req.on('error', reject); - req.end(); - break; - } catch (err) { - if (idx === hosts.length - 1) { - reject(err); - } - // Try the next host - } - } - }); -}; - export const registerAutocompleteEntitiesRoute = (deps: RouteDependencies) => { deps.router.get( { @@ -159,6 +90,7 @@ export const registerAutocompleteEntitiesRoute = (deps: RouteDependencies) => { validate: false, }, async (context, request, response) => { + const esClient = (await context.core).elasticsearch.client; const settings = parse(request.url.search, { parseBooleans: true, }) as unknown as SettingsToRetrieve; @@ -170,21 +102,14 @@ export const registerAutocompleteEntitiesRoute = (deps: RouteDependencies) => { }); } - const legacyConfig = await deps.proxy.readLegacyESConfig(); - const configWithHeaders = { - ...legacyConfig, - headers: request.headers, - kibanaVersion: deps.kibanaVersion, - }; - // Wait for all requests to complete, in case one of them fails return the successfull ones const results = await Promise.allSettled([ - getMappings(settings, configWithHeaders), - getAliases(settings, configWithHeaders), - getDataStreams(settings, configWithHeaders), - getLegacyTemplates(settings, configWithHeaders), - getIndexTemplates(settings, configWithHeaders), - getComponentTemplates(settings, configWithHeaders), + getMappings(settings, esClient), + getAliases(settings, esClient), + getDataStreams(settings, esClient), + getLegacyTemplates(settings, esClient), + getIndexTemplates(settings, esClient), + getComponentTemplates(settings, esClient), ]); const [mappings, aliases, dataStreams, legacyTemplates, indexTemplates, componentTemplates] = diff --git a/src/plugins/console/tsconfig.json b/src/plugins/console/tsconfig.json index 77949a21f62cb..0dcc23b1c060c 100644 --- a/src/plugins/console/tsconfig.json +++ b/src/plugins/console/tsconfig.json @@ -27,9 +27,9 @@ "@kbn/ace", "@kbn/test-jest-helpers", "@kbn/config-schema", - "@kbn/core-http-server", "@kbn/core-http-router-server-internal", "@kbn/web-worker-stub", + "@kbn/core-elasticsearch-server", ], "exclude": [ "target/**/*", diff --git a/src/plugins/controls/common/options_list/types.ts b/src/plugins/controls/common/options_list/types.ts index 8835c7f5767f6..1c9555bdc8d90 100644 --- a/src/plugins/controls/common/options_list/types.ts +++ b/src/plugins/controls/common/options_list/types.ts @@ -23,7 +23,9 @@ export interface OptionsListEmbeddableInput extends DataControlInput { hideExclude?: boolean; hideExists?: boolean; hideSort?: boolean; + hideActionBar?: boolean; exclude?: boolean; + placeholder?: string; } export type OptionsListField = FieldSpec & { diff --git a/src/plugins/controls/public/options_list/components/options_list_control.tsx b/src/plugins/controls/public/options_list/components/options_list_control.tsx index 3035eada20caf..98f545718efc6 100644 --- a/src/plugins/controls/public/options_list/components/options_list_control.tsx +++ b/src/plugins/controls/public/options_list/components/options_list_control.tsx @@ -47,6 +47,8 @@ export const OptionsListControl = ({ typeaheadSubject }: { typeaheadSubject: Sub const exclude = select((state) => state.explicitInput.exclude); const id = select((state) => state.explicitInput.id); + const placeholder = select((state) => state.explicitInput.placeholder); + const loading = select((state) => state.output.loading); // debounce loading state so loading doesn't flash when user types @@ -128,7 +130,7 @@ export const OptionsListControl = ({ typeaheadSubject }: { typeaheadSubject: Sub > {hasSelections || existsSelected ? selectionDisplayNode - : OptionsListStrings.control.getPlaceholder()} + : placeholder ?? OptionsListStrings.control.getPlaceholder()}
); diff --git a/src/plugins/controls/public/options_list/components/options_list_popover.test.tsx b/src/plugins/controls/public/options_list/components/options_list_popover.test.tsx index acb5d24d80659..a8504aba372c8 100644 --- a/src/plugins/controls/public/options_list/components/options_list_popover.test.tsx +++ b/src/plugins/controls/public/options_list/components/options_list_popover.test.tsx @@ -58,7 +58,7 @@ describe('Options list popover', () => { test('available options list width responds to container size', async () => { let popover = await mountComponent({ popoverProps: { width: 301 } }); let popoverDiv = findTestSubject(popover, 'optionsList-control-popover'); - expect(popoverDiv.getDOMNode().getAttribute('style')).toBe('width: 301px;'); + expect(popoverDiv.getDOMNode().getAttribute('style')).toBe('width: 301px; min-width: 300px;'); // the div cannot be smaller than 301 pixels wide popover = await mountComponent({ popoverProps: { width: 300 } }); diff --git a/src/plugins/controls/public/options_list/components/options_list_popover.tsx b/src/plugins/controls/public/options_list/components/options_list_popover.tsx index 70353524068cd..b5562c43f3be2 100644 --- a/src/plugins/controls/public/options_list/components/options_list_popover.tsx +++ b/src/plugins/controls/public/options_list/components/options_list_popover.tsx @@ -43,6 +43,7 @@ export const OptionsListPopover = ({ const field = select((state) => state.componentState.field); const hideExclude = select((state) => state.explicitInput.hideExclude); + const hideActionBar = select((state) => state.explicitInput.hideActionBar); const fieldName = select((state) => state.explicitInput.fieldName); const title = select((state) => state.explicitInput.title); const id = select((state) => state.explicitInput.id); @@ -52,12 +53,12 @@ export const OptionsListPopover = ({ return (
300 ? width : undefined }} + style={{ width, minWidth: 300 }} data-test-subj={`optionsList-control-popover`} aria-label={OptionsListStrings.popover.getAriaLabel(fieldName)} > {title} - {field?.type !== 'boolean' && ( + {field?.type !== 'boolean' && !hideActionBar && ( { + // clear cache when reload is requested + this.optionsListService.clearOptionsListCache(); this.runOptionsListQuery(); }; diff --git a/src/plugins/controls/public/services/options_list/options_list.story.ts b/src/plugins/controls/public/services/options_list/options_list.story.ts index 62686feee7495..c641e9ee8834a 100644 --- a/src/plugins/controls/public/services/options_list/options_list.story.ts +++ b/src/plugins/controls/public/services/options_list/options_list.story.ts @@ -26,6 +26,8 @@ let optionsListRequestMethod = async (request: OptionsListRequest, abortSignal: ) ); +const clearOptionsListCacheMock = () => {}; + export const replaceOptionsListMethod = ( newMethod: (request: OptionsListRequest, abortSignal: AbortSignal) => Promise ) => (optionsListRequestMethod = newMethod); @@ -33,5 +35,6 @@ export const replaceOptionsListMethod = ( export const optionsListServiceFactory: OptionsListServiceFactory = () => { return { runOptionsListRequest: optionsListRequestMethod, + clearOptionsListCache: clearOptionsListCacheMock, }; }; diff --git a/src/plugins/controls/public/services/options_list/options_list_service.ts b/src/plugins/controls/public/services/options_list/options_list_service.ts index ab8e67666140b..888d2e2efb837 100644 --- a/src/plugins/controls/public/services/options_list/options_list_service.ts +++ b/src/plugins/controls/public/services/options_list/options_list_service.ts @@ -104,6 +104,10 @@ class OptionsListService implements ControlsOptionsListService { return { rejected: true } as OptionsListResponse; } }; + + public clearOptionsListCache = () => { + this.cachedOptionsListRequest.cache = new memoize.Cache(); + }; } export interface OptionsListServiceRequiredServices { diff --git a/src/plugins/controls/public/services/options_list/types.ts b/src/plugins/controls/public/services/options_list/types.ts index d493207df591c..569042b136419 100644 --- a/src/plugins/controls/public/services/options_list/types.ts +++ b/src/plugins/controls/public/services/options_list/types.ts @@ -13,4 +13,6 @@ export interface ControlsOptionsListService { request: OptionsListRequest, abortSignal: AbortSignal ) => Promise; + + clearOptionsListCache: () => void; } diff --git a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts new file mode 100644 index 0000000000000..804f898945e57 --- /dev/null +++ b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.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 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 { DataViewsContract } from '@kbn/data-views-plugin/common'; +import { dataPluginMock } from '../../mocks'; +import { setIndexPatterns, setSearchService } from '../../services'; +import { createFiltersFromMultiValueClickAction } from './create_filters_from_multi_value_click'; +import { FieldFormatsGetConfigFn, BytesFormat } from '@kbn/field-formats-plugin/common'; + +const mockField = { + name: 'bytes', + filterable: true, +}; + +describe('createFiltersFromMultiValueClickAction', () => { + let dataPoints: Parameters[0]['data']; + + beforeEach(() => { + dataPoints = { + table: { + columns: [ + { + name: 'test', + id: '1-1', + meta: { + type: 'date', + source: 'esaggs', + sourceParams: { + indexPatternId: 'logstash-*', + type: 'histogram', + params: { + field: 'bytes', + interval: 30, + otherBucket: true, + }, + }, + }, + }, + ], + rows: [ + { + '1-1': '2048', + }, + ], + meta: { + source: 'dataview-1', + type: 'esaggs', + }, + }, + column: 0, + value: ['2048'], + }; + + const dataStart = dataPluginMock.createStartContract(); + setSearchService(dataStart.search); + setIndexPatterns({ + ...dataStart.indexPatterns, + get: async () => ({ + id: 'logstash-*', + fields: { + getByName: () => mockField, + filter: () => [mockField], + }, + getFormatterForField: () => new BytesFormat({}, (() => {}) as FieldFormatsGetConfigFn), + }), + } as unknown as DataViewsContract); + }); + + test('ignores event when value for rows is not provided', async () => { + dataPoints.table.rows[0]['1-1'] = null; + const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + + expect(filters).toBeUndefined(); + }); + + test('ignores event when dataview id is not provided', async () => { + dataPoints.table.meta = undefined; + const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + + expect(filters).toBeUndefined(); + }); + + test('handles an event when aggregations type is a terms', async () => { + (dataPoints.table.columns[0].meta.sourceParams as any).type = 'terms'; + const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + + expect(filters?.query?.match_phrase?.bytes).toEqual('2048'); + }); + + test('handles an event when aggregations type is not terms', async () => { + const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + + expect(filters?.query?.range.bytes.gte).toEqual(2048); + expect(filters?.query?.range.bytes.lt).toEqual(2078); + }); +}); diff --git a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts new file mode 100644 index 0000000000000..b33f994015cfe --- /dev/null +++ b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.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 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 { buildCombinedFilter, Filter, toggleFilterNegated, BooleanRelation } from '@kbn/es-query'; +import { createFilter } from './create_filters_from_value_click'; +import type { MultiValueClickContext } from '../multi_value_click_action'; + +type MultiValueClickDataContext = MultiValueClickContext['data']; + +/** @public */ +export const createFiltersFromMultiValueClickAction = async ({ + data, + negate, +}: MultiValueClickDataContext) => { + const { table, column, value } = data; + const dataViewId = table?.meta?.source; + if (!dataViewId) return; + + const columnId = table.columns[column].id; + + const filters = ( + await Promise.all( + value.map(async (v) => { + return ( + await createFilter( + table, + column, + table.rows.findIndex((r) => r[columnId] === v) + ) + )?.[0]; + }) + ) + ).filter(Boolean) as Filter[]; + if (filters.length === 0) return; + // no need for combined filter in case of one filter + if (filters.length === 1) { + if (filters[0] && negate) { + return toggleFilterNegated(filters[0]); + } + return filters[0]; + } + const filtersHaveAlias = filters.every((f) => f.meta.alias); + let alias = ''; + if (filtersHaveAlias) { + filters.forEach((f, i) => { + if (i === filters.length - 1) { + alias += `${f.meta.alias}`; + } else { + alias += `${f.meta.alias} ${BooleanRelation.OR} `; + } + }); + } + let filter: Filter = buildCombinedFilter( + BooleanRelation.OR, + filters, + { + id: dataViewId, + }, + undefined, + undefined, + alias + ); + if (filter && negate) { + filter = toggleFilterNegated(filter); + } + + return filter; +}; diff --git a/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts b/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts index d985639dd08c5..5a3464d9aefea 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts @@ -71,7 +71,7 @@ const getOtherBucketFilterTerms = ( * @param {string} cellValue - value of the current cell * @return {Filter[]|undefined} - list of filters to provide to queryFilter.addFilters() */ -const createFilter = async ( +export const createFilter = async ( table: Pick, columnIndex: number, rowIndex: number diff --git a/src/plugins/data/public/actions/index.ts b/src/plugins/data/public/actions/index.ts index 4a5839065c5c5..94ceca94ad6ae 100644 --- a/src/plugins/data/public/actions/index.ts +++ b/src/plugins/data/public/actions/index.ts @@ -8,5 +8,7 @@ export { createFiltersFromValueClickAction } from './filters/create_filters_from_value_click'; export { createFiltersFromRangeSelectAction } from './filters/create_filters_from_range_select'; +export { createFiltersFromMultiValueClickAction } from './filters/create_filters_from_multi_value_click'; export * from './select_range_action'; export * from './value_click_action'; +export * from './multi_value_click_action'; diff --git a/src/plugins/data/public/actions/multi_value_click_action.ts b/src/plugins/data/public/actions/multi_value_click_action.ts new file mode 100644 index 0000000000000..422b1d8653e02 --- /dev/null +++ b/src/plugins/data/public/actions/multi_value_click_action.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 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 { Filter } from '@kbn/es-query'; +import { Datatable } from '@kbn/expressions-plugin/public'; +import { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; +import { FilterManager } from '../query'; +import { createFiltersFromMultiValueClickAction } from './filters/create_filters_from_multi_value_click'; + +export type MultiValueClickActionContext = MultiValueClickContext; +export const ACTION_MULTI_VALUE_CLICK = 'ACTION_MULTI_VALUE_CLICK'; + +export interface MultiValueClickContext { + // Need to make this unknown to prevent circular dependencies. + // Apps using this property will need to cast to `IEmbeddable`. + embeddable?: unknown; + data: { + data: { + table: Pick; + column: number; + value: any[]; + }; + timeFieldName?: string; + negate?: boolean; + }; +} + +export function createMultiValueClickActionDefinition( + getStartServices: () => { filterManager: FilterManager } +): UiActionsActionDefinition { + return { + type: ACTION_MULTI_VALUE_CLICK, + id: ACTION_MULTI_VALUE_CLICK, + shouldAutoExecute: async () => true, + isCompatible: async (context: MultiValueClickContext) => { + const filters = await createFiltersFromMultiValueClickAction(context.data); + return Boolean(filters); + }, + execute: async (context: MultiValueClickActionContext) => { + const filter = (await createFiltersFromMultiValueClickAction(context.data)) as Filter; + getStartServices().filterManager.addFilters(filter); + }, + }; +} diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index 2b9cd6ee6fb16..02d5e7f69ad51 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -34,6 +34,7 @@ import { import { createFiltersFromValueClickAction, createFiltersFromRangeSelectAction, + createMultiValueClickActionDefinition, createValueClickActionDefinition, createSelectRangeActionDefinition, } from './actions'; @@ -154,6 +155,13 @@ export class DataPublicPlugin })) ); + uiActions.addTriggerAction( + 'MULTI_VALUE_CLICK_TRIGGER', + createMultiValueClickActionDefinition(() => ({ + filterManager: query.filterManager, + })) + ); + const datatableUtilities = new DatatableUtilitiesService(search.aggs, dataViews, fieldFormats); const dataServices = { actions: { diff --git a/src/plugins/data/server/ui_settings.ts b/src/plugins/data/server/ui_settings.ts index 267b3b095f2f1..cb1af63b5d46e 100644 --- a/src/plugins/data/server/ui_settings.ts +++ b/src/plugins/data/server/ui_settings.ts @@ -115,7 +115,6 @@ export function getUiSettings( description: i18n.translate('data.advancedSettings.query.allowWildcardsText', { defaultMessage: 'When set, * is allowed as the first character in a query clause. ' + - 'Currently only applies when experimental query features are enabled in the query bar. ' + 'To disallow leading wildcards in basic lucene queries, use {queryStringOptionsPattern}.', values: { queryStringOptionsPattern: UI_SETTINGS.QUERY_STRING_OPTIONS, diff --git a/src/plugins/embeddable/public/bootstrap.ts b/src/plugins/embeddable/public/bootstrap.ts index 5d28e392ddf6d..242fa37b75dff 100644 --- a/src/plugins/embeddable/public/bootstrap.ts +++ b/src/plugins/embeddable/public/bootstrap.ts @@ -9,6 +9,7 @@ import { UiActionsSetup } from '@kbn/ui-actions-plugin/public'; import { contextMenuTrigger, + multiValueClickTrigger, panelBadgeTrigger, panelNotificationTrigger, selectRangeTrigger, @@ -26,5 +27,6 @@ export const bootstrap = (uiActions: UiActionsSetup) => { uiActions.registerTrigger(panelNotificationTrigger); uiActions.registerTrigger(selectRangeTrigger); uiActions.registerTrigger(valueClickTrigger); + uiActions.registerTrigger(multiValueClickTrigger); uiActions.registerTrigger(cellValueTrigger); }; diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 627a8cd50fac1..ff41aa5503e33 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -29,6 +29,7 @@ export type { EmbeddableInstanceConfiguration, EmbeddableOutput, ValueClickContext, + MultiValueClickContext, CellValueContext, RangeSelectContext, IContainer, @@ -69,6 +70,7 @@ export { PanelNotFoundError, SELECT_RANGE_TRIGGER, VALUE_CLICK_TRIGGER, + MULTI_VALUE_CLICK_TRIGGER, CELL_VALUE_TRIGGER, cellValueTrigger, ViewMode, @@ -78,6 +80,7 @@ export { isSavedObjectEmbeddableInput, isRangeSelectTriggerContext, isValueClickTriggerContext, + isMultiValueClickTriggerContext, isRowClickTriggerContext, isContextMenuTriggerContext, EmbeddableStateTransfer, diff --git a/src/plugins/embeddable/public/lib/triggers/triggers.ts b/src/plugins/embeddable/public/lib/triggers/triggers.ts index 3987d3c9ec4ee..529b6bfede65b 100644 --- a/src/plugins/embeddable/public/lib/triggers/triggers.ts +++ b/src/plugins/embeddable/public/lib/triggers/triggers.ts @@ -29,6 +29,19 @@ export interface ValueClickContext { }; } +export interface MultiValueClickContext { + embeddable?: T; + data: { + data: { + table: Pick; + column: number; + value: any[]; + }; + timeFieldName?: string; + negate?: boolean; + }; +} + export interface CellValueContext { embeddable: T; data: Array<{ @@ -50,6 +63,7 @@ export interface RangeSelectContext { export type ChartActionContext = | ValueClickContext + | MultiValueClickContext | RangeSelectContext | RowClickContext; @@ -108,6 +122,17 @@ export const valueClickTrigger: Trigger = { }), }; +export const MULTI_VALUE_CLICK_TRIGGER = 'MULTI_VALUE_CLICK_TRIGGER'; +export const multiValueClickTrigger: Trigger = { + id: MULTI_VALUE_CLICK_TRIGGER, + title: i18n.translate('embeddableApi.multiValueClickTrigger.title', { + defaultMessage: 'Multi click', + }), + description: i18n.translate('embeddableApi.multiValueClickTrigger.description', { + defaultMessage: 'Selecting multiple values of a single dimension on the visualization', + }), +}; + export const CELL_VALUE_TRIGGER = 'CELL_VALUE_TRIGGER'; export const cellValueTrigger: Trigger = { id: CELL_VALUE_TRIGGER, @@ -123,6 +148,11 @@ export const isValueClickTriggerContext = ( context: ChartActionContext ): context is ValueClickContext => context.data && 'data' in context.data; +export const isMultiValueClickTriggerContext = ( + context: ChartActionContext +): context is MultiValueClickContext => + context.data && 'data' in context.data && !Array.isArray(context.data.data); + export const isRangeSelectTriggerContext = ( context: ChartActionContext ): context is RangeSelectContext => context.data && 'range' in context.data; diff --git a/src/plugins/maps_ems/common/ems_defaults.ts b/src/plugins/maps_ems/common/ems_defaults.ts index cb247a42ff7cd..9e0ce35961a58 100644 --- a/src/plugins/maps_ems/common/ems_defaults.ts +++ b/src/plugins/maps_ems/common/ems_defaults.ts @@ -8,7 +8,7 @@ export const DEFAULT_EMS_FILE_API_URL = 'https://vector.maps.elastic.co'; export const DEFAULT_EMS_TILE_API_URL = 'https://tiles.maps.elastic.co'; -export const DEFAULT_EMS_LANDING_PAGE_URL = 'https://maps.elastic.co/v8.3'; +export const DEFAULT_EMS_LANDING_PAGE_URL = 'https://maps.elastic.co/v8.7'; export const DEFAULT_EMS_FONT_LIBRARY_URL = 'https://tiles.maps.elastic.co/fonts/{fontstack}/{range}.pbf'; diff --git a/src/plugins/maps_ems/public/lazy_load_bundle/create_ems_client.ts b/src/plugins/maps_ems/public/lazy_load_bundle/create_ems_client.ts index f5ac7782a9b28..85d57af883be6 100644 --- a/src/plugins/maps_ems/public/lazy_load_bundle/create_ems_client.ts +++ b/src/plugins/maps_ems/public/lazy_load_bundle/create_ems_client.ts @@ -22,5 +22,6 @@ export function createEMSClient(emsSettings: EMSSettings, kbnVersion: string): E return fetch(url); }, proxyPath: '', + emsVersion: kbnVersion, }); } diff --git a/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor.tsx b/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor.tsx index 50e246c089bca..809544c017224 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor.tsx @@ -288,13 +288,17 @@ class FilterEditorComponent extends Component { ); } + private hasCombinedFilterCustomType(filters: Filter[]) { + return filters.some((filter) => filter.meta.type === 'custom'); + } + private renderFiltersBuilderEditor() { const { selectedDataView, localFilter } = this.state; const flattenedFilters = flattenFilters([localFilter]); const shouldShowPreview = selectedDataView && - (flattenedFilters.length > 1 || + ((flattenedFilters.length > 1 && !this.hasCombinedFilterCustomType(flattenedFilters)) || (flattenedFilters.length === 1 && isFilterValid( selectedDataView, @@ -386,7 +390,10 @@ class FilterEditorComponent extends Component { }; private isUnknownFilterType() { - const { type } = this.props.filter.meta; + const { type, params } = this.props.filter.meta; + if (params && type === 'combined') { + return this.hasCombinedFilterCustomType(params); + } return !!type && !['phrase', 'phrases', 'range', 'exists', 'combined'].includes(type); } diff --git a/src/plugins/visualizations/public/embeddable/events.ts b/src/plugins/visualizations/public/embeddable/events.ts index 0e6dc57f49922..557448cbac05c 100644 --- a/src/plugins/visualizations/public/embeddable/events.ts +++ b/src/plugins/visualizations/public/embeddable/events.ts @@ -8,12 +8,17 @@ import { ROW_CLICK_TRIGGER } from '@kbn/ui-actions-plugin/public'; import { APPLY_FILTER_TRIGGER } from '@kbn/data-plugin/public'; -import { SELECT_RANGE_TRIGGER, VALUE_CLICK_TRIGGER } from '@kbn/embeddable-plugin/public'; +import { + SELECT_RANGE_TRIGGER, + VALUE_CLICK_TRIGGER, + MULTI_VALUE_CLICK_TRIGGER, +} from '@kbn/embeddable-plugin/public'; export interface VisEventToTrigger { ['applyFilter']: typeof APPLY_FILTER_TRIGGER; ['brush']: typeof SELECT_RANGE_TRIGGER; ['filter']: typeof VALUE_CLICK_TRIGGER; + ['multiFilter']: typeof MULTI_VALUE_CLICK_TRIGGER; ['tableRowContextMenuClick']: typeof ROW_CLICK_TRIGGER; } @@ -21,5 +26,6 @@ export const VIS_EVENT_TO_TRIGGER: VisEventToTrigger = { applyFilter: APPLY_FILTER_TRIGGER, brush: SELECT_RANGE_TRIGGER, filter: VALUE_CLICK_TRIGGER, + multiFilter: MULTI_VALUE_CLICK_TRIGGER, tableRowContextMenuClick: ROW_CLICK_TRIGGER, }; diff --git a/x-pack/plugins/actions/common/rewrite_request_case.ts b/x-pack/plugins/actions/common/rewrite_request_case.ts index c11a82f4af5ac..db3a16ad04e22 100644 --- a/x-pack/plugins/actions/common/rewrite_request_case.ts +++ b/x-pack/plugins/actions/common/rewrite_request_case.ts @@ -12,7 +12,9 @@ type RenameActionToConnector = K extends `actionTypeId` : K; export type AsApiContract = { - [K in keyof T as CamelToSnake>>]: T[K]; + [K in keyof T as CamelToSnake>>]: K extends 'frequency' + ? AsApiContract + : T[K]; }; export type RewriteRequestCase = (requested: AsApiContract) => T; diff --git a/x-pack/plugins/alerting/public/lib/common_transformations.ts b/x-pack/plugins/alerting/public/lib/common_transformations.ts index c48c1f882eaed..6e3888db451b8 100644 --- a/x-pack/plugins/alerting/public/lib/common_transformations.ts +++ b/x-pack/plugins/alerting/public/lib/common_transformations.ts @@ -15,8 +15,20 @@ import { } from '../../common'; function transformAction(input: AsApiContract): RuleAction { - const { connector_type_id: actionTypeId, ...rest } = input; - return { actionTypeId, ...rest }; + const { connector_type_id: actionTypeId, frequency, ...rest } = input; + return { + actionTypeId, + ...(frequency + ? { + frequency: { + summary: frequency.summary, + throttle: frequency.throttle, + notifyWhen: frequency.notify_when, + }, + } + : {}), + ...rest, + }; } // AsApiContract does not deal with object properties that are dates - the diff --git a/x-pack/plugins/alerting/server/routes/clone_rule.ts b/x-pack/plugins/alerting/server/routes/clone_rule.ts index a09098930c1d5..11819953cf9d6 100644 --- a/x-pack/plugins/alerting/server/routes/clone_rule.ts +++ b/x-pack/plugins/alerting/server/routes/clone_rule.ts @@ -13,6 +13,7 @@ import { RewriteResponseCase, handleDisabledApiKeysError, rewriteRuleLastRun, + rewriteActionsRes, } from './lib'; import { RuleTypeParams, @@ -69,13 +70,7 @@ const rewriteBodyRes: RewriteResponseCase> = ({ : {}), ...(actions ? { - actions: actions.map(({ group, id, actionTypeId, params, frequency }) => ({ - group, - id, - params, - connector_type_id: actionTypeId, - frequency, - })), + actions: rewriteActionsRes(actions), } : {}), ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), diff --git a/x-pack/plugins/alerting/server/routes/create_rule.ts b/x-pack/plugins/alerting/server/routes/create_rule.ts index 2e2f420b65936..04c205e936da2 100644 --- a/x-pack/plugins/alerting/server/routes/create_rule.ts +++ b/x-pack/plugins/alerting/server/routes/create_rule.ts @@ -11,7 +11,8 @@ import { CreateOptions } from '../rules_client'; import { RewriteRequestCase, RewriteResponseCase, - rewriteActions, + rewriteActionsReq, + rewriteActionsRes, handleDisabledApiKeysError, verifyAccessAndContext, countUsageOfPredefinedIds, @@ -45,11 +46,13 @@ export const bodySchema = schema.object({ const rewriteBodyReq: RewriteRequestCase['data']> = ({ rule_type_id: alertTypeId, notify_when: notifyWhen, + actions, ...rest }) => ({ ...rest, alertTypeId, notifyWhen, + actions: rewriteActionsReq(actions), }); const rewriteBodyRes: RewriteResponseCase> = ({ @@ -87,12 +90,7 @@ const rewriteBodyRes: RewriteResponseCase> = ({ last_execution_date: lastExecutionDate, last_duration: lastDuration, }, - actions: actions.map(({ group, id, actionTypeId, params }) => ({ - group, - id, - params, - connector_type_id: actionTypeId, - })), + actions: rewriteActionsRes(actions), ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), ...(nextRun ? { next_run: nextRun } : {}), }); @@ -128,7 +126,6 @@ export const createRuleRoute = ({ router, licenseState, usageCounter }: RouteOpt await rulesClient.create({ data: rewriteBodyReq({ ...rule, - actions: rewriteActions(rule.actions), notify_when: rule.notify_when as RuleNotifyWhenType, }), options: { id: params?.id }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule.ts b/x-pack/plugins/alerting/server/routes/get_rule.ts index 80bd320e309fd..c53d00a535f2e 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule.ts @@ -64,7 +64,13 @@ const rewriteBodyRes: RewriteResponseCase> = ({ id, params, connector_type_id: actionTypeId, - frequency, + frequency: frequency + ? { + summary: frequency.summary, + notify_when: frequency.notifyWhen, + throttle: frequency.throttle, + } + : undefined, })), ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), ...(nextRun ? { next_run: nextRun } : {}), diff --git a/x-pack/plugins/alerting/server/routes/lib/index.ts b/x-pack/plugins/alerting/server/routes/lib/index.ts index 387a6f11a5e53..d0c2abc350228 100644 --- a/x-pack/plugins/alerting/server/routes/lib/index.ts +++ b/x-pack/plugins/alerting/server/routes/lib/index.ts @@ -18,7 +18,7 @@ export type { } from './rewrite_request_case'; export { verifyAccessAndContext } from './verify_access_and_context'; export { countUsageOfPredefinedIds } from './count_usage_of_predefined_ids'; -export { rewriteActions } from './rewrite_actions'; +export { rewriteActionsReq, rewriteActionsRes } from './rewrite_actions'; export { actionsSchema } from './actions_schema'; export { rewriteRule, rewriteRuleLastRun } from './rewrite_rule'; export { rewriteNamespaces } from './rewrite_namespaces'; diff --git a/x-pack/plugins/alerting/server/routes/lib/rewrite_actions.ts b/x-pack/plugins/alerting/server/routes/lib/rewrite_actions.ts index 37b39548c610f..557af33b53fd1 100644 --- a/x-pack/plugins/alerting/server/routes/lib/rewrite_actions.ts +++ b/x-pack/plugins/alerting/server/routes/lib/rewrite_actions.ts @@ -14,7 +14,7 @@ type ReqRuleAction = Omit & { >[K]; }; }; -export const rewriteActions: ( +export const rewriteActionsReq: ( actions?: ReqRuleAction[] ) => Array> = (actions) => { const rewriteFrequency: RewriteRequestCase> = ({ @@ -30,3 +30,16 @@ export const rewriteActions: ( } as RuleAction) ); }; + +export const rewriteActionsRes = (actions?: RuleAction[]) => { + const rewriteFrequency = ({ notifyWhen, ...rest }: NonNullable) => ({ + ...rest, + notify_when: notifyWhen, + }); + if (!actions) return []; + return actions.map(({ actionTypeId, frequency, ...action }) => ({ + ...action, + connector_type_id: actionTypeId, + ...(frequency ? { frequency: rewriteFrequency(frequency) } : {}), + })); +}; diff --git a/x-pack/plugins/alerting/server/routes/lib/rewrite_request_case.ts b/x-pack/plugins/alerting/server/routes/lib/rewrite_request_case.ts index 5cd64ebf52732..a95d78915e9ae 100644 --- a/x-pack/plugins/alerting/server/routes/lib/rewrite_request_case.ts +++ b/x-pack/plugins/alerting/server/routes/lib/rewrite_request_case.ts @@ -24,7 +24,7 @@ type RenameAlertToRule = K extends `alertTypeId` export type AsApiContract< T, - ComplexPropertyKeys = `actions` | `executionStatus` | 'lastRun', + ComplexPropertyKeys = 'actions' | 'executionStatus' | 'lastRun' | 'frequency', OpaquePropertyKeys = `params` > = T extends Array ? Array> @@ -32,7 +32,7 @@ export type AsApiContract< [K in keyof T as CamelToSnake< RenameAlertToRule> >]: K extends OpaquePropertyKeys - ? // don't convert explciitly opaque types which we treat as a black box + ? // don't convert explcitly opaque types which we treat as a black box T[K] : T[K] extends undefined ? AsApiContract> | undefined diff --git a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts index fde5ac590b86e..d6474f0523e25 100644 --- a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts +++ b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts @@ -63,7 +63,9 @@ export const rewriteRule = ({ connector_type_id: actionTypeId, ...(frequency ? { - frequency, + summary: frequency.summary, + notify_when: frequency.notifyWhen, + throttle: frequency.throttle, } : {}), })), diff --git a/x-pack/plugins/alerting/server/routes/resolve_rule.ts b/x-pack/plugins/alerting/server/routes/resolve_rule.ts index add6ab1c871c2..27128850d9e82 100644 --- a/x-pack/plugins/alerting/server/routes/resolve_rule.ts +++ b/x-pack/plugins/alerting/server/routes/resolve_rule.ts @@ -9,7 +9,12 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; import { IRouter } from '@kbn/core/server'; import { ILicenseState } from '../lib'; -import { verifyAccessAndContext, RewriteResponseCase, rewriteRuleLastRun } from './lib'; +import { + verifyAccessAndContext, + RewriteResponseCase, + rewriteRuleLastRun, + rewriteActionsRes, +} from './lib'; import { RuleTypeParams, AlertingRequestHandlerContext, @@ -54,13 +59,7 @@ const rewriteBodyRes: RewriteResponseCase> last_execution_date: executionStatus.lastExecutionDate, last_duration: executionStatus.lastDuration, }, - actions: actions.map(({ group, id, actionTypeId, params, frequency }) => ({ - group, - id, - params, - connector_type_id: actionTypeId, - frequency, - })), + actions: rewriteActionsRes(actions), ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), ...(nextRun ? { next_run: nextRun } : {}), }); diff --git a/x-pack/plugins/alerting/server/routes/update_rule.ts b/x-pack/plugins/alerting/server/routes/update_rule.ts index 1616cca43e713..006a83f0e30ce 100644 --- a/x-pack/plugins/alerting/server/routes/update_rule.ts +++ b/x-pack/plugins/alerting/server/routes/update_rule.ts @@ -15,7 +15,8 @@ import { RewriteResponseCase, RewriteRequestCase, handleDisabledApiKeysError, - rewriteActions, + rewriteActionsReq, + rewriteActionsRes, actionsSchema, rewriteRuleLastRun, } from './lib'; @@ -44,12 +45,13 @@ const bodySchema = schema.object({ }); const rewriteBodyReq: RewriteRequestCase> = (result) => { - const { notify_when: notifyWhen, ...rest } = result.data; + const { notify_when: notifyWhen, actions, ...rest } = result.data; return { ...result, data: { ...rest, notifyWhen, + actions: rewriteActionsReq(actions), }, }; }; @@ -96,13 +98,7 @@ const rewriteBodyRes: RewriteResponseCase> = ({ : {}), ...(actions ? { - actions: actions.map(({ group, id, actionTypeId, params, frequency }) => ({ - group, - id, - params, - connector_type_id: actionTypeId, - frequency, - })), + actions: rewriteActionsRes(actions), } : {}), ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), @@ -133,7 +129,6 @@ export const updateRuleRoute = ( id, data: { ...rule, - actions: rewriteActions(rule.actions), notify_when: rule.notify_when as RuleNotifyWhenType, }, }) diff --git a/x-pack/plugins/alerting/server/rules_client/lib/validate_actions.ts b/x-pack/plugins/alerting/server/rules_client/lib/validate_actions.ts index 2924755ec3ba5..20a5623edd392 100644 --- a/x-pack/plugins/alerting/server/rules_client/lib/validate_actions.ts +++ b/x-pack/plugins/alerting/server/rules_client/lib/validate_actions.ts @@ -8,15 +8,16 @@ import Boom from '@hapi/boom'; import { map } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { RawRule } from '../../types'; +import { RawRule, RuleNotifyWhen } from '../../types'; import { UntypedNormalizedRuleType } from '../../rule_type_registry'; import { NormalizedAlertAction } from '../types'; import { RulesClientContext } from '../types'; +import { parseDuration } from '../../lib'; export async function validateActions( context: RulesClientContext, alertType: UntypedNormalizedRuleType, - data: Pick & { actions: NormalizedAlertAction[] } + data: Pick & { actions: NormalizedAlertAction[] } ): Promise { const { actions, notifyWhen, throttle } = data; const hasRuleLevelNotifyWhen = typeof notifyWhen !== 'undefined'; @@ -91,4 +92,26 @@ export async function validateActions( ); } } + + // check for actions throttled shorter than the rule schedule + const scheduleInterval = parseDuration(data.schedule.interval); + const actionsWithInvalidThrottles = actions.filter( + (action) => + action.frequency?.notifyWhen === RuleNotifyWhen.THROTTLE && + parseDuration(action.frequency.throttle!) < scheduleInterval + ); + if (actionsWithInvalidThrottles.length) { + throw Boom.badRequest( + i18n.translate('xpack.alerting.rulesClient.validateActions.actionsWithInvalidThrottles', { + defaultMessage: + 'Action throttle cannot be shorter than the schedule interval of {scheduleIntervalText}: {groups}', + values: { + scheduleIntervalText: data.schedule.interval, + groups: actionsWithInvalidThrottles + .map((a) => `${a.group} (${a.frequency?.throttle})`) + .join(', '), + }, + }) + ); + } } diff --git a/x-pack/plugins/alerting/server/rules_client/tests/bulk_disable.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/bulk_disable.test.ts index ddb1a5da58e5b..7d35c1e12c57e 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/bulk_disable.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/bulk_disable.test.ts @@ -8,7 +8,7 @@ import { RulesClient, ConstructorOptions } from '../rules_client'; import { savedObjectsClientMock } from '@kbn/core/server/mocks'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { ruleTypeRegistryMock } from '../../rule_type_registry.mock'; import { alertingAuthorizationMock } from '../../authorization/alerting_authorization.mock'; import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; diff --git a/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts index 050de16a68a84..7963ebd885a77 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/create.test.ts @@ -2712,7 +2712,10 @@ describe('create()', () => { ruleTypeRegistry.get.mockImplementation(() => ({ id: '123', name: 'Test', - actionGroups: [{ id: 'default', name: 'Default' }], + actionGroups: [ + { id: 'default', name: 'Default' }, + { id: 'group2', name: 'Action Group 2' }, + ], recoveryActionGroup: RecoveredActionGroup, defaultActionGroupId: 'default', minimumLicenseRequired: 'basic', @@ -2743,7 +2746,7 @@ describe('create()', () => { }, }, { - group: 'default', + group: 'group2', id: '2', params: { foo: true, @@ -2757,7 +2760,7 @@ describe('create()', () => { ], }); await expect(rulesClient.create({ data })).rejects.toThrowErrorMatchingInlineSnapshot( - `"Cannot specify per-action frequency params when notify_when or throttle are defined at the rule level: default, default"` + `"Cannot specify per-action frequency params when notify_when or throttle are defined at the rule level: default, group2"` ); expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); expect(taskManager.schedule).not.toHaveBeenCalled(); @@ -2778,7 +2781,7 @@ describe('create()', () => { }, }, { - group: 'default', + group: 'group2', id: '2', params: { foo: true, @@ -2835,6 +2838,7 @@ describe('create()', () => { expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); expect(taskManager.schedule).not.toHaveBeenCalled(); }); + test('throws error when some actions are missing frequency params', async () => { rulesClient = new RulesClient({ ...rulesClientParams, @@ -2843,7 +2847,10 @@ describe('create()', () => { ruleTypeRegistry.get.mockImplementation(() => ({ id: '123', name: 'Test', - actionGroups: [{ id: 'default', name: 'Default' }], + actionGroups: [ + { id: 'default', name: 'Default' }, + { id: 'group2', name: 'Action Group 2' }, + ], recoveryActionGroup: RecoveredActionGroup, defaultActionGroupId: 'default', minimumLicenseRequired: 'basic', @@ -2874,17 +2881,94 @@ describe('create()', () => { throttle: null, }, }, + { + group: 'group2', + id: '2', + params: { + foo: true, + }, + }, + ], + }); + await expect(rulesClient.create({ data })).rejects.toThrowErrorMatchingInlineSnapshot( + `"Actions missing frequency parameters: group2"` + ); + expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); + expect(taskManager.schedule).not.toHaveBeenCalled(); + }); + + test('throws error when some actions have throttle intervals shorter than the check interval', async () => { + rulesClient = new RulesClient({ + ...rulesClientParams, + minimumScheduleInterval: { value: '1m', enforce: true }, + }); + ruleTypeRegistry.get.mockImplementation(() => ({ + id: '123', + name: 'Test', + actionGroups: [ + { id: 'default', name: 'Default' }, + { id: 'group2', name: 'Action Group 2' }, + { id: 'group3', name: 'Action Group 3' }, + ], + recoveryActionGroup: RecoveredActionGroup, + defaultActionGroupId: 'default', + minimumLicenseRequired: 'basic', + isExportable: true, + async executor() { + return { state: {} }; + }, + producer: 'alerts', + useSavedObjectReferences: { + extractReferences: jest.fn(), + injectReferences: jest.fn(), + }, + })); + + const data = getMockData({ + notifyWhen: undefined, + throttle: undefined, + schedule: { interval: '3h' }, + actions: [ { group: 'default', + id: '1', + params: { + foo: true, + }, + frequency: { + summary: false, + notifyWhen: 'onThrottleInterval', + throttle: '1h', + }, + }, + { + group: 'group2', id: '2', params: { foo: true, }, + frequency: { + summary: false, + notifyWhen: 'onThrottleInterval', + throttle: '3m', + }, + }, + { + group: 'group3', + id: '3', + params: { + foo: true, + }, + frequency: { + summary: false, + notifyWhen: 'onThrottleInterval', + throttle: '240m', + }, }, ], }); await expect(rulesClient.create({ data })).rejects.toThrowErrorMatchingInlineSnapshot( - `"Actions missing frequency parameters: default"` + `"Action throttle cannot be shorter than the schedule interval of 3h: default (1h), group2 (3m)"` ); expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); expect(taskManager.schedule).not.toHaveBeenCalled(); diff --git a/x-pack/plugins/alerting/server/rules_client/tests/test_helpers.ts b/x-pack/plugins/alerting/server/rules_client/tests/test_helpers.ts index 0100242672be9..08c037e9410e7 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/test_helpers.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/test_helpers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; export const savedObjectWith500Error = { id: 'id2', diff --git a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts index f28c9d74e5472..0de571c72916b 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts @@ -1576,7 +1576,10 @@ describe('update()', () => { ruleTypeRegistry.get.mockReturnValueOnce({ id: '123', name: 'Test', - actionGroups: [{ id: 'default', name: 'Default' }], + actionGroups: [ + { id: 'default', name: 'Default' }, + { id: 'group2', name: 'Action Group 2' }, + ], defaultActionGroupId: 'default', minimumLicenseRequired: 'basic', isExportable: true, @@ -1749,7 +1752,7 @@ describe('update()', () => { }, }, { - group: 'default', + group: 'group2', id: '2', params: { foo: true, @@ -1764,7 +1767,7 @@ describe('update()', () => { }, }) ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Cannot specify per-action frequency params when notify_when or throttle are defined at the rule level: default, default"` + `"Cannot specify per-action frequency params when notify_when or throttle are defined at the rule level: default, group2"` ); expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); expect(taskManager.schedule).not.toHaveBeenCalled(); diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations/7.11/index.ts b/x-pack/plugins/alerting/server/saved_objects/migrations/7.11/index.ts index 186b20679c00d..0a4dc41390f2b 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations/7.11/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations/7.11/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { SavedObjectAttributes } from '@kbn/core-saved-objects-common'; +import { SavedObjectAttributes } from '@kbn/core-saved-objects-server'; import { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; import { RawRule, RawRuleAction } from '../../../types'; diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations/7.13/index.ts b/x-pack/plugins/alerting/server/saved_objects/migrations/7.13/index.ts index 67b595531dfdb..75848e1a304c4 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations/7.13/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations/7.13/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { SavedObjectAttribute } from '@kbn/core-saved-objects-common'; +import { SavedObjectAttribute } from '@kbn/core-saved-objects-server'; import { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; import { RawRule } from '../../../types'; diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations/7.15/index.ts b/x-pack/plugins/alerting/server/saved_objects/migrations/7.15/index.ts index a7b90ab347a71..e972f7e754f0f 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations/7.15/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations/7.15/index.ts @@ -9,7 +9,7 @@ import { SavedObjectAttribute, SavedObjectAttributes, SavedObjectReference, -} from '@kbn/core-saved-objects-common'; +} from '@kbn/core-saved-objects-server'; import { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; import { isString } from 'lodash/fp'; diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations/7.16/index.ts b/x-pack/plugins/alerting/server/saved_objects/migrations/7.16/index.ts index 35aded8311803..bf2870eb613bb 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations/7.16/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations/7.16/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { SavedObjectAttribute, SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { SavedObjectAttribute, SavedObjectReference } from '@kbn/core-saved-objects-server'; import { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; import { isString } from 'lodash/fp'; diff --git a/x-pack/plugins/alerting/tsconfig.json b/x-pack/plugins/alerting/tsconfig.json index 73c407bd325a8..1f7017de59a2e 100644 --- a/x-pack/plugins/alerting/tsconfig.json +++ b/x-pack/plugins/alerting/tsconfig.json @@ -34,7 +34,6 @@ "@kbn/rule-data-utils", "@kbn/logging-mocks", "@kbn/core-logging-server-mocks", - "@kbn/core-saved-objects-common", "@kbn/securitysolution-rules", "@kbn/apm-utils", "@kbn/data-views-plugin", diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.test.tsx b/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.test.tsx index 9417c0c584f1b..b357c41bceb6e 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.test.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.test.tsx @@ -9,6 +9,7 @@ import { composeStories } from '@storybook/testing-react'; import React from 'react'; import { mount } from 'enzyme'; import * as stories from './exception_stacktrace.stories'; +import { ExceptionStackTraceTitleProps } from './exception_stacktrace_title'; const { JavaWithLongLines } = composeStories(stories); @@ -18,6 +19,15 @@ describe('ExceptionStacktrace', () => { it('renders the stacktraces', () => { expect(mount().find('Stacktrace')).toHaveLength(3); }); + it('should have the title in a specific format', function () { + const wrapper = mount().find( + 'ExceptionStacktraceTitle' + ); + expect(wrapper).toHaveLength(1); + const { type, message } = + wrapper.props() as ExceptionStackTraceTitleProps; + expect(wrapper.text()).toContain(`${type}: ${message}`); + }); }); describe('with more than one stack trace', () => { diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.tsx b/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.tsx index 85ad5c5336c8c..fd32b8960abb3 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_details/error_sampler/exception_stacktrace.tsx @@ -5,11 +5,11 @@ * 2.0. */ -import { EuiTitle } from '@elastic/eui'; import React from 'react'; import { Exception } from '../../../../../typings/es_schemas/raw/error_raw'; import { Stacktrace } from '../../../shared/stacktrace'; import { CauseStacktrace } from '../../../shared/stacktrace/cause_stacktrace'; +import { ExceptionStacktraceTitle } from './exception_stacktrace_title'; interface ExceptionStacktraceProps { codeLanguage?: string; @@ -20,13 +20,16 @@ export function ExceptionStacktrace({ codeLanguage, exceptions, }: ExceptionStacktraceProps) { - const title = exceptions[0]?.message; + const message = exceptions[0]?.message; + const type = exceptions[0]?.type; return ( <> - -

{title}

-
+ {exceptions.map((ex, index) => { return index === 0 ? ( +

{title}

+ + ); +} diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx index 847df33534455..92cb472307888 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx @@ -16,6 +16,7 @@ import { EuiSpacer, EuiTitle, EuiCallOut, + EuiIconTip, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; @@ -38,7 +39,6 @@ import { MostUsedChart } from './most_used_chart'; import { LatencyMap } from './latency_map'; import { FailedTransactionRateChart } from '../../../shared/charts/failed_transaction_rate_chart'; import { ServiceOverviewDependenciesTable } from '../../service_overview/service_overview_dependencies_table'; -import { AggregatedTransactionsBadge } from '../../../shared/aggregated_transactions_badge'; import { LatencyChart } from '../../../shared/charts/latency_chart'; import { useFiltersForEmbeddableCharts } from '../../../../hooks/use_filters_for_embeddable_charts'; import { getKueryWithMobileFilters } from '../../../../../common/utils/get_kuery_with_mobile_filters'; @@ -50,7 +50,7 @@ import { MobileStats } from './stats'; export const chartHeight = 288; export function MobileServiceOverview() { - const { serviceName, fallbackToTransactions } = useApmServiceContext(); + const { serviceName } = useApmServiceContext(); const router = useApmRouter(); const embeddableFilters = useFiltersForEmbeddableCharts(); @@ -65,6 +65,7 @@ export function MobileServiceOverview() { osVersion, appVersion, netConnectionType, + comparisonEnabled, }, } = useApmParams('/mobile-services/{serviceName}/overview'); @@ -142,11 +143,6 @@ export function MobileServiceOverview() { - {fallbackToTransactions && ( - - - - )} - - -

- {i18n.translate( - 'xpack.apm.serviceOverview.mostUsedTitle', - { - defaultMessage: 'Most used', - } - )} -

-
-
+ + + +

+ {i18n.translate( + 'xpack.apm.serviceOverview.mostUsedTitle', + { + defaultMessage: 'Top 5 most used', + } + )} +

+
+
+ + {comparisonEnabled && ( + + )} + +
+ {/* Device */} diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/latency_map/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/latency_map/index.tsx index 2bc0e18bf04cc..6ac672dea1f06 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/latency_map/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/latency_map/index.tsx @@ -6,7 +6,13 @@ */ import React from 'react'; -import { EuiTitle, EuiSpacer } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiTitle, + EuiIconTip, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { Filter } from '@kbn/es-query'; import { EmbeddedMap } from './embedded_map'; @@ -16,21 +22,39 @@ export function LatencyMap({ end, kuery, filters, + comparisonEnabled, }: { start: string; end: string; kuery?: string; filters: Filter[]; + comparisonEnabled: boolean; }) { return ( <> - -

- {i18n.translate('xpack.apm.serviceOverview.embeddedMap.title', { - defaultMessage: 'Average latency per country', - })} -

-
+ + + +

+ {i18n.translate('xpack.apm.serviceOverview.embeddedMap.title', { + defaultMessage: 'Average latency per country', + })} +

+
+
+ + {comparisonEnabled && ( + + )} + +
diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/index.tsx index d94e988ba6d71..2bc6f221540bc 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/index.tsx @@ -6,30 +6,24 @@ */ import { MetricDatum, MetricTrendShape } from '@elastic/charts'; import { i18n } from '@kbn/i18n'; -import { EuiIcon, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import React from 'react'; +import { + EuiIcon, + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, +} from '@elastic/eui'; +import React, { useCallback } from 'react'; import { useTheme } from '@kbn/observability-plugin/public'; +import { isEmpty } from 'lodash'; import { useAnyOfApmParams } from '../../../../../hooks/use_apm_params'; import { useFetcher, FETCH_STATUS } from '../../../../../hooks/use_fetcher'; import { MetricItem } from './metric_item'; +import { usePreviousPeriodLabel } from '../../../../../hooks/use_previous_period_text'; const valueFormatter = (value: number, suffix = '') => { return `${value} ${suffix}`; }; -const getIcon = - (type: string) => - ({ - width = 20, - height = 20, - color, - }: { - width: number; - height: number; - color: string; - }) => - ; - export function MobileStats({ start, end, @@ -43,9 +37,11 @@ export function MobileStats({ const { path: { serviceName }, - query: { environment, transactionType }, + query: { environment, transactionType, offset, comparisonEnabled }, } = useAnyOfApmParams('/mobile-services/{serviceName}/overview'); + const previousPeriodLabel = usePreviousPeriodLabel(); + const { data, status } = useFetcher( (callApmApi) => { return callApmApi( @@ -59,31 +55,71 @@ export function MobileStats({ environment, kuery, transactionType, + offset, }, }, } ); }, - [start, end, environment, kuery, serviceName, transactionType] + [start, end, environment, kuery, serviceName, transactionType, offset] + ); + + const getComparisonValueFormatter = useCallback( + (value) => { + return ( + + {value && comparisonEnabled + ? `${previousPeriodLabel}: ${value}` + : null} + + ); + }, + [comparisonEnabled, previousPeriodLabel] + ); + + const getIcon = useCallback( + (type: string) => + ({ + width = 20, + height = 20, + color, + }: { + width: number; + height: number; + color: string; + }) => { + return status === FETCH_STATUS.LOADING ? ( + + ) : ( + + ); + }, + [status] ); const metrics: MetricDatum[] = [ { - color: euiTheme.eui.euiColorLightestShade, + color: euiTheme.eui.euiColorDisabled, title: i18n.translate('xpack.apm.mobile.metrics.crash.rate', { - defaultMessage: 'Crash Rate', + defaultMessage: 'Crash Rate (Crash per minute)', + }), + subtitle: i18n.translate('xpack.apm.mobile.coming.soon', { + defaultMessage: 'Coming Soon', }), icon: getIcon('bug'), value: 'N/A', - valueFormatter: (value: number) => valueFormatter(value, 'cpm'), + valueFormatter: (value: number) => valueFormatter(value), trend: [], trendShape: MetricTrendShape.Area, }, { - color: euiTheme.eui.euiColorLightestShade, + color: euiTheme.eui.euiColorDisabled, title: i18n.translate('xpack.apm.mobile.metrics.load.time', { defaultMessage: 'Slowest App load time', }), + subtitle: i18n.translate('xpack.apm.mobile.coming.soon', { + defaultMessage: 'Coming Soon', + }), icon: getIcon('visGauge'), value: 'N/A', valueFormatter: (value: number) => valueFormatter(value, 's'), @@ -99,6 +135,7 @@ export function MobileStats({ value: data?.currentPeriod?.sessions?.value ?? NaN, valueFormatter: (value: number) => valueFormatter(value), trend: data?.currentPeriod?.sessions?.timeseries, + extra: getComparisonValueFormatter(data?.previousPeriod.sessions?.value), trendShape: MetricTrendShape.Area, }, { @@ -108,8 +145,9 @@ export function MobileStats({ }), icon: getIcon('kubernetesPod'), value: data?.currentPeriod?.requests?.value ?? NaN, + extra: getComparisonValueFormatter(data?.previousPeriod.requests?.value), valueFormatter: (value: number) => valueFormatter(value), - trend: data?.currentPeriod?.requests?.timeseries ?? [], + trend: data?.currentPeriod?.requests?.timeseries, trendShape: MetricTrendShape.Area, }, ]; @@ -121,7 +159,8 @@ export function MobileStats({
))} diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/metric_item.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/metric_item.tsx index fb90e775780a9..7ddcdea271397 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/metric_item.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/metric_item.tsx @@ -7,15 +7,18 @@ import React from 'react'; import { Chart, Metric, MetricDatum } from '@elastic/charts'; import { EuiLoadingContent, EuiPanel } from '@elastic/eui'; +import { FETCH_STATUS, isPending } from '../../../../../hooks/use_fetcher'; export function MetricItem({ data, id, - isLoading, + status, + hasData, }: { data: MetricDatum[]; id: number; - isLoading: boolean; + status: FETCH_STATUS; + hasData: boolean; }) { return (
- {isLoading ? ( + {!hasData && isPending(status) ? ( diff --git a/x-pack/plugins/apm/public/components/app/mobile/transaction_overview/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/transaction_overview/index.tsx index 3194a21c5d14a..ecebbeab50986 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/transaction_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/transaction_overview/index.tsx @@ -6,7 +6,6 @@ */ import { - EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiPanel, @@ -17,7 +16,6 @@ import { useHistory } from 'react-router-dom'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useTimeRange } from '../../../../hooks/use_time_range'; -import { AggregatedTransactionsBadge } from '../../../shared/aggregated_transactions_badge'; import { TransactionsTable } from '../../../shared/transactions_table'; import { replace } from '../../../shared/links/url_helpers'; import { getKueryWithMobileFilters } from '../../../../../common/utils/get_kuery_with_mobile_filters'; @@ -51,7 +49,7 @@ export function MobileTransactionOverview() { const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { transactionType, fallbackToTransactions } = useApmServiceContext(); + const { transactionType } = useApmServiceContext(); const history = useHistory(); @@ -65,16 +63,6 @@ export function MobileTransactionOverview() { - {fallbackToTransactions && ( - <> - - - - - - - - )} ); @@ -38,7 +40,8 @@ describe('FrameHeading', () => { function: 'Main.func2', module: 'main', }, - 'go' + 'go', + '0' ) ).toEqual('main.go in Main.func2 at line 196'); }); @@ -57,7 +60,8 @@ describe('FrameHeading', () => { module: 'org.apache.catalina.connector', function: 'flushByteBuffer', }, - 'Java' + 'Java', + '0' ) ).toEqual( 'at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:825)' @@ -82,7 +86,8 @@ describe('FrameHeading', () => { 'opbeans-dotnet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', function: 'Get', }, - 'C#' + 'C#', + '0' ) ).toEqual( 'OpbeansDotnet.Controllers.CustomersController in Get in /src/opbeans-dotnet/Controllers/CustomersController.cs at line 23' @@ -103,7 +108,8 @@ describe('FrameHeading', () => { module: 'Microsoft.EntityFrameworkCore, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60', }, - 'C#' + 'C#', + '0' ) ).toEqual( 'Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+ResultEnumerable`1 in GetEnumerator' @@ -124,7 +130,8 @@ describe('FrameHeading', () => { line: { number: 120 }, function: 'callbackTrampoline', }, - 'javascript' + 'javascript', + '0' ) ).toEqual('at callbackTrampoline (internal/async_hooks.js:120)'); }); @@ -142,7 +149,8 @@ describe('FrameHeading', () => { line: { number: 205 }, function: 'onStreamRead', }, - 'javascript' + 'javascript', + '0' ) ).toEqual( 'at TCPConnectWrap.onStreamRead (internal/stream_base_commons.js:205)' @@ -161,7 +169,8 @@ describe('FrameHeading', () => { abs_path: 'internal/stream_base_commons.js', line: { number: 205 }, }, - 'javascript' + 'javascript', + '0' ) ).toEqual('at (internal/stream_base_commons.js:205)'); }); @@ -195,7 +204,8 @@ describe('FrameHeading', () => { }, vars: { request: "" }, }, - 'python' + 'python', + '0' ) ).toEqual('opbeans/views.py in orders at line 190'); }); @@ -220,7 +230,8 @@ describe('FrameHeading', () => { post: [' end\n', ' end\n'], }, }, - 'ruby' + 'ruby', + '0' ) ).toEqual("api/customers_controller.rb:15 in `show'"); }); @@ -243,11 +254,33 @@ describe('FrameHeading', () => { line: { number: 319, column: 3842 }, function: 'unstable_runWithPriority', }, - 'javascript' + 'javascript', + '0' ) ).toEqual( 'at unstable_runWithPriority (static/js/main.616809fb.js:319:3842)' ); }); }); + + describe('with a PHP stackframe', () => { + it('renders', () => { + expect( + getRenderedStackframeText( + { + library_frame: false, + exclude_from_grouping: false, + filename: + '/app/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php', + line: { number: 87 }, + function: 'PDOStatement->execute()', + }, + 'php', + '1' + ) + ).toEqual( + '#1 PDOStatement->execute() called at [/app/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php:87]' + ); + }); + }); }); diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading.tsx index 796faf775a30a..7a6234a2afbd5 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading.tsx @@ -15,6 +15,7 @@ import { JavaFrameHeadingRenderer, JavaScriptFrameHeadingRenderer, RubyFrameHeadingRenderer, + PhpFrameHeadingRenderer, } from './frame_heading_renderers'; const FileDetails = euiStyled.div` @@ -39,9 +40,15 @@ interface Props { codeLanguage?: string; stackframe: Stackframe; isLibraryFrame: boolean; + idx: string; } -function FrameHeading({ codeLanguage, stackframe, isLibraryFrame }: Props) { +function FrameHeading({ + codeLanguage, + stackframe, + isLibraryFrame, + idx, +}: Props) { const FileDetail: ComponentType = isLibraryFrame ? LibraryFrameFileDetail : AppFrameFileDetail; @@ -59,6 +66,9 @@ function FrameHeading({ codeLanguage, stackframe, isLibraryFrame }: Props) { case 'ruby': Renderer = RubyFrameHeadingRenderer; break; + case 'php': + Renderer = PhpFrameHeadingRenderer; + break; default: Renderer = DefaultFrameHeadingRenderer; break; @@ -66,7 +76,11 @@ function FrameHeading({ codeLanguage, stackframe, isLibraryFrame }: Props) { return ( - + ); } diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/index.ts b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/index.ts index c6dbb91dd5d11..8f677cba46c17 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/index.ts +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/index.ts @@ -11,6 +11,7 @@ import { Stackframe } from '../../../../../typings/es_schemas/raw/fields/stackfr export interface FrameHeadingRendererProps { fileDetailComponent: ComponentType; stackframe: Stackframe; + idx?: string; } export { CSharpFrameHeadingRenderer } from './c_sharp_frame_heading_renderer'; @@ -18,3 +19,4 @@ export { DefaultFrameHeadingRenderer } from './default_frame_heading_renderer'; export { JavaFrameHeadingRenderer } from './java_frame_heading_renderer'; export { JavaScriptFrameHeadingRenderer } from './java_script_frame_heading_renderer'; export { RubyFrameHeadingRenderer } from './ruby_frame_heading_renderer'; +export { PhpFrameHeadingRenderer } from './php_frame_heading_renderer'; diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/php_frame_heading_renderer.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/php_frame_heading_renderer.tsx new file mode 100644 index 0000000000000..5d80ea85756a3 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/frame_heading_renderers/php_frame_heading_renderer.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 React from 'react'; +import { FrameHeadingRendererProps } from '.'; + +export function PhpFrameHeadingRenderer({ + stackframe, + fileDetailComponent: FileDetail, + idx, +}: FrameHeadingRendererProps) { + const { filename, function: fn } = stackframe; + const lineNumber = stackframe.line?.number ?? 0; + const formattedIndex = idx?.split('-')[0]; + + return ( + <> + {formattedIndex && `#${formattedIndex} `} + {fn && `${fn}`} + {' called at '} + + [{filename}:{lineNumber}] + + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/stackframe.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/stackframe.tsx index b8de428d819e1..6e0036a64abb0 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/stackframe.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/stackframe.tsx @@ -55,6 +55,7 @@ export function Stackframe({ codeLanguage={codeLanguage} stackframe={stackframe} isLibraryFrame={isLibraryFrame} + idx={id} /> ); @@ -67,6 +68,7 @@ export function Stackframe({ codeLanguage={codeLanguage} stackframe={stackframe} isLibraryFrame={isLibraryFrame} + idx={id} /> } id={id} diff --git a/x-pack/plugins/apm/server/routes/mobile/route.ts b/x-pack/plugins/apm/server/routes/mobile/route.ts index e8fe0515f11c8..33039eef4bd4b 100644 --- a/x-pack/plugins/apm/server/routes/mobile/route.ts +++ b/x-pack/plugins/apm/server/routes/mobile/route.ts @@ -67,6 +67,7 @@ const mobileStatsRoute = createApmServerRoute({ kueryRt, rangeRt, environmentRt, + offsetRt, t.partial({ transactionType: t.string, }), @@ -77,7 +78,7 @@ const mobileStatsRoute = createApmServerRoute({ const apmEventClient = await getApmEventClient(resources); const { params } = resources; const { serviceName } = params.path; - const { kuery, environment, start, end } = params.query; + const { kuery, environment, start, end, offset } = params.query; const stats = await getMobileStatsPeriods({ kuery, @@ -86,6 +87,7 @@ const mobileStatsRoute = createApmServerRoute({ end, serviceName, apmEventClient, + offset, }); return stats; diff --git a/x-pack/plugins/cases/common/api/cases/case.ts b/x-pack/plugins/cases/common/api/cases/case.ts index 6bfcf1869d850..1463f3cb12d50 100644 --- a/x-pack/plugins/cases/common/api/cases/case.ts +++ b/x-pack/plugins/cases/common/api/cases/case.ts @@ -213,6 +213,10 @@ export const CasesFindRequestRt = rt.partial({ * The fields to perform the simple_query_string parsed query against */ searchFields: rt.union([rt.array(rt.string), rt.string]), + /** + * The root fields to perform the simple_query_string parsed query against + */ + rootSearchFields: rt.array(rt.string), /** * The field to use for sorting the found objects. * diff --git a/x-pack/plugins/cases/common/api/connectors/index.ts b/x-pack/plugins/cases/common/api/connectors/index.ts index 8aac471c634b8..7ed31947e9c12 100644 --- a/x-pack/plugins/cases/common/api/connectors/index.ts +++ b/x-pack/plugins/cases/common/api/connectors/index.ts @@ -120,7 +120,7 @@ export const GetCaseConnectorsResponseRt = rt.record( rt.string, rt.intersection([ rt.type({ needsToBePushed: rt.boolean, hasBeenPushed: rt.boolean }), - rt.partial(rt.type({ latestPushDate: rt.string }).props), + rt.partial(rt.type({ latestPushDate: rt.string, oldestPushDate: rt.string }).props), CaseConnectorRt, ]) ); diff --git a/x-pack/plugins/cases/public/components/all_cases/translations.ts b/x-pack/plugins/cases/public/components/all_cases/translations.ts index 2c5f269754178..b63d14768f770 100644 --- a/x-pack/plugins/cases/public/components/all_cases/translations.ts +++ b/x-pack/plugins/cases/public/components/all_cases/translations.ts @@ -64,7 +64,7 @@ export const INCIDENT_MANAGEMENT_SYSTEM = i18n.translate('xpack.cases.caseTable. }); export const SEARCH_PLACEHOLDER = i18n.translate('xpack.cases.caseTable.searchPlaceholder', { - defaultMessage: 'e.g. case name', + defaultMessage: 'Search cases', }); export const CLOSED = i18n.translate('xpack.cases.caseTable.closed', { diff --git a/x-pack/plugins/cases/server/authorization/authorization.ts b/x-pack/plugins/cases/server/authorization/authorization.ts index 07c4b70e45bb6..884ae817a7a95 100644 --- a/x-pack/plugins/cases/server/authorization/authorization.ts +++ b/x-pack/plugins/cases/server/authorization/authorization.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { KibanaRequest, Logger } from '@kbn/core/server'; import Boom from '@hapi/boom'; import type { SecurityPluginStart } from '@kbn/security-plugin/server'; diff --git a/x-pack/plugins/cases/server/authorization/mock.ts b/x-pack/plugins/cases/server/authorization/mock.ts index d72feedd30bf2..757fa8d7ec9df 100644 --- a/x-pack/plugins/cases/server/authorization/mock.ts +++ b/x-pack/plugins/cases/server/authorization/mock.ts @@ -14,7 +14,9 @@ export type AuthorizationMock = jest.Mocked; export const createAuthorizationMock = () => { const mocked: AuthorizationMock = { ensureAuthorized: jest.fn(), - getAuthorizationFilter: jest.fn(), + getAuthorizationFilter: jest.fn().mockImplementation(async () => { + return { filter: undefined, ensureSavedObjectsAreAuthorized: () => {} }; + }), getAndEnsureAuthorizedEntities: jest.fn(), }; return mocked; diff --git a/x-pack/plugins/cases/server/authorization/utils.ts b/x-pack/plugins/cases/server/authorization/utils.ts index 1b1a7b218c0e8..3ca28e3f2d7e3 100644 --- a/x-pack/plugins/cases/server/authorization/utils.ts +++ b/x-pack/plugins/cases/server/authorization/utils.ts @@ -8,7 +8,7 @@ import { partition, remove, uniq } from 'lodash'; import type { KueryNode } from '@kbn/es-query'; import { nodeBuilder } from '@kbn/es-query'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { OWNER_FIELD } from '../../common/api'; export const getOwnersFilter = ( diff --git a/x-pack/plugins/cases/server/client/cases/find.test.ts b/x-pack/plugins/cases/server/client/cases/find.test.ts new file mode 100644 index 0000000000000..f23ad82df1fcf --- /dev/null +++ b/x-pack/plugins/cases/server/client/cases/find.test.ts @@ -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 { v1 as uuidv1 } from 'uuid'; + +import type { CaseResponse } from '../../../common/api'; + +import { flattenCaseSavedObject } from '../../common/utils'; +import { mockCases } from '../../mocks'; +import { createCasesClientMockArgs, createCasesClientMockFindRequest } from '../mocks'; +import { find } from './find'; + +describe('find', () => { + describe('constructSearch', () => { + const clientArgs = createCasesClientMockArgs(); + const casesMap = new Map( + mockCases.map((obj) => { + return [obj.id, flattenCaseSavedObject({ savedObject: obj, totalComment: 2 })]; + }) + ); + clientArgs.services.caseService.findCasesGroupedByID.mockResolvedValue({ + page: 1, + perPage: 10, + total: casesMap.size, + casesMap, + }); + clientArgs.services.caseService.getCaseStatusStats.mockResolvedValue({ + open: 1, + 'in-progress': 2, + closed: 3, + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('search by uuid updates search term and adds rootSearchFields', async () => { + const search = uuidv1(); + const findRequest = createCasesClientMockFindRequest({ search }); + + await find(findRequest, clientArgs); + await expect(clientArgs.services.caseService.findCasesGroupedByID).toHaveBeenCalled(); + + const call = clientArgs.services.caseService.findCasesGroupedByID.mock.calls[0][0]; + + expect(call.caseOptions.search).toBe(`"${search}" "cases:${search}"`); + expect(call.caseOptions).toHaveProperty('rootSearchFields'); + expect(call.caseOptions.rootSearchFields).toStrictEqual(['_id']); + }); + + it('regular search term does not cause rootSearchFields to be appended', async () => { + const search = 'foobar'; + const findRequest = createCasesClientMockFindRequest({ search }); + await find(findRequest, clientArgs); + await expect(clientArgs.services.caseService.findCasesGroupedByID).toHaveBeenCalled(); + + const call = clientArgs.services.caseService.findCasesGroupedByID.mock.calls[0][0]; + + expect(call.caseOptions.search).toBe(search); + expect(call.caseOptions).not.toHaveProperty('rootSearchFields'); + }); + }); +}); diff --git a/x-pack/plugins/cases/server/client/cases/find.ts b/x-pack/plugins/cases/server/client/cases/find.ts index cb64123c99de9..bcbd9301f7e5e 100644 --- a/x-pack/plugins/cases/server/client/cases/find.ts +++ b/x-pack/plugins/cases/server/client/cases/find.ts @@ -16,7 +16,7 @@ import { CasesFindRequestRt, throwErrors, CasesFindResponseRt, excess } from '.. import { createCaseError } from '../../common/error'; import { asArray, transformCases } from '../../common/utils'; -import { constructQueryOptions } from '../utils'; +import { constructQueryOptions, constructSearch } from '../utils'; import { includeFieldsRequiredForAuthentication } from '../../authorization/utils'; import { Operations } from '../../authorization'; import type { CasesClientArgs } from '..'; @@ -36,6 +36,8 @@ export const find = async ( services: { caseService, licensingService }, authorization, logger, + savedObjectsSerializer, + spaceId, } = clientArgs; try { @@ -85,11 +87,14 @@ export const find = async ( const caseQueryOptions = constructQueryOptions({ ...queryArgs, authorizationFilter }); + const caseSearch = constructSearch(queryParams.search, spaceId, savedObjectsSerializer); + const [cases, statusStats] = await Promise.all([ caseService.findCasesGroupedByID({ caseOptions: { ...queryParams, ...caseQueryOptions, + ...caseSearch, searchFields: asArray(queryParams.searchFields), fields: includeFieldsRequiredForAuthentication(fields), }, diff --git a/x-pack/plugins/cases/server/client/factory.ts b/x-pack/plugins/cases/server/client/factory.ts index 63f0fdcb5a12b..57f54a745cf2d 100644 --- a/x-pack/plugins/cases/server/client/factory.ts +++ b/x-pack/plugins/cases/server/client/factory.ts @@ -145,6 +145,7 @@ export class CasesClientFactory { securityStartPlugin: this.options.securityPluginStart, publicBaseUrl: this.options.publicBaseUrl, spaceId: this.options.spacesPluginStart.spacesService.getSpaceId(request), + savedObjectsSerializer, }); } diff --git a/x-pack/plugins/cases/server/client/metrics/get_case_metrics.test.ts b/x-pack/plugins/cases/server/client/metrics/get_case_metrics.test.ts index 7f980204af2a2..1fabee2893e06 100644 --- a/x-pack/plugins/cases/server/client/metrics/get_case_metrics.test.ts +++ b/x-pack/plugins/cases/server/client/metrics/get_case_metrics.test.ts @@ -181,9 +181,6 @@ function createMockClientArgs() { }); const authorization = createAuthorizationMock(); - authorization.getAuthorizationFilter.mockImplementation(async () => { - return { filter: undefined, ensureSavedObjectsAreAuthorized: () => {} }; - }); const soClient = savedObjectsClientMock.create(); diff --git a/x-pack/plugins/cases/server/client/metrics/test_utils/client.ts b/x-pack/plugins/cases/server/client/metrics/test_utils/client.ts index df66f92cd872a..3b9edbc443167 100644 --- a/x-pack/plugins/cases/server/client/metrics/test_utils/client.ts +++ b/x-pack/plugins/cases/server/client/metrics/test_utils/client.ts @@ -19,9 +19,6 @@ export function createMockClient() { export function createMockClientArgs() { const authorization = createAuthorizationMock(); - authorization.getAuthorizationFilter.mockImplementation(async () => { - return { filter: undefined, ensureSavedObjectsAreAuthorized: () => {} }; - }); const soClient = savedObjectsClientMock.create(); diff --git a/x-pack/plugins/cases/server/client/mocks.ts b/x-pack/plugins/cases/server/client/mocks.ts index 669ca6882fea5..0c2c57253ab9f 100644 --- a/x-pack/plugins/cases/server/client/mocks.ts +++ b/x-pack/plugins/cases/server/client/mocks.ts @@ -7,11 +7,29 @@ import type { PublicContract, PublicMethodsOf } from '@kbn/utility-types'; import { loggingSystemMock, savedObjectsClientMock } from '@kbn/core/server/mocks'; -import { securityMock } from '@kbn/security-plugin/server/mocks'; +import type { ISavedObjectsSerializer } from '@kbn/core-saved-objects-server'; +import { securityMock } from '@kbn/security-plugin/server/mocks'; import { actionsClientMock } from '@kbn/actions-plugin/server/actions_client.mock'; import { makeLensEmbeddableFactory } from '@kbn/lens-plugin/server/embeddable/make_lens_embeddable_factory'; +import { serializerMock } from '@kbn/core-saved-objects-base-server-mocks'; + +import type { CasesFindRequest } from '../../common/api'; import type { CasesClient } from '.'; +import type { AttachmentsSubClient } from './attachments/client'; +import type { CasesSubClient } from './cases/client'; +import type { ConfigureSubClient } from './configure/client'; +import type { CasesClientFactory } from './factory'; +import type { MetricsSubClient } from './metrics/client'; +import type { UserActionsSubClient } from './user_actions/client'; + +import { CaseStatuses } from '../../common'; +import { CaseSeverity } from '../../common/api'; +import { SortFieldCase } from '../../public/containers/types'; +import { + createExternalReferenceAttachmentTypeRegistryMock, + createPersistableStateAttachmentTypeRegistryMock, +} from '../attachment_framework/mocks'; import { createAuthorizationMock } from '../authorization/mock'; import { connectorMappingsServiceMock, @@ -23,16 +41,6 @@ import { createUserActionServiceMock, createNotificationServiceMock, } from '../services/mocks'; -import type { AttachmentsSubClient } from './attachments/client'; -import type { CasesSubClient } from './cases/client'; -import type { ConfigureSubClient } from './configure/client'; -import type { CasesClientFactory } from './factory'; -import type { MetricsSubClient } from './metrics/client'; -import type { UserActionsSubClient } from './user_actions/client'; -import { - createExternalReferenceAttachmentTypeRegistryMock, - createPersistableStateAttachmentTypeRegistryMock, -} from '../attachment_framework/mocks'; type CasesSubClientMock = jest.Mocked; @@ -127,6 +135,20 @@ export const createCasesClientFactory = (): CasesClientFactoryMock => { return factory as unknown as CasesClientFactoryMock; }; +type SavedObjectsSerializerMock = jest.Mocked; + +export const createSavedObjectsSerializerMock = (): SavedObjectsSerializerMock => { + const serializer = serializerMock.create(); + serializer.generateRawId.mockImplementation( + (namespace: string | undefined, type: string, id: string) => { + const namespacePrefix = namespace ? `${namespace}:` : ''; + return `${namespacePrefix}${type}:${id}`; + } + ); + + return serializer; +}; + export const createCasesClientMockArgs = () => { return { services: { @@ -160,5 +182,22 @@ export const createCasesClientMockArgs = () => { {} ) ), + savedObjectsSerializer: createSavedObjectsSerializerMock(), }; }; + +export const createCasesClientMockFindRequest = ( + overwrites?: CasesFindRequest +): CasesFindRequest => ({ + search: '', + searchFields: ['title', 'description'], + severity: CaseSeverity.LOW, + assignees: [], + reporters: [], + status: CaseStatuses.open, + tags: [], + owner: [], + sortField: SortFieldCase.createdAt, + sortOrder: 'desc', + ...overwrites, +}); diff --git a/x-pack/plugins/cases/server/client/types.ts b/x-pack/plugins/cases/server/client/types.ts index 7fded9a5d1a45..1ceca25fb2871 100644 --- a/x-pack/plugins/cases/server/client/types.ts +++ b/x-pack/plugins/cases/server/client/types.ts @@ -11,6 +11,7 @@ import type { ActionsClient } from '@kbn/actions-plugin/server'; import type { LensServerPluginSetup } from '@kbn/lens-plugin/server'; import type { SecurityPluginStart } from '@kbn/security-plugin/server'; import type { IBasePath } from '@kbn/core-http-browser'; +import type { ISavedObjectsSerializer } from '@kbn/core-saved-objects-server'; import type { KueryNode } from '@kbn/es-query'; import type { CasesFindRequest, User } from '../../common/api'; import type { Authorization } from '../authorization/authorization'; @@ -53,6 +54,7 @@ export interface CasesClientArgs { readonly externalReferenceAttachmentTypeRegistry: ExternalReferenceAttachmentTypeRegistry; readonly securityStartPlugin: SecurityPluginStart; readonly spaceId: string; + readonly savedObjectsSerializer: ISavedObjectsSerializer; readonly publicBaseUrl?: IBasePath['publicBaseUrl']; } diff --git a/x-pack/plugins/cases/server/client/user_actions/connectors.ts b/x-pack/plugins/cases/server/client/user_actions/connectors.ts index 3eb02b11c3d75..0239d740e4069 100644 --- a/x-pack/plugins/cases/server/client/user_actions/connectors.ts +++ b/x-pack/plugins/cases/server/client/user_actions/connectors.ts @@ -22,7 +22,7 @@ import type { CasesClientArgs } from '..'; import type { Authorization, OwnerEntity } from '../../authorization'; import { Operations } from '../../authorization'; import type { GetConnectorsRequest } from './types'; -import type { CaseConnectorActivity, PushInfo } from '../../services/user_actions/types'; +import type { CaseConnectorActivity } from '../../services/user_actions/types'; import type { CaseUserActionService } from '../../services'; export const getConnectors = async ( @@ -82,10 +82,18 @@ const checkConnectorsAuthorization = async ({ }); if (connector.push) { - entities.push({ - owner: connector.push.attributes.owner, - id: connector.connectorId, - }); + entities.push( + ...[ + { + owner: connector.push.mostRecent.attributes.owner, + id: connector.connectorId, + }, + { + owner: connector.push.oldest.attributes.owner, + id: connector.connectorId, + }, + ] + ); } } @@ -96,7 +104,8 @@ const checkConnectorsAuthorization = async ({ }; interface EnrichedPushInfo { - pushDate: Date; + latestPushDate: Date; + oldestPushDate: Date; connectorFieldsUsedInPush: CaseConnector; } @@ -123,6 +132,12 @@ const getConnectorsInfo = async ({ return createConnectorInfoResult({ actionConnectors, connectors, pushInfo, latestUserAction }); }; +interface PushTimeFrameDetails { + connectorId: string; + mostRecentPush: Date; + oldestPush: Date; +} + const getPushInfo = async ({ caseId, activity, @@ -132,29 +147,39 @@ const getPushInfo = async ({ activity: CaseConnectorActivity[]; userActionService: CaseUserActionService; }): Promise> => { - const pushRequest: PushInfo[] = []; + const pushDetails: PushTimeFrameDetails[] = []; for (const connectorInfo of activity) { - const pushCreatedAt = getDate(connectorInfo.push?.attributes.created_at); - - if (connectorInfo.push != null && pushCreatedAt != null) { - pushRequest.push({ connectorId: connectorInfo.connectorId, date: pushCreatedAt }); + const mostRecentPushCreatedAt = getDate(connectorInfo.push?.mostRecent.attributes.created_at); + const oldestPushCreatedAt = getDate(connectorInfo.push?.oldest.attributes.created_at); + + if ( + connectorInfo.push != null && + mostRecentPushCreatedAt != null && + oldestPushCreatedAt != null + ) { + pushDetails.push({ + connectorId: connectorInfo.connectorId, + mostRecentPush: mostRecentPushCreatedAt, + oldestPush: oldestPushCreatedAt, + }); } } const connectorFieldsForPushes = await userActionService.getConnectorFieldsBeforeLatestPush( caseId, - pushRequest + pushDetails.map((push) => ({ connectorId: push.connectorId, date: push.mostRecentPush })) ); const enrichedPushInfo = new Map(); - for (const request of pushRequest) { - const connectorFieldsSO = connectorFieldsForPushes.get(request.connectorId); + for (const pushInfo of pushDetails) { + const connectorFieldsSO = connectorFieldsForPushes.get(pushInfo.connectorId); const connectorFields = getConnectorInfoFromSavedObject(connectorFieldsSO); if (connectorFields != null) { - enrichedPushInfo.set(request.connectorId, { - pushDate: request.date, + enrichedPushInfo.set(pushInfo.connectorId, { + latestPushDate: pushInfo.mostRecentPush, + oldestPushDate: pushInfo.oldestPush, connectorFieldsUsedInPush: connectorFields, }); } @@ -223,7 +248,8 @@ const createConnectorInfoResult = ({ ...connector, name: connectorDetails.name, needsToBePushed, - latestPushDate: enrichedPushInfo?.pushDate.toISOString(), + latestPushDate: enrichedPushInfo?.latestPushDate.toISOString(), + oldestPushDate: enrichedPushInfo?.oldestPushDate.toISOString(), hasBeenPushed: hasBeenPushed(enrichedPushInfo), }; } @@ -256,7 +282,9 @@ const hasDataToPush = ({ * push fields will be undefined which will not equal the latest connector fields anyway. */ !isEqual(connector, pushInfo?.connectorFieldsUsedInPush) || - (pushInfo != null && latestUserActionDate != null && latestUserActionDate > pushInfo.pushDate) + (pushInfo != null && + latestUserActionDate != null && + latestUserActionDate > pushInfo.latestPushDate) ); }; diff --git a/x-pack/plugins/cases/server/client/utils.test.ts b/x-pack/plugins/cases/server/client/utils.test.ts index 12cbc1bb60358..fb3e89b598b03 100644 --- a/x-pack/plugins/cases/server/client/utils.test.ts +++ b/x-pack/plugins/cases/server/client/utils.test.ts @@ -5,17 +5,23 @@ * 2.0. */ +import { v1 as uuidv1 } from 'uuid'; + +import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { toElasticsearchQuery } from '@kbn/es-query'; + +import { CaseStatuses } from '../../common'; +import { CaseSeverity } from '../../common/api'; +import { ESCaseSeverity, ESCaseStatus } from '../services/cases/types'; +import { createSavedObjectsSerializerMock } from './mocks'; import { arraysDifference, buildNestedFilter, buildRangeFilter, constructQueryOptions, + constructSearch, convertSortField, } from './utils'; -import { toElasticsearchQuery } from '@kbn/es-query'; -import { CaseStatuses } from '../../common'; -import { CaseSeverity } from '../../common/api'; -import { ESCaseSeverity, ESCaseStatus } from '../services/cases/types'; describe('utils', () => { describe('convertSortField', () => { @@ -916,4 +922,36 @@ describe('utils', () => { }); }); }); + + describe('constructSearchById', () => { + const savedObjectsSerializer = createSavedObjectsSerializerMock(); + + it('returns the rootSearchFields and search with correct values when given a uuid', () => { + const uuid = uuidv1(); // the specific version is irrelevant + + expect(constructSearch(uuid, DEFAULT_NAMESPACE_STRING, savedObjectsSerializer)) + .toMatchInlineSnapshot(` + Object { + "rootSearchFields": Array [ + "_id", + ], + "search": "\\"${uuid}\\" \\"cases:${uuid}\\"", + } + `); + }); + + it('search value not changed and no rootSearchFields when search is non-uuid', () => { + const search = 'foobar'; + const result = constructSearch(search, DEFAULT_NAMESPACE_STRING, savedObjectsSerializer); + + expect(result).not.toHaveProperty('rootSearchFields'); + expect(result).toEqual({ search }); + }); + + it('returns undefined if search term undefined', () => { + expect(constructSearch(undefined, DEFAULT_NAMESPACE_STRING, savedObjectsSerializer)).toEqual( + undefined + ); + }); + }); }); diff --git a/x-pack/plugins/cases/server/client/utils.ts b/x-pack/plugins/cases/server/client/utils.ts index cbb373fd32ab9..80924c0df89de 100644 --- a/x-pack/plugins/cases/server/client/utils.ts +++ b/x-pack/plugins/cases/server/client/utils.ts @@ -11,22 +11,24 @@ import deepEqual from 'fast-deep-equal'; import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { pipe } from 'fp-ts/lib/pipeable'; +import { validate as uuidValidate } from 'uuid'; +import type { ISavedObjectsSerializer } from '@kbn/core-saved-objects-server'; import type { KueryNode } from '@kbn/es-query'; + import { nodeBuilder, fromKueryExpression, escapeKuery } from '@kbn/es-query'; -import { - isCommentRequestTypeExternalReference, - isCommentRequestTypePersistableState, -} from '../../common/utils/attachments'; -import { CASE_SAVED_OBJECT, NO_ASSIGNEES_FILTERING_KEYWORD } from '../../common/constants'; +import { spaceIdToNamespace } from '@kbn/spaces-plugin/server/lib/utils/namespace'; -import { SEVERITY_EXTERNAL_TO_ESMODEL, STATUS_EXTERNAL_TO_ESMODEL } from '../common/constants'; import type { CaseStatuses, CommentRequest, CaseSeverity, CommentRequestExternalReferenceType, + CasesFindRequest, } from '../../common/api'; +import type { SavedObjectFindOptionsKueryNode } from '../common/types'; +import type { CasesFindQueryParams } from './types'; + import { OWNER_FIELD, AlertCommentRequestRt, @@ -39,7 +41,13 @@ import { ExternalReferenceNoSORt, PersistableStateAttachmentRt, } from '../../common/api'; +import { CASE_SAVED_OBJECT, NO_ASSIGNEES_FILTERING_KEYWORD } from '../../common/constants'; +import { + isCommentRequestTypeExternalReference, + isCommentRequestTypePersistableState, +} from '../../common/utils/attachments'; import { combineFilterWithAuthorizationFilter } from '../authorization/utils'; +import { SEVERITY_EXTERNAL_TO_ESMODEL, STATUS_EXTERNAL_TO_ESMODEL } from '../common/constants'; import { getIDsAndIndicesAsArrays, isCommentRequestTypeAlert, @@ -47,8 +55,6 @@ import { isCommentRequestTypeActions, assertUnreachable, } from '../common/utils'; -import type { SavedObjectFindOptionsKueryNode } from '../common/types'; -import type { CasesFindQueryParams } from './types'; export const decodeCommentRequest = (comment: CommentRequest) => { if (isCommentRequestTypeUser(comment)) { @@ -537,3 +543,28 @@ export const convertSortField = (sortField: string | undefined): SortFieldCase = return SortFieldCase.createdAt; } }; + +export const constructSearch = ( + search: string | undefined, + spaceId: string, + savedObjectsSerializer: ISavedObjectsSerializer +): Pick | undefined => { + if (!search) { + return undefined; + } + + if (uuidValidate(search)) { + const rawId = savedObjectsSerializer.generateRawId( + spaceIdToNamespace(spaceId), + CASE_SAVED_OBJECT, + search + ); + + return { + search: `"${search}" "${rawId}"`, + rootSearchFields: ['_id'], + }; + } + + return { search }; +}; diff --git a/x-pack/plugins/cases/server/common/types.ts b/x-pack/plugins/cases/server/common/types.ts index 8ae038992b28f..6a9eaed578a8f 100644 --- a/x-pack/plugins/cases/server/common/types.ts +++ b/x-pack/plugins/cases/server/common/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { KueryNode } from '@kbn/es-query'; import type { CaseAttributes, SavedObjectFindOptions } from '../../common/api'; diff --git a/x-pack/plugins/cases/server/services/user_actions/index.ts b/x-pack/plugins/cases/server/services/user_actions/index.ts index 0612c1374a4ec..9db6c25c5e496 100644 --- a/x-pack/plugins/cases/server/services/user_actions/index.ts +++ b/x-pack/plugins/cases/server/services/user_actions/index.ts @@ -26,7 +26,13 @@ import { MAX_DOCS_PER_PAGE, } from '../../../common/constants'; import { buildFilter, combineFilters } from '../../client/utils'; -import type { CaseConnectorActivity, CaseConnectorFields, PushInfo, ServiceContext } from './types'; +import type { + CaseConnectorActivity, + CaseConnectorFields, + PushInfo, + PushTimeFrameInfo, + ServiceContext, +} from './types'; import { defaultSortField } from '../../common/utils'; import { UserActionPersister } from './operations/create'; import { UserActionFinder } from './operations/find'; @@ -37,15 +43,18 @@ export interface UserActionItem { references: SavedObjectReference[]; } -interface MostRecentResults { - mostRecent: { - hits: { - total: number; - hits: SavedObjectsRawDoc[]; - }; +interface TopHits { + hits: { + total: number; + hits: SavedObjectsRawDoc[]; }; } +interface TimeFrameInfo { + mostRecent: TopHits; + oldest: TopHits; +} + interface ConnectorActivityAggsResult { references: { connectors: { @@ -55,9 +64,9 @@ interface ConnectorActivityAggsResult { reverse: { connectorActivity: { buckets: { - changeConnector: MostRecentResults; - createCase: MostRecentResults; - pushInfo: MostRecentResults; + changeConnector: TimeFrameInfo; + createCase: TimeFrameInfo; + pushInfo: TimeFrameInfo; }; }; }; @@ -72,7 +81,7 @@ interface ConnectorFieldsBeforePushAggsResult { connectors: { reverse: { ids: { - buckets: Record; + buckets: Record; }; }; }; @@ -381,28 +390,13 @@ export class CaseUserActionService { ); } - const pushInfo = connectorInfo.reverse.connectorActivity.buckets.pushInfo; - let pushDoc: SavedObject | undefined; - - if (pushInfo.mostRecent.hits.hits.length > 0) { - const rawPushDoc = pushInfo.mostRecent.hits.hits[0]; - - const doc = - this.context.savedObjectsSerializer.rawToSavedObject( - rawPushDoc - ); - - pushDoc = transformToExternalModel( - doc, - this.context.persistableStateAttachmentTypeRegistry - ); - } + const pushDocs = this.getPushDocs(connectorInfo.reverse.connectorActivity.buckets.pushInfo); if (fieldsDoc != null) { caseConnectorInfo.push({ connectorId: connectorInfo.key, fields: fieldsDoc, - push: pushDoc, + push: pushDocs, }); } else { this.context.log.warn(`Unable to find fields for connector id: ${connectorInfo.key}`); @@ -412,6 +406,33 @@ export class CaseUserActionService { return caseConnectorInfo; } + private getPushDocs(pushTimeFrameInfo: TimeFrameInfo): PushTimeFrameInfo | undefined { + const mostRecentPushDoc = this.getTopHitsDoc(pushTimeFrameInfo.mostRecent); + const oldestPushDoc = this.getTopHitsDoc(pushTimeFrameInfo.oldest); + + if (mostRecentPushDoc && oldestPushDoc) { + return { + mostRecent: mostRecentPushDoc, + oldest: oldestPushDoc, + }; + } + } + + private getTopHitsDoc( + topHits: TopHits + ): SavedObject | undefined { + if (topHits.hits.hits.length > 0) { + const rawPushDoc = topHits.hits.hits[0]; + + const doc = + this.context.savedObjectsSerializer.rawToSavedObject( + rawPushDoc + ); + + return transformToExternalModel(doc, this.context.persistableStateAttachmentTypeRegistry); + } + } + private static buildConnectorInfoAggs(): Record< string, estypes.AggregationsAggregationContainer @@ -480,6 +501,18 @@ export class CaseUserActionService { size: 1, }, }, + oldest: { + top_hits: { + sort: [ + { + [`${CASE_USER_ACTION_SAVED_OBJECT}.created_at`]: { + order: 'asc', + }, + }, + ], + size: 1, + }, + }, }, }, }, diff --git a/x-pack/plugins/cases/server/services/user_actions/types.ts b/x-pack/plugins/cases/server/services/user_actions/types.ts index dc37ec06d9f56..1e9e1f644b6d2 100644 --- a/x-pack/plugins/cases/server/services/user_actions/types.ts +++ b/x-pack/plugins/cases/server/services/user_actions/types.ts @@ -143,10 +143,15 @@ export interface ServiceContext { auditLogger: AuditLogger; } +export interface PushTimeFrameInfo { + mostRecent: SavedObject; + oldest: SavedObject; +} + export interface CaseConnectorActivity { connectorId: string; fields: SavedObject; - push?: SavedObject; + push?: PushTimeFrameInfo; } export type CaseConnectorFields = Map< diff --git a/x-pack/plugins/cases/tsconfig.json b/x-pack/plugins/cases/tsconfig.json index af2f1a29a64d1..599545caf0ae5 100644 --- a/x-pack/plugins/cases/tsconfig.json +++ b/x-pack/plugins/cases/tsconfig.json @@ -54,6 +54,7 @@ "@kbn/ecs", "@kbn/core-saved-objects-api-server", "@kbn/core-saved-objects-base-server-mocks", + "@kbn/core-saved-objects-utils-server", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts index 32015c8c23036..10c870275e590 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts @@ -5,11 +5,11 @@ * 2.0. */ -import type { SavedObject } from '@kbn/core-saved-objects-common'; import type { EncryptedObjectDescriptor, ISavedObjectsEncryptionExtension, ISavedObjectTypeRegistry, + SavedObject, } from '@kbn/core-saved-objects-server'; import type { AuthenticatedUser } from '@kbn/security-plugin/common'; diff --git a/x-pack/plugins/encrypted_saved_objects/tsconfig.json b/x-pack/plugins/encrypted_saved_objects/tsconfig.json index 4359bebb24833..7d60b8171f1d9 100644 --- a/x-pack/plugins/encrypted_saved_objects/tsconfig.json +++ b/x-pack/plugins/encrypted_saved_objects/tsconfig.json @@ -10,7 +10,6 @@ "@kbn/core", "@kbn/utility-types", "@kbn/core-saved-objects-server", - "@kbn/core-saved-objects-common", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index 96b60ee3d8d2b..bfc7208235c56 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -1369,6 +1369,9 @@ }, { "$ref": "#/components/parameters/sort_order" + }, + { + "$ref": "#/components/parameters/with_metrics" } ], "security": [ @@ -1569,7 +1572,12 @@ } } }, - "operationId": "get-agent" + "operationId": "get-agent", + "parameters": [ + { + "$ref": "#/components/parameters/with_metrics" + } + ] }, "put": { "summary": "Agent - Update", @@ -4708,6 +4716,15 @@ "desc" ] } + }, + "with_metrics": { + "name": "withMetrics", + "in": "query", + "description": "Return agent metrics, false by default", + "required": false, + "schema": { + "type": "boolean" + } } }, "schemas": { @@ -5376,6 +5393,19 @@ "items": { "$ref": "#/components/schemas/agent_component" } + }, + "metrics": { + "type": "object", + "properties": { + "cpu_avg": { + "type": "number", + "description": "Average agent CPU usage during the last 5 minute, number between 0-1" + }, + "memory_size_byte_avg": { + "type": "number", + "description": "Average agent memory consumption during the last 5 minute" + } + } } }, "required": [ diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index d4a10183a3a6f..bd8d18f2be5b1 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -856,6 +856,7 @@ paths: - $ref: '#/components/parameters/show_upgradeable' - $ref: '#/components/parameters/sort_field' - $ref: '#/components/parameters/sort_order' + - $ref: '#/components/parameters/with_metrics' security: - basicAuth: [] /agents/bulk_upgrade: @@ -983,6 +984,8 @@ paths: required: - item operationId: get-agent + parameters: + - $ref: '#/components/parameters/with_metrics' put: summary: Agent - Update tags: [] @@ -2934,6 +2937,13 @@ components: enum: - asc - desc + with_metrics: + name: withMetrics + in: query + description: Return agent metrics, false by default + required: false + schema: + type: boolean schemas: fleet_setup_response: title: Fleet Setup response @@ -3405,6 +3415,17 @@ components: type: array items: $ref: '#/components/schemas/agent_component' + metrics: + type: object + properties: + cpu_avg: + type: number + description: >- + Average agent CPU usage during the last 5 minute, number between + 0-1 + memory_size_byte_avg: + type: number + description: Average agent memory consumption during the last 5 minute required: - type - active diff --git a/x-pack/plugins/fleet/common/openapi/components/parameters/with_metrics.yaml b/x-pack/plugins/fleet/common/openapi/components/parameters/with_metrics.yaml new file mode 100644 index 0000000000000..2c0723c45b398 --- /dev/null +++ b/x-pack/plugins/fleet/common/openapi/components/parameters/with_metrics.yaml @@ -0,0 +1,6 @@ +name: withMetrics +in: query +description: Return agent metrics, false by default +required: false +schema: + type: boolean diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/agent.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/agent.yaml index 0e14c8ecbf009..515919319fdbe 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/agent.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/agent.yaml @@ -37,6 +37,16 @@ properties: type: array items: $ref: ./agent_component.yaml + metrics: + type: object + properties: + cpu_avg: + type: number + description: Average agent CPU usage during the last 5 minutes, number between 0-1 + memory_size_byte_avg: + type: number + description: Average agent memory consumption during the last 5 minutes + required: - type - active diff --git a/x-pack/plugins/fleet/common/openapi/paths/agents.yaml b/x-pack/plugins/fleet/common/openapi/paths/agents.yaml index 348cbcc99d461..cc1aaab2a679c 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/agents.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/agents.yaml @@ -17,5 +17,6 @@ get: - $ref: ../components/parameters/show_upgradeable.yaml - $ref: ../components/parameters/sort_field.yaml - $ref: ../components/parameters/sort_order.yaml + - $ref: ../components/parameters/with_metrics.yaml security: - basicAuth: [] diff --git a/x-pack/plugins/fleet/common/openapi/paths/agents@{agent_id}.yaml b/x-pack/plugins/fleet/common/openapi/paths/agents@{agent_id}.yaml index b5c171c6b02f5..bc6dbac798926 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/agents@{agent_id}.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/agents@{agent_id}.yaml @@ -20,6 +20,8 @@ get: required: - item operationId: get-agent + parameters: + - $ref: ../components/parameters/with_metrics.yaml put: summary: Agent - Update tags: [] @@ -45,12 +47,12 @@ put: schema: type: object properties: - user_provided_metadata: - type: object - tags: - type: array - items: - type: string + user_provided_metadata: + type: object + tags: + type: array + items: + type: string delete: summary: Agent - Delete tags: [] diff --git a/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.excalidraw b/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.excalidraw index c60e7b6c53709..ca0e7a07b83ae 100644 --- a/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.excalidraw +++ b/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.excalidraw @@ -517,8 +517,8 @@ }, { "type": "rectangle", - "version": 434, - "versionNonce": 1542747196, + "version": 437, + "versionNonce": 1997798367, "isDeleted": false, "id": "2OMbIr95DlLbdfZNJT10Y", "fillStyle": "hachure", @@ -546,9 +546,132 @@ { "id": "1s05KLsrwRi2PxuH_jDQT", "type": "arrow" + }, + { + "id": "XpJ2amSYngsK0A6N62Qju", + "type": "arrow" } ], - "updated": 1673384443903, + "updated": 1674566205979, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 917, + "versionNonce": 956879871, + "isDeleted": false, + "id": "TzDfkcNBfxs7ahmg9ajr8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2064.545208643354, + "y": 409.0528288341703, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 336, + "height": 35, + "seed": 1440381425, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "aPg90OESDYRsXC8-G7KLG" + }, + { + "id": "8FSdQfKWeI6unr2FWZN6v", + "type": "arrow" + }, + { + "id": "XpJ2amSYngsK0A6N62Qju", + "type": "arrow" + } + ], + "updated": 1674567222899, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 951, + "versionNonce": 1562068785, + "isDeleted": false, + "id": "uQstJOy7rnxemFPLnYy8f", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2062.539157443577, + "y": 504.31026640392486, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 336, + "height": 35, + "seed": 1819626847, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "I0Qf_RuWKKMV6F_R9BMqh" + }, + { + "id": "K6bdihn6uei5XMHymhKgn", + "type": "arrow" + }, + { + "id": "8FSdQfKWeI6unr2FWZN6v", + "type": "arrow" + } + ], + "updated": 1674567222899, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 961, + "versionNonce": 1181085425, + "isDeleted": false, + "id": "w3YQbzvzSsdFYpM1mzEQG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2062.919319273935, + "y": 611.6350083124071, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 336, + "height": 35, + "seed": 1402749425, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "jeYYzfsS4r6sKG-Rg_fLA" + }, + { + "id": "K6bdihn6uei5XMHymhKgn", + "type": "arrow" + } + ], + "updated": 1674567222899, "link": null, "locked": false }, @@ -826,6 +949,108 @@ "containerId": "2OMbIr95DlLbdfZNJT10Y", "originalText": "EPR" }, + { + "type": "text", + "version": 889, + "versionNonce": 1469951857, + "isDeleted": false, + "id": "aPg90OESDYRsXC8-G7KLG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2086.545208643354, + "y": 414.0528288341703, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 292, + "height": 25, + "seed": 1721178527, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "elastic/package-storage-infra", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TzDfkcNBfxs7ahmg9ajr8", + "originalText": "elastic/package-storage-infra" + }, + { + "type": "text", + "version": 955, + "versionNonce": 176472159, + "isDeleted": false, + "id": "I0Qf_RuWKKMV6F_R9BMqh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2134.539157443577, + "y": 509.31026640392486, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 192, + "height": 25, + "seed": 978844689, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "elastic/integrations", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "uQstJOy7rnxemFPLnYy8f", + "originalText": "elastic/integrations" + }, + { + "type": "text", + "version": 985, + "versionNonce": 778663071, + "isDeleted": false, + "id": "jeYYzfsS4r6sKG-Rg_fLA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2128.919319273935, + "y": 616.6350083124071, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 204, + "height": 25, + "seed": 1958072735, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "elastic/package-spec", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "w3YQbzvzSsdFYpM1mzEQG", + "originalText": "elastic/package-spec" + }, { "type": "text", "version": 627, @@ -1698,8 +1923,8 @@ }, { "type": "line", - "version": 39, - "versionNonce": 624525372, + "version": 107, + "versionNonce": 1840003295, "isDeleted": false, "id": "SOD7ufNpqvjKTgFzFRXcS", "fillStyle": "hachure", @@ -1708,19 +1933,19 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 30.041449652777715, - "y": 830.636973063151, + "x": 104.93509589301209, + "y": 912.2709604899088, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 158.3133370535714, - "height": 37.867867606026834, + "width": 118.40092250279014, + "height": 92.01146806989402, "seed": 1006866948, "groupIds": [], "roundness": { "type": 2 }, "boundElements": [], - "updated": 1673384443904, + "updated": 1674567299185, "link": null, "locked": false, "startBinding": null, @@ -1734,15 +1959,15 @@ 0 ], [ - 158.3133370535714, - -37.867867606026834 + 118.40092250279014, + -92.01146806989402 ] ] }, { "type": "text", - "version": 235, - "versionNonce": 907709500, + "version": 270, + "versionNonce": 1574787103, "isDeleted": false, "id": "mYAfTuKIQT_JrhS393BlS", "fillStyle": "hachure", @@ -1751,8 +1976,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": -424.17374286954373, - "y": 851.569363548642, + "x": -299.88739643399686, + "y": 946.5142793201263, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 551, @@ -1761,7 +1986,7 @@ "groupIds": [], "roundness": null, "boundElements": [], - "updated": 1673384445530, + "updated": 1674567272124, "link": null, "locked": false, "fontSize": 20, @@ -1900,6 +2125,1352 @@ 71.91934204101551 ] ] + }, + { + "type": "arrow", + "version": 300, + "versionNonce": 1752506431, + "isDeleted": false, + "id": "XpJ2amSYngsK0A6N62Qju", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2049.845842633929, + "y": 436.739721509516, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 166.7086223661472, + "height": 132.35529822890328, + "seed": 158668721, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "startBinding": { + "elementId": "TzDfkcNBfxs7ahmg9ajr8", + "focus": 0.8939688905880723, + "gap": 14.69936600942492 + }, + "endBinding": { + "elementId": "2OMbIr95DlLbdfZNJT10Y", + "focus": 0.18005854812037203, + "gap": 20.30197095113965 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -166.7086223661472, + 132.35529822890328 + ] + ] + }, + { + "type": "arrow", + "version": 360, + "versionNonce": 875671871, + "isDeleted": false, + "id": "K6bdihn6uei5XMHymhKgn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2227.4756354598503, + "y": 602.529283796038, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 1.1107734629554216, + "height": 62.10702078683039, + "seed": 1402832561, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567223066, + "link": null, + "locked": false, + "startBinding": { + "elementId": "w3YQbzvzSsdFYpM1mzEQG", + "focus": -0.023287108038057683, + "gap": 9.105724516369037 + }, + "endBinding": { + "elementId": "uQstJOy7rnxemFPLnYy8f", + "focus": 0.009624189980902531, + "gap": 1.1119966052827976 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.1107734629554216, + -62.10702078683039 + ] + ] + }, + { + "type": "arrow", + "version": 326, + "versionNonce": 847720799, + "isDeleted": false, + "id": "8FSdQfKWeI6unr2FWZN6v", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2226.123615422413, + "y": 496.4693647112165, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.00008473406751363655, + "height": 46.36526925223211, + "seed": 993975231, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567223066, + "link": null, + "locked": false, + "startBinding": { + "elementId": "uQstJOy7rnxemFPLnYy8f", + "focus": -0.026283258880451247, + "gap": 7.840901692708371 + }, + "endBinding": { + "elementId": "TzDfkcNBfxs7ahmg9ajr8", + "focus": 0.03822300133161204, + "gap": 6.051266624814048 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.00008473406751363655, + -46.36526925223211 + ] + ] + }, + { + "type": "rectangle", + "version": 208, + "versionNonce": 1532893407, + "isDeleted": false, + "id": "hqJzdljEK6G1Nzoj2dbbZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2048.9437430245534, + "y": 391.3782479422432, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 360.47572544642844, + "height": 269.64076450892856, + "seed": 2092104401, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "XpJ2amSYngsK0A6N62Qju", + "type": "arrow" + } + ], + "updated": 1674567222899, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 184, + "versionNonce": 601073809, + "isDeleted": false, + "id": "6WTC-G0zSCY0oEO8jZ2Vq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2133.2156808035716, + "y": 353.7839747837611, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 191, + "height": 25, + "seed": 55664977, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Ecosystem projects", + "baseline": 18, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Ecosystem projects" + }, + { + "type": "text", + "version": 174, + "versionNonce": 1929749759, + "isDeleted": false, + "id": "2XWt4eOmkwezvHjMI2aAE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2433.8080705915177, + "y": 613.4700796944754, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 319, + "height": 75, + "seed": 1572412479, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "The package spec defines how\npackages are structured, what \nfields are available, etc", + "baseline": 68, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "The package spec defines how\npackages are structured, what \nfields are available, etc" + }, + { + "type": "text", + "version": 170, + "versionNonce": 1699901041, + "isDeleted": false, + "id": "1EP_nhAEIHQpka5-PhqY0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2437.3514229910716, + "y": 503.347660609654, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 285, + "height": 50, + "seed": 347621855, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Most integrations live in this\nGitHub repo", + "baseline": 43, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Most integrations live in this\nGitHub repo" + }, + { + "type": "text", + "version": 185, + "versionNonce": 572960031, + "isDeleted": false, + "id": "sCDURCnbeJ3SemCKGHUDS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2448.093784877232, + "y": 399.1843654087611, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 331, + "height": 75, + "seed": 1232672607, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567222899, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "This repo holds scripts and CI\njobs for pushing built integrations\nand related data to EPR", + "baseline": 68, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "This repo holds scripts and CI\njobs for pushing built integrations\nand related data to EPR" + }, + { + "type": "line", + "version": 177, + "versionNonce": 607017887, + "isDeleted": false, + "id": "Orc-PVdg-27edOlu63PfI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 373.6132812500002, + "y": 623.7723592122401, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 1164.349961053757, + "height": 194.7562590099517, + "seed": 1528207569, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567214090, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -1164.349961053757, + -194.7562590099517 + ] + ] + }, + { + "type": "rectangle", + "version": 408, + "versionNonce": 1554721361, + "isDeleted": false, + "id": "4wDzw9VBuzFS0g1YkUaW7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1418.5123397584935, + "y": 202.59618898422048, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 594.1365559895831, + "height": 336.4240252782429, + "seed": 1152051871, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 443, + "versionNonce": 1991253823, + "isDeleted": false, + "id": "mE2NV6rOF-0jqmnvAKORi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1393.770024375309, + "y": 229.37460859995088, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 137, + "height": 87, + "seed": 1498287729, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "1L2ZFwV5nLij1pGZDC3n4" + }, + { + "id": "OFRT_wzUDdhYEWQszsvE9", + "type": "arrow" + }, + { + "id": "t9V4igd5whcooVeaPNfkE", + "type": "arrow" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 698, + "versionNonce": 1924307839, + "isDeleted": false, + "id": "8pBaTm8cCnCcs-VXPWwLf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1395.502507285465, + "y": 342.62510366288484, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 137, + "height": 87, + "seed": 1397693425, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "e_CB_c3RWrmjXZz5-08Uq" + }, + { + "id": "4zTS-v9f8H6hAOXSbZ6-f", + "type": "arrow" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 665, + "versionNonce": 1961818577, + "isDeleted": false, + "id": "lrH9wHLkmpPuqmABX_lPe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -981.023442344059, + "y": 224.81150503007245, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 138, + "height": 83, + "seed": 1905606783, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "rAehxx4vftxB34H0DF_tL" + }, + { + "id": "t9V4igd5whcooVeaPNfkE", + "type": "arrow" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 358, + "versionNonce": 592689201, + "isDeleted": false, + "id": "1L2ZFwV5nLij1pGZDC3n4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1378.770024375309, + "y": 262.8746085999509, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 107, + "height": 20, + "seed": 152354737, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Data Stream", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mE2NV6rOF-0jqmnvAKORi", + "originalText": "Data Stream" + }, + { + "type": "text", + "version": 630, + "versionNonce": 1005985777, + "isDeleted": false, + "id": "e_CB_c3RWrmjXZz5-08Uq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1383.002507285465, + "y": 376.12510366288484, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 112, + "height": 20, + "seed": 565548959, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Ingest pipeline", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "8pBaTm8cCnCcs-VXPWwLf", + "originalText": "Ingest pipeline" + }, + { + "type": "text", + "version": 596, + "versionNonce": 1358104511, + "isDeleted": false, + "id": "rAehxx4vftxB34H0DF_tL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -972.523442344059, + "y": 256.31150503007245, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 121, + "height": 20, + "seed": 230443761, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Index template", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lrH9wHLkmpPuqmABX_lPe", + "originalText": "Index template" + }, + { + "type": "rectangle", + "version": 691, + "versionNonce": 829527985, + "isDeleted": false, + "id": "DUTiVSo8VC-GDOEhA4qDi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1374.2441512819312, + "y": 469.03878154451945, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 97, + "height": 50, + "seed": 427141439, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "YrchZG_NWcyjOHcvcQn5n" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 563, + "versionNonce": 165263327, + "isDeleted": false, + "id": "YrchZG_NWcyjOHcvcQn5n", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1358.7441512819312, + "y": 474.03878154451945, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 66, + "height": 40, + "seed": 85502673, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Backing \nindex", + "baseline": 34, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "DUTiVSo8VC-GDOEhA4qDi", + "originalText": "Backing index" + }, + { + "type": "arrow", + "version": 1128, + "versionNonce": 607206687, + "isDeleted": false, + "id": "OFRT_wzUDdhYEWQszsvE9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1318.5483831253482, + "y": 131.7216115363518, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.740265410244092, + "height": 83.99572936070206, + "seed": 716774577, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567210186, + "link": null, + "locked": false, + "startBinding": { + "elementId": "boJSiXUuIMRrujC6rTwm3", + "focus": 0.36332251407301563, + "gap": 15.770374750947099 + }, + "endBinding": { + "elementId": "mE2NV6rOF-0jqmnvAKORi", + "focus": 0.07952051743154259, + "gap": 13.65726770289703 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -0.740265410244092, + 83.99572936070206 + ] + ] + }, + { + "type": "text", + "version": 322, + "versionNonce": 783639551, + "isDeleted": false, + "id": "boJSiXUuIMRrujC6rTwm3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1360.5081467401405, + "y": 75.95123678540469, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 133, + "height": 40, + "seed": 1506187985, + "groupIds": [], + "roundness": null, + "boundElements": [ + { + "id": "OFRT_wzUDdhYEWQszsvE9", + "type": "arrow" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Logs and metrics\nfrom Agent", + "baseline": 34, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Logs and metrics\nfrom Agent" + }, + { + "type": "arrow", + "version": 1563, + "versionNonce": 965059537, + "isDeleted": false, + "id": "t9V4igd5whcooVeaPNfkE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -989.0570492086988, + "y": 270.3189767399317, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 250.26888371495966, + "height": 3.854485914619943, + "seed": 842429873, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674569971493, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VtNsOEEiZq8ABm1Y4Zbfe", + "focus": -1.4739555682501555, + "gap": 9.01515828757988 + }, + "endBinding": { + "elementId": "mE2NV6rOF-0jqmnvAKORi", + "focus": 0.058860103261605144, + "gap": 17.444091451650593 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -250.26888371495966, + 3.854485914619943 + ] + ] + }, + { + "type": "text", + "version": 291, + "versionNonce": 421474079, + "isDeleted": false, + "id": "VtNsOEEiZq8ABm1Y4Zbfe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1204.0722074962787, + "y": 244.9664112878229, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 206, + "height": 20, + "seed": 302977937, + "groupIds": [], + "roundness": null, + "boundElements": [ + { + "id": "t9V4igd5whcooVeaPNfkE", + "type": "arrow" + } + ], + "updated": 1674569959190, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Defines mappings, settings", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Defines mappings, settings" + }, + { + "type": "rectangle", + "version": 613, + "versionNonce": 1206105905, + "isDeleted": false, + "id": "YK3qbaE_7zkyaF9sCYRYD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -961.0160483708447, + "y": 309.35856216672914, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 104, + "height": 50, + "seed": 997581631, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "x1xkNKVBtrG15qeJ7Dm5F" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 653, + "versionNonce": 900180241, + "isDeleted": false, + "id": "imnp12vtn95AhuVgd_Qzx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -960.0660022553933, + "y": 360.4226083906875, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 104, + "height": 50, + "seed": 1050988657, + "groupIds": [], + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "D4zXyECnvfa83r2yLRflj" + } + ], + "updated": 1674567210103, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 425, + "versionNonce": 1656442975, + "isDeleted": false, + "id": "x1xkNKVBtrG15qeJ7Dm5F", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -947.0160483708447, + "y": 324.35856216672914, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 76, + "height": 20, + "seed": 1442585695, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "@package", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "YK3qbaE_7zkyaF9sCYRYD", + "originalText": "@package" + }, + { + "type": "text", + "version": 471, + "versionNonce": 416279679, + "isDeleted": false, + "id": "D4zXyECnvfa83r2yLRflj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -942.0660022553933, + "y": 375.4226083906875, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 68, + "height": 20, + "seed": 119761695, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "@custom", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "imnp12vtn95AhuVgd_Qzx", + "originalText": "@custom" + }, + { + "type": "line", + "version": 241, + "versionNonce": 231890673, + "isDeleted": false, + "id": "u6Yyh_GQc1NwEgZYNUL2f", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -692.2530682276155, + "y": 204.47196887788368, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 143.02103678385436, + "height": 124.37996758355035, + "seed": 550278609, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -143.02103678385436, + 124.37996758355035 + ] + ] + }, + { + "type": "text", + "version": 468, + "versionNonce": 603664511, + "isDeleted": false, + "id": "qCw-VyNqH6Vh6KPbwlG3m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -727.8474014524415, + "y": 65.60121760292705, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 468, + "height": 100, + "seed": 773737919, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567211772, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Each index template generated by a package is\ncomposed of two component templates: one with\n\"package-level\" settings that may change between\nversions, and one \"blank\" one that allows for customization\nthat are brought along between upgrades", + "baseline": 94, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Each index template generated by a package is\ncomposed of two component templates: one with\n\"package-level\" settings that may change between\nversions, and one \"blank\" one that allows for customization\nthat are brought along between upgrades" + }, + { + "type": "arrow", + "version": 192, + "versionNonce": 909903007, + "isDeleted": false, + "id": "rH3rnfJzenOYRLRs7MsXw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1323.263233971973, + "y": 315.56607491629507, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 1.8475680881076642, + "height": 29.14784749348962, + "seed": 511533425, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.8475680881076642, + 29.14784749348962 + ] + ] + }, + { + "type": "arrow", + "version": 350, + "versionNonce": 1833219633, + "isDeleted": false, + "id": "4zTS-v9f8H6hAOXSbZ6-f", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1324.9420398530494, + "y": 432.4701683407742, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.7348293728298358, + "height": 38.52396647135424, + "seed": 2077793905, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567210186, + "link": null, + "locked": false, + "startBinding": { + "elementId": "8pBaTm8cCnCcs-VXPWwLf", + "focus": -0.01696896059459138, + "gap": 2.8450646778893542 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.7348293728298358, + 38.52396647135424 + ] + ] + }, + { + "type": "line", + "version": 185, + "versionNonce": 1948010239, + "isDeleted": false, + "id": "Cds8dLCjU73HPC3hgfhoy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1558.4578471108082, + "y": 442.34544893295083, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 145.44343312581373, + "height": 78.70164235432946, + "seed": 106060113, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567253164, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 145.44343312581373, + -78.70164235432946 + ] + ] + }, + { + "type": "text", + "version": 365, + "versionNonce": 777101489, + "isDeleted": false, + "id": "DE9Fz_2ZpNKwL0pIzbNeL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1879.2093424721363, + "y": 456.1793799021891, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 300, + "height": 40, + "seed": 1714744817, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567255130, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Ingest pipelines define processors to\nalter, derive, and enrich incoming data", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Ingest pipelines define processors to\nalter, derive, and enrich incoming data" + }, + { + "type": "text", + "version": 238, + "versionNonce": 1540139231, + "isDeleted": false, + "id": "0lxnHLhXhIK1ZYK-K6its", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1238.5194290403324, + "y": -11.412020244295036, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 316, + "height": 25, + "seed": 1342031807, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567210103, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Ingest flow within Elasticsearch", + "baseline": 18, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Ingest flow within Elasticsearch" + }, + { + "type": "line", + "version": 269, + "versionNonce": 2039951313, + "isDeleted": false, + "id": "jiU4SOAorHku4E7slOsAi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1132.109516930958, + "y": 747.7178523956788, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 1.625798543294195, + "height": 164.60205078125, + "seed": 1969123455, + "groupIds": [], + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1674567266502, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -1.625798543294195, + -164.60205078125 + ] + ] + }, + { + "type": "text", + "version": 579, + "versionNonce": 1922118079, + "isDeleted": false, + "id": "RygSh-BXaBHbgMaOaiz-k", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1365.1244501991873, + "y": 764.2358374217205, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 467, + "height": 150, + "seed": 1873044351, + "groupIds": [], + "roundness": null, + "boundElements": [], + "updated": 1674567266502, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Index template mappings and ingest pipelines\nare created based on an integration's package\nmanifest, and \"fields.yml\" files. Integrations\ndescribe how their related data is structured,\nand Fleet handles generating Elasticsearch\ncomponents that align with that structure.", + "baseline": 143, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Index template mappings and ingest pipelines\nare created based on an integration's package\nmanifest, and \"fields.yml\" files. Integrations\ndescribe how their related data is structured,\nand Fleet handles generating Elasticsearch\ncomponents that align with that structure." } ], "appState": { diff --git a/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.png b/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.png index b357e15ca1414..63bfd0b18fccc 100644 Binary files a/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.png and b/x-pack/plugins/fleet/dev_docs/diagrams/architecture_overview/architecture_overview.png differ diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx index 95d89491c620a..640c482376cc1 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx @@ -97,7 +97,9 @@ function OnPremLink() { ); } -export const AvailablePackages: React.FC<{}> = ({}) => { +export const AvailablePackages: React.FC<{ + setPrereleaseEnabled: (isEnabled: boolean) => void; +}> = ({ setPrereleaseEnabled }) => { useBreadcrumbs('integrations_all'); const { @@ -137,6 +139,7 @@ export const AvailablePackages: React.FC<{}> = ({}) => { onChange={setPreference} onPrereleaseEnabledChange={(isEnabled) => { setPrereleaseIntegrationsEnabled(isEnabled); + setPrereleaseEnabled(isEnabled); }} /> , diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx index 7b0431a1cd618..d69fe175f0961 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { Switch, Route } from 'react-router-dom'; import type { CustomIntegration } from '@kbn/custom-integrations-plugin/common'; @@ -112,9 +112,11 @@ export const mapToCard = ({ }; export const EPMHomePage: React.FC = () => { + const [prereleaseEnabled, setPrereleaseEnabled] = useState(false); + // loading packages to find installed ones const { data: allPackages, isLoading } = useGetPackages({ - prerelease: true, + prerelease: prereleaseEnabled, }); const installedPackages = useMemo( @@ -141,7 +143,7 @@ export const EPMHomePage: React.FC = () => { - + diff --git a/x-pack/plugins/fleet/server/services/agents/action.mock.ts b/x-pack/plugins/fleet/server/services/agents/action.mock.ts index 7f381ba009066..3534327e196db 100644 --- a/x-pack/plugins/fleet/server/services/agents/action.mock.ts +++ b/x-pack/plugins/fleet/server/services/agents/action.mock.ts @@ -7,7 +7,7 @@ import { elasticsearchServiceMock, savedObjectsClientMock } from '@kbn/core/server/mocks'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import type { AgentPolicy } from '../../types'; diff --git a/x-pack/plugins/fleet/server/services/agents/status.ts b/x-pack/plugins/fleet/server/services/agents/status.ts index d05d972925eb5..fecc369f6ad33 100644 --- a/x-pack/plugins/fleet/server/services/agents/status.ts +++ b/x-pack/plugins/fleet/server/services/agents/status.ts @@ -106,6 +106,7 @@ export async function getAgentStatusForAgentPolicy( }, }, }, + ignore_unavailable: true, }); } catch (error) { logger.debug(`Error getting agent statuses: ${error}`); diff --git a/x-pack/plugins/infra/kibana.json b/x-pack/plugins/infra/kibana.json index 68b72986a43e7..80304b137fc92 100644 --- a/x-pack/plugins/infra/kibana.json +++ b/x-pack/plugins/infra/kibana.json @@ -12,15 +12,24 @@ "dataViews", "visTypeTimeseries", "alerting", + "lens", "triggersActionsUi", "observability", "ruleRegistry", "unifiedSearch" ], - "optionalPlugins": ["ml", "home", "embeddable", "osquery"], + "optionalPlugins": [ + "ml", + "home", + "embeddable", + "osquery" + ], "server": true, "ui": true, - "configPath": ["xpack", "infra"], + "configPath": [ + "xpack", + "infra" + ], "requiredBundles": [ "unifiedSearch", "observability", @@ -29,11 +38,11 @@ "kibanaReact", "ml", "embeddable", - "controls" + "controls" ], "owner": { "name": "Logs and Metrics UI", "githubTeam": "logs-metrics-ui" }, "description": "This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions" -} +} \ No newline at end of file diff --git a/x-pack/plugins/infra/public/common/visualizations/index.ts b/x-pack/plugins/infra/public/common/visualizations/index.ts new file mode 100644 index 0000000000000..1aa592650ef08 --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/index.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 { CPU, Load, Memory, RX, TX, DiskIORead, DiskIOWrite } from './lens/hosts'; + +export { buildLensAttributes } from './lens/lens_visualization'; + +export const hostMetricsLensAttributes = { + cpu: CPU, + load: Load, + memory: Memory, + rx: RX, + tx: TX, + diskIORead: DiskIORead, + diskIOWrite: DiskIOWrite, +}; + +export type HostLensAttributesTypes = keyof typeof hostMetricsLensAttributes; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/cpu.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/cpu.ts new file mode 100644 index 0000000000000..2e8f2571c76aa --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/cpu.ts @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import type { LensOptions } from '../../../../types'; +import type { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class CPU implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'CPU Usage'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_cpu_usage', + { + formula: 'average(system.cpu.total.norm.pct)', + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_cpu_usage'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + yLeftExtent: { + mode: 'custom', + lowerBound: 0, + upperBound: 1, + }, + }); + }; + + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.cpu.total.norm.pct', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.cpu.total.norm.pct', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_read.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_read.ts new file mode 100644 index 0000000000000..4fd627d3b6222 --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_read.ts @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import type { LensOptions } from '../../../../types'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class DiskIORead implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Disk Read IOPS'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_diskio_read', + { + formula: "counter_rate(max(system.diskio.read.bytes), kql='system.diskio.read.bytes >= 0')", + format: { + id: 'bytes', + params: { + decimals: 1, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_diskio_read'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + }); + }; + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.diskio.read.bytes', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.diskio.read.bytes', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_write.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_write.ts new file mode 100644 index 0000000000000..a35a7dca9a85d --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/diskio_write.ts @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import type { LensOptions } from '../../../../types'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class DiskIOWrite implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Disk Write IOPS'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_diskio_write', + { + formula: + "counter_rate(max(system.diskio.write.bytes), kql='system.diskio.write.bytes>= 0')", + format: { + id: 'bytes', + params: { + decimals: 1, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_diskio_write'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + }); + }; + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.diskio.write.bytes', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.diskio.write.bytes', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/index.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/index.ts new file mode 100644 index 0000000000000..48b3764d2198b --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { CPU } from './cpu'; +export { Load } from './load'; +export { Memory } from './memory'; +export { RX } from './rx'; +export { TX } from './tx'; +export { DiskIORead } from './diskio_read'; +export { DiskIOWrite } from './diskio_write'; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/load.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/load.ts new file mode 100644 index 0000000000000..d3850b04a5adf --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/load.ts @@ -0,0 +1,190 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + PersistedIndexPatternLayer, + FormulaPublicApi, + XYState, + FormBasedLayer, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { ReferenceBasedIndexPatternColumn } from '@kbn/lens-plugin/public/datasources/form_based/operations/definitions/column_types'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import type { LensOptions } from '../../../../types'; +import type { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; +const REFERENCE_LAYER = 'referenceLayer'; + +export class Load implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Normalized Load'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_cpu_cores_usage', + { + formula: 'average(system.load.1) / max(system.load.cores)', + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { + [DEFAULT_LAYER_ID]: dataLayer, + referenceLayer: { + linkToLayers: [], + columnOrder: ['referenceColumn'], + columns: { + referenceColumn: { + label: 'Reference', + dataType: 'number', + operationType: 'static_value', + isStaticValue: true, + isBucketed: false, + scale: 'ratio', + params: { + value: 1, + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + }, + references: [], + customLabel: true, + } as ReferenceBasedIndexPatternColumn, + }, + sampling: 1, + incompleteColumns: {}, + }, + }; + }; + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_cpu_cores_usage'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + { + layerId: REFERENCE_LAYER, + layerType: 'referenceLine', + accessors: ['referenceColumn'], + yConfig: [ + { + forAccessor: 'referenceColumn', + axisMode: 'left', + color: '#6092c0', + }, + ], + }, + ], + }); + }; + + getFilters = (): Filter[] => { + return [ + { + $state: { + store: FilterStateStore.APP_STATE, + }, + meta: { + disabled: false, + negate: false, + alias: null, + index: 'c1ec8212-ecee-494a-80da-f6f33b3393f2', + key: 'system.load.cores', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.load.cores', + }, + }, + }, + { + $state: { + store: FilterStateStore.APP_STATE, + }, + meta: { + disabled: false, + negate: false, + alias: null, + index: 'c1ec8212-ecee-494a-80da-f6f33b3393f2', + key: 'system.load.1', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.load.1', + }, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${REFERENCE_LAYER}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/memory.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/memory.ts new file mode 100644 index 0000000000000..f82f520673a9e --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/memory.ts @@ -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 { type Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import type { LensOptions } from '../../../../types'; +import { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class Memory implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Disk Writes IOPS'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_memory_usage', + { + formula: 'average(system.memory.actual.used.bytes) / max(system.memory.total)', + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_memory_usage'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + yLeftExtent: { + mode: 'custom', + lowerBound: 0, + upperBound: 1, + }, + }); + }; + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.memory.actual.used.bytes', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.memory.actual.used.bytes', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.memory.total', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.memory.total', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/rx.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/rx.ts new file mode 100644 index 0000000000000..228d479f39ee2 --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/rx.ts @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import type { LensOptions } from '../../../../types'; +import { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class RX implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Network Inbound (RX)'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_network_in_bytes', + { + formula: "counter_rate(max(system.network.in.bytes), kql='system.network.in.bytes: *') * 8", + timeScale: 's', + format: { + id: 'bits', + params: { + decimals: 1, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_network_in_bytes'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + }); + }; + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.network.in.bytes', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.network.in.bytes', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/hosts/tx.ts b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/tx.ts new file mode 100644 index 0000000000000..da5e4635d55ca --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/hosts/tx.ts @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 Filter, FilterStateStore } from '@kbn/es-query'; +import type { + FormBasedLayer, + FormulaPublicApi, + PersistedIndexPatternLayer, + XYState, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { + DEFAULT_LAYER_ID, + getBreakdownColumn, + getHistogramColumn, + getXYVisualizationState, +} from '../utils'; +import type { LensOptions } from '../../../../types'; +import { ILensVisualization } from '../types'; + +const BREAKDOWN_COLUMN_NAME = 'hosts_aggs_breakdown'; +const HISTOGRAM_COLUMN_NAME = 'x_date_histogram'; + +export class TX implements ILensVisualization { + constructor( + private dataView: DataView, + private options: LensOptions, + private formula: FormulaPublicApi + ) {} + + getTitle(): string { + return 'Network Outbound (TX)'; + } + + getVisualizationType(): string { + return 'lnsXY'; + } + + getLayers = (): Record> => { + const baseLayer: PersistedIndexPatternLayer = { + columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], + columns: { + ...getBreakdownColumn(BREAKDOWN_COLUMN_NAME, 'host.name', this.options.breakdownSize), + ...getHistogramColumn(HISTOGRAM_COLUMN_NAME, this.dataView.timeFieldName ?? '@timestamp'), + }, + }; + + const dataLayer = this.formula.insertOrReplaceFormulaColumn( + 'y_network_out_bytes', + { + formula: + "counter_rate(max(system.network.out.bytes), kql='system.network.out.bytes: *') * 8", + timeScale: 's', + format: { + id: 'bits', + params: { + decimals: 1, + }, + }, + }, + baseLayer, + this.dataView + ); + + if (!dataLayer) { + throw new Error('Error generating the data layer for the chart'); + } + + return { [DEFAULT_LAYER_ID]: dataLayer }; + }; + getVisualizationState = (): XYState => { + return getXYVisualizationState({ + layers: [ + { + layerId: DEFAULT_LAYER_ID, + seriesType: 'line', + accessors: ['y_network_out_bytes'], + yConfig: [], + layerType: 'data', + xAccessor: HISTOGRAM_COLUMN_NAME, + splitAccessor: BREAKDOWN_COLUMN_NAME, + }, + ], + }); + }; + getFilters = (): Filter[] => { + return [ + { + meta: { + disabled: false, + negate: false, + alias: null, + index: '3be1e71b-4bc5-4462-a314-04539f877a19', + key: 'system.network.out.bytes', + value: 'exists', + type: 'exists', + }, + query: { + exists: { + field: 'system.network.out.bytes', + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }, + ]; + }; + + getReferences = (): SavedObjectReference[] => { + return [ + { + type: 'index-pattern', + id: this.dataView.id ?? '', + name: `indexpattern-datasource-layer-${DEFAULT_LAYER_ID}`, + }, + ]; + }; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/lens_visualization.ts b/x-pack/plugins/infra/public/common/visualizations/lens/lens_visualization.ts new file mode 100644 index 0000000000000..048056671028c --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/lens_visualization.ts @@ -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 { LensAttributes } from '../../../types'; +import { ILensVisualization } from './types'; + +export const buildLensAttributes = (visualization: ILensVisualization): LensAttributes => { + return { + title: visualization.getTitle(), + visualizationType: visualization.getVisualizationType(), + references: visualization.getReferences(), + state: { + datasourceStates: { + formBased: { + layers: visualization.getLayers(), + }, + }, + filters: visualization.getFilters(), + query: { language: 'kuery', query: '' }, + visualization: visualization.getVisualizationState(), + }, + }; +}; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/types.ts b/x-pack/plugins/infra/public/common/visualizations/lens/types.ts new file mode 100644 index 0000000000000..ebb93b0b63f6d --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/types.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 { SavedObjectReference } from '@kbn/core-saved-objects-common'; +import { Filter } from '@kbn/es-query'; +import { FormBasedLayer, XYState } from '@kbn/lens-plugin/public'; + +export interface ILensVisualization { + getTitle(): string; + getVisualizationType(): string; + getLayers(): Record>; + getVisualizationState(): XYState; + getFilters(): Filter[]; + getReferences(): SavedObjectReference[]; +} diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/utils.ts b/x-pack/plugins/infra/public/common/visualizations/lens/utils.ts new file mode 100644 index 0000000000000..a10edfa77985e --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/utils.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 { + DateHistogramIndexPatternColumn, + PersistedIndexPatternLayer, + TermsIndexPatternColumn, + XYState, +} from '@kbn/lens-plugin/public'; + +export const DEFAULT_LAYER_ID = 'layer1'; + +export const getHistogramColumn = (columnName: string, sourceField: string) => { + return { + [columnName]: { + dataType: 'date', + isBucketed: true, + label: '@timestamp', + operationType: 'date_histogram', + params: { interval: 'auto' }, + scale: 'interval', + sourceField, + } as DateHistogramIndexPatternColumn, + }; +}; + +export const getBreakdownColumn = ( + columnName: string, + sourceField: string, + breakdownSize: number +): PersistedIndexPatternLayer['columns'] => { + return { + [columnName]: { + label: `Top ${breakdownSize} values of ${sourceField}`, + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField, + isBucketed: true, + params: { + size: breakdownSize, + orderBy: { + type: 'alphabetical', + fallback: false, + }, + orderDirection: 'desc', + otherBucket: false, + missingBucket: false, + parentFormat: { + id: 'terms', + }, + include: [], + exclude: [], + includeIsRegex: false, + excludeIsRegex: false, + }, + } as TermsIndexPatternColumn, + }; +}; + +export const getXYVisualizationState = ( + custom: Omit, 'layers'> & { layers: XYState['layers'] } +): XYState => ({ + legend: { + isVisible: false, + position: 'right', + showSingleSeries: false, + }, + valueLabels: 'show', + fittingFunction: 'None', + curveType: 'LINEAR', + yLeftScale: 'linear', + axisTitlesVisibilitySettings: { + x: false, + yLeft: false, + yRight: true, + }, + tickLabelsVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + labelsOrientation: { + x: 0, + yLeft: 0, + yRight: 0, + }, + gridlinesVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + preferredSeriesType: 'line', + valuesInLegend: false, + emphasizeFitting: true, + yTitle: '', + xTitle: '', + hideEndzones: true, + ...custom, +}); diff --git a/x-pack/plugins/infra/public/hooks/use_lens_attributes.test.ts b/x-pack/plugins/infra/public/hooks/use_lens_attributes.test.ts new file mode 100644 index 0000000000000..075d883593b01 --- /dev/null +++ b/x-pack/plugins/infra/public/hooks/use_lens_attributes.test.ts @@ -0,0 +1,229 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import 'jest-canvas-mock'; +import { renderHook } from '@testing-library/react-hooks'; +import { useLensAttributes } from './use_lens_attributes'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import { KibanaReactContextValue, useKibana } from '@kbn/kibana-react-plugin/public'; +import { CoreStart } from '@kbn/core/public'; +import { InfraClientStartDeps } from '../types'; +import { lensPluginMock } from '@kbn/lens-plugin/public/mocks'; +import { FilterStateStore } from '@kbn/es-query'; + +jest.mock('@kbn/kibana-react-plugin/public'); +const useKibanaMock = useKibana as jest.MockedFunction; + +const mockDataView = { + id: 'mock-id', + title: 'mock-title', + timeFieldName: '@timestamp', + isPersisted: () => false, + getName: () => 'mock-data-view', + toSpec: () => ({}), + fields: [], + metaFields: [], +} as unknown as jest.Mocked; + +const lensPluginMockStart = lensPluginMock.createStartContract(); +const mockUseKibana = () => { + useKibanaMock.mockReturnValue({ + services: { + ...coreMock.createStart(), + lens: { ...lensPluginMockStart }, + } as Partial & Partial, + } as unknown as KibanaReactContextValue & Partial>); +}; + +describe('useHostTable hook', () => { + beforeEach(() => { + mockUseKibana(); + }); + + it('should return the basic lens attributes', async () => { + const { result, waitForNextUpdate } = renderHook(() => + useLensAttributes({ + type: 'load', + dataView: mockDataView, + }) + ); + await waitForNextUpdate(); + + const { state, title } = result.current.attributes ?? {}; + const { datasourceStates, filters } = state ?? {}; + + expect(title).toBe('Normalized Load'); + expect(datasourceStates).toEqual({ + formBased: { + layers: { + layer1: { + columnOrder: ['hosts_aggs_breakdown', 'x_date_histogram', 'y_cpu_cores_usage'], + columns: { + hosts_aggs_breakdown: { + dataType: 'string', + isBucketed: true, + label: 'Top 10 values of host.name', + operationType: 'terms', + params: { + exclude: [], + excludeIsRegex: false, + include: [], + includeIsRegex: false, + missingBucket: false, + orderBy: { + fallback: false, + type: 'alphabetical', + }, + orderDirection: 'desc', + otherBucket: false, + parentFormat: { + id: 'terms', + }, + size: 10, + }, + scale: 'ordinal', + sourceField: 'host.name', + }, + x_date_histogram: { + dataType: 'date', + isBucketed: true, + label: '@timestamp', + operationType: 'date_histogram', + params: { + interval: 'auto', + }, + scale: 'interval', + sourceField: '@timestamp', + }, + y_cpu_cores_usage: { + customLabel: false, + dataType: 'number', + filter: undefined, + isBucketed: false, + label: 'average(system.load.1) / max(system.load.cores)', + operationType: 'formula', + params: { + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + formula: 'average(system.load.1) / max(system.load.cores)', + isFormulaBroken: true, + }, + reducedTimeRange: undefined, + references: [], + timeScale: undefined, + }, + }, + indexPatternId: 'mock-id', + }, + referenceLayer: { + columnOrder: ['referenceColumn'], + columns: { + referenceColumn: { + customLabel: true, + dataType: 'number', + isBucketed: false, + isStaticValue: true, + label: 'Reference', + operationType: 'static_value', + params: { + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + value: 1, + }, + references: [], + scale: 'ratio', + }, + }, + incompleteColumns: {}, + linkToLayers: [], + sampling: 1, + }, + }, + }, + }); + expect(filters).toEqual([ + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + index: 'c1ec8212-ecee-494a-80da-f6f33b3393f2', + key: 'system.load.cores', + negate: false, + type: 'exists', + value: 'exists', + }, + query: { exists: { field: 'system.load.cores' } }, + }, + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + index: 'c1ec8212-ecee-494a-80da-f6f33b3393f2', + key: 'system.load.1', + negate: false, + type: 'exists', + value: 'exists', + }, + query: { exists: { field: 'system.load.1' } }, + }, + ]); + }); + + it('should return attributes with injected values', async () => { + const { result, waitForNextUpdate } = renderHook(() => + useLensAttributes({ + type: 'load', + dataView: mockDataView, + }) + ); + await waitForNextUpdate(); + + const injectedData = { + query: { + language: 'kuery', + query: '{term: { host.name: "a"}}', + }, + filters: [ + { + $state: { store: FilterStateStore.APP_STATE }, + meta: { + alias: null, + disabled: false, + index: 'c1ec8212-ecee-494a-80da-f6f33b3393f2', + key: 'system.load.cores', + negate: false, + type: 'range', + value: 'range', + }, + query: { range: { 'system.load.cores': { gte: 0 } } }, + }, + ], + title: 'Injected CPU Cores', + }; + + const injectedAttributes = result.current.injectData(injectedData); + + const { state, title } = injectedAttributes ?? {}; + const { filters, query } = state ?? {}; + + expect(title).toEqual(injectedData.title); + expect(query).toEqual(injectedData.query); + expect(filters).toHaveLength(3); + expect(filters).toContain(injectedData.filters[0]); + }); +}); diff --git a/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts b/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts new file mode 100644 index 0000000000000..c3b005f9ad8ad --- /dev/null +++ b/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 type { DataView } from '@kbn/data-views-plugin/public'; +import { Filter, Query, TimeRange } from '@kbn/es-query'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { ActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import { i18n } from '@kbn/i18n'; +import useAsync from 'react-use/lib/useAsync'; +import { InfraClientSetupDeps, LensAttributes, LensOptions } from '../types'; +import { + buildLensAttributes, + HostLensAttributesTypes, + hostMetricsLensAttributes, +} from '../common/visualizations'; + +interface UseLensAttributesParams { + type: HostLensAttributesTypes; + dataView: DataView | undefined; + options?: LensOptions; +} + +export const useLensAttributes = ({ + type, + dataView, + options = { + breakdownSize: 10, + }, +}: UseLensAttributesParams) => { + const { + services: { lens }, + } = useKibana(); + const { navigateToPrefilledEditor } = lens; + const { value, error } = useAsync(lens.stateHelperApi, [lens]); + const { formula: formulaAPI } = value ?? {}; + + const attributes: LensAttributes | null = useMemo(() => { + if (!dataView || !formulaAPI) { + return null; + } + + const VisualizationClass = hostMetricsLensAttributes[type]; + const visualizationAttributes = buildLensAttributes( + new VisualizationClass(dataView, options, formulaAPI) + ); + + return visualizationAttributes; + }, [dataView, formulaAPI, options, type]); + + const injectData = (data: { + filters: Filter[]; + query: Query; + title?: string; + }): LensAttributes | null => { + if (!attributes) { + return null; + } + + return { + ...attributes, + ...(!!data.title ? { title: data.title } : {}), + state: { + ...attributes.state, + query: data.query, + filters: [...attributes.state.filters, ...data.filters], + }, + }; + }; + + const getExtraActions = (currentAttributes: LensAttributes | null, timeRange: TimeRange) => { + return { + openInLens: { + id: 'openInLens', + + getDisplayName(_context: ActionExecutionContext): string { + return i18n.translate( + 'xpack.infra.hostsViewPage.tabs.metricsCharts.actions.openInLines', + { + defaultMessage: 'Open in Lens', + } + ); + }, + getIconType(_context: ActionExecutionContext): string | undefined { + return 'visArea'; + }, + type: 'actionButton', + async isCompatible(_context: ActionExecutionContext): Promise { + return true; + }, + async execute(_context: ActionExecutionContext): Promise { + if (currentAttributes) { + navigateToPrefilledEditor( + { + id: '', + timeRange, + attributes: currentAttributes, + }, + { + openInNewTab: true, + } + ); + } + }, + order: 100, + }, + }; + }; + + return { attributes, injectData, getExtraActions, error }; +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/experimental_badge.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/experimental_badge.tsx index 13d9583631ef2..f8c92836b8289 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/experimental_badge.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/experimental_badge.tsx @@ -16,10 +16,10 @@ export const ExperimentalBadge = () => ( display: flex; justify-content: center; `} - label={i18n.translate('xpack.infra.hostsPage.experimentalBadgeLabel', { + label={i18n.translate('xpack.infra.hostsViewPage.experimentalBadgeLabel', { defaultMessage: 'Technical preview', })} - tooltipContent={i18n.translate('xpack.infra.hostsPage.experimentalBadgeDescription', { + tooltipContent={i18n.translate('xpack.infra.hostsViewPage.experimentalBadgeDescription', { defaultMessage: 'This functionality is in technical preview and may be changed or removed completely in a future release. Elastic will take a best effort approach to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.', })} diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_container.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_container.tsx index 6b77e87018188..beacf9f032619 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_container.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_container.tsx @@ -5,7 +5,7 @@ * 2.0. */ import React from 'react'; -import { EuiSpacer } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { InfraLoadingPanel } from '../../../../components/loading'; @@ -13,7 +13,8 @@ import { useMetricsDataViewContext } from '../hooks/use_data_view'; import { UnifiedSearchBar } from './unified_search_bar'; import { HostsTable } from './hosts_table'; import { HostsViewProvider } from '../hooks/use_hosts_view'; -import { MetricsTrend } from './metrics_trend/metrics_trend'; +import { KPICharts } from './kpi_charts/kpi_charts'; +import { Tabs } from './tabs/tabs'; export const HostContainer = () => { const { metricsDataView, isDataViewLoading, hasFailedLoadingDataView } = @@ -36,9 +37,17 @@ export const HostContainer = () => { - - - + + + + + + + + + + + ); diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx index e27f93bf76fa2..65e4b8f3d1c25 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx @@ -87,7 +87,7 @@ export const HostsTable = () => { if (loading) { return ( {os}, }, { - name: i18n.translate('xpack.infra.hostsTable.numberOfCpusColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.numberOfCpusColumnHeader', { defaultMessage: '# of CPUs', }), field: 'cpuCores', @@ -91,7 +91,7 @@ export const buildHostsTableColumns = ({ align: 'right', }, { - name: i18n.translate('xpack.infra.hostsTable.diskLatencyColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.diskLatencyColumnHeader', { defaultMessage: 'Disk Latency (avg.)', }), field: 'diskLatency.avg', @@ -100,7 +100,7 @@ export const buildHostsTableColumns = ({ align: 'right', }, { - name: i18n.translate('xpack.infra.hostsTable.averageTxColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.averageTxColumnHeader', { defaultMessage: 'TX (avg.)', }), field: 'tx.avg', @@ -109,7 +109,7 @@ export const buildHostsTableColumns = ({ align: 'right', }, { - name: i18n.translate('xpack.infra.hostsTable.averageRxColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.averageRxColumnHeader', { defaultMessage: 'RX (avg.)', }), field: 'rx.avg', @@ -118,7 +118,7 @@ export const buildHostsTableColumns = ({ align: 'right', }, { - name: i18n.translate('xpack.infra.hostsTable.averageMemoryTotalColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.averageMemoryTotalColumnHeader', { defaultMessage: 'Memory total (avg.)', }), field: 'memoryTotal.avg', @@ -127,7 +127,7 @@ export const buildHostsTableColumns = ({ align: 'right', }, { - name: i18n.translate('xpack.infra.hostsTable.averageMemoryUsageColumnHeader', { + name: i18n.translate('xpack.infra.hostsViewPage.table.averageMemoryUsageColumnHeader', { defaultMessage: 'Memory usage (avg.)', }), field: 'memory.avg', diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/hosts_tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/hosts_tile.tsx similarity index 88% rename from x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/hosts_tile.tsx rename to x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/hosts_tile.tsx index 8128dee16dc5e..8322f7ba00b75 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/hosts_tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/hosts_tile.tsx @@ -7,13 +7,13 @@ import React from 'react'; import { useHostsViewContext } from '../../hooks/use_hosts_view'; -import { type ChartBaseProps, MetricsChart } from './metrics_chart'; +import { type ChartBaseProps, KPIChart } from './kpi_chart'; export const HostsTile = ({ type, ...props }: ChartBaseProps) => { const { hostViewState } = useHostsViewContext(); return ( - - + - + )} ); }; -const ChartStyled = styled(Chart)` +const KPIChartStyled = styled(Chart)` .echMetric { border-radius: 5px; } diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/metrics_trend.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/kpi_charts.tsx similarity index 67% rename from x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/metrics_trend.tsx rename to x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/kpi_charts.tsx index ffbba8ce059a5..af2cbb18fdcbb 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/metrics_trend.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/kpi_charts.tsx @@ -13,7 +13,7 @@ import { i18n } from '@kbn/i18n'; import { Tile } from './tile'; import { HostsTile } from './hosts_tile'; -export const MetricsTrend = () => { +export const KPICharts = () => { return ( { type="hostsCount" metricType="value" color="#6DCCB1" - title={i18n.translate('xpack.infra.hostsTable.metricTrend.hostCount.title', { + title={i18n.translate('xpack.infra.hostsViewPage.metricTrend.hostCount.title', { defaultMessage: 'Hosts', })} trendA11yTitle={i18n.translate( - 'xpack.infra.hostsTable.metricTrend.hostCount.a11y.title', + 'xpack.infra.hostsViewPage.metricTrend.hostCount.a11y.title', { defaultMessage: 'CPU usage over time.', } )} - toolTip={i18n.translate('xpack.infra.hostsTable.metricTrend.hostCount.tooltip', { + toolTip={i18n.translate('xpack.infra.hostsViewPage.metricTrend.hostCount.tooltip', { defaultMessage: 'The number of hosts returned by your current search criteria.', })} data-test-subj="hostsView-metricsTrend-hosts" @@ -46,22 +46,22 @@ export const MetricsTrend = () => { type="cpu" metricType="avg" color="#F1D86F" - title={i18n.translate('xpack.infra.hostsTable.metricTrend.cpu.title', { + title={i18n.translate('xpack.infra.hostsViewPage.metricTrend.cpu.title', { defaultMessage: 'CPU usage', })} - subtitle={i18n.translate('xpack.infra.hostsTable.metricTrend.cpu.subtitle', { + subtitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.cpu.subtitle', { defaultMessage: 'Average', })} - trendA11yTitle={i18n.translate('xpack.infra.hostsTable.metricTrend.cpu.a11y.title', { + trendA11yTitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.cpu.a11y.title', { defaultMessage: 'CPU usage over time.', })} trendA11yDescription={i18n.translate( - 'xpack.infra.hostsTable.metricTrend.cpu.a11y.description', + 'xpack.infra.hostsViewPage.metricTrend.cpu.a11y.description', { defaultMessage: 'A line chart showing the trend of the primary metric over time.', } )} - toolTip={i18n.translate('xpack.infra.hostsTable.metricTrend.cpu.tooltip', { + toolTip={i18n.translate('xpack.infra.hostsViewPage.metricTrend.cpu.tooltip', { defaultMessage: 'Average of percentage of CPU time spent in states other than Idle and IOWait, normalized by the number of CPU cores. Includes both time spent on user space and kernel space. 100% means all CPUs of the host are busy.', })} @@ -73,22 +73,22 @@ export const MetricsTrend = () => { type="memory" metricType="avg" color="#A987D1" - title={i18n.translate('xpack.infra.hostsTable.metricTrend.memory.title', { + title={i18n.translate('xpack.infra.hostsViewPage.metricTrend.memory.title', { defaultMessage: 'Memory usage', })} - subtitle={i18n.translate('xpack.infra.hostsTable.metricTrend.memory.subtitle', { + subtitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.memory.subtitle', { defaultMessage: 'Average', })} - trendA11yTitle={i18n.translate('xpack.infra.hostsTable.metricTrend.memory.a11yTitle', { + trendA11yTitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.memory.a11yTitle', { defaultMessage: 'Memory usage over time.', })} trendA11yDescription={i18n.translate( - 'xpack.infra.hostsTable.metricTrend.memory.a11yDescription', + 'xpack.infra.hostsViewPage.metricTrend.memory.a11yDescription', { defaultMessage: 'A line chart showing the trend of the primary metric over time.', } )} - toolTip={i18n.translate('xpack.infra.hostsTable.metricTrend.memory.tooltip', { + toolTip={i18n.translate('xpack.infra.hostsViewPage.metricTrend.memory.tooltip', { defaultMessage: "Average of percentage of main memory usage excluding page cache. This includes resident memory for all processes plus memory used by the kernel structures and code apart the page cache. A high level indicates a situation of memory saturation for a host. 100% means the main memory is entirely filled with memory that can't be reclaimed, except by swapping out.", })} @@ -100,22 +100,22 @@ export const MetricsTrend = () => { type="rx" metricType="avg" color="#79AAD9" - title={i18n.translate('xpack.infra.hostsTable.metricTrend.rx.title', { + title={i18n.translate('xpack.infra.hostsViewPage.metricTrend.rx.title', { defaultMessage: 'Network inbound (RX)', })} - subtitle={i18n.translate('xpack.infra.hostsTable.metricTrend.rx.subtitle', { + subtitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.rx.subtitle', { defaultMessage: 'Average', })} - trendA11yTitle={i18n.translate('xpack.infra.hostsTable.metricTrend.rx.a11y.title', { + trendA11yTitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.rx.a11y.title', { defaultMessage: 'Network inbound (RX) over time.', })} trendA11yDescription={i18n.translate( - 'xpack.infra.hostsTable.metricTrend.rx.a11y.description', + 'xpack.infra.hostsViewPage.metricTrend.rx.a11y.description', { defaultMessage: 'A line chart showing the trend of the primary metric over time.', } )} - toolTip={i18n.translate('xpack.infra.hostsTable.metricTrend.rx.tooltip', { + toolTip={i18n.translate('xpack.infra.hostsViewPage.metricTrend.rx.tooltip', { defaultMessage: 'Number of bytes which have been received per second on the public interfaces of the hosts.', })} @@ -127,22 +127,22 @@ export const MetricsTrend = () => { type="tx" metricType="avg" color="#F5A35C" - title={i18n.translate('xpack.infra.hostsTable.metricTrend.tx.title', { - defaultMessage: 'Network outbound (TX) usage', + title={i18n.translate('xpack.infra.hostsViewPage.metricTrend.tx.title', { + defaultMessage: 'Network outbound (TX)', })} - subtitle={i18n.translate('xpack.infra.hostsTable.metricTrend.tx.subtitle', { + subtitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.tx.subtitle', { defaultMessage: 'Average', })} - trendA11yTitle={i18n.translate('xpack.infra.hostsTable.metricTrend.tx.a11.title', { + trendA11yTitle={i18n.translate('xpack.infra.hostsViewPage.metricTrend.tx.a11.title', { defaultMessage: 'Network outbound (TX) usage over time.', })} trendA11yDescription={i18n.translate( - 'xpack.infra.hostsTable.metricTrend.tx.a11y.description', + 'xpack.infra.hostsViewPage.metricTrend.tx.a11y.description', { defaultMessage: 'A line chart showing the trend of the primary metric over time.', } )} - toolTip={i18n.translate('xpack.infra.hostsTable.metricTrend.tx.tooltip', { + toolTip={i18n.translate('xpack.infra.hostsViewPage.metricTrend.tx.tooltip', { defaultMessage: 'Number of bytes which have been sent per second on the public interfaces of the hosts', })} diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx similarity index 82% rename from x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/tile.tsx rename to x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx index de2c632345a2b..ed5d0f5831ca6 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/metrics_trend/tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx @@ -9,7 +9,7 @@ import type { SnapshotMetricType } from '../../../../../../common/inventory_mode import { useSnapshot } from '../../../inventory_view/hooks/use_snaphot'; import { useHostsViewContext } from '../../hooks/use_hosts_view'; -import { type ChartBaseProps, MetricsChart } from './metrics_chart'; +import { type ChartBaseProps, KPIChart } from './kpi_chart'; interface Props extends Omit { type: SnapshotMetricType; @@ -24,7 +24,5 @@ export const Tile = ({ type, ...props }: Props) => { includeTimeseries: true, }); - return ( - - ); + return ; }; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx new file mode 100644 index 0000000000000..e1374d1ae97ba --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { useKibana } from '@kbn/kibana-react-plugin/public'; +import { Action } from '@kbn/ui-actions-plugin/public'; +import { ViewMode } from '@kbn/embeddable-plugin/public'; +import { BrushTriggerEvent } from '@kbn/charts-plugin/public'; +import { EuiIcon, EuiPanel } from '@elastic/eui'; +import { EuiFlexGroup } from '@elastic/eui'; +import { EuiFlexItem } from '@elastic/eui'; +import { EuiText } from '@elastic/eui'; +import { EuiI18n } from '@elastic/eui'; +import { InfraClientSetupDeps } from '../../../../../../types'; +import { useLensAttributes } from '../../../../../../hooks/use_lens_attributes'; +import { useMetricsDataViewContext } from '../../../hooks/use_data_view'; +import { useUnifiedSearchContext } from '../../../hooks/use_unified_search'; +import { HostLensAttributesTypes } from '../../../../../../common/visualizations'; + +export interface MetricChartProps { + title: string; + type: HostLensAttributesTypes; + breakdownSize: number; +} + +const MIN_HEIGHT = 300; + +export const MetricChart = ({ title, type, breakdownSize }: MetricChartProps) => { + const { + unifiedSearchDateRange, + unifiedSearchQuery, + unifiedSearchFilters, + controlPanelFilters, + onSubmit, + } = useUnifiedSearchContext(); + const { metricsDataView } = useMetricsDataViewContext(); + const { + services: { lens }, + } = useKibana(); + + const EmbeddableComponent = lens.EmbeddableComponent; + + const { injectData, getExtraActions, error } = useLensAttributes({ + type, + dataView: metricsDataView, + options: { + breakdownSize, + }, + }); + + const injectedLensAttributes = injectData({ + filters: [...unifiedSearchFilters, ...controlPanelFilters], + query: unifiedSearchQuery, + title, + }); + + const extraActionOptions = getExtraActions(injectedLensAttributes, unifiedSearchDateRange); + const extraAction: Action[] = [extraActionOptions.openInLens]; + + const handleBrushEnd = ({ range }: BrushTriggerEvent['data']) => { + const [min, max] = range; + onSubmit({ + dateRange: { + from: new Date(min).toISOString(), + to: new Date(max).toISOString(), + mode: 'absolute', + }, + }); + }; + + return ( + + {error ? ( + + + + + + + + + + + ) : ( + injectedLensAttributes && ( + + ) + )} + + ); +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx new file mode 100644 index 0000000000000..fe9ef7711bb17 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { EuiFlexGrid, EuiFlexItem, EuiFlexGroup, EuiText, EuiI18n } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { MetricChart, MetricChartProps } from './metric_chart'; + +const DEFAULT_BREAKDOWN_SIZE = 20; +const CHARTS_IN_ORDER: Array & { fullRow?: boolean }> = [ + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.load', { + defaultMessage: 'Normalized Load', + }), + type: 'load', + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.cpu', { + defaultMessage: 'CPU Usage', + }), + type: 'cpu', + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.memory', { + defaultMessage: 'Memory Usage', + }), + type: 'memory', + fullRow: true, + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.rx', { + defaultMessage: 'Network Inbound (RX)', + }), + type: 'rx', + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.tx', { + defaultMessage: 'Network Outbound (TX)', + }), + type: 'tx', + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.diskIORead', { + defaultMessage: 'Disk Read IOPS', + }), + type: 'diskIORead', + }, + { + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.DiskIOWrite', { + defaultMessage: 'Disk Write IOPS', + }), + type: 'diskIOWrite', + }, +]; + +export const MetricsGrid = () => { + return ( + + + + + + {DEFAULT_BREAKDOWN_SIZE}, + attribute: name, + }} + /> + + + + + + + {CHARTS_IN_ORDER.map(({ fullRow, ...chartProp }) => ( + + + + ))} + + + + ); +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/tabs.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/tabs.tsx new file mode 100644 index 0000000000000..dc449327a21de --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/tabs.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 from 'react'; +import { EuiTabbedContent, EuiSpacer, type EuiTabbedContentTab } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { MetricsGrid } from './metrics/metrics_grid'; + +interface WrapperProps { + children: React.ReactElement; +} +const Wrapper = ({ children }: WrapperProps) => { + return ( + <> + + {children} + + ); +}; +export const Tabs = () => { + const tabs: EuiTabbedContentTab[] = [ + { + id: 'metrics', + name: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.title', { + defaultMessage: 'Metrics', + }), + 'data-test-subj': 'hostsView-tabs-metrics', + content: ( + + + + ), + }, + ]; + + return ; +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/unified_search_bar.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/unified_search_bar.tsx index 7bd9d797fb5cb..3f65990f80b50 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/unified_search_bar.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/unified_search_bar.tsx @@ -23,7 +23,7 @@ interface Props { export const UnifiedSearchBar = ({ dataView }: Props) => { const { - services: { unifiedSearch }, + services: { unifiedSearch, application }, } = useKibana(); const { unifiedSearchDateRange, @@ -37,10 +37,6 @@ export const UnifiedSearchBar = ({ dataView }: Props) => { const { SearchBar } = unifiedSearch.ui; - const onFilterChange = (filters: Filter[]) => { - onQueryChange({ filters }); - }; - const onQuerySubmit = (payload: { dateRange: TimeRange; query?: Query }) => { onQueryChange({ payload }); }; @@ -62,14 +58,12 @@ export const UnifiedSearchBar = ({ dataView }: Props) => { const onQueryChange = ({ payload, - filters, panelFilters, }: { payload?: { dateRange: TimeRange; query?: Query }; - filters?: Filter[]; panelFilters?: Filter[]; }) => { - onSubmit({ query: payload?.query, dateRange: payload?.dateRange, filters, panelFilters }); + onSubmit({ query: payload?.query, dateRange: payload?.dateRange, panelFilters }); }; return ( @@ -83,14 +77,12 @@ export const UnifiedSearchBar = ({ dataView }: Props) => { query={unifiedSearchQuery} dateRangeFrom={unifiedSearchDateRange.from} dateRangeTo={unifiedSearchDateRange.to} - filters={unifiedSearchFilters} onQuerySubmit={onQuerySubmit} onSaved={onQuerySave} onSavedQueryUpdated={onQuerySave} onClearSavedQuery={onClearSavedQuery} - showSaveQuery + showSaveQuery={Boolean(application?.capabilities?.visualize?.saveQuery)} showQueryInput - onFiltersUpdated={onFilterChange} displayStyle="inPage" /> { useEffect(() => { if (hasFailedLoadingDataView && notifications) { notifications.toasts.addDanger( - i18n.translate('xpack.infra.hostsTable.errorOnCreateOrLoadDataview', { + i18n.translate('xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview', { defaultMessage: 'There was an error trying to load or create the Data View: {metricAlias}', values: { metricAlias }, diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts index 4f6e2dea59a58..c6753345d1705 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts @@ -6,14 +6,15 @@ */ import { useKibana } from '@kbn/kibana-react-plugin/public'; import createContainer from 'constate'; -import { useCallback } from 'react'; +import { useCallback, useEffect } from 'react'; import { buildEsQuery, Filter, Query, TimeRange } from '@kbn/es-query'; -import { debounce } from 'lodash'; import type { SavedQuery } from '@kbn/data-plugin/public'; +import { debounce } from 'lodash'; +import deepEqual from 'fast-deep-equal'; import type { InfraClientStartDeps } from '../../../../types'; import { useMetricsDataViewContext } from './use_data_view'; import { useSyncKibanaTimeFilterTime } from '../../../../hooks/use_kibana_timefilter_time'; -import { useHostsUrlState, INITIAL_DATE_RANGE } from './use_hosts_url_state'; +import { useHostsUrlState, INITIAL_DATE_RANGE } from './use_unified_search_url_state'; export const useUnifiedSearch = () => { const { state, dispatch, getRangeInTimestamp, getTime } = useHostsUrlState(); @@ -30,6 +31,37 @@ export const useUnifiedSearch = () => { const { filterManager } = queryManager; + useEffect(() => { + const { filters } = state; + if (!deepEqual(filters, filterManager.getFilters())) { + filterManager.setFilters(filters); + } + }, [filterManager, state]); + + // This will listen and react to all changes in filterManager and timefilter values, + // to allow other components in the page to communicate with the unified search + useEffect(() => { + const next = () => { + const globalFilters = filterManager.getFilters(); + debounceOnSubmit({ + filters: globalFilters, + dateRange: getTime(), + }); + }; + + const filterSubscription = filterManager.getUpdates$().subscribe({ + next, + }); + const timeSubscription = queryManager.timefilter.timefilter.getTimeUpdate$().subscribe({ + next, + }); + + return () => { + filterSubscription.unsubscribe(); + timeSubscription.unsubscribe(); + }; + }); + const onSubmit = useCallback( (data?: { query?: Query; @@ -40,22 +72,18 @@ export const useUnifiedSearch = () => { const { query, dateRange, filters, panelFilters } = data ?? {}; const newDateRange = dateRange ?? getTime(); - if (filters) { - filterManager.setFilters(filters); - } - dispatch({ type: 'setQuery', payload: { query, - filters: filters ? filterManager.getFilters() : undefined, + filters, dateRange: newDateRange, dateRangeTimestamp: getRangeInTimestamp(newDateRange), panelFilters, }, }); }, - [getTime, dispatch, filterManager, getRangeInTimestamp] + [getTime, dispatch, getRangeInTimestamp] ); // This won't prevent onSubmit from being fired twice when `clear filters` is clicked, @@ -107,7 +135,7 @@ export const useUnifiedSearch = () => { onSubmit: debounceOnSubmit, saveQuery, unifiedSearchQuery: state.query, - unifiedSearchDateRange: getTime(), + unifiedSearchDateRange: state.dateRange, unifiedSearchFilters: state.filters, }; }; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_url_state.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search_url_state.ts similarity index 98% rename from x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_url_state.ts rename to x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search_url_state.ts index 8f5b8408c2979..e50fa2fa76cc4 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_url_state.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_unified_search_url_state.ts @@ -73,8 +73,9 @@ const reducer = (state: HostsState, action: Action): HostsState => { }; export const useHostsUrlState = () => { + const [getTime] = useKibanaTimefilterTime(INITIAL_DATE_RANGE); const [urlState, setUrlState] = useUrlState({ - defaultState: INITIAL_HOSTS_STATE, + defaultState: { ...INITIAL_HOSTS_STATE, dateRange: getTime() }, decodeUrlState, encodeUrlState, urlStateKey: '_a', @@ -83,8 +84,6 @@ export const useHostsUrlState = () => { const [state, dispatch] = useReducer(reducer, urlState); - const [getTime] = useKibanaTimefilterTime(INITIAL_DATE_RANGE); - const getRangeInTimestamp = useCallback(({ from, to }: TimeRange) => { const fromTS = DateMath.parse(from)?.valueOf() ?? CALCULATED_DATE_RANGE_FROM; const toTS = DateMath.parse(to)?.valueOf() ?? CALCULATED_DATE_RANGE_TO; diff --git a/x-pack/plugins/infra/public/types.ts b/x-pack/plugins/infra/public/types.ts index e7223f513d3dc..a001e2a7e9096 100644 --- a/x-pack/plugins/infra/public/types.ts +++ b/x-pack/plugins/infra/public/types.ts @@ -28,8 +28,9 @@ import type { } from '@kbn/observability-plugin/public'; // import type { OsqueryPluginStart } from '../../osquery/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; -import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; -import { UnwrapPromise } from '../common/utility_types'; +import type { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { type TypedLensByValueInput, LensPublicStart } from '@kbn/lens-plugin/public'; +import type { UnwrapPromise } from '../common/utility_types'; import type { SourceProviderProps, UseNodeMetricsTableOptions, @@ -62,6 +63,7 @@ export interface InfraClientSetupDeps { ml: MlPluginSetup; embeddable: EmbeddableSetup; share: SharePluginSetup; + lens: LensPublicStart; } export interface InfraClientStartDeps { @@ -77,6 +79,7 @@ export interface InfraClientStartDeps { osquery?: unknown; // OsqueryPluginStart; share: SharePluginStart; storage: IStorageWrapper; + lens: LensPublicStart; } export type InfraClientCoreSetup = CoreSetup; @@ -96,3 +99,9 @@ export interface InfraHttpError extends IHttpFetchError { message?: string; }; } + +export type LensAttributes = TypedLensByValueInput['attributes']; + +export interface LensOptions { + breakdownSize: number; +} diff --git a/x-pack/plugins/infra/tsconfig.json b/x-pack/plugins/infra/tsconfig.json index 241127de9d072..d02875ed711c7 100644 --- a/x-pack/plugins/infra/tsconfig.json +++ b/x-pack/plugins/infra/tsconfig.json @@ -1,15 +1,9 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", + "outDir": "target/types" }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "types/**/*" - ], + "include": ["../../../typings/**/*", "common/**/*", "public/**/*", "server/**/*", "types/**/*"], "kbn_references": [ "@kbn/core", "@kbn/data-plugin", @@ -53,10 +47,12 @@ "@kbn/logging-mocks", "@kbn/field-types", "@kbn/es-types", + "@kbn/ui-actions-plugin", + "@kbn/charts-plugin", + "@kbn/lens-plugin", + "@kbn/core-saved-objects-common", "@kbn/core-analytics-server", - "@kbn/analytics-client", + "@kbn/analytics-client" ], - "exclude": [ - "target/**/*", - ] + "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index b876645319d3a..b3e845ed915ef 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -502,6 +502,40 @@ describe('workspace_panel', () => { expect(trigger.exec).toHaveBeenCalledWith({ data: { ...eventData, timeFieldName: undefined } }); }); + it('should execute a multi value click trigger on expression event', async () => { + const framePublicAPI = createMockFramePublicAPI(); + framePublicAPI.datasourceLayers = { + first: mockDatasource.publicAPIMock, + }; + mockDatasource.toExpression.mockReturnValue('datasource'); + mockDatasource.getLayers.mockReturnValue(['first']); + const props = defaultProps; + + const mounted = await mountWithProvider( + 'testVis' }, + }} + ExpressionRenderer={expressionRendererMock} + plugins={{ ...props.plugins, uiActions: uiActionsMock }} + /> + ); + instance = mounted.instance; + + const onEvent = expressionRendererMock.mock.calls[0][0].onEvent!; + + const eventData = { myData: true, table: { rows: [], columns: [] }, column: 0 }; + onEvent({ name: 'multiFilter', data: eventData }); + + expect(uiActionsMock.getTrigger).toHaveBeenCalledWith(VIS_EVENT_TO_TRIGGER.multiFilter); + expect(trigger.exec).toHaveBeenCalledWith({ data: { ...eventData, timeFieldName: undefined } }); + }); + it('should call getTriggerCompatibleActions on hasCompatibleActions call from within renderer', async () => { const framePublicAPI = createMockFramePublicAPI(); framePublicAPI.datasourceLayers = { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx index 165dba174b0ac..8c7c608de89e4 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx @@ -39,6 +39,7 @@ import { FramePublicAPI, isLensBrushEvent, isLensFilterEvent, + isLensMultiFilterEvent, isLensEditEvent, VisualizationMap, DatasourceMap, @@ -398,7 +399,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ }, }); } - if (isLensFilterEvent(event)) { + if (isLensFilterEvent(event) || isLensMultiFilterEvent(event)) { plugins.uiActions.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ data: { ...event.data, @@ -424,7 +425,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ // ui actions not available, not handling event... return false; } - if (!isLensFilterEvent(event)) { + if (!isLensFilterEvent(event) && !isLensMultiFilterEvent(event)) { return false; } return ( diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index 4bc431b2e50da..daa701442a178 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -67,7 +67,12 @@ import type { ThemeServiceStart, } from '@kbn/core/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; -import { BrushTriggerEvent, ClickTriggerEvent, Warnings } from '@kbn/charts-plugin/public'; +import { + BrushTriggerEvent, + ClickTriggerEvent, + Warnings, + MultiClickTriggerEvent, +} from '@kbn/charts-plugin/public'; import { DataViewSpec } from '@kbn/data-views-plugin/common'; import { getExecutionContextEvents, trackUiCounterEvents } from '../lens_ui_telemetry'; import { Document } from '../persistence'; @@ -75,6 +80,7 @@ import { ExpressionWrapper, ExpressionWrapperProps } from './expression_wrapper' import { isLensBrushEvent, isLensFilterEvent, + isLensMultiFilterEvent, isLensEditEvent, isLensTableRowContextMenuClickEvent, LensTableRowContextMenuEvent, @@ -133,7 +139,7 @@ interface LensBaseEmbeddableInput extends EmbeddableInput { noPadding?: boolean; onBrushEnd?: (data: BrushTriggerEvent['data']) => void; onLoad?: (isLoading: boolean, adapters?: Partial) => void; - onFilter?: (data: ClickTriggerEvent['data']) => void; + onFilter?: (data: ClickTriggerEvent['data'] | MultiClickTriggerEvent['data']) => void; onTableRowClick?: (data: LensTableRowContextMenuEvent['data']) => void; } @@ -552,10 +558,9 @@ export class Embeddable if (addedMessageIds.length) { this.additionalUserMessages = newMessageMap; + this.renderBadgeMessages(); } - this.reload(); - return () => { const withMessagesRemoved = { ...this.additionalUserMessages, @@ -712,15 +717,11 @@ export class Embeddable const newActiveData = adapters?.tables?.tables; - if (!fastIsEqual(this.activeData, newActiveData)) { - // we check equality because this.addUserMessage triggers a render, so we get an infinite loop - // if we just execute without checking if the data has changed - this.removeActiveDataWarningMessages(); - const searchWarningMessages = this.getSearchWarningMessages(adapters); - this.removeActiveDataWarningMessages = this.addUserMessages( - searchWarningMessages.filter(isMessageRemovable) - ); - } + this.removeActiveDataWarningMessages(); + const searchWarningMessages = this.getSearchWarningMessages(adapters); + this.removeActiveDataWarningMessages = this.addUserMessages( + searchWarningMessages.filter(isMessageRemovable) + ); this.activeData = newActiveData; }; @@ -880,6 +881,10 @@ export class Embeddable domNode ); + this.renderBadgeMessages(); + } + + private renderBadgeMessages() { const warningsToDisplay = this.getUserMessages('embeddableBadge', { severity: 'warning', }); @@ -897,7 +902,11 @@ export class Embeddable private readonly hasCompatibleActions = async ( event: ExpressionRendererEvent ): Promise => { - if (isLensTableRowContextMenuClickEvent(event) || isLensFilterEvent(event)) { + if ( + isLensTableRowContextMenuClickEvent(event) || + isLensMultiFilterEvent(event) || + isLensFilterEvent(event) + ) { const { getTriggerCompatibleActions } = this.deps; if (!getTriggerCompatibleActions) { return false; @@ -993,7 +1002,7 @@ export class Embeddable this.input.onBrushEnd(event.data); } } - if (isLensFilterEvent(event)) { + if (isLensFilterEvent(event) || isLensMultiFilterEvent(event)) { this.deps.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ data: { ...event.data, diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 4a2987a6c5746..01caf23d9f965 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -24,7 +24,11 @@ import type { RowClickContext, VisualizeFieldContext, } from '@kbn/ui-actions-plugin/public'; -import type { ClickTriggerEvent, BrushTriggerEvent } from '@kbn/charts-plugin/public'; +import type { + ClickTriggerEvent, + BrushTriggerEvent, + MultiClickTriggerEvent, +} from '@kbn/charts-plugin/public'; import type { IndexPatternAggRestrictions } from '@kbn/data-plugin/public'; import type { FieldSpec, DataViewSpec, DataView } from '@kbn/data-views-plugin/common'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -1340,6 +1344,12 @@ export function isLensFilterEvent(event: ExpressionRendererEvent): event is Clic return event.name === 'filter'; } +export function isLensMultiFilterEvent( + event: ExpressionRendererEvent +): event is MultiClickTriggerEvent { + return event.name === 'multiFilter'; +} + export function isLensBrushEvent(event: ExpressionRendererEvent): event is BrushTriggerEvent { return event.name === 'brush'; } diff --git a/x-pack/plugins/lens/public/utils.ts b/x-pack/plugins/lens/public/utils.ts index ad3d6a6178807..5a50e9068d67b 100644 --- a/x-pack/plugins/lens/public/utils.ts +++ b/x-pack/plugins/lens/public/utils.ts @@ -13,7 +13,11 @@ import type { TimefilterContract } from '@kbn/data-plugin/public'; import type { IUiSettingsClient, SavedObjectReference } from '@kbn/core/public'; import type { DataView, DataViewsContract } from '@kbn/data-views-plugin/public'; import type { DatatableUtilitiesService } from '@kbn/data-plugin/common'; -import { BrushTriggerEvent, ClickTriggerEvent } from '@kbn/charts-plugin/public'; +import { + BrushTriggerEvent, + ClickTriggerEvent, + MultiClickTriggerEvent, +} from '@kbn/charts-plugin/public'; import { RequestAdapter } from '@kbn/inspector-plugin/common'; import { ISearchStart } from '@kbn/data-plugin/public'; import type { Document } from './persistence/saved_object_store'; @@ -209,7 +213,7 @@ export function getRemoveOperation( export function inferTimeField( datatableUtilities: DatatableUtilitiesService, - context: BrushTriggerEvent['data'] | ClickTriggerEvent['data'] + context: BrushTriggerEvent['data'] | ClickTriggerEvent['data'] | MultiClickTriggerEvent['data'] ) { const tablesAndColumns = 'table' in context @@ -218,17 +222,19 @@ export function inferTimeField( ? context.data : // if it's a negated filter, never respect bound time field []; - return tablesAndColumns - .map(({ table, column }) => { - const tableColumn = table.columns[column]; - const hasTimeRange = Boolean( - tableColumn && datatableUtilities.getDateHistogramMeta(tableColumn)?.timeRange - ); - if (hasTimeRange) { - return tableColumn.meta.field; - } - }) - .find(Boolean); + return !Array.isArray(tablesAndColumns) + ? [tablesAndColumns] + : tablesAndColumns + .map(({ table, column }) => { + const tableColumn = table.columns[column]; + const hasTimeRange = Boolean( + tableColumn && datatableUtilities.getDateHistogramMeta(tableColumn)?.timeRange + ); + if (hasTimeRange) { + return tableColumn.meta.field; + } + }) + .find(Boolean); } export function renewIDs( 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 aa4f634b700af..b1abbca792cea 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 @@ -7,7 +7,7 @@ import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/server'; import type { SerializableRecord } from '@kbn/utility-types'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObject } from '@kbn/core-saved-objects-server'; import { mergeMigrationFunctionMaps, MigrateFunctionsObject, diff --git a/x-pack/plugins/lens/tsconfig.json b/x-pack/plugins/lens/tsconfig.json index d09cd3fd47eb4..86430fa103252 100644 --- a/x-pack/plugins/lens/tsconfig.json +++ b/x-pack/plugins/lens/tsconfig.json @@ -62,6 +62,7 @@ "@kbn/language-documentation-popover", "@kbn/core-saved-objects-common", "@kbn/core-ui-settings-browser", + "@kbn/core-saved-objects-server", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/job_creator.ts index 36366b31a8ea2..9eb65730d6644 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/job_creator.ts @@ -300,7 +300,11 @@ export class JobCreator { public set useDedicatedIndex(enable: boolean) { this._useDedicatedIndex = enable; if (enable) { - this._job_config.results_index_name = this._job_config.job_id; + if (this._job_config.results_index_name === undefined) { + // only set the results_index_name if it hasn't been set before. + // this allows it to be overwritten in the advanced JSON editor. + this._job_config.results_index_name = this._job_config.job_id; + } } else { // @ts-expect-error The operand of a 'delete' operator must be optional delete this._job_config.results_index_name; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/job_details_step/components/additional_section/additional_section.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/job_details_step/components/additional_section/additional_section.tsx index f3101fa0af4cd..c3473c0a7071b 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/job_details_step/components/additional_section/additional_section.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/job_details_step/components/additional_section/additional_section.tsx @@ -43,6 +43,8 @@ export const AdditionalSection: FC = ({ additionalExpanded, setAdditional + + diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/detector_list.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/detector_list.tsx index 56b8a9f5e8245..8e4afdb01376e 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/detector_list.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/detector_list.tsx @@ -111,8 +111,6 @@ export const DetectorList: FC = ({ isActive, onEditJob, onDeleteJob }) => - - {detectors.map((d, i) => ( @@ -143,6 +141,9 @@ export const DetectorList: FC = ({ isActive, onEditJob, onDeleteJob }) => ))} + + + ); @@ -168,7 +169,6 @@ const NoDetectorsWarning: FC<{ show: boolean }> = ({ show }) => { defaultMessage="At least one detector is needed to create a job." /> - ); }; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/multi_metric_view/settings.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/multi_metric_view/settings.tsx index b82e5dd252a54..5718c248d9d13 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/multi_metric_view/settings.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/multi_metric_view/settings.tsx @@ -6,7 +6,7 @@ */ import React, { Fragment, FC } from 'react'; -import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { BucketSpan } from '../bucket_span'; import { SplitFieldSelector } from '../split_field'; @@ -28,6 +28,9 @@ export const MultiMetricSettings: FC = ({ setIsValid }) => { + + + diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/utils/use_field_stats_trigger.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/utils/use_field_stats_trigger.tsx index 8de51e3c95a40..f13de61bef48d 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/utils/use_field_stats_trigger.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/utils/use_field_stats_trigger.tsx @@ -7,6 +7,7 @@ import React, { ReactNode, useCallback } from 'react'; import { EuiComboBoxOptionOption } from '@elastic/eui'; +import { css } from '@emotion/react'; import { useFieldStatsFlyoutContext } from '../../../components/field_stats_flyout'; import { FieldStatsInfoButton } from '../common/components/field_stats_info_button'; import { Field } from '../../../../../common/types/fields'; @@ -14,17 +15,17 @@ import { Field } from '../../../../../common/types/fields'; interface Option extends EuiComboBoxOptionOption { field: Field; } -const optionCss = ` - .euiComboBoxOption__enterBadge { - display: none; - } - .euiFlexGroup { - gap: 0px; - } - .euiComboBoxOption__content{ - margin-left: 2px; - } - `; +const optionCss = css` + .euiComboBoxOption__enterBadge { + display: none; + } + .euiFlexGroup { + gap: 0px; + } + .euiComboBoxOption__content { + margin-left: 2px; + } +`; export const useFieldStatsTrigger = () => { const { setIsFlyoutVisible, setFieldName } = useFieldStatsFlyoutContext(); diff --git a/x-pack/plugins/monitoring/dev_docs/reference/metricbeat.yarn.yml b/x-pack/plugins/monitoring/dev_docs/reference/metricbeat.yarn.yml index cd9ec584b42dc..abccff300a0b3 100644 --- a/x-pack/plugins/monitoring/dev_docs/reference/metricbeat.yarn.yml +++ b/x-pack/plugins/monitoring/dev_docs/reference/metricbeat.yarn.yml @@ -38,4 +38,4 @@ metricbeat.modules: output.elasticsearch: hosts: [ "host.docker.internal:9200" ] username: "elastic" - password: "changeme" + password: "changeme" \ No newline at end of file diff --git a/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts b/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts index 06e2351c16950..1e24fbb120f53 100644 --- a/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts +++ b/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts @@ -6,6 +6,7 @@ */ import { journey, step, before, after } from '@elastic/synthetics'; +import moment from 'moment'; import { recordVideo } from '../record_video'; import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; @@ -28,8 +29,8 @@ journey('Exploratory view', async ({ page, params }) => { { dataType: 'synthetics', time: { - from: 'now-10y', - to: 'now', + from: moment().subtract(10, 'y').toISOString(), + to: moment().toISOString(), }, name: 'synthetics-series-1', breakdown: 'monitor.type', diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/lens_embeddable.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/lens_embeddable.tsx index e9311b03da7c9..833085e314a9d 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/lens_embeddable.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/lens_embeddable.tsx @@ -22,6 +22,9 @@ interface Props { lensAttributes: TypedLensByValueInput['attributes']; setChartTimeRangeContext: Dispatch>; } +const EXECUTION_CONTEXT = { + type: 'observability_exploratory_view', +}; export function LensEmbeddable(props: Props) { const { lensAttributes, setChartTimeRangeContext } = props; @@ -92,9 +95,7 @@ export function LensEmbeddable(props: Props) { attributes={lensAttributes} onLoad={onLensLoad} onBrushEnd={onBrushEnd} - executionContext={{ - type: 'observability_exploratory_view', - }} + executionContext={EXECUTION_CONTEXT} /> {isSaveOpen && lensAttributes && ( { @@ -106,7 +108,7 @@ export const useEsSearch = , + data: rawResponse as ESSearchResponse, loading: Boolean(loading), }; }; diff --git a/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts b/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts index 9d68ad174f127..3a097cc0a8381 100644 --- a/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts +++ b/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts @@ -7,7 +7,7 @@ import { cloneDeep } from 'lodash'; import { v1 as uuidv1 } from 'uuid'; -import { SavedObject } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import { sloSchema, CreateSLOParams } from '@kbn/slo-schema'; import { SO_SLO_TYPE } from '../../../saved_objects'; diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index 0460c75bf1011..04217f4087e17 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -63,7 +63,6 @@ "@kbn/logging", "@kbn/core-saved-objects-api-server", "@kbn/core-saved-objects-utils-server", - "@kbn/core-saved-objects-common", "@kbn/share-plugin", "@kbn/core-notifications-browser", "@kbn/slo-schema", diff --git a/x-pack/plugins/security/server/saved_objects/saved_objects_security_extension.ts b/x-pack/plugins/security/server/saved_objects/saved_objects_security_extension.ts index 6a85951231a59..e464fbe8e4478 100644 --- a/x-pack/plugins/security/server/saved_objects/saved_objects_security_extension.ts +++ b/x-pack/plugins/security/server/saved_objects/saved_objects_security_extension.ts @@ -6,7 +6,6 @@ */ import type { SavedObjectsClient } from '@kbn/core-saved-objects-api-server-internal'; -import type { SavedObject } from '@kbn/core-saved-objects-common'; import type { AddAuditEventParams, AuthorizationTypeEntry, @@ -17,6 +16,7 @@ import type { ISavedObjectsSecurityExtension, PerformAuthorizationParams, RedactNamespacesParams, + SavedObject, } from '@kbn/core-saved-objects-server'; import { ALL_SPACES_ID, UNKNOWN_SPACE } from '../../common/constants'; diff --git a/x-pack/plugins/security/tsconfig.json b/x-pack/plugins/security/tsconfig.json index 46043f33e56ec..ac00fedba9ebe 100644 --- a/x-pack/plugins/security/tsconfig.json +++ b/x-pack/plugins/security/tsconfig.json @@ -45,7 +45,6 @@ "@kbn/es-errors", "@kbn/logging", "@kbn/core-saved-objects-api-server-internal", - "@kbn/core-saved-objects-common", "@kbn/core-saved-objects-api-server-mocks", "@kbn/logging-mocks", "@kbn/web-worker-stub", diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/plugins/security_solution/common/endpoint/constants.ts index 41ebf5b609616..189add89b7476 100644 --- a/x-pack/plugins/security_solution/common/endpoint/constants.ts +++ b/x-pack/plugins/security_solution/common/endpoint/constants.ts @@ -78,8 +78,10 @@ export const GET_FILE_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/get_file`; export const ENDPOINT_ACTION_LOG_ROUTE = `${BASE_ENDPOINT_ROUTE}/action_log/{agent_id}`; export const ACTION_STATUS_ROUTE = `${BASE_ENDPOINT_ROUTE}/action_status`; export const ACTION_DETAILS_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/{action_id}`; -export const ACTION_AGENT_FILE_INFO_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/{action_id}/{agent_id}/file`; -export const ACTION_AGENT_FILE_DOWNLOAD_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/{action_id}/{agent_id}/file/download`; +export const ACTION_AGENT_FILE_INFO_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/{action_id}/file/{file_id}`; +export const ACTION_AGENT_FILE_DOWNLOAD_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/{action_id}/file/{file_id}/download`; + +// FIXME:PT `const` below seem like a duplicate. Delete it export const ENDPOINTS_ACTION_LIST_ROUTE = `${BASE_ENDPOINT_ROUTE}/action`; export const failedFleetActionErrorCode = '424'; 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 310fbcbea326b..acd21d56ec6d7 100644 --- a/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts +++ b/x-pack/plugins/security_solution/common/endpoint/schema/actions.ts @@ -132,7 +132,7 @@ export type ResponseActionGetFileRequestBody = TypeOf + >; + file: Pick< + Required, + 'name' | 'size' | 'Status' | 'ChunkSize' | 'mime_type' | 'extension' + > & + Omit & { + compression: FileCompression; + attributes: string[]; + type: string; + }; + host: { + hostname: string; + }; + transithash: { + sha256: string; + }; +} + export type UploadedFileInfo = Pick< FileJSON, 'name' | 'id' | 'mimeType' | 'size' | 'status' | 'created' ->; +> & { + actionId: string; + agentId: string; +}; export interface ActionFileInfoApiResponse { data: UploadedFileInfo; diff --git a/x-pack/plugins/security_solution/cypress/e2e/hosts/host_risk_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/hosts/host_risk_tab.cy.ts index bc8ccf8bcbe61..a5ff55899e669 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/hosts/host_risk_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/hosts/host_risk_tab.cy.ts @@ -10,7 +10,7 @@ import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver'; import { navigateToHostRiskDetailTab, openRiskTableFilterAndSelectTheCriticalOption, - removeCritialFilter, + removeCriticalFilter, selectFiveItemsPerPageOption, } from '../../tasks/host_risk'; import { @@ -51,7 +51,7 @@ describe('risk tab', () => { cy.get(HOST_BY_RISK_TABLE_CELL).eq(3).should('not.have.text', 'siem-kibana'); - removeCritialFilter(); + removeCriticalFilter(); }); it('should be able to change items count per page', () => { diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts index b76add918beaf..38d26708cad0f 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts @@ -7,4 +7,4 @@ export const ALL_HOSTS_TABLE = '[data-test-subj="table-allHosts-loading-false"]'; -export const HOSTS_NAMES = '[data-test-subj="render-content-host.name"] a.euiLink'; +export const HOSTS_NAMES = '[data-test-subj="cellActions-renderContent-host.name"] a.euiLink'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/host_risk.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/host_risk.ts index c9a1e0691f4fe..7de7c6ccd9a37 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/host_risk.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/host_risk.ts @@ -27,4 +27,5 @@ export const HOST_BY_RISK_TABLE_PERPAGE_OPTIONS = export const HOST_BY_RISK_TABLE_NEXT_PAGE_BUTTON = '[data-test-subj="numberedPagination"] [data-test-subj="pagination-button-next"]'; -export const HOST_BY_RISK_TABLE_HOSTNAME_CELL = '[data-test-subj="render-content-host.name"]'; +export const HOST_BY_RISK_TABLE_HOSTNAME_CELL = + '[data-test-subj="cellActions-renderContent-host.name"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts index f2a712f868850..d06b435fd772c 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts @@ -5,6 +5,6 @@ * 2.0. */ -export const PROCESS_NAME_FIELD = '[data-test-subj="render-content-process.name"]'; +export const PROCESS_NAME_FIELD = '[data-test-subj="cellActions-renderContent-process.name"]'; export const UNCOMMON_PROCESSES_TABLE = '[data-test-subj="table-uncommonProcesses-loading-false"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/network/flows.ts b/x-pack/plugins/security_solution/cypress/screens/network/flows.ts index a906a985b183d..d20e1d69199af 100644 --- a/x-pack/plugins/security_solution/cypress/screens/network/flows.ts +++ b/x-pack/plugins/security_solution/cypress/screens/network/flows.ts @@ -9,19 +9,19 @@ export const IPS_TABLE_LOADED = '[data-test-subj="table-topNFlowSource-loading-f export const EXPAND_OVERFLOW_ITEMS = '[data-test-subj="overflow-button"]'; -export const FILTER_IN = '[data-test-subj="hover-actions-filter-for"]'; +export const FILTER_IN = '[data-test-subj="actionItem-security_filterIn"]'; -export const FILTER_OUT = '[data-test-subj="hover-actions-filter-out"]'; +export const FILTER_OUT = '[data-test-subj="actionItem-security_filterOut"]'; -export const ADD_TO_TIMELINE = '[data-test-subj="add-to-timeline"]'; +export const ADD_TO_TIMELINE = '[data-test-subj="actionItem-security_addToTimeline"]'; -export const SHOW_TOP_FIELD = '[data-test-subj="show-top-field"]'; +export const SHOW_TOP_FIELD = '[data-test-subj="actionItem-security_showTopN"]'; -export const COPY = '[data-test-subj="clipboard"]'; +export const COPY = '[data-test-subj="actionItem-security_copyToClipboard"]'; export const TOP_N_CONTAINER = '[data-test-subj="topN-container"]'; -export const DESTINATION_DOMAIN = `[data-test-subj="more-container"] [data-test-subj="render-content-destination.domain"]`; +export const DESTINATION_DOMAIN = `[data-test-subj="more-container"] [data-test-subj="cellActions-renderContent-destination.domain"]`; export const OVERFLOW_ITEM = - '[data-test-subj="more-container"] [data-test-subj="render-content-destination.domain"]'; + '[data-test-subj="more-container"] [data-test-subj="cellActions-renderContent-destination.domain"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/host_risk.ts b/x-pack/plugins/security_solution/cypress/tasks/host_risk.ts index c1817cbea8548..200578a73363a 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/host_risk.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/host_risk.ts @@ -30,7 +30,7 @@ export const openRiskTableFilterAndSelectTheLowOption = () => { cy.get(HOST_BY_RISK_TABLE_FILTER_LOW).click(); }; -export const removeCritialFilter = () => { +export const removeCriticalFilter = () => { cy.get(HOST_BY_RISK_TABLE_FILTER_CRITICAL).click(); }; diff --git a/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.test.ts b/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.test.ts index 938e80f0c64e1..32aeb870521d4 100644 --- a/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.test.ts +++ b/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.test.ts @@ -12,7 +12,7 @@ import { Subject } from 'rxjs'; import { TimelineId } from '../../../../common/types'; import { addProvider } from '../../../timelines/store/timeline/actions'; import { createAddToTimelineAction } from './add_to_timeline'; -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { GEO_FIELD_TYPE } from '../../../timelines/components/timeline/body/renderers/constants'; jest.mock('../../../common/lib/kibana'); diff --git a/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.tsx b/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.tsx index 2ba8db918ffe5..f0710983da2da 100644 --- a/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.tsx +++ b/x-pack/plugins/security_solution/public/actions/add_to_timeline/default/add_to_timeline.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { addProvider } from '../../../timelines/store/timeline/actions'; import { TimelineId } from '../../../../common/types'; @@ -58,8 +58,13 @@ export const createAddToTimelineAction = ({ if (dataProviders.length > 0) { store.dispatch(addProvider({ id: TimelineId.active, providers: dataProviders })); + let messageValue = ''; + if (field.value != null) { + messageValue = Array.isArray(field.value) ? field.value.join(', ') : field.value; + } + notificationsService.toasts.addSuccess({ - title: ADD_TO_TIMELINE_SUCCESS_TITLE(field.value), + title: ADD_TO_TIMELINE_SUCCESS_TITLE(messageValue), }); } else { notificationsService.toasts.addWarning({ diff --git a/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.test.ts b/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.test.ts index 54366a371d105..6c17b4019f98b 100644 --- a/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.test.ts +++ b/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.test.ts @@ -7,7 +7,7 @@ import { KibanaServices } from '../../../common/lib/kibana'; import { createCopyToClipboardAction } from './copy_to_clipboard'; -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; jest.mock('../../../common/lib/kibana'); const mockSuccessToast = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.tsx b/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.tsx index ae65be87219a6..0cc7a34efb39c 100644 --- a/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.tsx +++ b/x-pack/plugins/security_solution/public/actions/copy_to_clipboard/default/copy_to_clipboard.tsx @@ -5,9 +5,9 @@ * 2.0. */ -import { createAction } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import copy from 'copy-to-clipboard'; -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public/cell_actions/components/cell_actions'; +import { createAction } from '@kbn/ui-actions-plugin/public'; import { COPY_TO_CLIPBOARD, COPY_TO_CLIPBOARD_ICON, COPY_TO_CLIPBOARD_SUCCESS } from '../constants'; import { KibanaServices } from '../../../common/lib/kibana'; @@ -24,7 +24,15 @@ export const createCopyToClipboardAction = ({ order }: { order?: number }) => isCompatible: async (context) => context.field.name != null && context.field.value != null, execute: async ({ field }) => { const { notifications } = KibanaServices.get(); - const text = `${field.name}: "${field.value}"`; + + let textValue: undefined | string; + if (field.value != null) { + textValue = Array.isArray(field.value) + ? field.value.map((value) => `"${value}"`).join(', ') + : `"${field.value}"`; + } + const text = textValue ? `${field.name}: ${textValue}` : field.name; + const isSuccess = copy(text, { debug: true }); if (isSuccess) { diff --git a/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.test.ts b/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.test.ts index 72307650a8faf..c4d1906279faf 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.test.ts +++ b/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { KibanaServices } from '../../../common/lib/kibana'; import { createFilterInAction } from './filter_in'; diff --git a/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.tsx b/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.tsx index 2917fa5cd747e..7beea5154bd9d 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.tsx +++ b/x-pack/plugins/security_solution/public/actions/filter/default/filter_in.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { i18n } from '@kbn/i18n'; import { createFilter } from '../helpers'; @@ -30,7 +30,7 @@ export const createFilterInAction = ({ order }: { order?: number }) => const services = KibanaServices.get(); const filterManager = services.data.query.filterManager; - const makeFilter = (currentVal: string | null | undefined) => + const makeFilter = (currentVal: string | string[] | null | undefined) => currentVal?.length === 0 ? createFilter(field.name, undefined) : createFilter(field.name, currentVal); diff --git a/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.test.ts b/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.test.ts index 690f5f9c67709..521ebea58254f 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.test.ts +++ b/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { KibanaServices } from '../../../common/lib/kibana'; import { createFilterOutAction } from './filter_out'; diff --git a/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.tsx b/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.tsx index af8742db8871d..0b2560e53563f 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.tsx +++ b/x-pack/plugins/security_solution/public/actions/filter/default/filter_out.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { i18n } from '@kbn/i18n'; import { createFilter } from '../helpers'; @@ -31,7 +31,7 @@ export const createFilterOutAction = ({ order }: { order?: number }) => const services = KibanaServices.get(); const filterManager = services.data.query.filterManager; - const makeFilter = (currentVal: string | null | undefined) => + const makeFilter = (currentVal: string | string[] | null | undefined) => currentVal == null || currentVal?.length === 0 ? createFilter(field.name, null, false) : createFilter(field.name, currentVal, true); diff --git a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.test.ts b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.test.ts index 6997e7df0e16f..20964ab5328b6 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.test.ts +++ b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createFilterManagerMock } from '@kbn/data-plugin/public/query/filter_manager/filter_manager.mock'; import { TimelineId } from '../../../../common/types'; import { diff --git a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.tsx b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.tsx index 1335c1012d074..d22fc7d312605 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.tsx +++ b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_in.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { i18n } from '@kbn/i18n'; import { createFilter } from '../helpers'; @@ -44,7 +44,7 @@ export const createFilterInAction = ({ isCompatible: async ({ field }) => isInSecurityApp(currentAppId) && field.name != null && field.value != null, execute: async ({ field }) => { - const makeFilter = (currentVal: string | null | undefined) => + const makeFilter = (currentVal?: string[] | string | null) => currentVal?.length === 0 ? createFilter(field.name, undefined) : createFilter(field.name, currentVal); diff --git a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.test.ts b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.test.ts index 1d331080814e9..e13d68c68cf68 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.test.ts +++ b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createFilterManagerMock } from '@kbn/data-plugin/public/query/filter_manager/filter_manager.mock'; import { TimelineId } from '../../../../common/types'; import { diff --git a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.tsx b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.tsx index c0c79d371fb83..2efc3d8614203 100644 --- a/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.tsx +++ b/x-pack/plugins/security_solution/public/actions/filter/timeline/filter_out.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { i18n } from '@kbn/i18n'; import { createFilter } from '../helpers'; @@ -43,8 +43,8 @@ export const createFilterOutAction = ({ getDisplayNameTooltip: () => FILTER_OUT, isCompatible: async ({ field }) => isInSecurityApp(currentAppId) && field.name != null && field.value != null, - execute: async ({ field, metadata }) => { - const makeFilter = (currentVal: string | null | undefined) => + execute: async ({ field }) => { + const makeFilter = (currentVal?: string[] | string | null) => currentVal == null || currentVal?.length === 0 ? createFilter(field.name, null, false) : createFilter(field.name, currentVal, true); diff --git a/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.test.tsx b/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.test.tsx index 956849ff73929..29430cfa2371a 100644 --- a/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.test.tsx +++ b/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { Subject } from 'rxjs'; import { APP_UI_ID } from '../../../../common/constants'; import { @@ -52,6 +52,7 @@ describe('createShowTopNAction', () => { }); const context = { field: { name: 'user.name', value: 'the-value', type: 'keyword' }, + trigger: { id: 'trigger' }, extraContentNodeRef: { current: element, }, diff --git a/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.tsx b/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.tsx index 6bcba150ff22d..ae612dd6d6ae2 100644 --- a/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.tsx +++ b/x-pack/plugins/security_solution/public/actions/show_top_n/default/show_top_n.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { i18n } from '@kbn/i18n'; import ReactDOM, { unmountComponentAtNode } from 'react-dom'; @@ -69,10 +69,12 @@ export const createShowTopNAction = ({ field.value != null && !UNSUPPORTED_FIELD_TYPES.includes(field.type), execute: async (context) => { + const node = context.extraContentNodeRef?.current; + + if (!node) return; + const onClose = () => { - if (context.extraContentNodeRef.current !== null) { - unmountComponentAtNode(context.extraContentNodeRef.current); - } + unmountComponentAtNode(node); }; const element = ( @@ -92,7 +94,7 @@ export const createShowTopNAction = ({ ); - ReactDOM.render(element, context.extraContentNodeRef.current); + ReactDOM.render(element, node); }, }); }; diff --git a/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.test.tsx b/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.test.tsx index 68af0eff06c0a..01514308fbc63 100644 --- a/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.test.tsx +++ b/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.test.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { mockCasesContext } from '@kbn/cases-plugin/public/mocks/mock_cases_context'; import { TestProviders } from '../../common/mock'; import { TopNAction } from './show_top_n_component'; -import type { CellActionExecutionContext } from '@kbn/ui-actions-plugin/public'; +import type { CellActionExecutionContext } from '@kbn/cell-actions'; import type { CasesUiStart } from '@kbn/cases-plugin/public'; jest.mock('react-router-dom', () => { @@ -30,6 +30,7 @@ document.body.appendChild(element); const context = { field: { name: 'user.name', value: 'the-value', type: 'keyword' }, + trigger: { id: 'trigger' }, nodeRef: { current: element, }, diff --git a/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.tsx b/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.tsx index 1a244afc6bb63..47c9a2615930e 100644 --- a/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.tsx +++ b/x-pack/plugins/security_solution/public/actions/show_top_n/show_top_n_component.tsx @@ -30,7 +30,7 @@ export const TopNAction = ({ const userCasesPermissions = useGetUserCasesPermissions(); const CasesContext = casesService.ui.getCasesContext(); - if (!context.nodeRef.current) return null; + if (!context.nodeRef?.current) return null; return ( diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/plugins/security_solution/public/app/app.tsx index b20b8ace7de17..a986d21d2f356 100644 --- a/x-pack/plugins/security_solution/public/app/app.tsx +++ b/x-pack/plugins/security_solution/public/app/app.tsx @@ -16,6 +16,7 @@ import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import type { AppLeaveHandler, AppMountParameters } from '@kbn/core/public'; import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { CellActionsProvider } from '@kbn/cell-actions'; import { ManageUserInfo } from '../detections/components/user_info'; import { DEFAULT_DARK_MODE, APP_NAME } from '../../common/constants'; import { ErrorToastDispatcher } from '../common/components/error_toast_dispatcher'; @@ -49,6 +50,7 @@ const StartAppComponent: FC = ({ const { i18n, application: { capabilities }, + uiActions, } = useKibana().services; const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); return ( @@ -62,13 +64,17 @@ const StartAppComponent: FC = ({ - - {children} - + + {children} + + diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx index 949ab19e4ef1d..1358739742b6e 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx @@ -17,6 +17,7 @@ import { PartitionLayout, defaultPartitionValueFormatter, } from '@elastic/charts'; +import type { FlattenSimpleInterpolation } from 'styled-components'; import styled from 'styled-components'; import { useTheme } from './common'; import { DraggableLegend } from './draggable_legend'; @@ -56,14 +57,21 @@ export interface DonutChartProps { export interface DonutChartWrapperProps { children?: React.ReactElement; dataExists: boolean; + donutTextWrapperClassName?: string; + donutTextWrapperStyles?: FlattenSimpleInterpolation; + isChartEmbeddablesEnabled?: boolean; label?: React.ReactElement | string; title: React.ReactElement | string | number | null; - isChartEmbeddablesEnabled?: boolean; } /* Make this position absolute in order to overlap the text onto the donut */ export const DonutTextWrapper = styled(EuiFlexGroup)< - EuiFlexGroupProps & { $isChartEmbeddablesEnabled?: boolean; $dataExists?: boolean } + EuiFlexGroupProps & { + $isChartEmbeddablesEnabled?: boolean; + $dataExists?: boolean; + className?: string; + donutTextWrapperStyles?: FlattenSimpleInterpolation; + } >` top: ${({ $isChartEmbeddablesEnabled, $dataExists }) => $isChartEmbeddablesEnabled && !$dataExists ? `66%` : `34%;`}; @@ -71,6 +79,9 @@ export const DonutTextWrapper = styled(EuiFlexGroup)< max-width: 77px; position: absolute; z-index: 1; + + ${({ className, donutTextWrapperStyles }) => + className && donutTextWrapperStyles ? `&.${className} {${donutTextWrapperStyles}}` : ''} `; export const StyledEuiFlexItem = styled(EuiFlexItem)` @@ -81,6 +92,8 @@ export const StyledEuiFlexItem = styled(EuiFlexItem)` const DonutChartWrapperComponent: React.FC = ({ children, dataExists, + donutTextWrapperClassName, + donutTextWrapperStyles, isChartEmbeddablesEnabled, label, title, @@ -106,7 +119,9 @@ const DonutChartWrapperComponent: React.FC = ({ $dataExists={dataExists} $isChartEmbeddablesEnabled={isChartEmbeddablesEnabled} alignItems="center" + className={donutTextWrapperClassName} direction="column" + donutTextWrapperStyles={donutTextWrapperStyles} gutterSize="none" justifyContent="center" > diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx b/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx index 6737fdf2c525c..c06390b4f9a16 100644 --- a/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx @@ -50,6 +50,7 @@ jest.mock('../../lib/kibana', () => { jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useHistory: () => mockHistory, + useLocation: jest.fn().mockReturnValue({ pathname: '/test' }), })); const FakeStatefulEventsViewer = ({ additionalFilters }: { additionalFilters: JSX.Element }) => ( diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/index.tsx b/x-pack/plugins/security_solution/public/common/components/header_page/index.tsx index 4b79d36dfef80..7872476d19b20 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_page/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_page/index.tsx @@ -14,7 +14,7 @@ import { LinkIcon } from '../link_icon'; import type { SubtitleProps } from '../subtitle'; import { Subtitle } from '../subtitle'; import { Title } from './title'; -import type { DraggableArguments, BadgeOptions, TitleProp } from './types'; +import type { BadgeOptions, TitleProp } from './types'; import { useFormatUrl } from '../link_to'; import type { SecurityPageName } from '../../../app/types'; import { useKibana } from '../../lib/kibana'; @@ -64,7 +64,6 @@ export interface HeaderPageProps extends HeaderProps { backComponent?: React.ReactNode; badgeOptions?: BadgeOptions; children?: React.ReactNode; - draggableArguments?: DraggableArguments; rightSideItems?: React.ReactNode[]; subtitle?: SubtitleProps['items']; subtitle2?: SubtitleProps['items']; @@ -103,7 +102,6 @@ const HeaderPageComponent: React.FC = ({ badgeOptions, border, children, - draggableArguments, isLoading, rightSideItems, subtitle, @@ -117,13 +115,7 @@ const HeaderPageComponent: React.FC = ({ {backOptions && } {!backOptions && backComponent && <>{backComponent}} - {titleNode || ( - - )} + {titleNode || <Title title={title} badgeOptions={badgeOptions} />} {subtitle && <Subtitle data-test-subj="header-page-subtitle" items={subtitle} />} {subtitle2 && <Subtitle data-test-subj="header-page-subtitle-2" items={subtitle2} />} diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx b/x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx index d21adbd00cc20..d2f030fb15ba3 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx @@ -38,24 +38,4 @@ describe('Title', () => { expect(wrapper.find('[data-test-subj="header-page-title"]').first().exists()).toBe(true); }); - - test('it renders as a draggable when arguments provided', () => { - const wrapper = mount( - <TestProviders> - <Title draggableArguments={{ field: 'neat', value: 'cool' }} title="Test title" /> - </TestProviders> - ); - - expect(wrapper.find('[data-test-subj="header-page-draggable"]').first().exists()).toBe(true); - }); - - test('it DOES NOT render as a draggable when arguments not provided', () => { - const wrapper = mount( - <TestProviders> - <Title title="Test title" /> - </TestProviders> - ); - - expect(wrapper.find('[data-test-subj="header-page-draggable"]').first().exists()).toBe(false); - }); }); 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 0f54c6f579a9f..50602b95d996e 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 @@ -9,8 +9,7 @@ import React from 'react'; import { EuiBetaBadge, EuiBadge, EuiTitle } from '@elastic/eui'; import styled from 'styled-components'; -import type { DraggableArguments, BadgeOptions, TitleProp } from './types'; -import { DefaultDraggable } from '../draggables'; +import type { BadgeOptions, TitleProp } from './types'; import { TruncatableText } from '../truncatable_text'; const Header = styled.h1` @@ -34,24 +33,14 @@ TitleWrapper.displayName = 'TitleWrapper'; interface Props { badgeOptions?: BadgeOptions; title: TitleProp; - draggableArguments?: DraggableArguments; } -const TitleComponent: React.FC<Props> = ({ draggableArguments, title, badgeOptions }) => ( +const TitleComponent: React.FC<Props> = ({ title, badgeOptions }) => ( <EuiTitle size="l"> <Header data-test-subj="header-page-title"> - {!draggableArguments ? ( - <TitleWrapper> - <TruncatableText tooltipContent={title}>{title}</TruncatableText> - </TitleWrapper> - ) : ( - <DefaultDraggable - data-test-subj="header-page-draggable" - id={`header-page-draggable-${draggableArguments.field}-${draggableArguments.value}`} - field={draggableArguments.field} - value={`${draggableArguments.value}`} - /> - )} + <TitleWrapper> + <TruncatableText tooltipContent={title}>{title}</TruncatableText> + </TitleWrapper> {badgeOptions && ( <> {badgeOptions.beta ? ( 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 698178480045d..558c454f6484c 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 @@ -10,11 +10,6 @@ import type { BetaBadgeSize } from '@elastic/eui/src/components/badge/beta_badge import type React from 'react'; export type TitleProp = string | React.ReactNode; -export interface DraggableArguments { - field: string; - value: string; -} - export interface BadgeOptions { beta?: boolean; text: React.ReactNode; diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx index 8428c16ae9bc0..e7f80e613fab3 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/actions/show_top_n.test.tsx @@ -34,6 +34,14 @@ jest.mock('../../../lib/kibana', () => { }; }); +jest.mock('react-router-dom', () => { + const original = jest.requireActual('react-router-dom'); + return { + ...original, + useLocation: jest.fn().mockReturnValue({ pathname: '/test' }), + }; +}); + describe('show topN button', () => { const defaultProps = { field: 'signal.rule.name', diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx index 61efd3c906543..ac5a43d23a28b 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx @@ -15,7 +15,6 @@ import { MatrixHistogramType } from '../../../../common/search_strategy/security import { TestProviders } from '../../mock'; import { mockRuntimeMappings } from '../../containers/source/mock'; import { dnsTopDomainsLensAttributes } from '../visualization_actions/lens_attributes/network/dns_top_domains'; -import { useRouteSpy } from '../../utils/route/use_route_spy'; import { useQueryToggle } from '../../containers/query_toggle'; jest.mock('../../containers/query_toggle'); @@ -41,15 +40,16 @@ jest.mock('./utils', () => ({ getCustomChartData: jest.fn().mockReturnValue(true), })); -jest.mock('../../utils/route/use_route_spy', () => ({ - useRouteSpy: jest.fn().mockReturnValue([ - { - detailName: 'mockHost', - pageName: 'hosts', - tabName: 'events', - }, - ]), -})); +const mockLocation = jest.fn().mockReturnValue({ pathname: '/test' }); + +jest.mock('react-router-dom', () => { + const original = jest.requireActual('react-router-dom'); + + return { + ...original, + useLocation: () => mockLocation(), + }; +}); describe('Matrix Histogram Component', () => { let wrapper: ReactWrapper; @@ -177,13 +177,7 @@ describe('Matrix Histogram Component', () => { describe('Inspect button', () => { test("it doesn't render Inspect button by default on Host page", () => { - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: 'mockHost', - pageName: 'hosts', - tabName: 'events', - }, - ]); + mockLocation.mockReturnValue({ pathname: '/hosts' }); const testProps = { ...mockMatrixOverTimeHistogramProps, @@ -196,13 +190,7 @@ describe('Matrix Histogram Component', () => { }); test("it doesn't render Inspect button by default on Network page", () => { - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: undefined, - pageName: 'network', - tabName: 'external-alerts', - }, - ]); + mockLocation.mockReturnValue({ pathname: '/network' }); const testProps = { ...mockMatrixOverTimeHistogramProps, @@ -215,13 +203,7 @@ describe('Matrix Histogram Component', () => { }); test('it render Inspect button by default on other pages', () => { - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: undefined, - pageName: 'overview', - tabName: undefined, - }, - ]); + mockLocation.mockReturnValue({ pathname: '/overview' }); const testProps = { ...mockMatrixOverTimeHistogramProps, @@ -236,13 +218,7 @@ describe('Matrix Histogram Component', () => { describe('VisualizationActions', () => { test('it renders VisualizationActions on Host page if lensAttributes is provided', () => { - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: 'mockHost', - pageName: 'hosts', - tabName: 'events', - }, - ]); + mockLocation.mockReturnValue({ pathname: '/hosts' }); const testProps = { ...mockMatrixOverTimeHistogramProps, @@ -258,13 +234,7 @@ describe('Matrix Histogram Component', () => { }); test('it renders VisualizationActions on Network page if lensAttributes is provided', () => { - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: undefined, - pageName: 'network', - tabName: 'events', - }, - ]); + mockLocation.mockReturnValue({ pathname: '/network' }); const testProps = { ...mockMatrixOverTimeHistogramProps, @@ -285,13 +255,7 @@ describe('Matrix Histogram Component', () => { lensAttributes: dnsTopDomainsLensAttributes, }; - (useRouteSpy as jest.Mock).mockReturnValue([ - { - detailName: undefined, - pageName: 'overview', - tabName: undefined, - }, - ]); + mockLocation.mockReturnValue({ pathname: '/overview' }); wrapper = mount(<MatrixHistogram {...testProps} />, { wrappingComponent: TestProviders, diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx index afc6c133e4c27..7b44b9295218c 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx @@ -11,6 +11,7 @@ import styled from 'styled-components'; import { EuiFlexGroup, EuiFlexItem, EuiProgress, EuiSelect, EuiSpacer } from '@elastic/eui'; import { useDispatch } from 'react-redux'; +import { useLocation } from 'react-router-dom'; import * as i18n from './translations'; import { BarChart } from '../charts/barchart'; import { HeaderSection } from '../header_section'; @@ -33,10 +34,9 @@ import { InputsModelId } from '../../store/inputs/constants'; import { HoverVisibilityContainer } from '../hover_visibility_container'; import { VisualizationActions } from '../visualization_actions'; import type { GetLensAttributes, LensAttributes } from '../visualization_actions/types'; -import { SecurityPageName } from '../../../../common/constants'; -import { useRouteSpy } from '../../utils/route/use_route_spy'; import { useQueryToggle } from '../../containers/query_toggle'; import { VISUALIZATION_ACTIONS_BUTTON_CLASS } from '../visualization_actions/utils'; +import { isExplorePage } from '../../../helpers'; export type MatrixHistogramComponentProps = MatrixHistogramProps & Omit<MatrixHistogramQueryProps, 'stackByField'> & { @@ -60,6 +60,7 @@ export type MatrixHistogramComponentProps = MatrixHistogramProps & subtitle?: string | GetSubTitle; scopeId?: string; title: string | GetTitle; + hideQueryToggle?: boolean; }; const DEFAULT_PANEL_HEIGHT = 300; @@ -103,8 +104,10 @@ export const MatrixHistogramComponent: React.FC<MatrixHistogramComponentProps> = titleSize, yTickFormatter, skip, + hideQueryToggle = false, }) => { const dispatch = useDispatch(); + const { pathname } = useLocation(); const handleBrushEnd = useCallback( ({ x }) => { @@ -151,6 +154,7 @@ export const MatrixHistogramComponent: React.FC<MatrixHistogramComponentProps> = }, [defaultStackByOption, stackByOptions] ); + const { toggleStatus, setToggleStatus } = useQueryToggle(id); const [querySkip, setQuerySkip] = useState(skip || !toggleStatus); useEffect(() => { @@ -180,12 +184,7 @@ export const MatrixHistogramComponent: React.FC<MatrixHistogramComponentProps> = }; const [loading, { data, inspect, totalCount, refetch }] = useMatrixHistogramCombined(matrixHistogramRequest); - const [{ pageName }] = useRouteSpy(); - - const onHostOrNetworkOrUserPage = - pageName === SecurityPageName.hosts || - pageName === SecurityPageName.network || - pageName === SecurityPageName.users; + const onExplorePage = isExplorePage(pathname); const titleWithStackByField = useMemo( () => (title != null && typeof title === 'function' ? title(selectedStackByOption) : title), @@ -259,14 +258,14 @@ export const MatrixHistogramComponent: React.FC<MatrixHistogramComponentProps> = title={titleWithStackByField} titleSize={titleSize} toggleStatus={toggleStatus} - toggleQuery={toggleQuery} + toggleQuery={hideQueryToggle ? undefined : toggleQuery} subtitle={subtitleWithCounts} inspectMultiple - showInspectButton={showInspectButton || !onHostOrNetworkOrUserPage} + showInspectButton={showInspectButton || !onExplorePage} isInspectDisabled={filterQuery === undefined} > <EuiFlexGroup alignItems="center" gutterSize="none"> - {onHostOrNetworkOrUserPage && (getLensAttributes || lensAttributes) && timerange && ( + {onExplorePage && (getLensAttributes || lensAttributes) && timerange && ( <EuiFlexItem grow={false}> <VisualizationActions className="histogram-viz-actions" diff --git a/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap new file mode 100644 index 0000000000000..98e5faaf31f47 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`entity_draggable renders correctly against snapshot 1`] = ` +<CellActions + field={ + Object { + "name": "entity-name", + "type": "keyword", + "value": "entity-value", + } + } + mode="hover" + triggerId="security-solution-default-cellActions" + visibleCellActions={5} +> + entity-name: "entity-value" +</CellActions> +`; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity_draggable.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity_draggable.test.tsx.snap deleted file mode 100644 index eaa7721271d98..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity_draggable.test.tsx.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`entity_draggable renders correctly against snapshot 1`] = ` -<DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "entity-draggable-id-prefix-entity-name-entity-value", - "kqlQuery": "", - "name": "entity-value", - "queryMatch": Object { - "field": "entity-name", - "operator": ":", - "value": "entity-value", - }, - } - } - fieldType="keyword" - isAggregatable={true} - key="entity-draggable-id-prefix-entity-name-entity-value" - render={[Function]} -/> -`; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/entity.test.tsx similarity index 76% rename from x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.test.tsx rename to x-pack/plugins/security_solution/public/common/components/ml/entity.test.tsx index 5f093db3f69bb..4441e483f063b 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/entity.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import '../../mock/match_media'; -import { EntityDraggableComponent } from './entity_draggable'; +import { EntityComponent } from './entity'; import { TestProviders } from '../../mock/test_providers'; import { useMountAppended } from '../../utils/use_mount_appended'; @@ -28,11 +28,7 @@ describe('entity_draggable', () => { test('renders correctly against snapshot', () => { const wrapper = shallow( - <EntityDraggableComponent - idPrefix="id-prefix" - entityName="entity-name" - entityValue="entity-value" - /> + <EntityComponent entityName="entity-name" entityValue="entity-value" /> ); expect(wrapper).toMatchSnapshot(); }); @@ -40,11 +36,7 @@ describe('entity_draggable', () => { test('renders with entity name with entity value as text', () => { const wrapper = mount( <TestProviders> - <EntityDraggableComponent - idPrefix="id-prefix" - entityName="entity-name" - entityValue="entity-value" - /> + <EntityComponent entityName="entity-name" entityValue="entity-value" /> </TestProviders> ); expect(wrapper.text()).toEqual('entity-name: "entity-value"'); diff --git a/x-pack/plugins/security_solution/public/common/components/ml/entity.tsx b/x-pack/plugins/security_solution/public/common/components/ml/entity.tsx new file mode 100644 index 0000000000000..64d7f9be82d2f --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/ml/entity.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../common/constants'; + +interface Props { + entityName: string; + entityValue: string; +} + +export const EntityComponent: React.FC<Props> = ({ entityName, entityValue }) => { + return ( + <CellActions + field={{ + name: entityName, + value: entityValue, + type: 'keyword', + }} + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + mode={CellActionsMode.HOVER} + visibleCellActions={5} + > + {`${entityName}: "${entityValue}"`} + </CellActions> + ); +}; + +EntityComponent.displayName = 'EntityComponent'; + +export const Entity = React.memo(EntityComponent); + +Entity.displayName = 'Entity'; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.tsx b/x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.tsx deleted file mode 100644 index 1b1c03d66f6c3..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/ml/entity_draggable.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo } from 'react'; -import { DraggableWrapper, DragEffects } from '../drag_and_drop/draggable_wrapper'; -import type { QueryOperator } from '../../../timelines/components/timeline/data_providers/data_provider'; -import { IS_OPERATOR } from '../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../timelines/components/timeline/data_providers/provider'; -import { escapeDataProviderId } from '../drag_and_drop/helpers'; - -interface Props { - idPrefix: string; - entityName: string; - entityValue: string; -} - -export const EntityDraggableComponent: React.FC<Props> = ({ - idPrefix, - entityName, - entityValue, -}) => { - const id = escapeDataProviderId(`entity-draggable-${idPrefix}-${entityName}-${entityValue}`); - - const dataProviderProp = useMemo( - () => ({ - and: [], - enabled: true, - id, - name: entityValue, - excluded: false, - kqlQuery: '', - queryMatch: { - field: entityName, - value: entityValue, - operator: IS_OPERATOR as QueryOperator, - }, - }), - [entityName, entityValue, id] - ); - - const render = useCallback( - (dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <>{`${entityName}: "${entityValue}"`}</> - ), - [entityName, entityValue] - ); - - return ( - <DraggableWrapper - key={id} - dataProvider={dataProviderProp} - render={render} - isAggregatable={true} - fieldType={'keyword'} - /> - ); -}; - -EntityDraggableComponent.displayName = 'EntityDraggableComponent'; - -export const EntityDraggable = React.memo(EntityDraggableComponent); - -EntityDraggable.displayName = 'EntityDraggable'; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap index dbdb6eec840fa..eb1247dded8a0 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap @@ -5,8 +5,7 @@ exports[`anomaly_scores renders correctly against snapshot 1`] = ` <EuiFlexItem grow={false} > - <DraggableScore - id="anomaly-scores-job-key-1" + <Score index={0} score={ Object { diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/draggable_score.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/draggable_score.test.tsx.snap deleted file mode 100644 index 392c0bd4ba606..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/draggable_score.test.tsx.snap +++ /dev/null @@ -1,49 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`draggable_score renders correctly against snapshot 1`] = ` -<DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "some-id", - "kqlQuery": "", - "name": "process.name", - "queryMatch": Object { - "field": "process.name", - "operator": ":", - "value": "du", - }, - } - } - fieldType="keyword" - isAggregatable={true} - key="draggable-score-draggable-wrapper-some-id" - render={[Function]} -/> -`; - -exports[`draggable_score renders correctly against snapshot when the index is not included 1`] = ` -<DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "some-id", - "kqlQuery": "", - "name": "process.name", - "queryMatch": Object { - "field": "process.name", - "operator": ":", - "value": "du", - }, - } - } - fieldType="keyword" - isAggregatable={true} - key="draggable-score-draggable-wrapper-some-id" - render={[Function]} -/> -`; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap new file mode 100644 index 0000000000000..3aa3f9ef67ac6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap @@ -0,0 +1,35 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`draggable_score renders correctly against snapshot 1`] = ` +<CellActions + field={ + Object { + "name": "process.name", + "type": "keyword", + "value": "du", + } + } + mode="hover" + triggerId="security-solution-default-cellActions" + visibleCellActions={5} +> + 17 +</CellActions> +`; + +exports[`draggable_score renders correctly against snapshot when the index is not included 1`] = ` +<CellActions + field={ + Object { + "name": "process.name", + "type": "keyword", + "value": "du", + } + } + mode="hover" + triggerId="security-solution-default-cellActions" + visibleCellActions={5} +> + 17 +</CellActions> +`; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx index 28fff36fb2fe5..ad87c23cf0067 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx @@ -9,8 +9,7 @@ import React, { useState } from 'react'; import { EuiPopover, EuiDescriptionList, EuiFlexItem, EuiIcon } from '@elastic/eui'; import styled from 'styled-components'; import type { NarrowDateRange, Anomaly } from '../types'; -import { DraggableScore } from './draggable_score'; -import { escapeDataProviderId } from '../../drag_and_drop/helpers'; +import { Score } from './score'; import { createDescriptionList } from './create_description_list'; interface Args { @@ -45,11 +44,7 @@ export const AnomalyScoreComponent = ({ return ( <> <EuiFlexItem grow={false}> - <DraggableScore - id={escapeDataProviderId(`anomaly-scores-${jobKey}`)} - index={index} - score={score} - /> + <Score index={index} score={score} /> </EuiFlexItem> <EuiFlexItem grow={false}> <EuiPopover diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.tsx deleted file mode 100644 index 59baeae534682..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo } from 'react'; -import { DraggableWrapper, DragEffects } from '../../drag_and_drop/draggable_wrapper'; -import type { Anomaly } from '../types'; -import type { QueryOperator } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; -import { Spacer } from '../../page'; -import { getScoreString } from './score_health'; - -export const DraggableScoreComponent = ({ - id, - index = 0, - score, -}: { - id: string; - index?: number; - score: Anomaly; -}): JSX.Element => { - const scoreString = getScoreString(score.severity); - - const dataProviderProp = useMemo( - () => ({ - and: [], - enabled: true, - id, - name: score.entityName, - excluded: false, - kqlQuery: '', - queryMatch: { - field: score.entityName, - value: score.entityValue, - operator: IS_OPERATOR as QueryOperator, - }, - }), - [id, score.entityName, score.entityValue] - ); - - const render = useCallback( - (dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <> - {index !== 0 && ( - <> - {','} - <Spacer /> - </> - )} - {scoreString} - </> - ), - [index, scoreString] - ); - - return ( - <DraggableWrapper - key={`draggable-score-draggable-wrapper-${id}`} - dataProvider={dataProviderProp} - render={render} - isAggregatable={true} - fieldType="keyword" - /> - ); -}; - -DraggableScoreComponent.displayName = 'DraggableScoreComponent'; - -export const DraggableScore = React.memo(DraggableScoreComponent); - -DraggableScore.displayName = 'DraggableScore'; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/score.test.tsx similarity index 73% rename from x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.test.tsx rename to x-pack/plugins/security_solution/public/common/components/ml/score/score.test.tsx index a58ef50a3d34d..e47d4d890e5f5 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/draggable_score.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/score.test.tsx @@ -10,7 +10,7 @@ import { cloneDeep } from 'lodash/fp'; import { shallow } from 'enzyme'; import '../../../mock/match_media'; -import { DraggableScoreComponent } from './draggable_score'; +import { ScoreComponent } from './score'; import { mockAnomalies } from '../mock'; describe('draggable_score', () => { @@ -21,16 +21,12 @@ describe('draggable_score', () => { }); test('renders correctly against snapshot', () => { - const wrapper = shallow( - <DraggableScoreComponent id="some-id" index={0} score={anomalies.anomalies[0]} /> - ); + const wrapper = shallow(<ScoreComponent index={0} score={anomalies.anomalies[0]} />); expect(wrapper).toMatchSnapshot(); }); test('renders correctly against snapshot when the index is not included', () => { - const wrapper = shallow( - <DraggableScoreComponent id="some-id" score={anomalies.anomalies[0]} /> - ); + const wrapper = shallow(<ScoreComponent score={anomalies.anomalies[0]} />); expect(wrapper).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/score.tsx new file mode 100644 index 0000000000000..dd72775ee2588 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/score.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 React from 'react'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; +import type { Anomaly } from '../types'; +import { Spacer } from '../../page'; +import { getScoreString } from './score_health'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; + +export const ScoreComponent = ({ + index = 0, + score, +}: { + index?: number; + score: Anomaly; +}): JSX.Element => { + const scoreString = getScoreString(score.severity); + + return ( + <CellActions + mode={CellActionsMode.HOVER} + field={{ + name: score.entityName, + value: score.entityValue, + type: 'keyword', + }} + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + visibleCellActions={5} + > + <> + {index !== 0 && ( + <> + {','} + <Spacer /> + </> + )} + {scoreString} + </> + </CellActions> + ); +}; + +ScoreComponent.displayName = 'ScoreComponent'; + +export const Score = React.memo(ScoreComponent); + +Score.displayName = 'Score'; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx index 165f215f7ae0b..198f27bb7c829 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { Columns } from '../../../../explore/components/paginated_table'; import type { AnomaliesByHost, Anomaly } from '../types'; -import { getRowItemDraggable } from '../../tables/helpers'; +import { getRowItemsWithActions } from '../../tables/helpers'; import { createCompoundAnomalyKey } from './create_compound_key'; import { HostDetailsLink } from '../../links'; import * as i18n from './translations'; @@ -31,15 +31,14 @@ export const getAnomaliesHostTableColumns = ( field: 'hostName', sortable: true, render: (hostName, anomaliesByHost) => - getRowItemDraggable({ - rowItem: hostName, - attrName: 'host.name', + getRowItemsWithActions({ + values: [hostName], + fieldName: 'host.name', idPrefix: `anomalies-host-table-hostName-${createCompoundAnomalyKey( anomaliesByHost.anomaly )}-hostName`, - render: (item) => <HostDetailsLink hostName={item} />, - isAggregatable: true, fieldType: 'keyword', + render: (item) => <HostDetailsLink hostName={item} />, }), }, ...getAnomaliesDefaultTableColumns(startDate, endDate), diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx index 78468320ab24f..3edd314d93ec2 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx @@ -9,7 +9,7 @@ import React from 'react'; import type { Columns } from '../../../../explore/components/paginated_table'; import type { Anomaly, AnomaliesByNetwork } from '../types'; -import { getRowItemDraggable } from '../../tables/helpers'; +import { getRowItemsWithActions } from '../../tables/helpers'; import { createCompoundAnomalyKey } from './create_compound_key'; import { NetworkDetailsLink } from '../../links'; @@ -35,15 +35,14 @@ export const getAnomaliesNetworkTableColumns = ( field: 'ip', sortable: true, render: (ip, anomaliesByNetwork) => - getRowItemDraggable({ - rowItem: ip, - attrName: anomaliesByNetwork.type, + getRowItemsWithActions({ + values: [ip], + fieldName: anomaliesByNetwork.type, idPrefix: `anomalies-network-table-ip-${createCompoundAnomalyKey( anomaliesByNetwork.anomaly )}`, - render: (item) => <NetworkDetailsLink ip={item} flowTarget={flowTarget} />, - isAggregatable: true, fieldType: 'ip', + render: (item) => <NetworkDetailsLink ip={item} flowTarget={flowTarget} />, }), }, ...getAnomaliesDefaultTableColumns(startDate, endDate), diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx index e8d4b13bc1b73..ea45e95c8cf80 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx @@ -10,14 +10,13 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import type { Columns } from '../../../../explore/components/paginated_table'; import type { AnomaliesBy, Anomaly } from '../types'; -import { EntityDraggable } from '../entity_draggable'; +import { Entity } from '../entity'; import { createCompoundAnomalyKey } from './create_compound_key'; import * as i18n from './translations'; import { getEntries } from '../get_entries'; -import { DraggableScore } from '../score/draggable_score'; +import { Score } from '../score/score'; import { ExplorerLink } from '../links/create_explorer_link'; -import { escapeDataProviderId } from '../../drag_and_drop/helpers'; import { FormattedRelativePreferenceDate } from '../../formatted_date'; export const getAnomaliesDefaultTableColumns = ( @@ -47,27 +46,14 @@ export const getAnomaliesDefaultTableColumns = ( name: i18n.SCORE, field: 'anomaly.severity', sortable: true, - render: (_, anomalyBy) => ( - <DraggableScore - id={escapeDataProviderId( - `anomalies-table-severity-${createCompoundAnomalyKey(anomalyBy.anomaly)}` - )} - score={anomalyBy.anomaly} - /> - ), + render: (_, anomalyBy) => <Score score={anomalyBy.anomaly} />, }, { name: i18n.ENTITY, field: 'anomaly.entityValue', sortable: true, render: (entityValue, anomalyBy) => ( - <EntityDraggable - idPrefix={`anomalies-table-entityValue${createCompoundAnomalyKey( - anomalyBy.anomaly - )}-entity`} - entityName={anomalyBy.anomaly.entityName} - entityValue={entityValue} - /> + <Entity entityName={anomalyBy.anomaly.entityName} entityValue={entityValue} /> ), }, { @@ -87,13 +73,7 @@ export const getAnomaliesDefaultTableColumns = ( > <EuiFlexGroup gutterSize="none" responsive={false}> <EuiFlexItem grow={false}> - <EntityDraggable - idPrefix={`anomalies-table-influencers-${entityName}-${entityValue}-${createCompoundAnomalyKey( - anomalyBy.anomaly - )}`} - entityName={entityName} - entityValue={entityValue} - /> + <Entity entityName={entityName} entityValue={entityValue} /> </EuiFlexItem> </EuiFlexGroup> </EuiFlexItem> diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx index 02f36d9d504e4..ebd731b9a180a 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { Columns } from '../../../../explore/components/paginated_table'; import type { AnomaliesByUser, Anomaly } from '../types'; -import { getRowItemDraggable } from '../../tables/helpers'; +import { getRowItemsWithActions } from '../../tables/helpers'; import { createCompoundAnomalyKey } from './create_compound_key'; import { UserDetailsLink } from '../../links'; @@ -32,15 +32,14 @@ export const getAnomaliesUserTableColumns = ( field: 'userName', sortable: true, render: (userName, anomaliesByUser) => - getRowItemDraggable({ - rowItem: userName, - attrName: 'user.name', + getRowItemsWithActions({ + values: [userName], + fieldName: 'user.name', idPrefix: `anomalies-user-table-userName-${createCompoundAnomalyKey( anomaliesByUser.anomaly )}-userName`, - render: (item) => <UserDetailsLink userName={item} />, - isAggregatable: true, fieldType: 'keyword', + render: (item) => <UserDetailsLink userName={item} />, }), }, ...getAnomaliesDefaultTableColumns(startDate, endDate), diff --git a/x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap index a84e71149deeb..a88b00c573b2e 100644 --- a/x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap @@ -10,11 +10,12 @@ exports[`Table Helpers #RowItemOverflow it returns correctly against snapshot 1` size="xs" > <MoreContainer - attrName="attrName" + fieldName="attrName" + fieldType="keyword" idPrefix="idPrefix" moreMaxHeight="none" overflowIndexStart={1} - rowItems={ + values={ Array [ "item1", "item2", @@ -42,118 +43,6 @@ exports[`Table Helpers #RowItemOverflow it returns correctly against snapshot 1` </Fragment> `; -exports[`Table Helpers #getRowItemDraggable it returns correctly against snapshot 1`] = ` -<DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "idPrefix-attrName-item1", - "kqlQuery": "", - "name": "item1", - "queryMatch": Object { - "displayValue": "item1", - "field": "attrName", - "operator": ":", - "value": "item1", - }, - } - } - key="idPrefix-attrName-item1" - render={[Function]} -/> -`; - -exports[`Table Helpers #getRowItemDraggables it returns correctly against snapshot 1`] = ` -<DragDropContext - onDragEnd={[MockFunction]} -> - <DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "idPrefix-attrName-item1-0", - "kqlQuery": "", - "name": "item1", - "queryMatch": Object { - "displayValue": "item1", - "field": "attrName", - "operator": ":", - "value": "item1", - }, - } - } - fieldType="keyword" - isAggregatable={false} - key="idPrefix-attrName-item1-0" - render={[Function]} - /> - <DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "idPrefix-attrName-item2-1", - "kqlQuery": "", - "name": "item2", - "queryMatch": Object { - "displayValue": "item2", - "field": "attrName", - "operator": ":", - "value": "item2", - }, - } - } - fieldType="keyword" - isAggregatable={false} - key="idPrefix-attrName-item2-1" - render={[Function]} - /> - <DraggableWrapper - dataProvider={ - Object { - "and": Array [], - "enabled": true, - "excluded": false, - "id": "idPrefix-attrName-item3-2", - "kqlQuery": "", - "name": "item3", - "queryMatch": Object { - "displayValue": "item3", - "field": "attrName", - "operator": ":", - "value": "item3", - }, - } - } - fieldType="keyword" - isAggregatable={false} - key="idPrefix-attrName-item3-2" - render={[Function]} - /> - - <Memo(RowItemOverflowComponent) - attrName="attrName" - fieldType="keyword" - idPrefix="idPrefix" - isAggregatable={false} - maxOverflowItems={5} - overflowIndexStart={5} - rowItems={ - Array [ - "item1", - "item2", - "item3", - ] - } - /> -</DragDropContext> -`; - exports[`Table Helpers OverflowField it returns correctly against snapshot 1`] = ` <span> This string is exactly fifty-one chars in length!! diff --git a/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx index d5c924bbea172..668d51562305a 100644 --- a/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx @@ -10,14 +10,14 @@ import { shallow } from 'enzyme'; import '../../mock/match_media'; import { - getRowItemDraggables, RowItemOverflowComponent, - getRowItemDraggable, OverflowFieldComponent, + getRowItemsWithActions, } from './helpers'; import { TestProviders } from '../../mock'; -import { getEmptyValue } from '../empty_value'; import { useMountAppended } from '../../utils/use_mount_appended'; +import { getEmptyValue } from '../empty_value'; +import { render } from '@testing-library/react'; jest.mock('../../lib/kibana'); @@ -25,159 +25,75 @@ describe('Table Helpers', () => { const items = ['item1', 'item2', 'item3']; const mount = useMountAppended(); - describe('#getRowItemDraggable', () => { - test('it returns correctly against snapshot', () => { - const rowItem = getRowItemDraggable({ - rowItem: 'item1', - attrName: 'attrName', + describe('#getRowItemsWithActions', () => { + test('it returns empty value when values is undefined', () => { + const rowItem = getRowItemsWithActions({ + values: undefined, + fieldName: 'attrName', idPrefix: 'idPrefix', }); - const wrapper = shallow(<TestProviders>{rowItem}</TestProviders>); - expect(wrapper.find('DraggableWrapper')).toMatchSnapshot(); - }); - test('it returns empty value when rowItem is undefined', () => { - const rowItem = getRowItemDraggable({ - rowItem: undefined, - attrName: 'attrName', - idPrefix: 'idPrefix', - displayCount: 0, - }); - const wrapper = mount(<TestProviders>{rowItem}</TestProviders>); - expect(wrapper.find('DragDropContext').text()).toBe(getEmptyValue()); + const { container } = render(<TestProviders>{rowItem}</TestProviders>); + + expect(container.textContent).toBe(getEmptyValue()); }); - test('it returns empty string value when rowItem is empty', () => { - const rowItem = getRowItemDraggable({ - rowItem: '', - attrName: 'attrName', + test('it returns empty string value when values is empty', () => { + const rowItem = getRowItemsWithActions({ + values: [''], + fieldName: 'attrName', idPrefix: 'idPrefix', - displayCount: 0, }); - const wrapper = mount(<TestProviders>{rowItem}</TestProviders>); - expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( - '(Empty string)' - ); + const { container } = render(<TestProviders>{rowItem}</TestProviders>); + + expect(container.textContent).toContain('(Empty string)'); }); test('it returns empty value when rowItem is null', () => { - const rowItem = getRowItemDraggable({ - rowItem: null, - attrName: 'attrName', + const rowItem = getRowItemsWithActions({ + values: null, + fieldName: 'attrName', idPrefix: 'idPrefix', displayCount: 0, }); - const wrapper = mount(<TestProviders>{rowItem}</TestProviders>); - - expect(wrapper.text()).toBe(getEmptyValue()); + const { container } = render(<TestProviders>{rowItem}</TestProviders>); + expect(container.textContent).toBe(getEmptyValue()); }); test('it uses custom renderer', () => { const renderer = (item: string) => <>{`Hi ${item} renderer`}</>; - const rowItem = getRowItemDraggable({ - rowItem: 'item1', - attrName: 'attrName', + const rowItem = getRowItemsWithActions({ + values: ['item1'], + fieldName: 'attrName', idPrefix: 'idPrefix', render: renderer, }); - const wrapper = mount(<TestProviders>{rowItem}</TestProviders>); - expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( - 'Hi item1 renderer' - ); - }); - }); - - describe('#getRowItemDraggables', () => { - test('it returns correctly against snapshot', () => { - const rowItems = getRowItemDraggables({ - rowItems: items, - attrName: 'attrName', - idPrefix: 'idPrefix', - }); - const wrapper = shallow(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.find('DragDropContext')).toMatchSnapshot(); - }); - - test('it returns empty value when rowItems is undefined', () => { - const rowItems = getRowItemDraggables({ - rowItems: undefined, - attrName: 'attrName', - idPrefix: 'idPrefix', - displayCount: 0, - }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.text()).toBe(getEmptyValue()); - }); - - test('it returns empty string value when rowItem is empty', () => { - const rowItems = getRowItemDraggables({ - rowItems: [''], - attrName: 'attrName', - idPrefix: 'idPrefix', - }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( - '(Empty string)' - ); - }); + const { container } = render(<TestProviders>{rowItem}</TestProviders>); - test('it returns empty value when rowItems is null', () => { - const rowItems = getRowItemDraggables({ - rowItems: null, - attrName: 'attrName', - idPrefix: 'idPrefix', - displayCount: 0, - }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.text()).toBe(getEmptyValue()); - }); - - test('it returns no items when provided a 0 displayCount', () => { - const rowItems = getRowItemDraggables({ - rowItems: items, - attrName: 'attrName', - idPrefix: 'idPrefix', - displayCount: 0, - }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.text()).toBe(getEmptyValue()); + expect(container.textContent).toContain('Hi item1 renderer'); }); test('it returns no items when provided an empty array', () => { - const rowItems = getRowItemDraggables({ - rowItems: [], - attrName: 'attrName', + const rowItems = getRowItemsWithActions({ + values: [], + fieldName: 'attrName', idPrefix: 'idPrefix', }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.text()).toBe(getEmptyValue()); + const { container } = render(<TestProviders>{rowItems}</TestProviders>); + expect(container.textContent).toBe(getEmptyValue()); }); - // Using hostNodes due to this issue: https://github.com/airbnb/enzyme/issues/836 - - test('it returns 2 items then overflows', () => { - const rowItems = getRowItemDraggables({ - rowItems: items, - attrName: 'attrName', + test('it returns 2 items then overflows when displayCount is 2', () => { + const rowItems = getRowItemsWithActions({ + values: items, + fieldName: 'attrName', idPrefix: 'idPrefix', displayCount: 2, }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.find('[data-test-subj="withHoverActionsButton"]').hostNodes().length).toBe(2); - }); + const { queryAllByTestId, queryByTestId } = render(<TestProviders>{rowItems}</TestProviders>); - test('it uses custom renderer', () => { - const renderer = (item: string) => <>{`Hi ${item} renderer`}</>; - const rowItems = getRowItemDraggables({ - rowItems: items, - attrName: 'attrName', - idPrefix: 'idPrefix', - render: renderer, - }); - const wrapper = mount(<TestProviders>{rowItems}</TestProviders>); - expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( - 'Hi item1 renderer' - ); + expect(queryAllByTestId('cellActions-renderContent-attrName').length).toBe(2); + expect(queryByTestId('overflow-button')).toBeInTheDocument(); }); }); @@ -185,11 +101,12 @@ describe('Table Helpers', () => { test('it returns correctly against snapshot', () => { const wrapper = shallow( <RowItemOverflowComponent - rowItems={items} - attrName="attrName" + values={items} + fieldName="attrName" idPrefix="idPrefix" maxOverflowItems={1} overflowIndexStart={1} + fieldType="keyword" /> ); expect(wrapper).toMatchSnapshot(); @@ -198,11 +115,12 @@ describe('Table Helpers', () => { test('it does not show "more not shown" when maxOverflowItems are not exceeded', () => { const wrapper = shallow( <RowItemOverflowComponent - rowItems={items} - attrName="attrName" + values={items} + fieldName="attrName" idPrefix="idPrefix" maxOverflowItems={5} overflowIndexStart={1} + fieldType="keyword" /> ); expect(wrapper.find('[data-test-subj="popover-additional-overflow"]').length).toBe(0); @@ -212,11 +130,12 @@ describe('Table Helpers', () => { const wrapper = mount( <TestProviders> <RowItemOverflowComponent - rowItems={items} - attrName="attrName" + values={items} + fieldName="attrName" idPrefix="idPrefix" maxOverflowItems={5} overflowIndexStart={1} + fieldType="keyword" /> </TestProviders> ); @@ -231,11 +150,12 @@ describe('Table Helpers', () => { test('it shows "more not shown" when maxOverflowItems are exceeded', () => { const wrapper = shallow( <RowItemOverflowComponent - rowItems={items} - attrName="attrName" + values={items} + fieldName="attrName" idPrefix="idPrefix" maxOverflowItems={1} overflowIndexStart={1} + fieldType="keyword" /> ); expect(wrapper.find('[data-test-subj="popover-additional-overflow"]').length).toBe(1); diff --git a/x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx index ccd51e24fcb1b..3e2ac32167334 100644 --- a/x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx @@ -8,149 +8,67 @@ import React, { useCallback, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiLink, EuiPopover, EuiToolTip, EuiText, EuiTextColor } from '@elastic/eui'; import styled from 'styled-components'; - -import { DragEffects, DraggableWrapper } from '../drag_and_drop/draggable_wrapper'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { escapeDataProviderId } from '../drag_and_drop/helpers'; import { defaultToEmptyTag, getEmptyTagValue } from '../empty_value'; import { MoreRowItems } from '../page'; -import { IS_OPERATOR } from '../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../timelines/components/timeline/data_providers/provider'; - +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../common/constants'; import { MoreContainer } from '../../../timelines/components/field_renderers/field_renderers'; const Subtext = styled.div` font-size: ${(props) => props.theme.eui.euiFontSizeXS}; `; -interface GetRowItemDraggableParams { - rowItem: string | null | undefined; - attrName: string; - idPrefix: string; - render?: (item: string) => JSX.Element; +interface GetRowItemsWithActionsParams { + values: string[] | null | undefined; + fieldName: string; fieldType?: string; - isAggregatable?: boolean; - displayCount?: number; - dragDisplayValue?: string; - maxOverflow?: number; -} - -export const getRowItemDraggable = ({ - rowItem, - attrName, - idPrefix, - fieldType, - isAggregatable, - render, - dragDisplayValue, -}: GetRowItemDraggableParams): JSX.Element => { - if (rowItem != null) { - const id = escapeDataProviderId(`${idPrefix}-${attrName}-${rowItem}`); - return ( - <DraggableWrapper - key={id} - dataProvider={{ - and: [], - enabled: true, - id, - name: rowItem, - excluded: false, - kqlQuery: '', - queryMatch: { - field: attrName, - value: rowItem, - displayValue: dragDisplayValue || rowItem, - operator: IS_OPERATOR, - }, - }} - fieldType={fieldType} - isAggregatable={isAggregatable} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <>{render ? render(rowItem) : defaultToEmptyTag(rowItem)}</> - ) - } - /> - ); - } else { - return getEmptyTagValue(); - } -}; - -interface GetRowItemDraggablesParams { - rowItems: string[] | null | undefined; - attrName: string; idPrefix: string; render?: (item: string) => JSX.Element; - fieldType?: string; - isAggregatable?: boolean; displayCount?: number; - dragDisplayValue?: string; maxOverflow?: number; } -export const getRowItemDraggables = ({ - rowItems, - attrName, + +export const getRowItemsWithActions = ({ + values, + fieldName, + fieldType = 'keyword', idPrefix, render, - dragDisplayValue, - fieldType = 'keyword', - isAggregatable = false, displayCount = 5, maxOverflow = 5, -}: GetRowItemDraggablesParams): JSX.Element => { - if (rowItems != null && rowItems.length > 0) { - const draggables = rowItems.slice(0, displayCount).map((rowItem, index) => { - const id = escapeDataProviderId(`${idPrefix}-${attrName}-${rowItem}-${index}`); +}: GetRowItemsWithActionsParams): JSX.Element => { + if (values != null && values.length > 0) { + const visibleItems = values.slice(0, displayCount).map((value, index) => { + const id = escapeDataProviderId(`${idPrefix}-${fieldName}-${value}-${index}`); return ( - <React.Fragment key={id}> - <DraggableWrapper - key={id} - dataProvider={{ - and: [], - enabled: true, - id, - name: rowItem, - excluded: false, - kqlQuery: '', - queryMatch: { - field: attrName, - value: rowItem, - displayValue: dragDisplayValue || rowItem, - operator: IS_OPERATOR, - }, - }} - fieldType={fieldType} - isAggregatable={isAggregatable} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <>{render ? render(rowItem) : defaultToEmptyTag(rowItem)}</> - ) - } - /> - </React.Fragment> + <CellActions + key={id} + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: fieldName, + value, + type: fieldType, + }} + > + <>{render ? render(value) : defaultToEmptyTag(value)}</> + </CellActions> ); }); - return draggables.length > 0 ? ( + return visibleItems.length > 0 ? ( <> - {draggables}{' '} + {visibleItems}{' '} <RowItemOverflow - attrName={attrName} - dragDisplayValue={dragDisplayValue} + fieldName={fieldName} + values={values} + fieldType={fieldType} idPrefix={idPrefix} maxOverflowItems={maxOverflow} overflowIndexStart={displayCount} - rowItems={rowItems} - fieldType={fieldType} - isAggregatable={isAggregatable} /> </> ) : ( @@ -162,46 +80,40 @@ export const getRowItemDraggables = ({ }; interface RowItemOverflowProps { - attrName: string; - dragDisplayValue?: string; + fieldName: string; + fieldType: string; + values: string[]; idPrefix: string; maxOverflowItems: number; overflowIndexStart: number; - rowItems: string[]; - fieldType?: string; - isAggregatable?: boolean; } export const RowItemOverflowComponent: React.FC<RowItemOverflowProps> = ({ - attrName, - dragDisplayValue, + fieldName, + values, + fieldType, idPrefix, maxOverflowItems = 5, overflowIndexStart = 5, - rowItems, - fieldType, - isAggregatable, }) => { return ( <> - {rowItems.length > overflowIndexStart && ( - <Popover count={rowItems.length - overflowIndexStart} idPrefix={idPrefix}> + {values.length > overflowIndexStart && ( + <Popover count={values.length - overflowIndexStart} idPrefix={idPrefix}> <EuiText size="xs"> <MoreContainer - attrName={attrName} - dragDisplayValue={dragDisplayValue} + fieldName={fieldName} idPrefix={idPrefix} + fieldType={fieldType} + values={values} overflowIndexStart={overflowIndexStart} - rowItems={rowItems} moreMaxHeight="none" - fieldType={fieldType} - isAggregatable={isAggregatable} /> - {rowItems.length > overflowIndexStart + maxOverflowItems && ( + {values.length > overflowIndexStart + maxOverflowItems && ( <p data-test-subj="popover-additional-overflow"> <EuiTextColor color="subdued"> - {rowItems.length - overflowIndexStart - maxOverflowItems}{' '} + {values.length - overflowIndexStart - maxOverflowItems}{' '} <FormattedMessage id="xpack.securitySolution.tables.rowItemHelper.moreDescription" defaultMessage="more not shown" diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx index faf7056dd41ff..180063d1786e5 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx @@ -36,6 +36,7 @@ jest.mock('react-router-dom', () => { useHistory: () => ({ useHistory: jest.fn(), }), + useLocation: jest.fn().mockReturnValue({ pathname: '/test' }), }; }); diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx index 7349f053f8b13..b52746ad14c57 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx @@ -23,6 +23,7 @@ jest.mock('react-router-dom', () => { return { ...original, + useLocation: jest.fn().mockReturnValue({ pathname: '' }), useHistory: () => ({ useHistory: jest.fn(), }), diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx index 365435ff24d28..fa82951e4ba12 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx @@ -145,6 +145,7 @@ const TopNComponent: React.FC<Props> = ({ toggleTopN={toggleTopN} scopeId={scopeId} to={to} + hideQueryToggle /> ) : ( <SignalsByCategory @@ -157,6 +158,7 @@ const TopNComponent: React.FC<Props> = ({ showLegend={showLegend} setAbsoluteRangeDatePickerTarget={setAbsoluteRangeDatePickerTarget} runtimeMappings={runtimeMappings} + hideQueryToggle /> )} </TopNContent> diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_donut.test.ts.snap b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_donut.test.ts.snap index 2daccdaf1bae5..8352c1b59bb03 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_donut.test.ts.snap +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_donut.test.ts.snap @@ -128,12 +128,12 @@ Object { "layers": Array [ Object { "categoryDisplay": "hide", - "emptySizeRatio": 0.8, + "emptySizeRatio": 0.82, "layerId": "d594baeb-5eca-480c-8885-ba79eaf41372", "layerType": "data", - "legendDisplay": "hide", - "legendPosition": "right", - "legendSize": "small", + "legendDisplay": "show", + "legendPosition": "left", + "legendSize": "medium", "metrics": Array [ "75179122-96fc-40e1-93b4-8e9310af5f06", ], diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_over_time_area.test.ts.snap b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_over_time_area.test.ts.snap new file mode 100644 index 0000000000000..42d74de580706 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/__snapshots__/risk_score_over_time_area.test.ts.snap @@ -0,0 +1,221 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getRiskScoreOverTimeAreaAttributes should render 1`] = ` +Object { + "description": "", + "references": Array [], + "state": Object { + "adHocDataViews": Object { + "e614baeb-5eca-480c-8885-ba79eaf41372": Object { + "allowNoIndex": false, + "fieldAttrs": Object {}, + "fieldFormats": Object {}, + "id": "e614baeb-5eca-480c-8885-ba79eaf41372", + "name": "ml_host_risk_score_mockSpaceId", + "runtimeFieldMap": Object {}, + "sourceFilters": Array [], + "timeFieldName": "@timestamp", + "title": "ml_host_risk_score_mockSpaceId", + }, + }, + "datasourceStates": Object { + "formBased": Object { + "layers": Object { + "c604baeb-5eca-480c-8885-ba79eaf41372": Object { + "columnOrder": Array [ + "1dd5663b-f062-43f8-8688-fc8166c2ca8e", + ], + "columns": Object { + "1dd5663b-f062-43f8-8688-fc8166c2ca8e": Object { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "isStaticValue": true, + "label": "Risky threshold", + "operationType": "static_value", + "params": Object { + "value": "70", + }, + "references": Array [], + "scale": "ratio", + }, + }, + "incompleteColumns": Object {}, + "linkToLayers": Array [], + "sampling": 1, + }, + "d594baeb-5eca-480c-8885-ba79eaf41372": Object { + "columnOrder": Array [ + "02a55c97-d7a4-440d-ac77-33b941c16189", + "8886a925-4419-4d9a-8498-3bda4ecf1b0a", + ], + "columns": Object { + "02a55c97-d7a4-440d-ac77-33b941c16189": Object { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": Object { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto", + }, + "scale": "interval", + "sourceField": "@timestamp", + }, + "8886a925-4419-4d9a-8498-3bda4ecf1b0a": Object { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Risk score", + "operationType": "max", + "params": Object { + "emptyAsNull": true, + "format": Object { + "id": "number", + "params": Object { + "decimals": 0, + }, + }, + }, + "scale": "ratio", + "sourceField": "host.risk.calculated_score_norm", + }, + }, + "incompleteColumns": Object {}, + "sampling": 1, + }, + }, + }, + "textBased": Object { + "layers": Object {}, + }, + }, + "filters": Array [ + Object { + "meta": Object { + "alias": null, + "disabled": false, + "key": "host.id", + "negate": false, + "params": Object { + "query": "123", + }, + "type": "phrase", + }, + "query": Object { + "match_phrase": Object { + "host.id": "123", + }, + }, + }, + Object { + "meta": Object { + "alias": null, + "disabled": false, + "key": "host.name", + "negate": false, + "params": Object { + "query": "mockHost", + }, + "type": "phrase", + }, + "query": Object { + "match_phrase": Object { + "host.name": "mockHost", + }, + }, + }, + ], + "internalReferences": Array [ + Object { + "id": "e614baeb-5eca-480c-8885-ba79eaf41372", + "name": "indexpattern-datasource-layer-d594baeb-5eca-480c-8885-ba79eaf41372", + "type": "index-pattern", + }, + Object { + "id": "e614baeb-5eca-480c-8885-ba79eaf41372", + "name": "indexpattern-datasource-layer-c604baeb-5eca-480c-8885-ba79eaf41372", + "type": "index-pattern", + }, + ], + "query": Object { + "language": "kql", + "query": "host.name: *", + }, + "visualization": Object { + "axisTitlesVisibilitySettings": Object { + "x": false, + "yLeft": false, + "yRight": false, + }, + "labelsOrientation": Object { + "x": 0, + "yLeft": 0, + "yRight": 0, + }, + "layers": Array [ + Object { + "accessors": Array [ + "8886a925-4419-4d9a-8498-3bda4ecf1b0a", + ], + "layerId": "d594baeb-5eca-480c-8885-ba79eaf41372", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "02a55c97-d7a4-440d-ac77-33b941c16189", + "yConfig": Array [ + Object { + "axisMode": "left", + "forAccessor": "8886a925-4419-4d9a-8498-3bda4ecf1b0a", + }, + ], + }, + Object { + "accessors": Array [ + "1dd5663b-f062-43f8-8688-fc8166c2ca8e", + ], + "layerId": "c604baeb-5eca-480c-8885-ba79eaf41372", + "layerType": "referenceLine", + "yConfig": Array [ + Object { + "axisMode": "left", + "color": "#aa6556", + "fill": "none", + "forAccessor": "1dd5663b-f062-43f8-8688-fc8166c2ca8e", + "icon": "alert", + "iconPosition": "left", + "lineWidth": 2, + "textVisibility": true, + }, + ], + }, + ], + "legend": Object { + "isVisible": false, + "position": "right", + }, + "preferredSeriesType": "line", + "tickLabelsVisibilitySettings": Object { + "x": true, + "yLeft": true, + "yRight": true, + }, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": true, + "xTitle": "", + "yLeftExtent": Object { + "lowerBound": 0, + "mode": "custom", + "upperBound": 100, + }, + "yRightTitle": "", + "yTitle": "", + }, + }, + "title": "host risk score over time", + "visualizationType": "lnsXY", +} +`; diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_donut.ts b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_donut.ts index 167467296a658..da79a1a7b0245 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_donut.ts +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_donut.ts @@ -28,13 +28,13 @@ export const getRiskScoreDonutAttributes: GetLensAttributes = ( metrics: ['75179122-96fc-40e1-93b4-8e9310af5f06'], numberDisplay: 'value', categoryDisplay: 'hide', - legendDisplay: 'hide', + legendDisplay: 'show', nestedLegend: true, layerType: 'data', - legendSize: 'small', - legendPosition: 'right', + legendSize: 'medium', + legendPosition: 'left', percentDecimals: 2, - emptySizeRatio: 0.8, + emptySizeRatio: 0.82, }, ], }, diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.test.ts b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.test.ts new file mode 100644 index 0000000000000..a284a2c1104ee --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.test.ts @@ -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 { renderHook } from '@testing-library/react-hooks'; +import { wrapper } from '../../../mocks'; + +import { useLensAttributes } from '../../../use_lens_attributes'; + +import { getRiskScoreOverTimeAreaAttributes } from './risk_score_over_time_area'; + +jest.mock('../../../../../containers/sourcerer', () => ({ + useSourcererDataView: jest.fn().mockReturnValue({ + selectedPatterns: ['auditbeat-mytest-*'], + dataViewId: 'security-solution-my-test', + indicesExist: true, + }), +})); + +jest.mock('../../../../../utils/route/use_route_spy', () => ({ + useRouteSpy: jest.fn().mockReturnValue([ + { + detailName: 'mockHost', + pageName: 'hosts', + tabName: 'hostRisk', + }, + ]), +})); + +jest.mock('uuid', () => ({ + v4: jest + .fn() + .mockReturnValueOnce('d594baeb-5eca-480c-8885-ba79eaf41372') + .mockReturnValueOnce('c604baeb-5eca-480c-8885-ba79eaf41372') + .mockReturnValueOnce('e614baeb-5eca-480c-8885-ba79eaf41372') + .mockReturnValue('1dd5663b-f062-43f8-8688-fc8166c2ca8e'), +})); + +describe('getRiskScoreOverTimeAreaAttributes', () => { + it('should render', () => { + const { result } = renderHook( + () => + useLensAttributes({ + getLensAttributes: getRiskScoreOverTimeAreaAttributes, + stackByField: 'host', + extraOptions: { + spaceId: 'mockSpaceId', + }, + }), + { wrapper } + ); + + expect(result?.current).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.ts b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.ts new file mode 100644 index 0000000000000..1db72e96db116 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area.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. + */ + +import { v4 as uuidv4 } from 'uuid'; +import type { GetLensAttributes } from '../../../types'; +export const getRiskScoreOverTimeAreaAttributes: GetLensAttributes = ( + stackByField = 'host', + extraOptions = { spaceId: 'default' } +) => { + const layerIds = [uuidv4(), uuidv4()]; + const internalReferenceId = uuidv4(); + const layer2ColumnId = uuidv4(); + return { + title: `${stackByField} risk score over time`, + description: '', + visualizationType: 'lnsXY', + state: { + visualization: { + title: 'Empty XY chart', + legend: { + isVisible: false, + position: 'right', + }, + valueLabels: 'hide', + preferredSeriesType: 'line', + layers: [ + { + layerId: layerIds[0], + accessors: ['8886a925-4419-4d9a-8498-3bda4ecf1b0a'], + position: 'top', + seriesType: 'line', + showGridlines: false, + layerType: 'data', + xAccessor: '02a55c97-d7a4-440d-ac77-33b941c16189', + yConfig: [ + { + forAccessor: '8886a925-4419-4d9a-8498-3bda4ecf1b0a', + axisMode: 'left', + }, + ], + }, + { + layerId: layerIds[1], + layerType: 'referenceLine', + accessors: [layer2ColumnId], + yConfig: [ + { + forAccessor: layer2ColumnId, + axisMode: 'left', + lineWidth: 2, + color: '#aa6556', + icon: 'alert', + textVisibility: true, + fill: 'none', + iconPosition: 'left', + }, + ], + }, + ], + xTitle: '', + axisTitlesVisibilitySettings: { + x: false, + yLeft: false, + yRight: false, + }, + yTitle: '', + yRightTitle: '', + valuesInLegend: true, + labelsOrientation: { + x: 0, + yLeft: 0, + yRight: 0, + }, + tickLabelsVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + yLeftExtent: { + mode: 'custom', + lowerBound: 0, + upperBound: 100, + }, + }, + query: { + query: '', + language: 'kuery', + }, + filters: [], + datasourceStates: { + formBased: { + layers: { + [layerIds[0]]: { + columns: { + '02a55c97-d7a4-440d-ac77-33b941c16189': { + label: '@timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: '@timestamp', + isBucketed: true, + scale: 'interval', + params: { + interval: 'auto', + includeEmptyRows: true, + dropPartials: false, + }, + }, + '8886a925-4419-4d9a-8498-3bda4ecf1b0a': { + label: 'Risk score', + dataType: 'number', + operationType: 'max', + sourceField: `${stackByField}.risk.calculated_score_norm`, + isBucketed: false, + scale: 'ratio', + params: { + format: { + id: 'number', + params: { + decimals: 0, + }, + }, + emptyAsNull: true, + }, + customLabel: true, + }, + }, + columnOrder: [ + '02a55c97-d7a4-440d-ac77-33b941c16189', + '8886a925-4419-4d9a-8498-3bda4ecf1b0a', + ], + sampling: 1, + incompleteColumns: {}, + }, + [layerIds[1]]: { + linkToLayers: [], + columns: { + [layer2ColumnId]: { + label: 'Risky threshold', + dataType: 'number', + operationType: 'static_value', + isStaticValue: true, + isBucketed: false, + scale: 'ratio', + params: { + value: '70', + }, + references: [], + customLabel: true, + }, + }, + columnOrder: [layer2ColumnId], + sampling: 1, + incompleteColumns: {}, + }, + }, + }, + textBased: { + layers: {}, + }, + }, + internalReferences: [ + { + type: 'index-pattern', + id: internalReferenceId, + name: `indexpattern-datasource-layer-${layerIds[0]}`, + }, + { + type: 'index-pattern', + id: internalReferenceId, + name: `indexpattern-datasource-layer-${layerIds[1]}`, + }, + ], + adHocDataViews: { + [internalReferenceId]: { + id: internalReferenceId, + title: `ml_${stackByField}_risk_score_${extraOptions.spaceId}`, + timeFieldName: '@timestamp', + sourceFilters: [], + fieldFormats: {}, + runtimeFieldMap: {}, + fieldAttrs: {}, + allowNoIndex: false, + name: `ml_${stackByField}_risk_score_${extraOptions.spaceId}`, + }, + }, + }, + references: [], + }; +}; diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts b/x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts index ef4830d71bd01..5ef9b3eda38b4 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts @@ -43,7 +43,6 @@ export interface EmbeddableData { export type OnEmbeddableLoaded = (data: EmbeddableData) => void; export interface LensEmbeddableComponentProps { - adHocDataViews?: string[]; applyGlobalQueriesAndFilters?: boolean; extraActions?: Action[]; extraOptions?: ExtraOptions; @@ -107,7 +106,8 @@ export interface ExtraOptions { } export interface VisualizationEmbeddableProps extends LensEmbeddableComponentProps { + donutTextWrapperClassName?: string; + inputId?: InputsModelId.global | InputsModelId.timeline; isDonut?: boolean; label?: string; - inputId?: InputsModelId.global | InputsModelId.timeline; } diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx index c2807d7fd8263..7ec7c9ee168ac 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx @@ -7,6 +7,7 @@ import React, { useCallback, useEffect } from 'react'; import { useDispatch } from 'react-redux'; +import { css } from 'styled-components'; import { ChartLabel } from '../../../overview/components/detection_response/alerts_by_status/chart_label'; import type { VisualizationAlertsByStatusResponse } from '../../../overview/components/detection_response/alerts_by_status/types'; import { useDeepEqualSelector } from '../../hooks/use_selector'; @@ -20,7 +21,15 @@ import type { EmbeddableData, VisualizationEmbeddableProps } from './types'; const VisualizationEmbeddableComponent: React.FC<VisualizationEmbeddableProps> = (props) => { const dispatch = useDispatch(); - const { inputId = InputsModelId.global, id, isDonut, label, onLoad, ...lensPorps } = props; + const { + inputId = InputsModelId.global, + id, + isDonut, + label, + donutTextWrapperClassName, + onLoad, + ...lensPorps + } = props; const { session, refetchByRestartingSession } = useRefetchByRestartingSession({ inputId, queryId: id, @@ -31,7 +40,15 @@ const VisualizationEmbeddableComponent: React.FC<VisualizationEmbeddableProps> = ? parseVisualizationData<VisualizationAlertsByStatusResponse>(inspect?.response) : null; const dataExists = visualizationData != null && visualizationData[0]?.hits.total !== 0; - + const donutTextWrapperStyles = dataExists + ? css` + top: 40%; + right: 12%; + ` + : css` + top: 66%; + right: 12%; + `; const onEmbeddableLoad = useCallback( ({ requests, responses, isLoading }: EmbeddableData) => { dispatch( @@ -78,6 +95,8 @@ const VisualizationEmbeddableComponent: React.FC<VisualizationEmbeddableProps> = dataExists={dataExists} label={label} title={dataExists ? <ChartLabel count={visualizationData[0]?.hits.total} /> : null} + donutTextWrapperClassName={donutTextWrapperClassName} + donutTextWrapperStyles={donutTextWrapperStyles} > <LensEmbeddable {...lensPorps} id={id} onLoad={onEmbeddableLoad} /> </DonutChartWrapper> diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx index 3907232cc1120..5761e98dbe366 100644 --- a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx @@ -18,6 +18,8 @@ import { ThemeProvider } from 'styled-components'; import type { Capabilities } from '@kbn/core/public'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import type { Action } from '@kbn/ui-actions-plugin/public'; +import { CellActionsProvider } from '@kbn/cell-actions'; import { ConsoleManager } from '../../management/components/console'; import type { State } from '../store'; import { createStore } from '../store'; @@ -38,6 +40,7 @@ interface Props { children?: React.ReactNode; store?: Store; onDragEnd?: (result: DropResult, provided: ResponderProvided) => void; + cellActions?: Action[]; } export const kibanaObservable = new BehaviorSubject(createStartServicesMock()); @@ -54,6 +57,7 @@ export const TestProvidersComponent: React.FC<Props> = ({ children, store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage), onDragEnd = jest.fn(), + cellActions = [], }) => { const queryClient = new QueryClient(); return ( @@ -63,7 +67,11 @@ export const TestProvidersComponent: React.FC<Props> = ({ <ThemeProvider theme={() => ({ eui: euiDarkVars, darkMode: true })}> <QueryClientProvider client={queryClient}> <ConsoleManager> - <DragDropContext onDragEnd={onDragEnd}>{children}</DragDropContext> + <CellActionsProvider + getTriggerCompatibleActions={() => Promise.resolve(cellActions)} + > + <DragDropContext onDragEnd={onDragEnd}>{children}</DragDropContext> + </CellActionsProvider> </ConsoleManager> </QueryClientProvider> </ThemeProvider> @@ -81,6 +89,7 @@ const TestProvidersWithPrivilegesComponent: React.FC<Props> = ({ children, store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage), onDragEnd = jest.fn(), + cellActions = [], }) => ( <I18nProvider> <MockKibanaContextProvider> @@ -94,7 +103,9 @@ const TestProvidersWithPrivilegesComponent: React.FC<Props> = ({ } as unknown as Capabilities } > - <DragDropContext onDragEnd={onDragEnd}>{children}</DragDropContext> + <CellActionsProvider getTriggerCompatibleActions={() => Promise.resolve(cellActions)}> + <DragDropContext onDragEnd={onDragEnd}>{children}</DragDropContext> + </CellActionsProvider> </UserPrivilegesProvider> </ThemeProvider> </ReduxStoreProvider> diff --git a/x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx b/x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx index 0dcb861f609c2..daa913a08b8d5 100644 --- a/x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx +++ b/x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx @@ -8,4 +8,7 @@ import { useContext } from 'react'; import { RouterSpyStateContext } from './helpers'; +/** + * @deprecated + */ export const useRouteSpy = () => useContext(RouterSpyStateContext); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx index 535c50057ba53..96f5b938a136a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx @@ -100,6 +100,7 @@ interface AlertsHistogramPanelProps { title?: React.ReactNode; updateDateRange: UpdateDateRange; runtimeMappings?: MappingRuntimeFields; + hideQueryToggle?: boolean; } const NO_LEGEND_DATA: LegendItem[] = []; @@ -136,6 +137,7 @@ export const AlertsHistogramPanel = memo<AlertsHistogramPanelProps>( updateDateRange, titleSize = 'm', runtimeMappings, + hideQueryToggle = false, }) => { const { to, from, deleteQuery, setQuery } = useGlobalTime(false); @@ -349,7 +351,7 @@ export const AlertsHistogramPanel = memo<AlertsHistogramPanelProps>( title={titleText} titleSize={titleSize} toggleStatus={toggleStatus} - toggleQuery={toggleQuery} + toggleQuery={hideQueryToggle ? undefined : toggleQuery} showInspectButton={chartOptionsContextMenu == null} subtitle={!isInitialLoading && showTotalAlertsCount && totalAlerts} isInspectDisabled={isInspectDisabled} diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx b/x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx index 62aa2537f11a5..797167a54207b 100644 --- a/x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { getEmptyTagValue } from '../../../common/components/empty_value'; import { FormattedRelativePreferenceDate } from '../../../common/components/formatted_date'; import type { Columns, ItemsPerRow } from '../paginated_table'; -import { getRowItemDraggables } from '../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../common/components/tables/helpers'; import * as i18n from './translations'; import { @@ -99,11 +99,10 @@ const LAST_SUCCESSFUL_SOURCE_COLUMN: Columns<AuthenticationsEdges, Authenticatio truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.lastSuccess?.source?.ip || null, - isAggregatable: true, + getRowItemsWithActions({ + values: node.lastSuccess?.source?.ip || null, + fieldName: 'source.ip', fieldType: 'ip', - attrName: 'source.ip', idPrefix: `authentications-table-${node._id}-lastSuccessSource`, render: (item) => <NetworkDetailsLink ip={item} />, }), @@ -113,11 +112,10 @@ const LAST_SUCCESSFUL_DESTINATION_COLUMN: Columns<AuthenticationsEdges, Authenti truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.lastSuccess?.host?.name ?? null, - isAggregatable: true, + getRowItemsWithActions({ + values: node.lastSuccess?.host?.name ?? null, + fieldName: 'host.name', fieldType: 'keyword', - attrName: 'host.name', idPrefix: `authentications-table-${node._id}-lastSuccessfulDestination`, render: (item) => <HostDetailsLink hostName={item} />, }), @@ -138,11 +136,10 @@ const LAST_FAILED_SOURCE_COLUMN: Columns<AuthenticationsEdges, AuthenticationsEd truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.lastFailure?.source?.ip || null, - isAggregatable: true, + getRowItemsWithActions({ + values: node.lastFailure?.source?.ip || null, + fieldName: 'source.ip', fieldType: 'ip', - attrName: 'source.ip', idPrefix: `authentications-table-${node._id}-lastFailureSource`, render: (item) => <NetworkDetailsLink ip={item} />, }), @@ -152,13 +149,12 @@ const LAST_FAILED_DESTINATION_COLUMN: Columns<AuthenticationsEdges, Authenticati truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.lastFailure?.host?.name || null, - attrName: 'host.name', + getRowItemsWithActions({ + values: node.lastFailure?.host?.name || null, + fieldName: 'host.name', + fieldType: 'keyword', idPrefix: `authentications-table-${node._id}-lastFailureDestination`, render: (item) => <HostDetailsLink hostName={item} />, - isAggregatable: true, - fieldType: 'ip', }), }; @@ -167,12 +163,11 @@ const USER_COLUMN: Columns<AuthenticationsEdges, AuthenticationsEdges> = { truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.stackedValue, - attrName: 'user.name', - isAggregatable: true, - fieldType: 'keyword', + getRowItemsWithActions({ + values: node.stackedValue, + fieldName: 'user.name', idPrefix: `authentications-table-${node._id}-userName`, + fieldType: 'keyword', render: (item) => <UserDetailsLink userName={item} />, }), }; @@ -182,12 +177,11 @@ const HOST_COLUMN: Columns<AuthenticationsEdges, AuthenticationsEdges> = { truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.stackedValue, - attrName: 'host.name', - isAggregatable: true, - fieldType: 'keyword', + getRowItemsWithActions({ + values: node.stackedValue, + fieldName: 'host.name', idPrefix: `authentications-table-${node._id}-hostName`, + fieldType: 'keyword', render: (item) => <HostDetailsLink hostName={item} />, }), }; diff --git a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.test.tsx b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.test.tsx index c190fb6413e52..829d55b40cd69 100644 --- a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.test.tsx @@ -15,10 +15,16 @@ import { RiskDetailsTabBody } from '.'; import { RiskScoreEntity } from '../../../../../common/search_strategy'; import { HostsType } from '../../../hosts/store/model'; import { UsersType } from '../../../users/store/model'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; jest.mock('../../../containers/risk_score'); jest.mock('../../../../common/containers/query_toggle'); jest.mock('../../../../common/lib/kibana'); +jest.mock('../../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: jest.fn(), +})); +const mockUseIsExperimentalFeatureEnabled = useIsExperimentalFeatureEnabled as jest.Mock; + describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( 'Risk Tab Body entityType: %s', (riskEntity) => { @@ -37,6 +43,7 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( const mockUseQueryToggle = useQueryToggle as jest.Mock; beforeEach(() => { jest.clearAllMocks(); + mockUseIsExperimentalFeatureEnabled.mockReturnValue(false); mockUseRiskScore.mockReturnValue({ loading: false, @@ -83,6 +90,17 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( expect(mockUseRiskScore.mock.calls[0][0].skip).toEqual(false); }); + it('skips when isChartEmbeddablesEnabled is true', () => { + mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + + render( + <TestProviders> + <RiskDetailsTabBody {...defaultProps} /> + </TestProviders> + ); + expect(mockUseRiskScore.mock.calls[0][0].skip).toEqual(true); + }); + it("doesn't skip when at least one toggleStatus is true", () => { mockUseQueryToggle.mockReturnValueOnce({ toggleStatus: true, setToggleStatus: jest.fn() }); mockUseQueryToggle.mockReturnValueOnce({ toggleStatus: false, setToggleStatus: jest.fn() }); diff --git a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.tsx b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.tsx index a7a81a491ee4f..b1ada6d518769 100644 --- a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_details_tab_body/index.tsx @@ -32,6 +32,7 @@ import type { UsersComponentsQueryProps } from '../../../users/pages/navigation/ import type { HostsComponentsQueryProps } from '../../../hosts/pages/navigation/types'; import { useDashboardButtonHref } from '../../../../common/hooks/use_dashboard_button_href'; import { RiskScoresNoDataDetected } from '../risk_score_onboarding/risk_score_no_data_detected'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; const StyledEuiFlexGroup = styled(EuiFlexGroup)` margin-top: ${({ theme }) => theme.eui.euiSizeL}; @@ -85,11 +86,12 @@ const RiskDetailsTabBodyComponent: React.FC< () => (entityName ? buildEntityNameFilter([entityName], riskEntity) : {}), [entityName, riskEntity] ); + const isChartEmbeddablesEnabled = useIsExperimentalFeatureEnabled('chartEmbeddablesEnabled'); const { data, loading, refetch, inspect, isDeprecated, isModuleEnabled } = useRiskScore({ filterQuery, onlyLatest: false, riskEntity, - skip: !overTimeToggleStatus && !contributorsToggleStatus, + skip: (!overTimeToggleStatus && !contributorsToggleStatus) || isChartEmbeddablesEnabled, timerange, }); @@ -152,13 +154,14 @@ const RiskDetailsTabBodyComponent: React.FC< <EuiFlexItem grow={2}> <RiskScoreOverTime from={startDate} - to={endDate} loading={loading} - riskScore={data} queryId={queryId} + riskEntity={riskEntity} + riskScore={data} title={i18n.RISK_SCORE_OVER_TIME(riskEntity)} - toggleStatus={overTimeToggleStatus} + to={endDate} toggleQuery={toggleOverTimeQuery} + toggleStatus={overTimeToggleStatus} /> </EuiFlexItem> diff --git a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.test.tsx b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.test.tsx index d0f4239bae33a..109a51c1a829c 100644 --- a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.test.tsx @@ -10,9 +10,11 @@ import React from 'react'; import { RiskScoreOverTime, scoreFormatter } from '.'; import { TestProviders } from '../../../../common/mock'; import { LineSeries } from '@elastic/charts'; +import { RiskScoreEntity } from '../../../../../common/search_strategy'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; const mockLineSeries = LineSeries as jest.Mock; - +const mockUseIsExperimentalFeatureEnabled = useIsExperimentalFeatureEnabled as jest.Mock; jest.mock('@elastic/charts', () => { const original = jest.requireActual('@elastic/charts'); return { @@ -21,19 +23,35 @@ jest.mock('@elastic/charts', () => { }; }); +jest.mock('../../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: jest.fn(), +})); +jest.mock('../../../../common/components/visualization_actions/visualization_embeddable'); +jest.mock('../../../../common/hooks/use_space_id', () => ({ + useSpaceId: jest.fn().mockReturnValue('default'), +})); + +const props = { + riskEntity: RiskScoreEntity.host, + riskScore: [], + loading: false, + from: '2020-07-07T08:20:18.966Z', + to: '2020-07-08T08:20:18.966Z', + queryId: 'test_query_id', + title: 'test_query_title', + toggleStatus: true, +}; + describe('Risk Score Over Time', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseIsExperimentalFeatureEnabled.mockReturnValue(false); + }); + it('renders', () => { const { queryByTestId } = render( <TestProviders> - <RiskScoreOverTime - riskScore={[]} - loading={false} - from={'2020-07-07T08:20:18.966Z'} - to={'2020-07-08T08:20:18.966Z'} - queryId={'test_query_id'} - title={'test_query_title'} - toggleStatus={true} - /> + <RiskScoreOverTime {...props} /> </TestProviders> ); @@ -43,33 +61,30 @@ describe('Risk Score Over Time', () => { it('renders loader when loading', () => { const { queryByTestId } = render( <TestProviders> - <RiskScoreOverTime - loading={true} - from={'2020-07-07T08:20:18.966Z'} - to={'2020-07-08T08:20:18.966Z'} - queryId={'test_query_id'} - title={'test_query_title'} - toggleStatus={true} - /> + <RiskScoreOverTime {...props} loading={true} /> </TestProviders> ); expect(queryByTestId('RiskScoreOverTime-loading')).toBeInTheDocument(); }); + it('renders VisualizationEmbeddable when isChartEmbeddablesEnabled = true and spaceId exists', () => { + mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + + const { queryByTestId } = render( + <TestProviders> + <RiskScoreOverTime {...props} /> + </TestProviders> + ); + + expect(queryByTestId('visualization-embeddable')).toBeInTheDocument(); + }); + describe('scoreFormatter', () => { it('renders score formatted', () => { render( <TestProviders> - <RiskScoreOverTime - riskScore={[]} - loading={false} - from={'2020-07-07T08:20:18.966Z'} - to={'2020-07-08T08:20:18.966Z'} - queryId={'test_query_id'} - title={'test_query_title'} - toggleStatus={true} - /> + <RiskScoreOverTime {...props} /> </TestProviders> ); diff --git a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx index 68a3727e8bad6..b689541bc898b 100644 --- a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx @@ -27,14 +27,23 @@ import { HeaderSection } from '../../../../common/components/header_section'; import { InspectButton, InspectButtonContainer } from '../../../../common/components/inspect'; import * as i18n from './translations'; import { PreferenceFormattedDate } from '../../../../common/components/formatted_date'; -import type { HostRiskScore, UserRiskScore } from '../../../../../common/search_strategy'; +import type { + HostRiskScore, + RiskScoreEntity, + UserRiskScore, +} from '../../../../../common/search_strategy'; import { isUserRiskScore } from '../../../../../common/search_strategy'; +import { useSpaceId } from '../../../../common/hooks/use_space_id'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { VisualizationEmbeddable } from '../../../../common/components/visualization_actions/visualization_embeddable'; +import { getRiskScoreOverTimeAreaAttributes } from '../../../../common/components/visualization_actions/lens_attributes/common/risk_scores/risk_score_over_time_area'; export interface RiskScoreOverTimeProps { from: string; to: string; loading: boolean; riskScore?: Array<HostRiskScore | UserRiskScore>; + riskEntity: RiskScoreEntity; queryId: string; title: string; toggleStatus: boolean; @@ -63,6 +72,7 @@ const RiskScoreOverTimeComponent: React.FC<RiskScoreOverTimeProps> = ({ riskScore, loading, queryId, + riskEntity, title, toggleStatus, toggleQuery, @@ -87,7 +97,15 @@ const RiskScoreOverTimeComponent: React.FC<RiskScoreOverTimeProps> = ({ .reverse() ?? [], [riskScore] ); - + const spaceId = useSpaceId(); + const isChartEmbeddablesEnabled = useIsExperimentalFeatureEnabled('chartEmbeddablesEnabled'); + const timerange = useMemo( + () => ({ + from, + to, + }), + [from, to] + ); return ( <InspectButtonContainer> <EuiPanel hasBorder data-test-subj="RiskScoreOverTime"> @@ -100,7 +118,7 @@ const RiskScoreOverTimeComponent: React.FC<RiskScoreOverTimeProps> = ({ toggleStatus={toggleStatus} /> </EuiFlexItem> - {toggleStatus && ( + {toggleStatus && !isChartEmbeddablesEnabled && ( <EuiFlexItem grow={false}> <InspectButton queryId={queryId} title={title} /> </EuiFlexItem> @@ -110,84 +128,96 @@ const RiskScoreOverTimeComponent: React.FC<RiskScoreOverTimeProps> = ({ {toggleStatus && ( <EuiFlexGroup gutterSize="none" direction="column"> <EuiFlexItem grow={1}> - <div style={{ height: DEFAULT_CHART_HEIGHT }}> - {loading ? ( - <LoadingChart size="l" data-test-subj="RiskScoreOverTime-loading" /> - ) : ( - <Chart> - <Settings - {...chartDefaultSettings} - theme={theme} - tooltip={{ - headerFormatter, - }} - /> - <Axis - id="bottom" - position={Position.Bottom} - tickFormat={dataTimeFormatter} - showGridLines - gridLine={{ - strokeWidth: 1, - opacity: 1, - dash: [3, 5], - }} - /> - <Axis - domain={{ - min: 0, - max: 100, - }} - id="left" - position={Position.Left} - ticks={3} - style={{ - tickLine: { - visible: false, - }, - tickLabel: { - padding: 10, - }, - }} - /> - <LineSeries - id="RiskOverTime" - name={i18n.RISK_SCORE} - xScaleType={ScaleType.Time} - yScaleType={ScaleType.Linear} - xAccessor="x" - yAccessors={['y']} - timeZone={timeZone} - data={graphData} - tickFormat={scoreFormatter} - /> - <LineAnnotation - id="RiskOverTime_annotation" - domainType={AnnotationDomainType.YDomain} - dataValues={[ - { - dataValue: RISKY_THRESHOLD, - details: `${RISKY_THRESHOLD}`, - header: i18n.RISK_THRESHOLD, - }, - ]} - markerPosition="left" - style={{ - line: { + {isChartEmbeddablesEnabled && spaceId ? ( + <VisualizationEmbeddable + applyGlobalQueriesAndFilters={false} + timerange={timerange} + getLensAttributes={getRiskScoreOverTimeAreaAttributes} + stackByField={riskEntity} + id={`${queryId}-embeddable`} + height="180px" + extraOptions={{ spaceId }} + /> + ) : ( + <div style={{ height: DEFAULT_CHART_HEIGHT }}> + {loading ? ( + <LoadingChart size="l" data-test-subj="RiskScoreOverTime-loading" /> + ) : ( + <Chart> + <Settings + {...chartDefaultSettings} + theme={theme} + tooltip={{ + headerFormatter, + }} + /> + <Axis + id="bottom" + position={Position.Bottom} + tickFormat={dataTimeFormatter} + showGridLines + gridLine={{ strokeWidth: 1, - stroke: euiThemeVars.euiColorDanger, opacity: 1, - }, - }} - marker={ - <StyledEuiText color={euiThemeVars.euiColorDarkestShade}> - {i18n.RISKY} - </StyledEuiText> - } - /> - </Chart> - )} - </div> + dash: [3, 5], + }} + /> + <Axis + domain={{ + min: 0, + max: 100, + }} + id="left" + position={Position.Left} + ticks={3} + style={{ + tickLine: { + visible: false, + }, + tickLabel: { + padding: 10, + }, + }} + /> + <LineSeries + id="RiskOverTime" + name={i18n.RISK_SCORE} + xScaleType={ScaleType.Time} + yScaleType={ScaleType.Linear} + xAccessor="x" + yAccessors={['y']} + timeZone={timeZone} + data={graphData} + tickFormat={scoreFormatter} + /> + <LineAnnotation + id="RiskOverTime_annotation" + domainType={AnnotationDomainType.YDomain} + dataValues={[ + { + dataValue: RISKY_THRESHOLD, + details: `${RISKY_THRESHOLD}`, + header: i18n.RISK_THRESHOLD, + }, + ]} + markerPosition="left" + style={{ + line: { + strokeWidth: 1, + stroke: euiThemeVars.euiColorDanger, + opacity: 1, + }, + }} + marker={ + <StyledEuiText color={euiThemeVars.euiColorDarkestShade}> + {i18n.RISKY} + </StyledEuiText> + } + /> + </Chart> + )} + </div> + )} </EuiFlexItem> </EuiFlexGroup> )} diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/host_risk_score_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/hosts/components/host_risk_score_table/columns.tsx index b6c34088bc592..9142ac1b2a226 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/components/host_risk_score_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/components/host_risk_score_table/columns.tsx @@ -7,22 +7,16 @@ import React from 'react'; import { EuiIcon, EuiLink, EuiText, EuiToolTip } from '@elastic/eui'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; -import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { HostDetailsLink } from '../../../../common/components/links'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; import type { HostRiskScoreColumns } from '.'; - import * as i18n from './translations'; import { HostsTableType } from '../../store/model'; import type { RiskSeverity } from '../../../../../common/search_strategy'; import { RiskScoreFields } from '../../../../../common/search_strategy'; import { RiskScore } from '../../../components/risk_score/severity/common'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export const getHostRiskScoreColumns = ({ dispatchSeverityUpdate, @@ -37,31 +31,20 @@ export const getHostRiskScoreColumns = ({ sortable: true, render: (hostName) => { if (hostName != null && hostName.length > 0) { - const id = escapeDataProviderId(`host-risk-score-table-hostName-${hostName}`); return ( - <DraggableWrapper - key={id} - dataProvider={{ - and: [], - enabled: true, - excluded: false, - id, - name: hostName, - kqlQuery: '', - queryMatch: { field: 'host.name', value: hostName, operator: IS_OPERATOR }, + <CellActions + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'host.name', + value: hostName, + type: 'keyword', }} - isAggregatable={true} - fieldType={'keyword'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <HostDetailsLink hostName={hostName} hostTab={HostsTableType.risk} /> - ) - } - /> + > + <HostDetailsLink hostName={hostName} hostTab={HostsTableType.risk} /> + </CellActions> ); } return getEmptyTagValue(); diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx index d1214b0d97026..188d5eb8b3809 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx @@ -7,23 +7,16 @@ import { EuiIcon, EuiLink, EuiText, EuiToolTip } from '@elastic/eui'; import React from 'react'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; -import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { HostDetailsLink } from '../../../../common/components/links'; import { FormattedRelativePreferenceDate } from '../../../../common/components/formatted_date'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; -import { DefaultDraggable } from '../../../../common/components/draggables'; import type { HostsTableColumns } from '.'; - import * as i18n from './translations'; import type { Maybe, RiskSeverity } from '../../../../../common/search_strategy'; import { VIEW_HOSTS_BY_SEVERITY } from '../host_risk_score_table/translations'; import { RiskScore } from '../../../components/risk_score/severity/common'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export const getHostsColumns = ( showRiskColumn: boolean, @@ -38,31 +31,20 @@ export const getHostsColumns = ( sortable: true, render: (hostName) => { if (hostName != null && hostName.length > 0) { - const id = escapeDataProviderId(`hosts-table-hostName-${hostName[0]}`); return ( - <DraggableWrapper - key={id} - dataProvider={{ - and: [], - enabled: true, - excluded: false, - id, - name: hostName[0], - kqlQuery: '', - queryMatch: { field: 'host.name', value: hostName[0], operator: IS_OPERATOR }, + <CellActions + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'host.name', + value: hostName[0], + type: 'keyword', }} - isAggregatable={true} - fieldType={'keyword'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <HostDetailsLink hostName={hostName[0]} /> - ) - } - /> + > + <HostDetailsLink hostName={hostName[0]} /> + </CellActions> ); } return getEmptyTagValue(); @@ -107,14 +89,19 @@ export const getHostsColumns = ( render: (hostOsName) => { if (hostOsName != null) { return ( - <DefaultDraggable - id={`host-page-draggable-host.os.name-${hostOsName[0]}`} - field={'host.os.name'} - value={hostOsName[0]} - isDraggable={false} - hideTopN={true} - tooltipContent={null} - /> + <CellActions + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'host.os.name', + value: hostOsName[0], + type: 'keyword', + }} + > + {hostOsName} + </CellActions> ); } return getEmptyTagValue(); @@ -129,14 +116,19 @@ export const getHostsColumns = ( render: (hostOsVersion) => { if (hostOsVersion != null) { return ( - <DefaultDraggable - id={`host-page-draggable-host.os.version-${hostOsVersion[0]}`} - field={'host.os.version'} - value={hostOsVersion[0]} - isDraggable={false} - hideTopN={true} - tooltipContent={null} - /> + <CellActions + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'host.os.version', + value: hostOsVersion[0], + type: 'keyword', + }} + > + {hostOsVersion} + </CellActions> ); } return getEmptyTagValue(); diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx b/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx index ceef9e8f3bff3..81c1edebf04c3 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx @@ -15,9 +15,8 @@ import { defaultToEmptyTag, getEmptyValue } from '../../../../common/components/ import { HostDetailsLink } from '../../../../common/components/links'; import type { Columns, ItemsPerRow } from '../../../components/paginated_table'; import { PaginatedTable } from '../../../components/paginated_table'; - import * as i18n from './translations'; -import { getRowItemDraggables } from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; import { HostsType } from '../../store/model'; import { useDeepEqualSelector } from '../../../../common/hooks/use_selector'; @@ -147,15 +146,14 @@ const getUncommonColumns = (): UncommonProcessTableColumns => [ name: i18n.NAME, truncateText: false, mobileOptions: { show: true }, + width: '20%', render: ({ node }) => - getRowItemDraggables({ - rowItems: node.process.name, - attrName: 'process.name', - idPrefix: `uncommon-process-table-${node._id}-processName`, - isAggregatable: true, + getRowItemsWithActions({ + values: node.process.name, + fieldName: 'process.name', fieldType: 'keyword', + idPrefix: `uncommon-process-table-${node._id}-processName`, }), - width: '20%', }, { align: 'right', @@ -177,43 +175,41 @@ const getUncommonColumns = (): UncommonProcessTableColumns => [ name: i18n.HOSTS, truncateText: false, mobileOptions: { show: true }, + width: '25%', render: ({ node }) => - getRowItemDraggables({ - rowItems: getHostNames(node.hosts), - attrName: 'host.name', + getRowItemsWithActions({ + values: getHostNames(node.hosts), + fieldName: 'host.name', + fieldType: 'keyword', idPrefix: `uncommon-process-table-${node._id}-processHost`, render: (item) => <HostDetailsLink hostName={item} />, - isAggregatable: true, - fieldType: 'keyword', }), - width: '25%', }, { name: i18n.LAST_COMMAND, truncateText: false, mobileOptions: { show: true }, + width: '25%', render: ({ node }) => - getRowItemDraggables({ - rowItems: node.process != null ? node.process.args : null, - attrName: 'process.args', - idPrefix: `uncommon-process-table-${node._id}-processArgs`, - displayCount: 1, // TODO: Change this back once we have improved the UI - isAggregatable: true, + getRowItemsWithActions({ + values: node.process != null ? node.process.args : null, + fieldName: 'process.args', fieldType: 'keyword', + idPrefix: `uncommon-process-table-${node._id}-processArgs`, + render: (item) => <HostDetailsLink hostName={item} />, + displayCount: 1, }), - width: '25%', }, { name: i18n.LAST_USER, truncateText: false, mobileOptions: { show: true }, render: ({ node }) => - getRowItemDraggables({ - rowItems: node.user != null ? node.user.name : null, - attrName: 'user.name', - idPrefix: `uncommon-process-table-${node._id}-processUser`, - isAggregatable: true, + getRowItemsWithActions({ + values: node.user != null ? node.user.name : null, + fieldName: 'user.name', fieldType: 'keyword', + idPrefix: `uncommon-process-table-${node._id}-processUser`, }), }, ]; diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts b/x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts index bc0eb450d4fea..7fe50385d9034 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts +++ b/x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts @@ -73,10 +73,3 @@ export const VIEW_DASHBOARD_BUTTON = i18n.translate( defaultMessage: 'View source dashboard', } ); - -export const HOST_RISK_SCORE_OVER_TIME = i18n.translate( - 'xpack.securitySolution.hosts.navigaton.hostScoreOverTimeTitle', - { - defaultMessage: 'Host risk score over time', - } -); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx index 7de86b8cde273..72e4268eb399e 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx @@ -8,20 +8,16 @@ import numeral from '@elastic/numeral'; import React from 'react'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import type { NetworkDnsItem } from '../../../../../common/search_strategy'; import { NetworkDnsFields } from '../../../../../common/search_strategy'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; import { defaultToEmptyTag, getEmptyTagValue } from '../../../../common/components/empty_value'; import type { Columns } from '../../../components/paginated_table'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; import { PreferenceFormattedBytes } from '../../../../common/components/formatted_bytes'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; import * as i18n from './translations'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export type NetworkDnsColumns = [ Columns<NetworkDnsItem['dnsName']>, Columns<NetworkDnsItem['queryCount']>, @@ -39,35 +35,21 @@ export const getNetworkDnsColumns = (): NetworkDnsColumns => [ sortable: true, render: (dnsName) => { if (dnsName != null) { - const id = escapeDataProviderId(`networkDns-table--name-${dnsName}`); return ( - <DraggableWrapper - key={id} - dataProvider={{ - and: [], - enabled: true, - id, - name: dnsName, - excluded: false, - kqlQuery: '', - queryMatch: { - field: 'dns.question.registered_domain', - value: dnsName, - operator: IS_OPERATOR, - }, + <CellActions + key={escapeDataProviderId(`networkDns-table--name-${dnsName}`)} + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'dns.question.registered_domain', + value: dnsName, + type: 'keyword', }} - isAggregatable={true} - fieldType={'keyword'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - defaultToEmptyTag(dnsName) - ) - } - /> + > + {defaultToEmptyTag(dnsName)} + </CellActions> ); } else { return getEmptyTagValue(); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx index ae3df4159e8da..76aafb69da9aa 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx @@ -18,10 +18,7 @@ import { NetworkDetailsLink } from '../../../../common/components/links'; import type { Columns } from '../../../components/paginated_table'; import * as i18n from './translations'; -import { - getRowItemDraggable, - getRowItemDraggables, -} from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; export type NetworkHttpColumns = [ Columns<NetworkHttpEdges>, Columns<NetworkHttpEdges>, @@ -37,13 +34,12 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.METHOD, render: ({ node: { methods, path } }) => { return Array.isArray(methods) && methods.length > 0 - ? getRowItemDraggables({ - attrName: 'http.request.method', - displayCount: 3, + ? getRowItemsWithActions({ + fieldName: 'http.request.method', + values: methods, idPrefix: escapeDataProviderId(`${tableId}-table-methods-${path}`), - rowItems: methods, - isAggregatable: true, fieldType: 'keyword', + displayCount: 3, }) : getEmptyTagValue(); }, @@ -52,12 +48,10 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.DOMAIN, render: ({ node: { domains, path } }) => Array.isArray(domains) && domains.length > 0 - ? getRowItemDraggables({ - attrName: 'url.domain', - displayCount: 3, + ? getRowItemsWithActions({ + values: domains, + fieldName: 'url.domain', idPrefix: escapeDataProviderId(`${tableId}-table-domains-${path}`), - rowItems: domains, - isAggregatable: true, fieldType: 'keyword', }) : getEmptyTagValue(), @@ -67,11 +61,10 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.PATH, render: (path) => path != null - ? getRowItemDraggable({ - attrName: 'url.path', + ? getRowItemsWithActions({ + values: [path], + fieldName: 'url.path', idPrefix: escapeDataProviderId(`${tableId}-table-path-${path}`), - rowItem: path, - isAggregatable: true, fieldType: 'keyword', }) : getEmptyTagValue(), @@ -80,13 +73,12 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.STATUS, render: ({ node: { statuses, path } }) => Array.isArray(statuses) && statuses.length > 0 - ? getRowItemDraggables({ - attrName: 'http.response.status_code', - displayCount: 3, + ? getRowItemsWithActions({ + values: statuses, + fieldName: 'http.response.status_code', idPrefix: escapeDataProviderId(`${tableId}-table-statuses-${path}`), - rowItems: statuses, - isAggregatable: true, fieldType: 'keyword', + displayCount: 3, }) : getEmptyTagValue(), }, @@ -94,11 +86,10 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.LAST_HOST, render: ({ node: { lastHost, path } }) => lastHost != null - ? getRowItemDraggable({ - attrName: 'host.name', + ? getRowItemsWithActions({ + values: [lastHost], + fieldName: 'host.name', idPrefix: escapeDataProviderId(`${tableId}-table-lastHost-${path}`), - rowItem: lastHost, - isAggregatable: true, fieldType: 'keyword', }) : getEmptyTagValue(), @@ -107,13 +98,12 @@ export const getNetworkHttpColumns = (tableId: string): NetworkHttpColumns => [ name: i18n.LAST_SOURCE_IP, render: ({ node: { lastSourceIp, path } }) => lastSourceIp != null - ? getRowItemDraggable({ - attrName: 'source.ip', + ? getRowItemsWithActions({ + values: [lastSourceIp], + fieldName: 'source.ip', idPrefix: escapeDataProviderId(`${tableId}-table-lastSourceIp-${path}`), - rowItem: lastSourceIp, - render: () => <NetworkDetailsLink ip={lastSourceIp} />, - isAggregatable: true, fieldType: 'keyword', + render: () => <NetworkDetailsLink ip={lastSourceIp} />, }) : getEmptyTagValue(), }, diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx index af7fe2f42e63b..b84446d844a94 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx @@ -9,24 +9,19 @@ import { get } from 'lodash/fp'; import numeral from '@elastic/numeral'; import React from 'react'; import type { DataViewBase } from '@kbn/es-query'; -import { CountryFlagAndName } from '../source_destination/country_flag'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import type { NetworkTopCountriesEdges, TopNetworkTablesEcsField, } from '../../../../../common/search_strategy/security_solution/network'; import { FlowTargetSourceDest } from '../../../../../common/search_strategy/security_solution/network'; import { networkModel } from '../../store'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; -import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import { defaultToEmptyTag, getEmptyTagValue } from '../../../../common/components/empty_value'; import type { Columns } from '../../../components/paginated_table'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; import * as i18n from './translations'; import { PreferenceFormattedBytes } from '../../../../common/components/formatted_bytes'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export type NetworkTopCountriesColumns = [ Columns<NetworkTopCountriesEdges>, @@ -59,31 +54,20 @@ export const getNetworkTopCountriesColumns = ( const id = escapeDataProviderId(`${tableId}-table-${flowTarget}-country-${geo}`); if (geo != null) { return ( - <DraggableWrapper + <CellActions key={id} - dataProvider={{ - and: [], - enabled: true, - id, - name: geo, - excluded: false, - kqlQuery: '', - queryMatch: { field: geoAttr, value: geo, operator: IS_OPERATOR }, + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: geoAttr, + value: geo, + type: 'keyword', }} - isAggregatable={true} - fieldType={'keyword'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <> - <CountryFlagAndName countryCode={geo} /> - </> - ) - } - /> + > + {defaultToEmptyTag(geo)} + </CellActions> ); } else { return getEmptyTagValue(); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx index ef36956ff98a6..fdef6c214e4f5 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx @@ -9,6 +9,7 @@ import { get } from 'lodash/fp'; import numeral from '@elastic/numeral'; import React from 'react'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { CountryFlag } from '../source_destination/country_flag'; import type { AutonomousSystemItem, @@ -17,22 +18,14 @@ import type { } from '../../../../../common/search_strategy'; import { FlowTargetSourceDest } from '../../../../../common/search_strategy'; import { networkModel } from '../../store'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { NetworkDetailsLink } from '../../../../common/components/links'; import type { Columns } from '../../../components/paginated_table'; -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; import * as i18n from './translations'; -import { - getRowItemDraggable, - getRowItemDraggables, -} from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; import { PreferenceFormattedBytes } from '../../../../common/components/formatted_bytes'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export type NetworkTopNFlowColumns = [ Columns<NetworkTopNFlowEdges>, @@ -70,57 +63,37 @@ export const getNetworkTopNFlowColumns = ( if (ip != null) { return ( <> - <DraggableWrapper + <CellActions key={id} - dataProvider={{ - and: [], - enabled: true, - id, - name: ip, - excluded: false, - kqlQuery: '', - queryMatch: { field: ipAttr, value: ip, operator: IS_OPERATOR }, + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: ipAttr, + value: ip, + type: 'keyword', }} - isAggregatable={true} - fieldType={'ip'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <NetworkDetailsLink ip={ip} flowTarget={flowTarget} /> - ) - } - /> + > + <NetworkDetailsLink ip={ip} flowTarget={flowTarget} /> + </CellActions> {geo && ( - <DraggableWrapper + <CellActions key={`${id}-${geo}`} - dataProvider={{ - and: [], - enabled: true, - id: `${id}-${geo}`, - name: geo, - excluded: false, - kqlQuery: '', - queryMatch: { field: geoAttrName, value: geo, operator: IS_OPERATOR }, + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: geoAttrName, + value: geo, + type: 'geo_point', }} - isAggregatable={true} - fieldType={'geo_point'} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <> - {' '} - <CountryFlag countryCode={geo} /> {geo} - </> - ) - } - /> + > + {' '} + <CountryFlag countryCode={geo} /> {geo} + </CellActions> )} </> ); @@ -140,13 +113,12 @@ export const getNetworkTopNFlowColumns = ( if (Array.isArray(domains) && domains.length > 0) { const id = escapeDataProviderId(`${tableId}-table-${ip}`); - return getRowItemDraggables({ - rowItems: domains, - attrName: domainAttr, + return getRowItemsWithActions({ + values: domains, + fieldName: domainAttr, + fieldType: 'keyword', idPrefix: id, displayCount: 1, - isAggregatable: true, - fieldType: 'keyword', }); } else { return getEmptyTagValue(); @@ -164,22 +136,20 @@ export const getNetworkTopNFlowColumns = ( return ( <> {as.name && - getRowItemDraggable({ - rowItem: as.name, - attrName: `${flowTarget}.as.organization.name`, - idPrefix: `${id}-name`, - isAggregatable: true, + getRowItemsWithActions({ + values: [as.name], + fieldName: `${flowTarget}.as.organization.name`, fieldType: 'keyword', + idPrefix: `${id}-name`, })} {as.number && ( <> {' '} - {getRowItemDraggable({ - rowItem: `${as.number}`, - attrName: `${flowTarget}.as.number`, + {getRowItemsWithActions({ + values: [`${as.number}`], + fieldName: `${flowTarget}.as.number`, idPrefix: `${id}-number`, - isAggregatable: true, fieldType: 'keyword', })} </> diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx index b76d438a4fd01..ca348ec7c73a7 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx @@ -10,10 +10,7 @@ import moment from 'moment'; import type { NetworkTlsNode } from '../../../../../common/search_strategy'; import type { Columns } from '../../../components/paginated_table'; -import { - getRowItemDraggables, - getRowItemDraggable, -} from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; import { LocalizedDateTooltip } from '../../../../common/components/localized_date_tooltip'; import { PreferenceFormattedDate } from '../../../../common/components/formatted_date'; @@ -35,12 +32,11 @@ export const getTlsColumns = (tableId: string): TlsColumns => [ mobileOptions: { show: true }, sortable: false, render: ({ _id, issuers }) => - getRowItemDraggables({ - rowItems: issuers, - attrName: 'tls.server.issuer', - idPrefix: `${tableId}-${_id}-table-issuers`, - isAggregatable: true, + getRowItemsWithActions({ + values: issuers, + fieldName: 'tls.server.issuer', fieldType: 'keyword', + idPrefix: `${tableId}-${_id}-table-issuers`, }), }, { @@ -50,12 +46,11 @@ export const getTlsColumns = (tableId: string): TlsColumns => [ mobileOptions: { show: true }, sortable: false, render: ({ _id, subjects }) => - getRowItemDraggables({ - rowItems: subjects, - attrName: 'tls.server.subject', - idPrefix: `${tableId}-${_id}-table-subjects`, - isAggregatable: true, + getRowItemsWithActions({ + values: subjects, + fieldName: 'tls.server.subject', fieldType: 'keyword', + idPrefix: `${tableId}-${_id}-table-subjects`, }), }, { @@ -65,12 +60,11 @@ export const getTlsColumns = (tableId: string): TlsColumns => [ mobileOptions: { show: true }, sortable: true, render: (sha1) => - getRowItemDraggable({ - rowItem: sha1, - attrName: 'tls.server.hash.sha1', - idPrefix: `${tableId}-${sha1}-table-sha1`, - isAggregatable: true, + getRowItemsWithActions({ + values: sha1 ? [sha1] : undefined, + fieldName: 'tls.server.hash.sha1', fieldType: 'keyword', + idPrefix: `${tableId}-${sha1}-table-sha1`, }), }, { @@ -80,12 +74,11 @@ export const getTlsColumns = (tableId: string): TlsColumns => [ mobileOptions: { show: true }, sortable: false, render: ({ _id, ja3 }) => - getRowItemDraggables({ - rowItems: ja3, - attrName: 'tls.server.ja3s', - idPrefix: `${tableId}-${_id}-table-ja3`, - isAggregatable: true, + getRowItemsWithActions({ + values: ja3, + fieldName: 'tls.server.ja3s', fieldType: 'keyword', + idPrefix: `${tableId}-${_id}-table-ja3`, }), }, { @@ -95,9 +88,10 @@ export const getTlsColumns = (tableId: string): TlsColumns => [ mobileOptions: { show: true }, sortable: false, render: ({ _id, notAfter }) => - getRowItemDraggables({ - rowItems: notAfter, - attrName: 'tls.server.not_after', + getRowItemsWithActions({ + values: notAfter, + fieldName: 'tls.server.not_after', + fieldType: 'date', idPrefix: `${tableId}-${_id}-table-notAfter`, render: (validUntil) => ( <LocalizedDateTooltip date={moment(new Date(validUntil)).toDate()}> diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx index 12ffc2b3a834b..45c0632aa3863 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx @@ -10,10 +10,7 @@ import { defaultToEmptyTag } from '../../../../common/components/empty_value'; import type { Columns } from '../../../components/paginated_table'; import * as i18n from './translations'; -import { - getRowItemDraggables, - getRowItemDraggable, -} from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; export type UsersColumns = [ Columns<NetworkUsersItem['name']>, @@ -34,12 +31,11 @@ export const getUsersColumns = ( mobileOptions: { show: true }, sortable: true, render: (userName) => - getRowItemDraggable({ - rowItem: userName, - attrName: 'user.name', - idPrefix: `${tableId}-table-${flowTarget}-user`, - isAggregatable: true, + getRowItemsWithActions({ + values: userName ? [userName] : undefined, + fieldName: 'user.name', fieldType: 'keyword', + idPrefix: `${tableId}-table-${flowTarget}-user`, }), }, { @@ -49,12 +45,11 @@ export const getUsersColumns = ( mobileOptions: { show: true }, sortable: false, render: (userIds) => - getRowItemDraggables({ - rowItems: userIds, - attrName: 'user.id', - idPrefix: `${tableId}-table-${flowTarget}`, - isAggregatable: true, + getRowItemsWithActions({ + values: userIds, + fieldName: 'user.id', fieldType: 'keyword', + idPrefix: `${tableId}-table-${flowTarget}`, }), }, { @@ -64,12 +59,11 @@ export const getUsersColumns = ( mobileOptions: { show: true }, sortable: false, render: (groupNames) => - getRowItemDraggables({ - rowItems: groupNames, - attrName: 'user.group.name', - idPrefix: `${tableId}-table-${flowTarget}`, - isAggregatable: true, + getRowItemsWithActions({ + values: groupNames, + fieldName: 'user.group.name', fieldType: 'keyword', + idPrefix: `${tableId}-table-${flowTarget}`, }), }, { @@ -79,12 +73,11 @@ export const getUsersColumns = ( mobileOptions: { show: true }, sortable: false, render: (groupId) => - getRowItemDraggables({ - rowItems: groupId, - attrName: 'user.group.id', - idPrefix: `${tableId}-table-${flowTarget}`, - isAggregatable: true, + getRowItemsWithActions({ + values: groupId, + fieldName: 'user.group.id', fieldType: 'keyword', + idPrefix: `${tableId}-table-${flowTarget}`, }), }, { diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx b/x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx index 7430a4ece4257..f7d605789b082 100644 --- a/x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx @@ -13,6 +13,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiSpacer } from '@elasti import { getEsQueryConfig } from '@kbn/data-plugin/common'; import { buildEsQuery } from '@kbn/es-query'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { AlertsByStatus } from '../../../../overview/components/detection_response/alerts_by_status'; import { useSignalIndex } from '../../../../detections/containers/detection_engine/alerts/use_signal_index'; import { InputsModelId } from '../../../../common/store/inputs/constants'; @@ -52,6 +53,7 @@ import { useAlertsPrivileges } from '../../../../detections/containers/detection import { navTabsNetworkDetails } from './nav_tabs'; import { NetworkDetailsTabs } from './details_tabs'; import { useInstalledSecurityJobNameById } from '../../../../common/components/ml/hooks/use_installed_security_jobs'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export { getTrailingBreadcrumbs } from './utils'; @@ -148,11 +150,6 @@ const NetworkDetailsComponent: React.FC = () => { aggregationInterval: 'auto', }); - const headerDraggableArguments = useMemo( - () => ({ field: `${flowTarget}.ip`, value: ip }), - [flowTarget, ip] - ); - const entityFilter = useMemo( () => ({ field: `${flowTarget}.ip`, @@ -173,7 +170,6 @@ const NetworkDetailsComponent: React.FC = () => { <HeaderPage border data-test-subj="network-details-headline" - draggableArguments={headerDraggableArguments} subtitle={ <LastEventTime indexKey={LastEventIndexKey.ipDetails} @@ -181,7 +177,16 @@ const NetworkDetailsComponent: React.FC = () => { ip={ip} /> } - title={ip} + title={ + <CellActions + field={{ type: 'ip', value: ip, name: `${flowTarget}.ip` }} + mode={CellActionsMode.HOVER} + visibleCellActions={5} + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + > + {ip} + </CellActions> + } > <FlowTargetSelectConnected flowTarget={flowTarget} /> </HeaderPage> diff --git a/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx b/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx index c720b4393b372..3f545462a30aa 100644 --- a/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx @@ -19,7 +19,7 @@ import { import type { Columns, Criteria, ItemsPerRow } from '../../../components/paginated_table'; import { PaginatedTable } from '../../../components/paginated_table'; -import { getRowItemDraggables } from '../../../../common/components/tables/helpers'; +import { getRowItemsWithActions } from '../../../../common/components/tables/helpers'; import { useDeepEqualSelector } from '../../../../common/hooks/use_selector'; import * as i18n from './translations'; @@ -80,12 +80,11 @@ const getUsersColumns = ( mobileOptions: { show: true }, render: (name) => name != null && name.length > 0 - ? getRowItemDraggables({ - rowItems: [name], - attrName: 'user.name', + ? getRowItemsWithActions({ + fieldName: 'user.name', + values: [name], idPrefix: `users-table-${name}-name`, render: (item) => <UserDetailsLink userName={item} />, - isAggregatable: true, fieldType: 'keyword', }) : getOrEmptyTagFromValue(name), @@ -106,11 +105,10 @@ const getUsersColumns = ( mobileOptions: { show: true }, render: (domain) => domain != null && domain.length > 0 - ? getRowItemDraggables({ - rowItems: [domain], - attrName: 'user.domain', + ? getRowItemsWithActions({ + fieldName: 'user.domain', + values: [domain], idPrefix: `users-table-${domain}-domain`, - isAggregatable: true, fieldType: 'keyword', }) : getOrEmptyTagFromValue(domain), diff --git a/x-pack/plugins/security_solution/public/explore/users/components/user_risk_score_table/columns.tsx b/x-pack/plugins/security_solution/public/explore/users/components/user_risk_score_table/columns.tsx index 5359739dc8609..b2734cdf0513b 100644 --- a/x-pack/plugins/security_solution/public/explore/users/components/user_risk_score_table/columns.tsx +++ b/x-pack/plugins/security_solution/public/explore/users/components/user_risk_score_table/columns.tsx @@ -7,23 +7,17 @@ import React from 'react'; import { EuiIcon, EuiLink, EuiText, EuiToolTip } from '@elastic/eui'; -import { - DragEffects, - DraggableWrapper, -} from '../../../../common/components/drag_and_drop/draggable_wrapper'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import { escapeDataProviderId } from '../../../../common/components/drag_and_drop/helpers'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; - -import { IS_OPERATOR } from '../../../../timelines/components/timeline/data_providers/data_provider'; -import { Provider } from '../../../../timelines/components/timeline/data_providers/provider'; import type { UserRiskScoreColumns } from '.'; - import * as i18n from './translations'; import { RiskScore } from '../../../components/risk_score/severity/common'; import type { RiskSeverity } from '../../../../../common/search_strategy'; import { RiskScoreFields } from '../../../../../common/search_strategy'; import { UserDetailsLink } from '../../../../common/components/links'; import { UsersTableType } from '../../store/model'; +import { CELL_ACTIONS_DEFAULT_TRIGGER } from '../../../../../common/constants'; export const getUserRiskScoreColumns = ({ dispatchSeverityUpdate, @@ -40,29 +34,20 @@ export const getUserRiskScoreColumns = ({ if (userName != null && userName.length > 0) { const id = escapeDataProviderId(`user-risk-score-table-userName-${userName}`); return ( - <DraggableWrapper + <CellActions key={id} - dataProvider={{ - and: [], - enabled: true, - excluded: false, - id, - name: userName, - kqlQuery: '', - queryMatch: { field: 'user.name', value: userName, operator: IS_OPERATOR }, + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={CELL_ACTIONS_DEFAULT_TRIGGER} + field={{ + name: 'user.name', + value: userName, + type: 'keyword', }} - render={(dataProvider, _, snapshot) => - snapshot.isDragging ? ( - <DragEffects> - <Provider dataProvider={dataProvider} /> - </DragEffects> - ) : ( - <UserDetailsLink userName={userName} userTab={UsersTableType.risk} /> - ) - } - isAggregatable={true} - fieldType={'keyword'} - /> + > + <UserDetailsLink userName={userName} userTab={UsersTableType.risk} /> + </CellActions> ); } return getEmptyTagValue(); diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx index 5a62bce6b9c3a..ee2d86faca6c2 100644 --- a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx @@ -17,6 +17,11 @@ jest.mock('../../../containers/authentications'); jest.mock('../../../../common/containers/query_toggle'); jest.mock('../../../../common/lib/kibana'); +jest.mock('react-router-dom', () => { + const actual = jest.requireActual('react-router-dom'); + return { ...actual, useLocation: jest.fn().mockReturnValue({ pathname: '' }) }; +}); + describe('Authentications query tab body', () => { const mockUseAuthentications = useAuthentications as jest.Mock; const mockUseQueryToggle = useQueryToggle as jest.Mock; diff --git a/x-pack/plugins/security_solution/public/helpers.tsx b/x-pack/plugins/security_solution/public/helpers.tsx index 7a0f918d4e169..713ea0876ade6 100644 --- a/x-pack/plugins/security_solution/public/helpers.tsx +++ b/x-pack/plugins/security_solution/public/helpers.tsx @@ -20,10 +20,13 @@ import { CASES_FEATURE_ID, CASES_PATH, EXCEPTIONS_PATH, + HOSTS_PATH, LANDING_PATH, + NETWORK_PATH, RULES_PATH, SERVER_APP_ID, THREAT_INTELLIGENCE_PATH, + USERS_PATH, } from '../common/constants'; import type { FactoryQueryTypes, @@ -192,6 +195,13 @@ export const isThreatIntelligencePath = (pathname: string): boolean => { }); }; +export const isExplorePage = (pathname: string): boolean => { + return !!matchPath(pathname, { + path: `(${HOSTS_PATH}|${USERS_PATH}|${NETWORK_PATH})`, + strict: false, + }); +}; + export const getSubPluginRoutesByCapabilities = ( subPlugins: StartedSubPlugins, capabilities: Capabilities diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx index a29564214cca0..679ede10e3452 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx @@ -67,7 +67,7 @@ describe('When a Console command is entered by the user', () => { await waitFor(() => expect(renderResult.getByTestId('test-commandUsage')).toBeTruthy()); }); - it('should should custom command `--help` output when Command service defines `getCommandUsage()`', async () => { + it('should render custom command `--help` output when Command service defines `getCommandUsage()`', async () => { const cmd2 = commands.find((command) => command.name === 'cmd2'); if (cmd2) { @@ -178,7 +178,7 @@ describe('When a Console command is entered by the user', () => { }); }); - it('should show error if argument is used more than one', async () => { + it('should show error if argument is used more than once', async () => { render(); enterCommand('cmd2 --file one --file two'); @@ -200,7 +200,7 @@ describe('When a Console command is entered by the user', () => { }); }); - it('should show error no options were provided, but command requires some', async () => { + it('should show error if no options were provided, but command requires some', async () => { render(); enterCommand('cmd2'); @@ -222,11 +222,11 @@ describe('When a Console command is entered by the user', () => { }); }); - it('should show error if command definition `validate()` callback return a message', async () => { + it("should show error if command's definition `validate()` callback returns a message", async () => { const cmd1Definition = commands.find((command) => command.name === 'cmd1'); if (!cmd1Definition) { - throw new Error('cmd1 defintion not found'); + throw new Error('cmd1 definition not found'); } cmd1Definition.validate = () => 'command is invalid'; @@ -241,6 +241,25 @@ describe('When a Console command is entered by the user', () => { }); }); + it("should show error for --help if command's definition `validate()` callback returns a message", async () => { + const cmd1Definition = commands.find((command) => command.name === 'cmd1'); + + if (!cmd1Definition) { + throw new Error('cmd1 definition not found'); + } + + cmd1Definition.validate = () => 'command is invalid'; + + render(); + enterCommand('cmd1 --help'); + + await waitFor(() => { + expect(renderResult.getByTestId('test-badArgument-message').textContent).toEqual( + 'command is invalid' + ); + }); + }); + it('should show error no options were provided, but has exclusive or arguments', async () => { render(); enterCommand('cmd6'); @@ -263,7 +282,7 @@ describe('When a Console command is entered by the user', () => { }); }); - it('should show success when one exlusive argument is used', async () => { + it('should show success when one exclusive argument is used', async () => { render(); enterCommand('cmd6 --foo 234'); @@ -272,7 +291,7 @@ describe('When a Console command is entered by the user', () => { }); }); - it('should show success when the other exlusive argument is used', async () => { + it('should show success when the other exclusive argument is used', async () => { render(); enterCommand('cmd6 --bar 234'); diff --git a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx b/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx index cceb17148f868..16ca444b7d59f 100644 --- a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx @@ -96,7 +96,7 @@ describe('When using the `ResponseActionFileDownloadLink` component', () => { await waitFor(() => { expect(apiMocks.responseProvider.fileInfo).toHaveBeenCalledWith({ - path: '/api/endpoint/action/123/agent-a/file', + path: '/api/endpoint/action/123/file/123.agent-a', }); }); diff --git a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx b/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx index 8ad0a968188a2..f17ac1a4b205f 100644 --- a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx +++ b/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx @@ -10,6 +10,7 @@ import { EuiButtonEmpty, EuiLoadingContent, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; +import { getFileDownloadId } from '../../../../common/endpoint/service/response_actions/get_file_download_id'; import { resolvePathVariables } from '../../../common/utils/resolve_path_variables'; import { FormattedError } from '../formatted_error'; import { useGetFileInfo } from '../../hooks/response_actions/use_get_file_info'; @@ -56,12 +57,13 @@ export interface ResponseActionFileDownloadLinkProps { */ export const ResponseActionFileDownloadLink = memo<ResponseActionFileDownloadLinkProps>( ({ - action, + action: _action, agentId, buttonTitle = DEFAULT_BUTTON_TITLE, 'data-test-subj': dataTestSubj, textSize = 's', }) => { + const action = _action as ActionDetails; // cast to remove `Immutable` const getTestId = useTestIdGenerator(dataTestSubj); const { canWriteFileOperations } = useUserPrivileges().endpointPrivileges; @@ -72,9 +74,9 @@ export const ResponseActionFileDownloadLink = memo<ResponseActionFileDownloadLin const downloadUrl: string = useMemo(() => { return resolvePathVariables(ACTION_AGENT_FILE_DOWNLOAD_ROUTE, { action_id: action.id, - agent_id: agentId ?? action.agents[0], + file_id: getFileDownloadId(action, agentId), }); - }, [action.agents, action.id, agentId]); + }, [action, agentId]); const { isFetching, diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts index bef446eca27b3..ce284de263182 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts @@ -61,18 +61,18 @@ describe('When using the `useGetFileInfo()` hook', () => { expect(apiMocks.responseProvider.fileInfo).toHaveBeenCalledWith({ path: resolvePathVariables(ACTION_AGENT_FILE_INFO_ROUTE, { action_id: '123', - agent_id: 'agent-a', + file_id: '123.agent-a', }), }); }); it('should allow specific agent id to be set on input', async () => { - await renderReactQueryHook(() => useGetFileInfo(actionDetailsMock, 'abc')); + await renderReactQueryHook(() => useGetFileInfo(actionDetailsMock, 'agent-a')); expect(apiMocks.responseProvider.fileInfo).toHaveBeenCalledWith({ path: resolvePathVariables(ACTION_AGENT_FILE_INFO_ROUTE, { action_id: '123', - agent_id: 'abc', + file_id: '123.agent-a', }), }); }); diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts index c4c2905bfd1f8..e73a68bad0f2f 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts @@ -8,6 +8,7 @@ import type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; import type { IHttpFetchError } from '@kbn/core-http-browser'; import { useQuery } from '@tanstack/react-query'; +import { getFileDownloadId } from '../../../../common/endpoint/service/response_actions/get_file_download_id'; import { resolvePathVariables } from '../../../common/utils/resolve_path_variables'; import { useHttp } from '../../../common/lib/kibana/hooks'; import type { @@ -36,7 +37,7 @@ export const useGetFileInfo = ( queryFn: () => { const apiUrl = resolvePathVariables(ACTION_AGENT_FILE_INFO_ROUTE, { action_id: action.id, - agent_id: agentId ?? action.agents[0], + file_id: getFileDownloadId(action as ActionDetails, agentId), }); return http.get<ActionFileInfoApiResponse>(apiUrl); diff --git a/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts b/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts index 52aa80b35586b..ba108fc695b3c 100644 --- a/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts +++ b/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts @@ -187,6 +187,8 @@ export const responseActionsHttpMocks = httpHandlerMockFactory<ResponseActionsHt return { data: { created: '2022-10-10T14:57:30.682Z', + actionId: 'abc', + agentId: '123', id: '123', mimeType: 'text/plain', name: 'test.txt', diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx index a23bfa31c9d10..cc960b4130ff1 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx @@ -71,10 +71,11 @@ const StyledLegendFlexItem = styled(EuiFlexItem)` padding-top: 45px; `; -const ChartSize = '135px'; +const ChartSize = '120px'; interface AlertsByStatusProps { additionalFilters?: ESBoolQuery[]; + applyGlobalQueriesAndFilters?: boolean; entityFilter?: EntityFilter; signalIndexName: string | null; } @@ -98,6 +99,7 @@ const closedDonutOptions = { status: 'closed' as Status }; export const AlertsByStatus = ({ additionalFilters, + applyGlobalQueriesAndFilters = true, signalIndexName, entityFilter, }: AlertsByStatusProps) => { @@ -220,7 +222,7 @@ export const AlertsByStatus = ({ <StyledFlexItem key="alerts-status-open" grow={isChartEmbeddablesEnabled}> {isChartEmbeddablesEnabled ? ( <VisualizationEmbeddable - applyGlobalQueriesAndFilters={false} + applyGlobalQueriesAndFilters={applyGlobalQueriesAndFilters} extraOptions={openDonutOptions} getLensAttributes={getAlertsByStatusAttributes} height={ChartSize} @@ -250,7 +252,7 @@ export const AlertsByStatus = ({ > {isChartEmbeddablesEnabled ? ( <VisualizationEmbeddable - applyGlobalQueriesAndFilters={false} + applyGlobalQueriesAndFilters={applyGlobalQueriesAndFilters} extraOptions={acknowledgedDonutOptions} getLensAttributes={getAlertsByStatusAttributes} height={ChartSize} @@ -277,7 +279,7 @@ export const AlertsByStatus = ({ <StyledFlexItem key="alerts-status-closed" grow={isChartEmbeddablesEnabled}> {isChartEmbeddablesEnabled ? ( <VisualizationEmbeddable - applyGlobalQueriesAndFilters={false} + applyGlobalQueriesAndFilters={applyGlobalQueriesAndFilters} extraOptions={closedDonutOptions} getLensAttributes={getAlertsByStatusAttributes} height={ChartSize} diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/chart_content.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/chart_content.tsx index 40acfe37f59a7..2b18fc4b812df 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/chart_content.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/chart_content.tsx @@ -41,14 +41,16 @@ const ChartContentComponent = ({ {isChartEmbeddablesEnabled && spaceId && dataExists && ( <VisualizationEmbeddable applyGlobalQueriesAndFilters={false} + donutTextWrapperClassName="risk-score" extraOptions={extraOptions} getLensAttributes={getRiskScoreDonutAttributes} - height="140px" + height="180px" id={`${kpiQueryId}-donut`} isDonut={true} label={TOTAL_LABEL} stackByField={riskEntity} timerange={timerange} + width="270px" /> )} {!isChartEmbeddablesEnabled && ( diff --git a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx index 381b36c20e0c6..a8dbcd624d9e2 100644 --- a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx @@ -58,6 +58,7 @@ interface Props extends Pick<GlobalTimeArgs, 'from' | 'to' | 'deleteQuery' | 'se showSpacer?: boolean; scopeId?: string; toggleTopN?: () => void; + hideQueryToggle?: boolean; } const getHistogramOption = (fieldName: string): MatrixHistogramOption => ({ @@ -92,6 +93,7 @@ const EventsByDatasetComponent: React.FC<Props> = ({ scopeId, to, toggleTopN, + hideQueryToggle = false, }) => { const uniqueQueryId = useMemo(() => `${ID}-${queryType}`, [queryType]); @@ -202,6 +204,7 @@ const EventsByDatasetComponent: React.FC<Props> = ({ scopeId={scopeId} {...eventsByDatasetHistogramConfigs} title={onlyField != null ? i18n.TOP(onlyField) : eventsByDatasetHistogramConfigs.title} + hideQueryToggle={hideQueryToggle} /> ); }; diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx index 6186964386077..f03058683f2a7 100644 --- a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx @@ -34,6 +34,7 @@ interface Props { setAbsoluteRangeDatePickerTarget?: InputsModelId; showLegend?: boolean; runtimeMappings?: MappingRuntimeFields; + hideQueryToggle?: boolean; } const SignalsByCategoryComponent: React.FC<Props> = ({ @@ -46,6 +47,7 @@ const SignalsByCategoryComponent: React.FC<Props> = ({ showLegend, setAbsoluteRangeDatePickerTarget = InputsModelId.global, runtimeMappings, + hideQueryToggle = false, }) => { const dispatch = useDispatch(); const { signalIndexName } = useSignalIndex(); @@ -86,6 +88,7 @@ const SignalsByCategoryComponent: React.FC<Props> = ({ title={i18n.ALERT_TREND} titleSize={onlyField == null ? 'm' : 's'} updateDateRange={updateDateRangeCallback} + hideQueryToggle={hideQueryToggle} /> ); }; diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/plugins/security_solution/public/plugin.tsx index 538845eaeefa9..abc9c41101e25 100644 --- a/x-pack/plugins/security_solution/public/plugin.tsx +++ b/x-pack/plugins/security_solution/public/plugin.tsx @@ -191,7 +191,7 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S return renderApp({ ...params, - services: await startServices(params), + services, store, usageCollection: plugins.usageCollection, subPluginRoutes: getSubPluginRoutesByCapabilities( diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx index 47a3bc62b91ce..c62c1c967771d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx @@ -274,14 +274,16 @@ describe('Field Renderers', () => { test('it should only render the items after overflowIndexStart', () => { render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={5} - rowItems={rowItems} - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={5} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); expect(screen.getByTestId('more-container').textContent).toEqual('item6item7'); @@ -289,14 +291,16 @@ describe('Field Renderers', () => { test('it should render all the items when overflowIndexStart is zero', () => { render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={0} - rowItems={rowItems} - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={0} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); expect(screen.getByTestId('more-container').textContent).toEqual( @@ -306,14 +310,16 @@ describe('Field Renderers', () => { test('it should have the eui-yScroll to enable scrolling when necessary', () => { render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={5} - rowItems={rowItems} - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={5} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); expect(screen.getByTestId('more-container')).toHaveClass('eui-yScroll'); @@ -321,14 +327,16 @@ describe('Field Renderers', () => { test('it should use the moreMaxHeight prop as the value for the max-height style', () => { render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={5} - rowItems={rowItems} - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={5} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); expect(screen.getByTestId('more-container')).toHaveStyle( @@ -338,35 +346,38 @@ describe('Field Renderers', () => { test('it should render with correct attrName prop', () => { render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={5} - rowItems={rowItems} - attrName="mock.attr" - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={5} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); screen - .getAllByTestId('render-content-mock.attr') + .getAllByTestId('cellActions-renderContent-mock.attr') .forEach((element) => expect(element).toBeInTheDocument()); }); - test('it should only invoke the optional render function, when provided, for the items after overflowIndexStart', () => { + test('it should only invoke the optional render function when provided', () => { const renderFn = jest.fn(); render( - <MoreContainer - fieldType="keyword" - idPrefix={idPrefix} - isAggregatable={true} - moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} - overflowIndexStart={5} - render={renderFn} - rowItems={rowItems} - /> + <TestProviders> + <MoreContainer + fieldType="keyword" + idPrefix={idPrefix} + moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} + overflowIndexStart={5} + render={renderFn} + values={rowItems} + fieldName="mock.attr" + /> + </TestProviders> ); expect(renderFn).toHaveBeenCalledTimes(2); @@ -387,6 +398,7 @@ describe('Field Renderers', () => { moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} overflowIndexStart={5} rowItems={rowItems} + attrName={'mock.attr'} /> </TestProviders> ); @@ -407,6 +419,7 @@ describe('Field Renderers', () => { moreMaxHeight={DEFAULT_MORE_MAX_HEIGHT} overflowIndexStart={5} rowItems={rowItems} + attrName={'mock.attr'} /> </TestProviders> ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx b/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx index 57b782e9895c9..655f4b753af2d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx @@ -8,9 +8,10 @@ import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiPopover } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { getOr } from 'lodash/fp'; -import React, { useCallback, Fragment, useMemo, useState } from 'react'; +import React, { useCallback, Fragment, useMemo, useState, useContext } from 'react'; import styled from 'styled-components'; +import { CellActions, CellActionsMode } from '@kbn/cell-actions'; import type { HostEcs } from '@kbn/securitysolution-ecs'; import type { AutonomousSystem, @@ -25,9 +26,11 @@ import { FormattedRelativePreferenceDate } from '../../../common/components/form import { HostDetailsLink, ReputationLink, WhoIsLink } from '../../../common/components/links'; import { Spacer } from '../../../common/components/page'; import * as i18n from '../../../explore/network/components/details/translations'; -import type { QueryOperator } from '../../../../common/types'; -import { IS_OPERATOR } from '../../../../common/types'; -import { DraggableWrapper } from '../../../common/components/drag_and_drop/draggable_wrapper'; +import { + CELL_ACTIONS_DEFAULT_TRIGGER, + CELL_ACTIONS_TIMELINE_TRIGGER, +} from '../../../../common/constants'; +import { TimelineContext } from '../timeline'; const DraggableContainerFlexGroup = styled(EuiFlexGroup)` flex-grow: unset; @@ -270,8 +273,8 @@ export const DefaultFieldRenderer = React.memo(DefaultFieldRendererComponent); DefaultFieldRenderer.displayName = 'DefaultFieldRenderer'; interface DefaultFieldRendererOverflowProps { - attrName?: string; - fieldType?: string; + attrName: string; + fieldType: string; rowItems: string[]; idPrefix: string; isAggregatable?: boolean; @@ -281,91 +284,50 @@ interface DefaultFieldRendererOverflowProps { } interface MoreContainerProps { - attrName?: string; - dragDisplayValue?: string; - fieldType?: string; + fieldName: string; + fieldType: string; + values: string[]; idPrefix: string; - isAggregatable?: boolean; moreMaxHeight: string; overflowIndexStart: number; render?: (item: string) => React.ReactNode; - rowItems: string[]; } -/** A container (with overflow) for showing "More" items in a popover */ export const MoreContainer = React.memo<MoreContainerProps>( - ({ - attrName, - dragDisplayValue, - fieldType, - idPrefix, - isAggregatable, - moreMaxHeight, - overflowIndexStart, - render, - rowItems, - }) => { + ({ fieldName, fieldType, idPrefix, moreMaxHeight, overflowIndexStart, render, values }) => { + const { timelineId } = useContext(TimelineContext); + const moreItemsWithHoverActions = useMemo( () => - rowItems.slice(overflowIndexStart).reduce<React.ReactElement[]>((acc, rowItem, index) => { - const id = escapeDataProviderId(`${idPrefix}-${attrName}-${rowItem}-${index}`); - const dataProvider = - typeof rowItem === 'string' && attrName != null - ? { - and: [], - enabled: true, - id, - name: rowItem, - excluded: false, - kqlQuery: '', - queryMatch: { - field: attrName, - value: rowItem, - displayValue: dragDisplayValue ?? rowItem, - operator: IS_OPERATOR as QueryOperator, - }, - } - : undefined; + values.slice(overflowIndexStart).reduce<React.ReactElement[]>((acc, value, index) => { + const id = escapeDataProviderId(`${idPrefix}-${fieldName}-${value}-${index}`); - if (dataProvider != null) { + if (typeof value === 'string' && fieldName != null) { acc.push( - <EuiFlexItem key={`${idPrefix}-${id}`}> - <DraggableWrapper - dataProvider={dataProvider} - isDraggable={false} - render={() => (render && render(rowItem)) ?? defaultToEmptyTag(rowItem)} - scopeId={undefined} - fieldType={fieldType} - isAggregatable={isAggregatable} - /> + <EuiFlexItem key={id}> + <CellActions + key={id} + mode={CellActionsMode.HOVER} + visibleCellActions={5} + showActionTooltips + triggerId={ + timelineId ? CELL_ACTIONS_TIMELINE_TRIGGER : CELL_ACTIONS_DEFAULT_TRIGGER + } + field={{ + name: fieldName, + value, + type: fieldType, + }} + > + <>{render ? render(value) : defaultToEmptyTag(value)}</> + </CellActions> </EuiFlexItem> ); } return acc; }, []), - [ - attrName, - dragDisplayValue, - fieldType, - idPrefix, - isAggregatable, - overflowIndexStart, - render, - rowItems, - ] - ); - - const moreItems = useMemo( - () => - rowItems.slice(overflowIndexStart).map((rowItem, index) => { - return ( - <EuiFlexItem grow={1} key={`${rowItem}-${index}`}> - {(render && render(rowItem)) ?? defaultToEmptyTag(rowItem)} - </EuiFlexItem> - ); - }), - [overflowIndexStart, render, rowItems] + [fieldName, fieldType, idPrefix, overflowIndexStart, render, values, timelineId] ); return ( @@ -378,7 +340,7 @@ export const MoreContainer = React.memo<MoreContainerProps>( }} > <EuiFlexGroup gutterSize="s" direction="column" data-test-subj="overflow-items"> - {attrName != null ? moreItemsWithHoverActions : moreItems} + {moreItemsWithHoverActions} </EuiFlexGroup> </div> ); @@ -387,16 +349,7 @@ export const MoreContainer = React.memo<MoreContainerProps>( MoreContainer.displayName = 'MoreContainer'; export const DefaultFieldRendererOverflow = React.memo<DefaultFieldRendererOverflowProps>( - ({ - attrName, - idPrefix, - moreMaxHeight, - overflowIndexStart = 5, - render, - rowItems, - fieldType, - isAggregatable, - }) => { + ({ attrName, idPrefix, moreMaxHeight, overflowIndexStart = 5, render, rowItems, fieldType }) => { const [isOpen, setIsOpen] = useState(false); const togglePopover = useCallback(() => setIsOpen((currentIsOpen) => !currentIsOpen), []); const button = useMemo( @@ -431,14 +384,13 @@ export const DefaultFieldRendererOverflow = React.memo<DefaultFieldRendererOverf panelClassName="withHoverActions__popover" > <MoreContainer - attrName={attrName} + fieldName={attrName} idPrefix={idPrefix} render={render} - rowItems={rowItems} + values={rowItems} moreMaxHeight={moreMaxHeight} overflowIndexStart={overflowIndexStart} fieldType={fieldType} - isAggregatable={isAggregatable} /> </EuiPopover> )} diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts b/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts index 8247006e07925..5d47c57492b26 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts @@ -10,6 +10,7 @@ import type { Client } from '@elastic/elasticsearch'; import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; import * as cborx from 'cbor-x'; import { basename } from 'path'; +import { generateFileMetadataDocumentMock } from '../../../../server/endpoint/services/actions/mocks'; import { getFileDownloadId } from '../../../../common/endpoint/service/response_actions/get_file_download_id'; import { checkInFleetAgent } from '../../common/fleet_services'; import { sendEndpointMetadataUpdate } from '../../common/endpoint_metadata_services'; @@ -29,6 +30,7 @@ import type { GetProcessesActionOutputContent, ResponseActionGetFileOutputContent, ResponseActionGetFileParameters, + FileUploadMetadata, } from '../../../../common/endpoint/types'; import type { EndpointActionListRequestQuery } from '../../../../common/endpoint/schema/actions'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; @@ -193,40 +195,40 @@ export const sendEndpointActionResponse = async ( )?.parameters?.path!; const fileName = basename(filePath.replace(/\\/g, '/')); + const fileMetaDoc: FileUploadMetadata = generateFileMetadataDocumentMock({ + action_id: action.id, + agent_id: action.agents[0], + contents: [ + { + sha256: '8d61673c9d782297b3c774ded4e3d88f31a8869a8f25cf5cdd402ba6822d1d28', + file_name: fileName ?? 'bad_file.txt', + path: filePath, + size: 4, + type: 'file', + }, + ], + file: { + attributes: ['archive', 'compressed'], + ChunkSize: 4194304, + compression: 'deflate', + hash: { + sha256: '8d61673c9d782297b3c774ded4e3d88f31a8869a8f25cf5cdd402ba6822d1d28', + }, + mime_type: 'application/zip', + name: 'upload.zip', + extension: 'zip', + size: 125, + Status: 'READY', + type: 'file', + }, + src: 'endpoint', + }); // Index the file's metadata const fileMeta = await esClient.index({ index: FILE_STORAGE_METADATA_INDEX, id: getFileDownloadId(action, action.agents[0]), - body: { - action_id: action.id, - agent_id: action.agents[0], - contents: [ - { - hash: { - sha256: '8d61673c9d782297b3c774ded4e3d88f31a8869a8f25cf5cdd402ba6822d1d28', - }, - name: fileName ?? 'bad_file.txt', - path: filePath, - size: 4, - type: 'file', - }, - ], - file: { - attributes: ['archive', 'compressed'], - ChunkSize: 4194304, - Compression: 'deflate', - hash: { - sha256: '8d61673c9d782297b3c774ded4e3d88f31a8869a8f25cf5cdd402ba6822d1d28', - }, - mime_type: 'application/zip', - name: 'upload.zip', - size: 125, - Status: 'READY', - type: 'file', - }, - source: 'endpoint', - }, + body: fileMetaDoc, refresh: 'wait_for', }); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts index becbc6aef77d0..8152879530396 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts @@ -12,22 +12,23 @@ import { import type { HttpApiTestSetupMock } from '../../mocks'; import { createHttpApiTestSetupMock } from '../../mocks'; import type { EndpointActionFileDownloadParams } from '../../../../common/endpoint/schema/actions'; -import { getActionDetailsById as _getActionDetailsById } from '../../services'; +import { + getFileDownloadStream as _getFileDownloadStream, + validateActionId as _validateActionId, + validateActionFileId as _validateActionFileId, +} from '../../services'; import { EndpointAuthorizationError, NotFoundError } from '../../errors'; -import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; -import { getFileDownloadStream as _getFileDownloadStream } from '../../services/actions/action_files'; import stream from 'stream'; -import type { ActionDetails } from '../../../../common/endpoint/types'; import { ACTION_AGENT_FILE_DOWNLOAD_ROUTE } from '../../../../common/endpoint/constants'; import { getEndpointAuthzInitialStateMock } from '../../../../common/endpoint/service/authz/mocks'; jest.mock('../../services'); -jest.mock('../../services/actions/action_files'); describe('Response Actions file download API', () => { - const getActionDetailsById = _getActionDetailsById as jest.Mock; const getFileDownloadStream = _getFileDownloadStream as jest.Mock; + const validateActionIdMock = _validateActionId as jest.Mock; + const validateFileIdMock = _validateActionFileId as jest.Mock; let apiTestSetup: HttpApiTestSetupMock; let httpRequestMock: ReturnType< @@ -41,7 +42,7 @@ describe('Response Actions file download API', () => { ({ httpHandlerContextMock, httpResponseMock } = apiTestSetup); httpRequestMock = apiTestSetup.createRequestMock({ - params: { action_id: '111', agent_id: '222' }, + params: { action_id: '111', file_id: '111.222' }, }); }); @@ -79,19 +80,13 @@ describe('Response Actions file download API', () => { describe('Route handler', () => { let fileDownloadHandler: ReturnType<typeof getActionFileDownloadRouteHandler>; let esClientMock: ReturnType<HttpApiTestSetupMock['getEsClientMock']>; - let action: ActionDetails; beforeEach(() => { esClientMock = apiTestSetup.getEsClientMock(); - action = new EndpointActionGenerator().generateActionDetails({ - id: '111', - agents: ['222'], - }); fileDownloadHandler = getActionFileDownloadRouteHandler(apiTestSetup.endpointAppContextMock); - getActionDetailsById.mockImplementation(async () => { - return action; - }); + validateActionIdMock.mockImplementation(async () => {}); + validateFileIdMock.mockImplementation(async () => {}); getFileDownloadStream.mockImplementation(async () => { return { @@ -103,16 +98,14 @@ describe('Response Actions file download API', () => { }); it('should error if action ID is invalid', async () => { - getActionDetailsById.mockImplementationOnce(async () => { - throw new NotFoundError('not found'); - }); + validateActionIdMock.mockRejectedValueOnce(new NotFoundError('not found')); await fileDownloadHandler(httpHandlerContextMock, httpRequestMock, httpResponseMock); expect(httpResponseMock.notFound).toHaveBeenCalled(); }); - it('should error if agent id is not in the action', async () => { - action.agents = ['333']; + it('should error if file ID is invalid', async () => { + validateFileIdMock.mockRejectedValueOnce(new CustomHttpRequestError('invalid', 400)); await fileDownloadHandler(httpHandlerContextMock, httpRequestMock, httpResponseMock); expect(httpResponseMock.customError).toHaveBeenCalledWith({ diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts index 304c92e6d0184..e397348767b70 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts @@ -6,8 +6,7 @@ */ import type { RequestHandler } from '@kbn/core/server'; -import { getFileDownloadId } from '../../../../common/endpoint/service/response_actions/get_file_download_id'; -import { getActionDetailsById } from '../../services'; +import { validateActionId, getFileDownloadStream, validateActionFileId } from '../../services'; import { errorHandler } from '../error_handler'; import { ACTION_AGENT_FILE_DOWNLOAD_ROUTE } from '../../../../common/endpoint/constants'; import type { EndpointActionFileDownloadParams } from '../../../../common/endpoint/schema/actions'; @@ -18,8 +17,6 @@ import type { SecuritySolutionPluginRouter, SecuritySolutionRequestHandlerContext, } from '../../../types'; -import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; -import { getFileDownloadStream } from '../../services/actions/action_files'; export const registerActionFileDownloadRoutes = ( router: SecuritySolutionPluginRouter, @@ -52,20 +49,14 @@ export const getActionFileDownloadRouteHandler = ( const logger = endpointContext.logFactory.get('actionFileDownload'); return async (context, req, res) => { - const { action_id: actionId, agent_id: agentId } = req.params; + const { action_id: actionId, file_id: fileId } = req.params; const esClient = (await context.core).elasticsearch.client.asInternalUser; - const endpointMetadataService = endpointContext.service.getEndpointMetadataService(); try { - // Ensure action id is valid and that it was sent to the Agent ID requested. - const actionDetails = await getActionDetailsById(esClient, endpointMetadataService, actionId); + await validateActionId(esClient, actionId); + await validateActionFileId(esClient, logger, fileId, actionId); - if (!actionDetails.agents.includes(agentId)) { - throw new CustomHttpRequestError(`Action was not sent to agent id [${agentId}]`, 400); - } - - const fileDownloadId = getFileDownloadId(actionDetails, agentId); - const { stream, fileName } = await getFileDownloadStream(esClient, logger, fileDownloadId); + const { stream, fileName } = await getFileDownloadStream(esClient, logger, fileId); return res.ok({ body: stream, diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts index 589c639ffecd6..d8649d90787e4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts @@ -5,25 +5,26 @@ * 2.0. */ -import { getActionDetailsById as _getActionDetailsById } from '../../services'; +import { + validateActionId as _validateActionId, + validateActionFileId as _validateActionFileId, + getFileInfo as _getFileInfo, +} from '../../services'; import type { HttpApiTestSetupMock } from '../../mocks'; import { createHttpApiTestSetupMock } from '../../mocks'; import type { EndpointActionFileDownloadParams } from '../../../../common/endpoint/schema/actions'; import { getActionFileInfoRouteHandler, registerActionFileInfoRoute } from './file_info_handler'; import { ACTION_AGENT_FILE_INFO_ROUTE } from '../../../../common/endpoint/constants'; import { EndpointAuthorizationError, NotFoundError } from '../../errors'; -import type { ActionDetails } from '../../../../common/endpoint/types'; -import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; -import { getFileInfo as _getFileInfo } from '../../services/actions/action_files'; import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; import { getEndpointAuthzInitialStateMock } from '../../../../common/endpoint/service/authz/mocks'; jest.mock('../../services'); -jest.mock('../../services/actions/action_files'); describe('Response Action file info API', () => { - const getActionDetailsById = _getActionDetailsById as jest.Mock; const getFileInfo = _getFileInfo as jest.Mock; + const validateActionIdMock = _validateActionId as jest.Mock; + const validateFileIdMock = _validateActionFileId as jest.Mock; let apiTestSetup: HttpApiTestSetupMock; let httpRequestMock: ReturnType< @@ -37,7 +38,7 @@ describe('Response Action file info API', () => { ({ httpHandlerContextMock, httpResponseMock } = apiTestSetup); httpRequestMock = apiTestSetup.createRequestMock({ - params: { action_id: '111', agent_id: '222' }, + params: { action_id: '111', file_id: '111.222' }, }); }); @@ -72,24 +73,20 @@ describe('Response Action file info API', () => { describe('Route handler', () => { let fileInfoHandler: ReturnType<typeof getActionFileInfoRouteHandler>; let esClientMock: ReturnType<HttpApiTestSetupMock['getEsClientMock']>; - let action: ActionDetails; beforeEach(() => { esClientMock = apiTestSetup.getEsClientMock(); - action = new EndpointActionGenerator().generateActionDetails({ - id: '111', - agents: ['222'], - }); fileInfoHandler = getActionFileInfoRouteHandler(apiTestSetup.endpointAppContextMock); - getActionDetailsById.mockImplementation(async () => { - return action; - }); + validateActionIdMock.mockImplementation(async () => {}); + validateFileIdMock.mockImplementation(async () => {}); getFileInfo.mockImplementation(async () => { return { created: '2022-10-10T14:57:30.682Z', id: '123', + actionId: 'abc', + agentId: '123', mimeType: 'text/plain', name: 'test.txt', size: 1234, @@ -99,7 +96,7 @@ describe('Response Action file info API', () => { }); it('should error if action ID is invalid', async () => { - getActionDetailsById.mockImplementationOnce(async () => { + validateActionIdMock.mockImplementationOnce(async () => { throw new NotFoundError('not found'); }); await fileInfoHandler(httpHandlerContextMock, httpRequestMock, httpResponseMock); @@ -107,8 +104,8 @@ describe('Response Action file info API', () => { expect(httpResponseMock.notFound).toHaveBeenCalled(); }); - it('should error if agent id is not in the action', async () => { - action.agents = ['333']; + it('should error if file ID is invalid', async () => { + validateFileIdMock.mockRejectedValueOnce(new CustomHttpRequestError('invalid', 400)); await fileInfoHandler(httpHandlerContextMock, httpRequestMock, httpResponseMock); expect(httpResponseMock.customError).toHaveBeenCalledWith({ @@ -129,6 +126,8 @@ describe('Response Action file info API', () => { expect(httpResponseMock.ok).toHaveBeenCalledWith({ body: { data: { + actionId: 'abc', + agentId: '123', created: '2022-10-10T14:57:30.682Z', id: '123', mimeType: 'text/plain', diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts index e8290d1c3d3b1..a3e2750d3cfda 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts @@ -6,8 +6,7 @@ */ import type { RequestHandler } from '@kbn/core/server'; -import { getFileInfo } from '../../services/actions/action_files'; -import { getActionDetailsById } from '../../services'; +import { validateActionId, getFileInfo, validateActionFileId } from '../../services'; import { ACTION_AGENT_FILE_INFO_ROUTE } from '../../../../common/endpoint/constants'; import type { EndpointAppContext } from '../../types'; import type { EndpointActionFileInfoParams } from '../../../../common/endpoint/schema/actions'; @@ -17,8 +16,6 @@ import type { } from '../../../types'; import { EndpointActionFileInfoSchema } from '../../../../common/endpoint/schema/actions'; import { withEndpointAuthz } from '../with_endpoint_authz'; -import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; -import { getFileDownloadId } from '../../../../common/endpoint/service/response_actions/get_file_download_id'; import { errorHandler } from '../error_handler'; export const getActionFileInfoRouteHandler = ( @@ -32,19 +29,12 @@ export const getActionFileInfoRouteHandler = ( const logger = endpointContext.logFactory.get('actionFileInfo'); return async (context, req, res) => { - const { action_id: actionId, agent_id: agentId } = req.params; + const { action_id: actionId, file_id: fileId } = req.params; const esClient = (await context.core).elasticsearch.client.asInternalUser; - const endpointMetadataService = endpointContext.service.getEndpointMetadataService(); try { - // Ensure action id is valid and that it was sent to the Agent ID requested. - const actionDetails = await getActionDetailsById(esClient, endpointMetadataService, actionId); - - if (!actionDetails.agents.includes(agentId)) { - throw new CustomHttpRequestError(`Action was not sent to agent id [${agentId}]`, 400); - } - - const fileId = getFileDownloadId(actionDetails, agentId); + await validateActionId(esClient, actionId); + await validateActionFileId(esClient, logger, fileId, actionId); return res.ok({ body: { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.test.ts index 6033361162f60..48a155e08dc5c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.test.ts @@ -14,9 +14,14 @@ import { getFileDownloadStream, getFileInfo } from './action_files'; import type { DiagnosticResult } from '@elastic/elasticsearch'; import { errors } from '@elastic/elasticsearch'; import { NotFoundError } from '../../errors'; -import { FILE_STORAGE_DATA_INDEX } from '../../../../common/endpoint/constants'; +import { + FILE_STORAGE_DATA_INDEX, + FILE_STORAGE_METADATA_INDEX, +} from '../../../../common/endpoint/constants'; import { BaseDataGenerator } from '../../../../common/endpoint/data_generators/base_data_generator'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { generateFileMetadataDocumentMock } from './mocks'; +import type { GetResponse } from '@elastic/elasticsearch/lib/api/types'; jest.mock('@kbn/files-plugin/server'); const createEsFileClient = _createEsFileClient as jest.Mock; @@ -70,15 +75,35 @@ describe('Action Files service', () => { return BaseDataGenerator.toEsSearchResponse([]); }); + + esClientMock.get.mockImplementation(async (reqOptions): Promise<GetResponse> => { + if (reqOptions.index === FILE_STORAGE_METADATA_INDEX) { + return { + _index: FILE_STORAGE_METADATA_INDEX, + _id: '123', + found: true, + _source: generateFileMetadataDocumentMock(), + }; + } + + return { + _index: FILE_STORAGE_METADATA_INDEX, + _id: '123', + found: false, + _source: undefined, + }; + }); }); it('should return expected output', async () => { await expect(getFileInfo(esClientMock, loggerMock, '123')).resolves.toEqual({ - created: '2022-10-10T14:57:30.682Z', + actionId: '83484393-ddba-4f3c-9c7e-f492ee198a85', + agentId: 'eef9254d-f3ed-4518-889f-18714bd6cec1', + created: '2023-01-23T16:50:51.278Z', id: '123', - mimeType: 'text/plain', - name: 'test.txt', - size: 1234, + mimeType: 'application/zip', + name: 'upload.zip', + size: 64395, status: 'READY', }); }); @@ -87,11 +112,13 @@ describe('Action Files service', () => { fileChunksEsResponseMock = BaseDataGenerator.toEsSearchResponse([]); await expect(getFileInfo(esClientMock, loggerMock, '123')).resolves.toEqual({ - created: '2022-10-10T14:57:30.682Z', + actionId: '83484393-ddba-4f3c-9c7e-f492ee198a85', + agentId: 'eef9254d-f3ed-4518-889f-18714bd6cec1', + created: '2023-01-23T16:50:51.278Z', id: '123', - mimeType: 'text/plain', - name: 'test.txt', - size: 1234, + mimeType: 'application/zip', + name: 'upload.zip', + size: 64395, status: 'DELETED', }); @@ -101,7 +128,7 @@ describe('Action Files service', () => { }); it('should return a `NotFoundError` if file id is not found', async () => { - fileClientMock.get.mockRejectedValue( + esClientMock.get.mockRejectedValue( new errors.ResponseError({ statusCode: 404, } as DiagnosticResult) diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.ts index 8ad0da272152d..9861908f3eead 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_files.ts @@ -11,7 +11,8 @@ import type { FileClient } from '@kbn/files-plugin/server'; import { createEsFileClient } from '@kbn/files-plugin/server'; import { errors } from '@elastic/elasticsearch'; import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { UploadedFileInfo } from '../../../../common/endpoint/types'; +import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; +import type { FileUploadMetadata, UploadedFileInfo } from '../../../../common/endpoint/types'; import { NotFoundError } from '../../errors'; import { FILE_STORAGE_DATA_INDEX, @@ -84,9 +85,17 @@ export const getFileInfo = async ( fileId: string ): Promise<UploadedFileInfo> => { try { - const fileClient = getFileClient(esClient, logger); - const file = await fileClient.get({ id: fileId }); - const { name, id, mimeType, size, status, created } = file.data; + const { _id: id, _source: fileDoc } = await esClient.get<FileUploadMetadata>({ + index: FILE_STORAGE_METADATA_INDEX, + id: fileId, + }); + + if (!fileDoc) { + throw new NotFoundError(`File with id [${fileId}] not found`); + } + + const { upload_start: uploadStart, action_id: actionId, agent_id: agentId } = fileDoc; + const { name, Status: status, mime_type: mimeType, size } = fileDoc.file; let fileHasChunks: boolean = true; if (status === 'READY') { @@ -104,7 +113,9 @@ export const getFileInfo = async ( id, mimeType, size, - created, + actionId, + agentId, + created: new Date(uploadStart).toISOString(), status: fileHasChunks ? status : 'DELETED', }; } catch (error) { @@ -138,3 +149,23 @@ const doesFileHaveChunks = async ( return Boolean((chunks.hits?.total as SearchTotalHits)?.value); }; + +/** + * Validates that a given `fileId` is valid for the provided action + * @param esClient + * @param logger + * @param fileId + * @param actionId + */ +export const validateActionFileId = async ( + esClient: ElasticsearchClient, + logger: Logger, + fileId: string, + actionId: string +): Promise<void> => { + const fileInfo = await getFileInfo(esClient, logger, fileId); + + if (fileInfo.actionId !== actionId) { + throw new CustomHttpRequestError(`Invalid file id [${fileId}] for action [${actionId}]`, 400); + } +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts index ca2614b710ee7..64725aae58b8d 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts @@ -9,3 +9,5 @@ export * from './actions'; export { getActionDetailsById } from './action_details_by_id'; export { getActionList, getActionListByStatus } from './action_list'; export { getPendingActionsSummary } from './pending_actions_summary'; +export { validateActionId } from './validate_action_id'; +export * from './action_files'; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts index aec86fe776663..3b16c3fb86ad4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts @@ -14,6 +14,7 @@ import type { EndpointActionResponse, LogsEndpointAction, LogsEndpointActionResponse, + FileUploadMetadata, } from '../../../../common/endpoint/types'; import { ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, @@ -160,3 +161,57 @@ export const applyActionListEsSearchMock = ( return new EndpointActionGenerator().toEsSearchResponse([]); }); }; + +export const generateFileMetadataDocumentMock = ( + overrides: Partial<FileUploadMetadata> = {} +): FileUploadMetadata => { + return { + action_id: '83484393-ddba-4f3c-9c7e-f492ee198a85', + agent_id: 'eef9254d-f3ed-4518-889f-18714bd6cec1', + src: 'endpoint', + upload_id: 'da2da88f-4e0a-486d-9261-e89927a297d3', + upload_start: 1674492651278, + contents: [ + { + accessed: '2023-01-23 11:44:43.764000018Z', + created: '1969-12-31 19:00:00.000000000Z', + directory: '/home/ubuntu/elastic-agent-8.7.0-SNAPSHOT-linux-arm64/', + file_extension: '.txt', + file_name: 'NOTICE.txt', + gid: 1000, + inode: 259388, + mode: '0644', + mountpoint: '/', + mtime: '2023-01-22 08:38:58.000000000Z', + path: '/home/ubuntu/elastic-agent-8.7.0-SNAPSHOT-linux-arm64/NOTICE.txt', + sha256: '065bf83eb2060d30277faa481b2b165c69484d1be1046192eb03f088e9402056', + size: 946667, + target_path: '', + type: 'file', + uid: 1000, + }, + ], + file: { + ChunkSize: 4194304, + Status: 'READY', + attributes: ['archive', 'compressed'], + compression: 'deflate', + extension: 'zip', + hash: { + sha256: 'e5441eb2bb8a774783d4ff4690153832688bd546c878e953acc3da089ac05d06', + }, + mime_type: 'application/zip', + name: 'upload.zip', + size: 64395, + type: 'file', + }, + host: { + hostname: 'endpoint10', + }, + transithash: { + sha256: 'a0d6d6a2bb73340d4a0ed32b2a46272a19dd111427770c072918aed7a8565010', + }, + + ...overrides, + }; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/validate_action_id.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/validate_action_id.ts new file mode 100644 index 0000000000000..8ba75deb29797 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/validate_action_id.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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types'; +import { NotFoundError } from '../../errors'; +import { catchAndWrapError } from '../../utils'; +import type { LogsEndpointAction } from '../../../../common/endpoint/types'; +import { ENDPOINT_ACTIONS_INDEX } from '../../../../common/endpoint/constants'; + +/** + * Validates that a given action ID is a valid Endpoint action + * + * @throws + */ +export const validateActionId = async ( + esClient: ElasticsearchClient, + actionId: string +): Promise<void> => { + const response = await esClient + .search<LogsEndpointAction>({ + index: ENDPOINT_ACTIONS_INDEX, + body: { + query: { + bool: { + filter: [ + { term: { action_id: actionId } }, + { term: { input_type: 'endpoint' } }, + { term: { type: 'INPUT_ACTION' } }, + ], + }, + }, + }, + _source: false, + }) + .catch(catchAndWrapError); + + if (!(response.hits?.total as SearchTotalHits)?.value) { + throw new NotFoundError(`Action id [${actionId}] not found`, response); + } +}; diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts index f915d21664e4f..77b0b1e459bcd 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts @@ -118,6 +118,7 @@ export const mockSearchStrategyResponse: IEsSearchResponse<unknown> = { _id: 'dd4fa2d4bd-1526378075029582', _score: 0, fields: { + '@timestamp': ['2022-07-18T15:08:48.064Z'], 'source.geo.continent_name': ['North America'], 'source.geo.region_iso_code': ['US-VA'], 'source.geo.country_iso_code': ['US'], diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts index 7c2abcf5bb344..54419b3902539 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts @@ -17,11 +17,9 @@ import type { NetworkTopNFlowEdges, NetworkTopNFlowRequestOptions, AutonomousSystemItem, -} from '../../../../../../common/search_strategy'; -import { - NetworkTopTablesFields, FlowTargetSourceDest, } from '../../../../../../common/search_strategy'; +import { NetworkTopTablesFields } from '../../../../../../common/search_strategy'; import { getOppositeField } from '../helpers'; import { formatResponseObjectValues, @@ -48,7 +46,7 @@ const formatTopNFlowEdges = ( [flowTarget]: { domain: bucket.domain.buckets.map((bucketDomain) => bucketDomain.key), ip: bucket.key, - location: getGeoItem(bucket), + location: getGeoItem(bucket, flowTarget), autonomous_system: getAsItem(bucket), flows: getOr(0, 'flows.value', bucket), [`${getOppositeField(flowTarget)}_ips`]: getOr( @@ -68,24 +66,22 @@ const formatTopNFlowEdges = ( }, })); -const getFlowTargetFromString = (flowAsString: string) => - flowAsString === 'source' ? FlowTargetSourceDest.source : FlowTargetSourceDest.destination; - -const getGeoItem = (result: NetworkTopNFlowBuckets): GeoItem | null => +const getGeoItem = ( + result: NetworkTopNFlowBuckets, + flowTarget: FlowTargetSourceDest +): GeoItem | null => result.location.top_geo.hits.hits.length > 0 && result.location.top_geo.hits.hits[0].fields ? { geo: formatResponseObjectValues( getOr( '', - `${Object.keys(result.location.top_geo.hits.hits[0].fields)[0].split('.geo')[0]}.geo`, + `${flowTarget}.geo`, unflattenObject( transformLocationFields(getOr({}, `location.top_geo.hits.hits[0].fields`, result)) ) ) ), - flowTarget: getFlowTargetFromString( - Object.keys(result.location.top_geo.hits.hits[0].fields)[0].split('.geo')[0] - ), + flowTarget, } : null; diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json index f9a3820b27971..4522a35f793ec 100644 --- a/x-pack/plugins/security_solution/tsconfig.json +++ b/x-pack/plugins/security_solution/tsconfig.json @@ -136,5 +136,6 @@ "@kbn/user-profile-components", "@kbn/guided-onboarding", "@kbn/securitysolution-ecs", + "@kbn/cell-actions", ] } diff --git a/x-pack/plugins/synthetics/common/formatters/format_synthetics_policy.test.ts b/x-pack/plugins/synthetics/common/formatters/format_synthetics_policy.test.ts index 0c71d7f01ace1..78660be7c18cf 100644 --- a/x-pack/plugins/synthetics/common/formatters/format_synthetics_policy.test.ts +++ b/x-pack/plugins/synthetics/common/formatters/format_synthetics_policy.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { DataStream } from '../runtime_types'; +import { ConfigKey, DataStream } from '../runtime_types'; import { formatSyntheticsPolicy } from './format_synthetics_policy'; describe('formatSyntheticsPolicy', () => { @@ -499,8 +499,11 @@ describe('formatSyntheticsPolicy', () => { }); }); - it('formats http policy', () => { - const { formattedPolicy } = formatSyntheticsPolicy(testNewPolicy, DataStream.HTTP, httpPolicy); + it.each([true, false])('formats http policy', (isTLSEnabled) => { + const { formattedPolicy } = formatSyntheticsPolicy(testNewPolicy, DataStream.HTTP, { + ...httpPolicy, + [ConfigKey.METADATA]: { is_tls_enabled: isTLSEnabled }, + }); expect(formattedPolicy).toEqual({ enabled: true, @@ -518,7 +521,7 @@ describe('formatSyntheticsPolicy', () => { vars: { __ui: { type: 'yaml', - value: '{"is_tls_enabled":false,"is_zip_url_tls_enabled":false}', + value: `{"is_tls_enabled":${isTLSEnabled}}`, }, 'check.request.body': { type: 'yaml', @@ -628,11 +631,11 @@ describe('formatSyntheticsPolicy', () => { }, 'ssl.supported_protocols': { type: 'yaml', - value: '["TLSv1.1","TLSv1.2","TLSv1.3"]', + value: isTLSEnabled ? '["TLSv1.1","TLSv1.2","TLSv1.3"]' : null, }, 'ssl.verification_mode': { type: 'text', - value: 'full', + value: isTLSEnabled ? 'full' : null, }, tags: { type: 'yaml', @@ -1287,7 +1290,7 @@ const httpPolicy: any = { journey_id: '', hash: '', id: '51ccd9d9-fc3f-4718-ba9d-b6ef80e73fc5', - __ui: { is_tls_enabled: false, is_zip_url_tls_enabled: false }, + __ui: { is_tls_enabled: false }, urls: 'https://www.google.com', max_redirects: '0', 'url.port': null, diff --git a/x-pack/plugins/synthetics/common/formatters/tls/formatters.ts b/x-pack/plugins/synthetics/common/formatters/tls/formatters.ts index 58c625f40f835..7d53a94c0af71 100644 --- a/x-pack/plugins/synthetics/common/formatters/tls/formatters.ts +++ b/x-pack/plugins/synthetics/common/formatters/tls/formatters.ts @@ -4,29 +4,43 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { TLSFields, ConfigKey } from '../../runtime_types/monitor_management'; +import { TLSFields, TLSVersion, ConfigKey } from '../../runtime_types/monitor_management'; import { Formatter } from '../common/formatters'; type TLSFormatMap = Record<keyof TLSFields, Formatter>; export const tlsFormatters: TLSFormatMap = { [ConfigKey.TLS_CERTIFICATE_AUTHORITIES]: (fields) => - tlsValueToYamlFormatter(fields[ConfigKey.TLS_CERTIFICATE_AUTHORITIES]), + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsValueToYamlFormatter(fields[ConfigKey.TLS_CERTIFICATE_AUTHORITIES]) + : null, [ConfigKey.TLS_CERTIFICATE]: (fields) => - tlsValueToYamlFormatter(fields[ConfigKey.TLS_CERTIFICATE]), - [ConfigKey.TLS_KEY]: (fields) => tlsValueToYamlFormatter(fields[ConfigKey.TLS_KEY]), + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsValueToYamlFormatter(fields[ConfigKey.TLS_CERTIFICATE]) + : null, + [ConfigKey.TLS_KEY]: (fields) => + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsValueToYamlFormatter(fields[ConfigKey.TLS_KEY]) + : null, [ConfigKey.TLS_KEY_PASSPHRASE]: (fields) => - tlsValueToStringFormatter(fields[ConfigKey.TLS_KEY_PASSPHRASE]), + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsValueToStringFormatter(fields[ConfigKey.TLS_KEY_PASSPHRASE]) + : null, [ConfigKey.TLS_VERIFICATION_MODE]: (fields) => - tlsValueToStringFormatter(fields[ConfigKey.TLS_VERIFICATION_MODE]), - [ConfigKey.TLS_VERSION]: (fields) => tlsArrayToYamlFormatter(fields[ConfigKey.TLS_VERSION]), + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsValueToStringFormatter(fields[ConfigKey.TLS_VERIFICATION_MODE]) + : null, + [ConfigKey.TLS_VERSION]: (fields) => + fields[ConfigKey.METADATA]?.is_tls_enabled + ? tlsArrayToYamlFormatter(fields[ConfigKey.TLS_VERSION]) + : null, }; // only add tls settings if they are enabled by the user and isEnabled is true -export const tlsValueToYamlFormatter = (tlsValue: string = '') => +export const tlsValueToYamlFormatter = (tlsValue: string | null = '') => tlsValue ? JSON.stringify(tlsValue) : null; -export const tlsValueToStringFormatter = (tlsValue: string = '') => tlsValue || null; +export const tlsValueToStringFormatter = (tlsValue: string | null = '') => tlsValue || null; -export const tlsArrayToYamlFormatter = (tlsValue: string[] = []) => - tlsValue.length ? JSON.stringify(tlsValue) : null; +export const tlsArrayToYamlFormatter = (tlsValue: TLSVersion[] | null = []) => + tlsValue?.length ? JSON.stringify(tlsValue) : null; diff --git a/x-pack/plugins/synthetics/e2e/page_objects/synthetics/synthetics_app.tsx b/x-pack/plugins/synthetics/e2e/page_objects/synthetics/synthetics_app.tsx index f9e57b952961c..a41dea3b617d4 100644 --- a/x-pack/plugins/synthetics/e2e/page_objects/synthetics/synthetics_app.tsx +++ b/x-pack/plugins/synthetics/e2e/page_objects/synthetics/synthetics_app.tsx @@ -89,15 +89,9 @@ export function syntheticsAppPageProvider({ page, kibanaUrl }: { page: Page; kib }, async navigateToAddMonitor() { - if (await page.isVisible('text=select a different monitor type', { timeout: 0 })) { - await page.click('text=select a different monitor type'); - } else if (await page.isVisible('text=Create monitor', { timeout: 0 })) { - await page.click('text=Create monitor'); - } else { - await page.goto(addMonitor, { - waitUntil: 'networkidle', - }); - } + await page.goto(addMonitor, { + waitUntil: 'networkidle', + }); }, async ensureIsOnMonitorConfigPage() { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx index dc5a2b2f3f62c..043a302b13aeb 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiDescriptionList, EuiLoadingContent, EuiSpacer } from '@elastic/eui'; +import { formatBytes } from '../../step_details_page/hooks/use_object_metrics'; import { ThresholdIndicator } from '../components/thershold_indicator'; import { useNetworkTimings } from '../../step_details_page/hooks/use_network_timings'; import { useNetworkTimingsPrevious24Hours } from '../../step_details_page/hooks/use_network_timings_prev'; @@ -36,14 +37,16 @@ export const ResultDetails = ({ ); }; export const TimingDetails = ({ step }: { step: JourneyStep }) => { - const { timingsWithLabels } = useNetworkTimings( + const { timingsWithLabels, transferSize } = useNetworkTimings( step.monitor.check_group, step.synthetics.step?.index ); - const { timingsWithLabels: prevTimingsWithLabels, loading } = useNetworkTimingsPrevious24Hours( - step.synthetics.step?.index - ); + const { + timingsWithLabels: prevTimingsWithLabels, + loading, + transferSizePrev, + } = useNetworkTimingsPrevious24Hours(step.synthetics.step?.index); const items = timingsWithLabels?.map((item) => { const prevValueItem = prevTimingsWithLabels?.find((prev) => prev.label === item.label); @@ -63,8 +66,24 @@ export const TimingDetails = ({ step }: { step: JourneyStep }) => { }; }); + items.push({ + title: transferSize.label, + description: loading ? ( + <EuiLoadingContent lines={1} /> + ) : ( + <ThresholdIndicator + current={transferSize.value} + previous={transferSizePrev.value} + currentFormatted={formatBytes(transferSize.value ?? 0)} + previousFormatted={formatBytes(transferSizePrev.value ?? 0)} + /> + ), + }); + return ( <EuiDescriptionList + compressed={true} + gutterSize="s" type="column" listItems={items} style={{ maxWidth: 250 }} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx new file mode 100644 index 0000000000000..5997d7969bc9f --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx @@ -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 { useEsSearch } from '@kbn/observability-plugin/public'; +import { useParams } from 'react-router-dom'; +import { useMemo } from 'react'; +import { createEsQuery } from '../../../../../../common/utils/es_search'; +import { Ping } from '../../../../../../common/runtime_types'; +import { STEP_END_FILTER } from '../../../../../../common/constants/data_filters'; +import { SYNTHETICS_INDEX_PATTERN } from '../../../../../../common/constants'; +import { useSyntheticsRefreshContext } from '../../../contexts'; + +export function useFailedTestByStep({ to, from }: { to: string; from: string }) { + const { lastRefresh } = useSyntheticsRefreshContext(); + + const { monitorId } = useParams<{ monitorId: string }>(); + + const params = createEsQuery({ + index: SYNTHETICS_INDEX_PATTERN, + body: { + size: 0, + track_total_hits: true, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + lte: to, + gte: from, + }, + }, + }, + STEP_END_FILTER, + { + term: { + 'synthetics.step.status': 'failed', + }, + }, + { + term: { + config_id: monitorId, + }, + }, + ], + }, + }, + aggs: { + steps: { + terms: { + field: 'synthetics.step.name.keyword', + size: 1000, + }, + aggs: { + doc: { + top_hits: { + size: 1, + }, + }, + }, + }, + }, + }, + }); + + const { data, loading } = useEsSearch<Ping, typeof params>(params, [lastRefresh, monitorId], { + name: `getFailedTestsByStep/${monitorId}`, + }); + + return useMemo(() => { + const total = data?.hits.total.value; + + const failedSteps = data?.aggregations?.steps.buckets.map(({ key, doc_count: count, doc }) => { + const index = doc.hits.hits?.[0]._source?.synthetics?.step?.index; + return { + index, + count, + name: key, + percent: (count / total) * 100, + }; + }); + + return { + failedSteps, + loading, + }; + }, [data, loading]); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx index 7533b7307d616..bcba2d7dd27b7 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx @@ -19,12 +19,12 @@ import { useHistory, useParams } from 'react-router-dom'; import moment from 'moment'; import { ErrorDetailsLink } from '../../common/links/error_details_link'; import { useSelectedLocation } from '../hooks/use_selected_location'; -import { useKibanaDateFormat } from '../../../../../hooks/use_kibana_date_format'; import { Ping, PingState } from '../../../../../../common/runtime_types'; import { useErrorFailedStep } from '../hooks/use_error_failed_step'; import { formatTestDuration, formatTestRunAt, + useDateFormatForTest, } from '../../../utils/monitor_test_result/test_time_formats'; export const ErrorsList = ({ @@ -46,7 +46,7 @@ export const ErrorsList = ({ const history = useHistory(); - const format = useKibanaDateFormat(); + const format = useDateFormatForTest(); const selectedLocation = useSelectedLocation(); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx index d7b1c3357f606..87077c11eb5db 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { FailedTestsByStep } from './failed_tests_by_step'; import { PingState } from '../../../../../../common/runtime_types'; import { PanelWithTitle } from '../../common/components/panel_with_title'; import { MonitorErrorsCount } from '../monitor_summary/monitor_errors_count'; @@ -61,7 +62,9 @@ export const ErrorsTabContent = ({ </PanelWithTitle> </EuiFlexItem> <EuiFlexItem grow={1}> - <PanelWithTitle title={FAILED_TESTS_BY_STEPS_LABEL} /> + <PanelWithTitle title={FAILED_TESTS_BY_STEPS_LABEL}> + <FailedTestsByStep time={time} /> + </PanelWithTitle> </EuiFlexItem> </EuiFlexGroup> </> diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx new file mode 100644 index 0000000000000..3f5b278fd3927 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { Fragment } from 'react'; +import { EuiProgress, EuiSpacer, EuiLoadingContent } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useFailedTestByStep } from '../hooks/use_failed_tests_by_step'; + +export const FailedTestsByStep = ({ time }: { time: { to: string; from: string } }) => { + const { failedSteps, loading } = useFailedTestByStep(time); + + if (loading && !failedSteps) { + return <EuiLoadingContent lines={3} />; + } + + return ( + <> + <EuiSpacer size="m" /> + <div> + {failedSteps?.map((item) => ( + <Fragment key={item.name}> + <EuiProgress + valueText={ + <span> + {i18n.translate('xpack.synthetics.monitorDetails.summary.failedTests.count', { + defaultMessage: 'Failed {count}', + values: { count: item.count }, + })} + </span> + } + max={100} + color="danger" + size="l" + value={item.percent} + label={`${item.index}. ${item.name}`} + /> + <EuiSpacer size="s" /> + </Fragment> + ))} + </div> + </> + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx new file mode 100644 index 0000000000000..c7c1968f2c136 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.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 from 'react'; +import { EuiCallOut, EuiSpacer } from '@elastic/eui'; +import { JourneyStep } from '../../../../../common/runtime_types'; + +export const ErrorCallOut = ({ step }: { step?: JourneyStep }) => { + if (!step || step.synthetics.step?.status !== 'failed') { + return null; + } + + const error = step.error?.message ?? ''; + if (!error) { + return null; + } + + return ( + <> + <EuiCallOut title={error} color="danger" iconType="alert" /> + <EuiSpacer /> + </> + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts index 36c71d1d71b80..a00c7223d3b1b 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts @@ -18,6 +18,7 @@ import { SYNTHETICS_TOTAL_TIMINGS, SYNTHETICS_WAIT_TIMINGS, } from '@kbn/observability-plugin/common'; +import { CONTENT_SIZE_LABEL } from './use_network_timings_prev'; import { SYNTHETICS_INDEX_PATTERN } from '../../../../../../common/constants'; import { useReduxEsSearch } from '../../../hooks/use_redux_es_search'; @@ -62,6 +63,9 @@ export const useNetworkTimings = (checkGroupIdArg?: string, stepIndexArg?: numbe 'synthetics.payload.is_navigation_request': { type: 'boolean', }, + 'synthetics.payload.transfer_size': { + type: 'long', + }, }, query: { bool: { @@ -121,6 +125,11 @@ export const useNetworkTimings = (checkGroupIdArg?: string, stepIndexArg?: numbe field: SYNTHETICS_TOTAL_TIMINGS, }, }, + transferSize: { + sum: { + field: 'synthetics.payload.transfer_size', + }, + }, }, }, }, @@ -138,10 +147,15 @@ export const useNetworkTimings = (checkGroupIdArg?: string, stepIndexArg?: numbe wait: aggs?.wait.value ?? 0, blocked: aggs?.blocked.value ?? 0, ssl: aggs?.ssl.value ?? 0, + transferSize: aggs?.transferSize.value ?? 0, }; return { timings, + transferSize: { + value: timings.transferSize, + label: CONTENT_SIZE_LABEL, + }, timingsWithLabels: [ { value: timings.dns, diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts index e214d62429d4f..7a33aaf1975f5 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts @@ -63,6 +63,9 @@ export const useNetworkTimingsPrevious24Hours = (stepIndexArg?: number) => { 'synthetics.payload.is_navigation_request': { type: 'boolean', }, + 'synthetics.payload.transfer_size': { + type: 'long', + }, }, query: { bool: { @@ -154,6 +157,12 @@ export const useNetworkTimingsPrevious24Hours = (stepIndexArg?: number) => { percents: [50], }, }, + transferSize: { + percentiles: { + field: 'synthetics.payload.transfer_size', + percents: [50], + }, + }, }, }, }, @@ -171,11 +180,16 @@ export const useNetworkTimingsPrevious24Hours = (stepIndexArg?: number) => { wait: aggs?.wait.values['50.0'] ?? 0, blocked: aggs?.blocked.values['50.0'] ?? 0, ssl: aggs?.ssl.values['50.0'] ?? 0, + transferSize: aggs?.transferSize.values['50.0'] ?? 0, }; return { loading, timings, + transferSizePrev: { + value: timings.transferSize, + label: CONTENT_SIZE_LABEL, + }, timingsWithLabels: [ { value: timings.dns, @@ -231,3 +245,7 @@ const SYNTHETICS_SEND_TIMINGS_LABEL = i18n.translate('xpack.synthetics.send', { const SYNTHETICS_RECEIVE_TIMINGS_LABEL = i18n.translate('xpack.synthetics.receive', { defaultMessage: 'Receive', }); + +export const CONTENT_SIZE_LABEL = i18n.translate('xpack.synthetics.contentSize', { + defaultMessage: 'Content Size', +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx index e190a45bd38ba..be8b695221f2b 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx @@ -10,6 +10,7 @@ import { useParams } from 'react-router-dom'; import { useTrackPageview } from '@kbn/observability-plugin/public'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer } from '@elastic/eui'; import { useDispatch } from 'react-redux'; +import { ErrorCallOut } from './error_callout'; import { useStepDetailsBreadcrumbs } from './hooks/use_step_details_breadcrumbs'; import { WaterfallChartContainer } from './step_waterfall_chart/waterfall/waterfall_chart_container'; import { NetworkTimingsDonut } from './step_timing_breakdown/network_timings_donut'; @@ -50,6 +51,7 @@ export const StepDetailPage = () => { return ( <> + <ErrorCallOut step={activeStep} /> {data?.details?.journey?.config_id && ( <MonitorDetailsLinkPortal configId={data.details.journey.config_id} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts index 09404a75e5906..fcf07f1cf8714 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts @@ -36,13 +36,20 @@ export function formatTestRunAt(timestamp: string, format: string) { return stampedMoment.format(format); } -export function useFormatTestRunAt(timestamp?: string) { +export function useDateFormatForTest() { let format = useKibanaDateFormat(); - if (!timestamp) { - return ''; - } + if (format.endsWith('.SSS')) { format = format.replace('.SSS', ''); } + return format; +} + +export function useFormatTestRunAt(timestamp?: string) { + const format = useDateFormatForTest(); + + if (!timestamp) { + return ''; + } return formatTestRunAt(timestamp, format); } diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx index fb7687d28f6e2..f285c70ea57e7 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx @@ -23,7 +23,7 @@ import { } from '../types'; import { defaultConfig } from '../synthetics_policy_create_extension'; -describe('useBarChartsHooks', () => { +describe('useUpdatePolicy', () => { const newPolicy: NewPackagePolicy = { name: '', description: '', @@ -433,6 +433,9 @@ describe('useBarChartsHooks', () => { ...initialProps, config: { ...defaultConfig[DataStream.HTTP], + [ConfigKey.METADATA]: { + is_tls_enabled: true, + }, [ConfigKey.RESPONSE_BODY_CHECK_POSITIVE]: ['test'], [ConfigKey.RESPONSE_BODY_CHECK_NEGATIVE]: ['test'], [ConfigKey.RESPONSE_STATUS_CHECK]: ['test'], diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/browser/browser_test_results.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/browser/browser_test_results.test.tsx index 2a31d54097d5f..6b66fbb68cc3e 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/browser/browser_test_results.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/browser/browser_test_results.test.tsx @@ -58,7 +58,7 @@ describe('BrowserTestRunResult', function () { size: 1000, }, }, - {} + { legacyHitsTotal: false } ); }); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/simple/simple_test_results.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/simple/simple_test_results.test.tsx index c0bab63b1c11d..44441513e2a11 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/simple/simple_test_results.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/test_now_mode/simple/simple_test_results.test.tsx @@ -43,7 +43,7 @@ describe('SimpleTestResults', function () { size: 1000, }, }, - {} + { legacyHitsTotal: false } ); }); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts index 305963e1ce430..d720306f357c6 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts @@ -5,7 +5,7 @@ * 2.0. */ import { SavedObjectsClientContract, KibanaRequest } from '@kbn/core/server'; -import { SavedObject } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import { formatTelemetryDeleteEvent, sendTelemetryEvents, diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts index 5b93295d7bc72..6ae8027d55107 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts @@ -52,7 +52,6 @@ export const getNormalizeCommonFields = ({ namespace, }: NormalizedProjectProps): Partial<CommonFields> => { const defaultFields = DEFAULT_COMMON_FIELDS; - const normalizedFields = { [ConfigKey.JOURNEY_ID]: monitor.id || defaultFields[ConfigKey.JOURNEY_ID], [ConfigKey.MONITOR_SOURCE_TYPE]: SourceType.PROJECT, @@ -252,3 +251,7 @@ export const normalizeYamlConfig = (monitor: NormalizedProjectProps['monitor']) unsupportedKeys, }; }; + +// returns true when any ssl fields are defined +export const getHasTLSFields = (monitor: ProjectMonitor) => + Object.keys(monitor).some((key) => key.includes('ssl')); diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts index 497e258b38f8a..471224caa98e5 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import { omit } from 'lodash'; import { DataStream, Locations, @@ -144,7 +144,7 @@ describe('http normalizers', () => { normalizedFields: { ...DEFAULT_FIELDS[DataStream.HTTP], __ui: { - is_tls_enabled: false, + is_tls_enabled: true, }, 'check.request.body': { type: 'json', @@ -201,7 +201,7 @@ describe('http normalizers', () => { normalizedFields: { ...DEFAULT_FIELDS[DataStream.HTTP], __ui: { - is_tls_enabled: false, + is_tls_enabled: true, }, 'check.request.body': { type: 'text', @@ -255,5 +255,145 @@ describe('http normalizers', () => { }, ]); }); + + it('sets is_tls_enabled appropriately', () => { + const actual = normalizeProjectMonitors({ + locations, + privateLocations, + monitors: [monitors[0], { ...omit(monitors[1], ['ssl.supported_protocols']) }], + projectId, + namespace: 'test-space', + version: '8.5.0', + }); + expect(actual).toEqual([ + { + errors: [ + { + details: + '`http` project monitors must have exactly one value for field `urls` in version `8.5.0`. Your monitor was not created or updated.', + id: 'my-monitor-2', + reason: 'Invalid Heartbeat configuration', + }, + { + details: + 'The following Heartbeat options are not supported for http project monitors in 8.5.0: check.response.body|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.', + id: 'my-monitor-2', + reason: 'Unsupported Heartbeat option', + }, + ], + normalizedFields: { + ...DEFAULT_FIELDS[DataStream.HTTP], + __ui: { + is_tls_enabled: true, + }, + 'check.request.body': { + type: 'json', + value: '{"json":"body"}', + }, + 'check.request.headers': { + 'a-header': 'a-header-value', + }, + 'check.request.method': 'POST', + 'check.response.body.negative': [], + 'check.response.body.positive': [], + 'check.response.headers': {}, + 'check.response.status': ['200'], + config_id: '', + custom_heartbeat_id: 'my-monitor-2-test-project-id-test-space', + enabled: false, + form_monitor_type: 'http', + journey_id: 'my-monitor-2', + locations: [], + max_redirects: '0', + name: 'My Monitor 2', + namespace: 'test_space', + origin: 'project', + original_space: 'test-space', + password: '', + project_id: 'test-project-id', + proxy_url: '', + 'response.include_body': 'always', + 'response.include_headers': false, + schedule: { + number: '60', + unit: 'm', + }, + 'service.name': 'test service', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'ssl.supported_protocols': ['TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + tags: [], + timeout: '80', + type: 'http', + urls: 'http://localhost:9200', + 'url.port': null, + username: '', + id: '', + hash: testHash, + }, + unsupportedKeys: ['check.response.body', 'unsupportedKey.nestedUnsupportedKey'], + }, + { + errors: [], + normalizedFields: { + ...DEFAULT_FIELDS[DataStream.HTTP], + __ui: { + is_tls_enabled: false, + }, + 'check.request.body': { + type: 'text', + value: 'sometextbody', + }, + 'check.request.headers': { + 'a-header': 'a-header-value', + }, + 'check.request.method': 'POST', + 'check.response.body.negative': [], + 'check.response.body.positive': ['Saved', 'saved'], + 'check.response.headers': {}, + 'check.response.status': ['200'], + config_id: '', + custom_heartbeat_id: 'my-monitor-3-test-project-id-test-space', + enabled: false, + form_monitor_type: 'http', + journey_id: 'my-monitor-3', + locations: [], + max_redirects: '0', + name: 'My Monitor 3', + namespace: 'test_space', + origin: 'project', + original_space: 'test-space', + password: '', + project_id: 'test-project-id', + proxy_url: '', + 'response.include_body': 'always', + 'response.include_headers': false, + schedule: { + number: '60', + unit: 'm', + }, + 'service.name': 'test service', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + tags: ['tag2', 'tag2'], + timeout: '80', + type: 'http', + urls: 'http://localhost:9200', + 'url.port': null, + username: '', + id: '', + hash: testHash, + }, + unsupportedKeys: [], + }, + ]); + }); }); }); diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts index 8f2333bcd103a..9d8585db686c0 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts @@ -23,6 +23,7 @@ import { getOptionalArrayField, getUnsupportedKeysError, getInvalidUrlsOrHostsError, + getHasTLSFields, } from './common_fields'; export const getNormalizeHTTPFields = ({ @@ -69,7 +70,12 @@ export const getNormalizeHTTPFields = ({ [ConfigKey.TLS_VERSION]: get(monitor, ConfigKey.TLS_VERSION) ? (getOptionalListField(get(monitor, ConfigKey.TLS_VERSION)) as TLSVersion[]) : defaultFields[ConfigKey.TLS_VERSION], + [ConfigKey.METADATA]: { + ...DEFAULT_FIELDS[DataStream.HTTP][ConfigKey.METADATA], + is_tls_enabled: getHasTLSFields(monitor), + }, }; + return { normalizedFields: { ...defaultFields, diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts index 393e2dbe63156..87137c4a5d6e0 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import { omit } from 'lodash'; import { DataStream, Locations, @@ -108,7 +108,7 @@ describe('tcp normalizers', () => { normalizedFields: { ...DEFAULT_FIELDS[DataStream.TCP], __ui: { - is_tls_enabled: false, + is_tls_enabled: true, }, 'check.receive': '', 'check.send': '', @@ -159,6 +159,73 @@ describe('tcp normalizers', () => { }, { errors: [], + normalizedFields: { + ...DEFAULT_FIELDS[DataStream.TCP], + __ui: { + is_tls_enabled: true, + }, + 'check.receive': '', + 'check.send': '', + config_id: '', + custom_heartbeat_id: 'always-down-test-project-id-test-space', + enabled: true, + form_monitor_type: 'tcp', + hosts: 'localhost:18278', + 'url.port': null, + journey_id: 'always-down', + locations: [ + { + geo: { + lat: 33.333, + lon: 73.333, + }, + id: 'us_central', + isServiceManaged: true, + label: 'Test Location', + }, + ], + name: 'Always Down', + namespace: 'test_space', + origin: 'project', + original_space: 'test-space', + project_id: 'test-project-id', + proxy_url: '', + proxy_use_local_resolver: false, + schedule: { + number: '1', + unit: 'm', + }, + 'service.name': 'test service', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'ssl.supported_protocols': ['TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + tags: ['tag1', 'tag2'], + timeout: '16', + type: 'tcp', + id: '', + urls: '', + hash: testHash, + }, + unsupportedKeys: [], + }, + { + errors: [ + { + details: + '`tcp` project monitors must have exactly one value for field `hosts` in version `8.5.0`. Your monitor was not created or updated.', + id: 'always-down', + reason: 'Invalid Heartbeat configuration', + }, + { + details: + 'The following Heartbeat options are not supported for tcp project monitors in 8.5.0: ports|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.', + id: 'always-down', + reason: 'Unsupported Heartbeat option', + }, + ], normalizedFields: { ...DEFAULT_FIELDS[DataStream.TCP], __ui: { @@ -170,6 +237,127 @@ describe('tcp normalizers', () => { custom_heartbeat_id: 'always-down-test-project-id-test-space', enabled: true, form_monitor_type: 'tcp', + hosts: 'localhost', + 'url.port': null, + journey_id: 'always-down', + locations: [ + { + geo: { + lat: 33.333, + lon: 73.333, + }, + id: 'us_central', + isServiceManaged: true, + label: 'Test Location', + }, + ], + name: 'Always Down', + namespace: 'test_space', + origin: 'project', + original_space: 'test-space', + project_id: 'test-project-id', + proxy_url: '', + proxy_use_local_resolver: false, + schedule: { + number: '1', + unit: 'm', + }, + 'service.name': '', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + tags: ['tag1', 'tag2'], + timeout: '16', + type: 'tcp', + id: '', + urls: '', + hash: testHash, + }, + unsupportedKeys: ['ports', 'unsupportedKey.nestedUnsupportedKey'], + }, + ]); + }); + + it('sets is_tls_enabled appropriately', () => { + const actual = normalizeProjectMonitors({ + locations, + privateLocations, + monitors: [monitors[0], monitors[1], { ...omit(monitors[2], ['ssl.supported_protocols']) }], + projectId, + namespace: 'test-space', + version: '8.5.0', + }); + expect(actual).toEqual([ + { + errors: [], + normalizedFields: { + ...DEFAULT_FIELDS[DataStream.TCP], + __ui: { + is_tls_enabled: true, + }, + 'check.receive': '', + 'check.send': '', + config_id: '', + custom_heartbeat_id: 'gmail-smtp-test-project-id-test-space', + enabled: true, + form_monitor_type: 'tcp', + hosts: 'smtp.gmail.com:587', + 'url.port': null, + journey_id: 'gmail-smtp', + locations: [ + { + geo: { + lat: 33.333, + lon: 73.333, + }, + id: 'us_central', + isServiceManaged: true, + label: 'Test Location', + }, + ], + name: 'GMail SMTP', + namespace: 'test_space', + origin: 'project', + original_space: 'test-space', + project_id: 'test-project-id', + proxy_url: '', + proxy_use_local_resolver: false, + schedule: { + number: '1', + unit: 'm', + }, + 'service.name': 'test service', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'ssl.supported_protocols': ['TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + tags: ['service:smtp', 'org:google'], + timeout: '16', + type: 'tcp', + id: '', + urls: '', + hash: testHash, + }, + unsupportedKeys: [], + }, + { + errors: [], + normalizedFields: { + ...DEFAULT_FIELDS[DataStream.TCP], + __ui: { + is_tls_enabled: true, + }, + 'check.receive': '', + 'check.send': '', + config_id: '', + custom_heartbeat_id: 'always-down-test-project-id-test-space', + enabled: true, + form_monitor_type: 'tcp', hosts: 'localhost:18278', 'url.port': null, journey_id: 'always-down', diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts index 161dec6681471..ecd8825f96f2a 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts @@ -22,6 +22,7 @@ import { getOptionalListField, getInvalidUrlsOrHostsError, getUnsupportedKeysError, + getHasTLSFields, } from './common_fields'; export const getNormalizeTCPFields = ({ @@ -65,6 +66,10 @@ export const getNormalizeTCPFields = ({ [ConfigKey.TLS_VERSION]: get(monitor, ConfigKey.TLS_VERSION) ? (getOptionalListField(get(monitor, ConfigKey.TLS_VERSION)) as TLSVersion[]) : defaultFields[ConfigKey.TLS_VERSION], + [ConfigKey.METADATA]: { + ...DEFAULT_FIELDS[DataStream.TCP][ConfigKey.METADATA], + is_tls_enabled: getHasTLSFields(monitor), + }, }; return { normalizedFields: { diff --git a/x-pack/plugins/synthetics/tsconfig.json b/x-pack/plugins/synthetics/tsconfig.json index 685a74cc6e871..e752376f4e908 100644 --- a/x-pack/plugins/synthetics/tsconfig.json +++ b/x-pack/plugins/synthetics/tsconfig.json @@ -70,6 +70,7 @@ "@kbn/actions-plugin", "@kbn/core-elasticsearch-server", "@kbn/core-saved-objects-api-server-mocks", + "@kbn/core-saved-objects-server", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/list_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/list_form.tsx index c5150f5f0bdb9..8b0c814b7113c 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/list_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/list_form.tsx @@ -29,7 +29,7 @@ export interface AggListProps { export const AggListForm: React.FC<AggListProps> = ({ deleteHandler, list, onChange, options }) => { const listKeys = Object.keys(list); return ( - <Fragment> + <> {listKeys.map((aggName: AggName, i) => { const otherAggNames = listKeys.filter((k) => k !== aggName); return ( @@ -47,6 +47,6 @@ export const AggListForm: React.FC<AggListProps> = ({ deleteHandler, list, onCha </Fragment> ); })} - </Fragment> + </> ); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_form.tsx index 2c63d5c3618f4..ee1d408aa5b2b 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_form.tsx @@ -34,7 +34,7 @@ export const GroupByListForm: React.FC<ListProps> = ({ }) => { const listKeys = Object.keys(list); return ( - <Fragment> + <> {listKeys.map((aggName: AggName, i) => { const otherAggNames = listKeys.filter((k) => k !== aggName); return ( @@ -52,6 +52,6 @@ export const GroupByListForm: React.FC<ListProps> = ({ </Fragment> ); })} - </Fragment> + </> ); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_summary.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_summary.tsx index 7403bb80568b6..a4548cb042d1a 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_summary.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/group_by_list/list_summary.tsx @@ -20,7 +20,7 @@ interface ListProps { export const GroupByListSummary: React.FC<ListProps> = ({ list }) => { const listKeys = Object.keys(list); return ( - <Fragment> + <> {listKeys.map((optionsDataId: string) => { return ( <Fragment key={optionsDataId}> @@ -31,6 +31,6 @@ export const GroupByListSummary: React.FC<ListProps> = ({ list }) => { </Fragment> ); })} - </Fragment> + </> ); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx index 4507dcc70a62a..d61b18632cef4 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Fragment, FC, useEffect, useState } from 'react'; +import React, { type FC, useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { @@ -485,7 +485,7 @@ export const StepCreateForm: FC<StepCreateFormProps> = React.memo( </EuiFlexItem> </EuiFlexGroup> {progressPercentComplete !== undefined && isBatchTransform && ( - <Fragment> + <> <EuiSpacer size="m" /> <EuiText size="xs"> <strong> @@ -508,10 +508,10 @@ export const StepCreateForm: FC<StepCreateFormProps> = React.memo( <EuiText size="xs">{progressPercentComplete}%</EuiText> </EuiFlexItem> </EuiFlexGroup> - </Fragment> + </> )} {created && ( - <Fragment> + <> <EuiHorizontalRule /> <EuiFlexGroup gutterSize="l"> <EuiFlexItem style={PANEL_ITEM_STYLE} grow={false}> @@ -566,7 +566,7 @@ export const StepCreateForm: FC<StepCreateFormProps> = React.memo( </EuiFlexItem> )} </EuiFlexGroup> - </Fragment> + </> )} </EuiForm> {alertFlyoutVisible ? ( diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx index cc60b0625e4b9..140d58523b38a 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_summary.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Fragment, FC } from 'react'; +import React, { type FC } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; @@ -86,7 +86,7 @@ export const StepDefineSummary: FC<Props> = ({ <div data-test-subj="transformStepDefineSummary"> <EuiForm> {searchItems.savedSearch === undefined && ( - <Fragment> + <> <EuiFormRow label={i18n.translate('xpack.transform.stepDefineSummary.dataViewLabel', { defaultMessage: 'Data view', @@ -121,7 +121,7 @@ export const StepDefineSummary: FC<Props> = ({ </EuiCodeBlock> </EuiFormRow> )} - </Fragment> + </> )} {searchItems.savedSearch !== undefined && searchItems.savedSearch.id !== undefined && ( diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx index c92b691f65c36..0a221cf735395 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Fragment, FC, useRef, useState, createContext, useMemo } from 'react'; +import React, { type FC, useRef, useState, createContext, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; @@ -58,10 +58,10 @@ const StepDefine: FC<DefinePivotStepProps> = ({ const definePivotRef = useRef(null); return ( - <Fragment> + <> <div ref={definePivotRef} /> {isCurrentStep && ( - <Fragment> + <> <StepDefineForm onChange={setStepDefineState} overrides={{ ...stepDefineState }} @@ -71,12 +71,12 @@ const StepDefine: FC<DefinePivotStepProps> = ({ next={() => setCurrentStep(WIZARD_STEPS.DETAILS)} nextActive={stepDefineState.valid} /> - </Fragment> + </> )} {!isCurrentStep && ( <StepDefineSummary formState={{ ...stepDefineState }} searchItems={searchItems} /> )} - </Fragment> + </> ); }; @@ -141,7 +141,7 @@ export const Wizard: FC<WizardProps> = React.memo(({ cloneConfig, searchItems }) defaultMessage: 'Transform details', }), children: ( - <Fragment> + <> {currentStep === WIZARD_STEPS.DETAILS ? ( <StepDetailsForm onChange={setStepDetailsState} @@ -161,7 +161,7 @@ export const Wizard: FC<WizardProps> = React.memo(({ cloneConfig, searchItems }) nextActive={stepDetailsState.valid} /> )} - </Fragment> + </> ), status: currentStep >= WIZARD_STEPS.DETAILS ? undefined : ('incomplete' as EuiStepStatus), }; @@ -173,7 +173,7 @@ export const Wizard: FC<WizardProps> = React.memo(({ cloneConfig, searchItems }) defaultMessage: 'Create', }), children: ( - <Fragment> + <> {currentStep === WIZARD_STEPS.CREATE ? ( <StepCreateForm createDataView={stepDetailsState.createDataView} @@ -189,7 +189,7 @@ export const Wizard: FC<WizardProps> = React.memo(({ cloneConfig, searchItems }) {currentStep === WIZARD_STEPS.CREATE && !stepCreateState.created && ( <WizardNav previous={() => setCurrentStep(WIZARD_STEPS.DETAILS)} /> )} - </Fragment> + </> ), status: currentStep >= WIZARD_STEPS.CREATE ? undefined : ('incomplete' as EuiStepStatus), }; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx index 01bec7cadb729..5ac8e6597e740 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Fragment } from 'react'; +import React from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { @@ -266,7 +266,7 @@ export const useColumns = ( return ( <EuiFlexGroup alignItems="center" gutterSize="xs"> {isBatchTransform && ( - <Fragment> + <> <EuiFlexItem style={{ width: '40px' }} grow={false}> <EuiProgress value={progress} @@ -281,10 +281,10 @@ export const useColumns = ( <EuiFlexItem style={{ width: '35px' }} grow={false}> <EuiText size="xs">{`${progress}%`}</EuiText> </EuiFlexItem> - </Fragment> + </> )} {!isBatchTransform && ( - <Fragment> + <> <EuiFlexItem style={{ width: '40px' }} grow={false}> {/* If not stopped, failed or waiting show the animated progress bar */} {item.stats.state !== TRANSFORM_STATE.STOPPED && @@ -302,7 +302,7 @@ export const useColumns = ( <EuiFlexItem style={{ width: '35px' }} grow={false}>   </EuiFlexItem> - </Fragment> + </> )} </EuiFlexGroup> ); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 48a78f2d86169..c8999ae6bf74b 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -16290,7 +16290,6 @@ "xpack.infra.deprecations.tiebreakerAdjustIndexing": "Ajustez votre indexation pour utiliser \"{field}\" comme moyen de départager.", "xpack.infra.deprecations.timestampAdjustIndexing": "Ajustez votre indexation pour utiliser \"{field}\" comme horodatage.", "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "Dernières {duration} de données pour l'heure sélectionnée", - "xpack.infra.hostsTable.errorOnCreateOrLoadDataview": "Une erreur s'est produite lors du chargement ou de la création de la vue de données : {metricAlias}", "xpack.infra.inventoryTimeline.header": "{metricLabel} moyen", "xpack.infra.kibanaMetrics.cloudIdMissingErrorMessage": "Le modèle de {metricId} nécessite un cloudId, mais aucun n'a été attribué à {nodeId}.", "xpack.infra.kibanaMetrics.invalidInfraMetricErrorMessage": "{id} n'est pas une valeur inframétrique valide", @@ -16498,16 +16497,27 @@ "xpack.infra.homePage.noMetricsIndicesInstructionsActionLabel": "Voir les instructions de configuration", "xpack.infra.homePage.settingsTabTitle": "Paramètres", "xpack.infra.homePage.toolbar.kqlSearchFieldPlaceholder": "Rechercher des données d'infrastructure… (par exemple host.name:host-1)", - "xpack.infra.hostsPage.experimentalBadgeDescription": "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.", - "xpack.infra.hostsPage.experimentalBadgeLabel": "Version d'évaluation technique", - "xpack.infra.hostsTable.averageMemoryTotalColumnHeader": "Total de la mémoire (moy.)", - "xpack.infra.hostsTable.averageMemoryUsageColumnHeader": "Utilisation de la mémoire (moy.)", - "xpack.infra.hostsTable.averageRxColumnHeader": "RX (moy.)", - "xpack.infra.hostsTable.averageTxColumnHeader": "TX (moy.)", - "xpack.infra.hostsTable.diskLatencyColumnHeader": "Latence du disque (moy.)", - "xpack.infra.hostsTable.nameColumnHeader": "Nom", - "xpack.infra.hostsTable.numberOfCpusColumnHeader": "Nombre de processeurs", - "xpack.infra.hostsTable.operatingSystemColumnHeader": "Système d'exploitation", + "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview": "Une erreur s'est produite lors du chargement ou de la création de la vue de données : {metricAlias}", + "xpack.infra.hostsViewPage.experimentalBadgeDescription": "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.", + "xpack.infra.hostsViewPage.experimentalBadgeLabel": "Version d'évaluation technique", + "xpack.infra.hostsViewPage.metricTrend.cpu.title": "Utilisation CPU", + "xpack.infra.hostsViewPage.metricTrend.memory.title": "Utilisation mémoire", + "xpack.infra.hostsViewPage.metricTrend.rx.title": "Entrant (RX)", + "xpack.infra.hostsViewPage.metricTrend.tx.title": "Sortant (TX)", + "xpack.infra.hostsViewPage.table.averageMemoryTotalColumnHeader": "Total de la mémoire (moy.)", + "xpack.infra.hostsViewPage.table.averageMemoryUsageColumnHeader": "Utilisation de la mémoire (moy.)", + "xpack.infra.hostsViewPage.table.averageRxColumnHeader": "RX (moy.)", + "xpack.infra.hostsViewPage.table.averageTxColumnHeader": "TX (moy.)", + "xpack.infra.hostsViewPage.table.diskLatencyColumnHeader": "Latence du disque (moy.)", + "xpack.infra.hostsViewPage.table.nameColumnHeader": "Nom", + "xpack.infra.hostsViewPage.table.numberOfCpusColumnHeader": "Nombre de processeurs", + "xpack.infra.hostsViewPage.table.operatingSystemColumnHeader": "Système d'exploitation", + "xpack.infra.hostsViewPage.tabs.metricsCharts.actions.openInLines": "Ouvrir dans Lens", + "xpack.infra.hostsViewPage.tabs.metricsCharts.title": "Indicateurs", + "xpack.infra.hostsViewPage.tabs.metricsCharts.cpu": "Utilisation CPU", + "xpack.infra.hostsViewPage.tabs.metricsCharts.memory": "Utilisation mémoire", + "xpack.infra.hostsViewPage.tabs.metricsCharts.rx": "Entrant (RX)", + "xpack.infra.hostsViewPage.tabs.metricsCharts.tx": "Sortant (TX)", "xpack.infra.infra.nodeDetails.apmTabLabel": "APM", "xpack.infra.infra.nodeDetails.createAlertLink": "Créer une règle d'inventaire", "xpack.infra.infra.nodeDetails.openAsPage": "Ouvrir en tant que page", @@ -29968,7 +29978,6 @@ "xpack.securitySolution.hosts.navigation.sessionsTitle": "Sessions", "xpack.securitySolution.hosts.navigation.uncommonProcessesTitle": "Processus inhabituels", "xpack.securitySolution.hosts.navigaton.hostRisk.viewDashboardButtonLabel": "Afficher le tableau de bord de la source", - "xpack.securitySolution.hosts.navigaton.hostScoreOverTimeTitle": "Score de risque de l'hôte sur la durée", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingAuthenticationsData": "Impossible d'interroger les données d'authentifications", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingEventsData": "Impossible d'interroger les données d'événements", "xpack.securitySolution.hosts.pageTitle": "Hôtes", @@ -36581,4 +36590,4 @@ "xpack.painlessLab.title": "Painless Lab", "xpack.painlessLab.walkthroughButtonLabel": "Présentation" } -} +} \ No newline at end of file diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 888e9ab49be4a..0fe8d73b5982e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -16277,7 +16277,6 @@ "xpack.infra.deprecations.tiebreakerAdjustIndexing": "インデックスを調整し、\"{field}\"をタイブレーカーとして使用します。", "xpack.infra.deprecations.timestampAdjustIndexing": "インデックスを調整し、\"{field}\"をタイムスタンプとして使用します。", "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "指定期間のデータの最後の{duration}", - "xpack.infra.hostsTable.errorOnCreateOrLoadDataview": "データビューの読み込みまたは作成中にエラーが発生しました:{metricAlias}", "xpack.infra.inventoryTimeline.header": "平均{metricLabel}", "xpack.infra.kibanaMetrics.cloudIdMissingErrorMessage": "{metricId} のモデルには cloudId が必要ですが、{nodeId} に cloudId が指定されていません。", "xpack.infra.kibanaMetrics.invalidInfraMetricErrorMessage": "{id} は有効な InfraMetric ではありません", @@ -16484,16 +16483,26 @@ "xpack.infra.homePage.noMetricsIndicesInstructionsActionLabel": "セットアップの手順を表示", "xpack.infra.homePage.settingsTabTitle": "設定", "xpack.infra.homePage.toolbar.kqlSearchFieldPlaceholder": "インフラストラクチャデータを検索…(例:host.name:host-1)", - "xpack.infra.hostsPage.experimentalBadgeDescription": "この機能はテクニカルプレビュー中であり、将来のリリースでは変更されたり完全に削除されたりする場合があります。Elasticは最善の努力を講じてすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。", - "xpack.infra.hostsPage.experimentalBadgeLabel": "テクニカルプレビュー", - "xpack.infra.hostsTable.averageMemoryTotalColumnHeader": "メモリー合計(平均)", - "xpack.infra.hostsTable.averageMemoryUsageColumnHeader": "メモリー使用状況(平均)", - "xpack.infra.hostsTable.averageRxColumnHeader": "RX(平均)", - "xpack.infra.hostsTable.averageTxColumnHeader": "TX(平均)", - "xpack.infra.hostsTable.diskLatencyColumnHeader": "ディスクレイテンシ(平均)", - "xpack.infra.hostsTable.nameColumnHeader": "名前", - "xpack.infra.hostsTable.numberOfCpusColumnHeader": "CPU数", - "xpack.infra.hostsTable.operatingSystemColumnHeader": "オペレーティングシステム", + "xpack.infra.hostsViewPage.experimentalBadgeDescription": "この機能はテクニカルプレビュー中であり、将来のリリースでは変更されたり完全に削除されたりする場合があります。Elasticは最善の努力を講じてすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。", + "xpack.infra.hostsViewPage.experimentalBadgeLabel": "テクニカルプレビュー", + "xpack.infra.hostsViewPage.metricTrend.cpu.title": "CPU使用状況", + "xpack.infra.hostsViewPage.metricTrend.memory.title": "メモリー使用状況", + "xpack.infra.hostsViewPage.metricTrend.rx.title": "受信(RX)", + "xpack.infra.hostsViewPage.metricTrend.tx.title": "送信(TX)", + "xpack.infra.hostsViewPage.table.averageMemoryTotalColumnHeader": "メモリー合計(平均)", + "xpack.infra.hostsViewPage.table.averageMemoryUsageColumnHeader": "メモリー使用状況(平均)", + "xpack.infra.hostsViewPage.table.averageRxColumnHeader": "RX(平均)", + "xpack.infra.hostsViewPage.table.averageTxColumnHeader": "TX(平均)", + "xpack.infra.hostsViewPage.table.diskLatencyColumnHeader": "ディスクレイテンシ(平均)", + "xpack.infra.hostsViewPage.table.nameColumnHeader": "名前", + "xpack.infra.hostsViewPage.table.numberOfCpusColumnHeader": "CPU数", + "xpack.infra.hostsViewPage.table.operatingSystemColumnHeader": "オペレーティングシステム", + "xpack.infra.hostsViewPage.tabs.metricsCharts.actions.openInLines": "Lensで開く", + "xpack.infra.hostsViewPage.tabs.metricsCharts.title": "メトリック", + "xpack.infra.hostsViewPage.tabs.metricsCharts.cpu": "CPU使用状況", + "xpack.infra.hostsViewPage.tabs.metricsCharts.memory": "メモリー使用状況", + "xpack.infra.hostsViewPage.tabs.metricsCharts.rx": "受信(RX)", + "xpack.infra.hostsViewPage.tabs.metricsCharts.tx": "送信(TX)", "xpack.infra.infra.nodeDetails.apmTabLabel": "APM", "xpack.infra.infra.nodeDetails.createAlertLink": "インベントリルールの作成", "xpack.infra.infra.nodeDetails.openAsPage": "ページとして開く", @@ -29938,7 +29947,6 @@ "xpack.securitySolution.hosts.navigation.sessionsTitle": "セッション", "xpack.securitySolution.hosts.navigation.uncommonProcessesTitle": "非共通プロセス", "xpack.securitySolution.hosts.navigaton.hostRisk.viewDashboardButtonLabel": "ソースダッシュボードを表示", - "xpack.securitySolution.hosts.navigaton.hostScoreOverTimeTitle": "経時的なホストリスクスコア", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingAuthenticationsData": "認証データをクエリできませんでした", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingEventsData": "イベントデータをクエリできませんでした", "xpack.securitySolution.hosts.pageTitle": "ホスト", @@ -36550,4 +36558,4 @@ "xpack.painlessLab.title": "Painless Lab", "xpack.painlessLab.walkthroughButtonLabel": "実地検証" } -} +} \ No newline at end of file diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index a3b81cd29dd9d..30f7980198031 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -16295,7 +16295,6 @@ "xpack.infra.deprecations.tiebreakerAdjustIndexing": "调整索引以将“{field}”用作决胜属性。", "xpack.infra.deprecations.timestampAdjustIndexing": "调整索引以将“{field}”用作时间戳。", "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "选定时间过去 {duration}的数据", - "xpack.infra.hostsTable.errorOnCreateOrLoadDataview": "尝试加载或创建以下数据视图时出错:{metricAlias}", "xpack.infra.inventoryTimeline.header": "平均值 {metricLabel}", "xpack.infra.kibanaMetrics.cloudIdMissingErrorMessage": "{metricId} 的模型需要云 ID,但没有为 {nodeId} 提供。", "xpack.infra.kibanaMetrics.invalidInfraMetricErrorMessage": "{id} 不是有效的 InfraMetric", @@ -16503,16 +16502,27 @@ "xpack.infra.homePage.noMetricsIndicesInstructionsActionLabel": "查看设置说明", "xpack.infra.homePage.settingsTabTitle": "设置", "xpack.infra.homePage.toolbar.kqlSearchFieldPlaceholder": "搜索基础设施数据……(例如 host.name:host-1)", - "xpack.infra.hostsPage.experimentalBadgeDescription": "此功能处于技术预览状态,在未来版本中可能会更改或完全移除。Elastic 将尽最大努力来修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。", - "xpack.infra.hostsPage.experimentalBadgeLabel": "技术预览", - "xpack.infra.hostsTable.averageMemoryTotalColumnHeader": "内存合计(平均值)", - "xpack.infra.hostsTable.averageMemoryUsageColumnHeader": "内存使用率(平均值)", - "xpack.infra.hostsTable.averageRxColumnHeader": "RX(平均值)", - "xpack.infra.hostsTable.averageTxColumnHeader": "TX(平均值)", - "xpack.infra.hostsTable.diskLatencyColumnHeader": "磁盘延迟(平均值)", - "xpack.infra.hostsTable.nameColumnHeader": "名称", - "xpack.infra.hostsTable.numberOfCpusColumnHeader": "# 个 CPU", - "xpack.infra.hostsTable.operatingSystemColumnHeader": "操作系统", + "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview": "尝试加载或创建以下数据视图时出错:{metricAlias}", + "xpack.infra.hostsViewPage.experimentalBadgeDescription": "此功能处于技术预览状态,在未来版本中可能会更改或完全移除。Elastic 将尽最大努力来修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。", + "xpack.infra.hostsViewPage.experimentalBadgeLabel": "技术预览", + "xpack.infra.hostsViewPage.metricTrend.cpu.title": "CPU 使用率", + "xpack.infra.hostsViewPage.metricTrend.memory.title": "内存利用率", + "xpack.infra.hostsViewPage.metricTrend.rx.title": "入站 (RX)", + "xpack.infra.hostsViewPage.metricTrend.tx.title": "出站 (TX)", + "xpack.infra.hostsViewPage.table.averageMemoryTotalColumnHeader": "内存合计(平均值)", + "xpack.infra.hostsViewPage.table.averageMemoryUsageColumnHeader": "内存使用率(平均值)", + "xpack.infra.hostsViewPage.table.averageRxColumnHeader": "RX(平均值)", + "xpack.infra.hostsViewPage.table.averageTxColumnHeader": "TX(平均值)", + "xpack.infra.hostsViewPage.table.diskLatencyColumnHeader": "磁盘延迟(平均值)", + "xpack.infra.hostsViewPage.table.nameColumnHeader": "名称", + "xpack.infra.hostsViewPage.table.numberOfCpusColumnHeader": "# 个 CPU", + "xpack.infra.hostsViewPage.table.operatingSystemColumnHeader": "操作系统", + "xpack.infra.hostsViewPage.tabs.metricsCharts.actions.openInLines": "在 Lens 中打开", + "xpack.infra.hostsViewPage.tabs.metricsCharts.title": "指标", + "xpack.infra.hostsViewPage.tabs.metricsCharts.cpu": "CPU 使用率", + "xpack.infra.hostsViewPage.tabs.metricsCharts.memory": "内存利用率", + "xpack.infra.hostsViewPage.tabs.metricsCharts.rx": "入站 (RX)", + "xpack.infra.hostsViewPage.tabs.metricsCharts.tx": "出站 (TX)", "xpack.infra.infra.nodeDetails.apmTabLabel": "APM", "xpack.infra.infra.nodeDetails.createAlertLink": "创建库存规则", "xpack.infra.infra.nodeDetails.openAsPage": "以页面形式打开", @@ -29971,7 +29981,6 @@ "xpack.securitySolution.hosts.navigation.sessionsTitle": "会话", "xpack.securitySolution.hosts.navigation.uncommonProcessesTitle": "不常见进程", "xpack.securitySolution.hosts.navigaton.hostRisk.viewDashboardButtonLabel": "查看源仪表板", - "xpack.securitySolution.hosts.navigaton.hostScoreOverTimeTitle": "一段时间的主机风险分数", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingAuthenticationsData": "无法查询身份验证数据", "xpack.securitySolution.hosts.navigaton.matrixHistogram.errorFetchingEventsData": "无法查询事件数据", "xpack.securitySolution.hosts.pageTitle": "主机", @@ -36586,4 +36595,4 @@ "xpack.painlessLab.title": "Painless 实验室", "xpack.painlessLab.walkthroughButtonLabel": "指导" } -} +} \ No newline at end of file diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/clone.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/clone.test.ts index 048b9e926be83..9efd9b12f4b14 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/clone.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/clone.test.ts @@ -38,7 +38,7 @@ describe('cloneRule', () => { message: 'alert ', }, frequency: { - notifyWhen: 'onActionGroupChange', + notify_when: 'onActionGroupChange', throttle: null, summary: false, }, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts index 2a1bf52027180..430ebb8c3fdf6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts @@ -19,7 +19,15 @@ const transformAction: RewriteRequestCase<RuleAction> = ({ id, params, actionTypeId, - frequency, + ...(frequency + ? { + frequency: { + summary: frequency.summary, + notifyWhen: frequency.notify_when, + throttle: frequency.throttle, + }, + } + : {}), }); const transformExecutionStatus: RewriteRequestCase<RuleExecutionStatus> = ({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts index a16a4c8a64a41..484bff68d92b3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts @@ -42,7 +42,7 @@ describe('createRule', () => { }, connector_type_id: '.server-log', frequency: { - notifyWhen: 'onActionGroupChange', + notify_when: 'onActionGroupChange', throttle: null, summary: false, }, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/resolve_rule.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/resolve_rule.test.ts index de2773e3e22b3..0803f14f4a7f1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/resolve_rule.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/resolve_rule.test.ts @@ -51,6 +51,11 @@ describe('resolveRule', () => { id: '1', params: { documents: [{ dsfsdf: 1212 }] }, connector_type_id: '.index', + frequency: { + summary: null, + notify_when: 'onActiveAlert', + throttle: null, + }, }, ], outcome: 'aliasMatch', @@ -95,6 +100,11 @@ describe('resolveRule', () => { id: '1', params: { documents: [{ dsfsdf: 1212 }] }, actionTypeId: '.index', + frequency: { + summary: null, + notifyWhen: 'onActiveAlert', + throttle: null, + }, }, ], outcome: 'aliasMatch', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx index 1edf372334757..17b27bf509d3b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx @@ -65,6 +65,7 @@ export interface ActionAccordionFormProps { isActionGroupDisabledForActionType?: (actionGroupId: string, actionTypeId: string) => boolean; hideActionHeader?: boolean; hideNotifyWhen?: boolean; + minimumThrottleInterval?: [number | undefined, string]; } interface ActiveActionConnectorState { @@ -91,6 +92,7 @@ export const ActionForm = ({ isActionGroupDisabledForActionType, hideActionHeader, hideNotifyWhen, + minimumThrottleInterval, }: ActionAccordionFormProps) => { const { http, @@ -396,6 +398,7 @@ export const ActionForm = ({ setActiveActionItem(undefined); }} hideNotifyWhen={hideNotifyWhen} + minimumThrottleInterval={minimumThrottleInterval} /> ); })} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_notify_when.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_notify_when.tsx index 17113f7e1c40d..624ced0843bd4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_notify_when.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_notify_when.tsx @@ -122,6 +122,8 @@ interface RuleNotifyWhenProps { throttleUnit: string; onNotifyWhenChange: (notifyWhen: RuleNotifyWhenType) => void; onThrottleChange: (throttle: number | null, throttleUnit: string) => void; + showMinimumThrottleWarning?: boolean; + showMinimumThrottleUnitWarning?: boolean; } export const ActionNotifyWhen = ({ @@ -130,6 +132,8 @@ export const ActionNotifyWhen = ({ throttleUnit, onNotifyWhenChange, onThrottleChange, + showMinimumThrottleWarning, + showMinimumThrottleUnitWarning, }: RuleNotifyWhenProps) => { const [showCustomThrottleOpts, setShowCustomThrottleOpts] = useState<boolean>(false); const [notifyWhenValue, setNotifyWhenValue] = @@ -195,6 +199,7 @@ export const ActionNotifyWhen = ({ <EuiFlexGroup gutterSize="s"> <EuiFlexItem grow={2}> <EuiFieldNumber + isInvalid={showMinimumThrottleWarning} min={1} value={throttle ?? 1} name="throttle" @@ -220,6 +225,7 @@ export const ActionNotifyWhen = ({ </EuiFlexItem> <EuiFlexItem grow={3}> <EuiSelect + isInvalid={showMinimumThrottleUnitWarning} data-test-subj="throttleUnitInput" value={throttleUnit} options={getTimeOptions(throttle ?? 1)} @@ -230,6 +236,20 @@ export const ActionNotifyWhen = ({ </EuiFlexItem> </EuiFlexGroup> </EuiFormRow> + {(showMinimumThrottleWarning || showMinimumThrottleUnitWarning) && ( + <> + <EuiSpacer size="xs" /> + <EuiText size="xs" color="danger"> + {i18n.translate( + 'xpack.triggersActionsUI.sections.actionTypeForm.notifyWhenThrottleWarning', + { + defaultMessage: + "Custom action intervals cannot be shorter than the rule's check interval", + } + )} + </EuiText> + </> + )} </> )} </EuiFlexItem> diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_type_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_type_form.tsx index 4853abb756ab6..1541dc09323ef 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_type_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_type_form.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Suspense, useEffect, useState, useCallback } from 'react'; +import React, { Suspense, useEffect, useState, useCallback, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { @@ -31,6 +31,7 @@ import { ActionVariable, RuleActionParam } from '@kbn/alerting-plugin/common'; import { getDurationNumberInItsUnit, getDurationUnitValue, + parseDuration, } from '@kbn/alerting-plugin/common/parse_duration'; import { betaBadgeProps } from './beta_badge_props'; import { @@ -65,6 +66,7 @@ export type ActionTypeFormProps = { recoveryActionGroup?: string; isActionGroupDisabledForActionType?: (actionGroupId: string, actionTypeId: string) => boolean; hideNotifyWhen?: boolean; + minimumThrottleInterval?: [number | undefined, string]; } & Pick< ActionAccordionFormProps, | 'defaultActionGroupId' @@ -102,6 +104,7 @@ export const ActionTypeForm = ({ isActionGroupDisabledForActionType, recoveryActionGroup, hideNotifyWhen = false, + minimumThrottleInterval, }: ActionTypeFormProps) => { const { application: { capabilities }, @@ -123,6 +126,10 @@ export const ActionTypeForm = ({ const [actionThrottleUnit, setActionThrottleUnit] = useState<string>( actionItem.frequency?.throttle ? getDurationUnitValue(actionItem.frequency?.throttle) : 'h' ); + const [minimumActionThrottle = -1, minimumActionThrottleUnit] = minimumThrottleInterval ?? [ + -1, + 's', + ]; const getDefaultParams = async () => { const connectorType = await actionTypeRegistry.get(actionItem.actionTypeId); @@ -138,6 +145,25 @@ export const ActionTypeForm = ({ return defaultParams; }; + const [showMinimumThrottleWarning, showMinimumThrottleUnitWarning] = useMemo(() => { + try { + if (!actionThrottle) return [false, false]; + const throttleUnitDuration = parseDuration(`1${actionThrottleUnit}`); + const minThrottleUnitDuration = parseDuration(`1${minimumActionThrottleUnit}`); + const boundedThrottle = + throttleUnitDuration > minThrottleUnitDuration + ? actionThrottle + : Math.max(actionThrottle, minimumActionThrottle); + const boundedThrottleUnit = + parseDuration(`${actionThrottle}${actionThrottleUnit}`) >= minThrottleUnitDuration + ? actionThrottleUnit + : minimumActionThrottleUnit; + return [boundedThrottle !== actionThrottle, boundedThrottleUnit !== actionThrottleUnit]; + } catch (e) { + return [false, false]; + } + }, [minimumActionThrottle, minimumActionThrottleUnit, actionThrottle, actionThrottleUnit]); + useEffect(() => { (async () => { setAvailableActionVariables( @@ -178,13 +204,6 @@ export const ActionTypeForm = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [actionItem]); - // useEffect(() => { - // if (!actionItem.frequency) { - // setActionFrequency(DEFAULT_FREQUENCY, index); - // } - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [actionItem.frequency]); - const canSave = hasSaveActionsCapability(capabilities); const actionGroupDisplay = ( @@ -232,6 +251,8 @@ export const ActionTypeForm = ({ }, [setActionFrequencyProperty, index] )} + showMinimumThrottleWarning={showMinimumThrottleWarning} + showMinimumThrottleUnitWarning={showMinimumThrottleUnitWarning} /> ); @@ -254,7 +275,6 @@ export const ActionTypeForm = ({ <> {showSelectActionGroup && ( <> - <EuiSpacer size="xs" /> <EuiSuperSelect prepend={ <EuiFormLabel htmlFor={`addNewActionConnectorActionGroup-${actionItem.actionTypeId}`}> @@ -279,6 +299,7 @@ export const ActionTypeForm = ({ setActionGroup(group); }} /> + {!hideNotifyWhen && <EuiSpacer size="xs" />} </> )} {!hideNotifyWhen && actionNotifyWhen} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_errors.ts b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_errors.ts index b57d6b8ab9a4c..59e02bb324110 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_errors.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_errors.ts @@ -6,6 +6,7 @@ */ import { isObject } from 'lodash'; import { i18n } from '@kbn/i18n'; +import { RuleNotifyWhen } from '@kbn/alerting-plugin/common'; import { formatDuration, parseDuration } from '@kbn/alerting-plugin/common/parse_duration'; import { RuleTypeModel, @@ -58,6 +59,27 @@ export function validateBaseProperties( } } + const invalidThrottleActions = ruleObject.actions.filter((a) => { + const throttleDuration = a.frequency?.throttle ? parseDuration(a.frequency.throttle) : 0; + const intervalDuration = ruleObject.schedule.interval + ? parseDuration(ruleObject.schedule.interval) + : 0; + return ( + a.frequency?.notifyWhen === RuleNotifyWhen.THROTTLE && throttleDuration < intervalDuration + ); + }); + if (invalidThrottleActions.length) { + errors['schedule.interval'].push( + i18n.translate( + 'xpack.triggersActionsUI.sections.ruleForm.error.actionThrottleBelowSchedule', + { + defaultMessage: + "Custom action intervals cannot be shorter than the rule's check interval", + } + ) + ); + } + if (!ruleObject.ruleTypeId) { errors.ruleTypeId.push( i18n.translate('xpack.triggersActionsUI.sections.ruleForm.error.requiredRuleTypeIdText', { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx index 94a7cc5bba513..8a0ad49e936f4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx @@ -672,6 +672,7 @@ export const RuleForm = ({ setActionParamsProperty={setActionParamsProperty} actionTypeRegistry={actionTypeRegistry} setActionFrequencyProperty={setActionFrequencyProperty} + minimumThrottleInterval={[ruleInterval, ruleIntervalUnit]} /> </> ) : null} diff --git a/x-pack/plugins/ux/e2e/journeys/utils.ts b/x-pack/plugins/ux/e2e/journeys/utils.ts index f8773834ea54b..9370a9441b0cd 100644 --- a/x-pack/plugins/ux/e2e/journeys/utils.ts +++ b/x-pack/plugins/ux/e2e/journeys/utils.ts @@ -8,11 +8,14 @@ import { expect, Page } from '@elastic/synthetics'; export async function waitForLoadingToFinish({ page }: { page: Page }) { - while (true) { + let retries = 50; + while (retries) { + retries--; if ((await page.$(byTestId('kbnLoadingMessage'))) === null) break; await page.waitForTimeout(2 * 1000); } - while (true) { + retries = 50; + while (retries) { if ((await page.$(byTestId('globalLoadingIndicator'))) === null) break; await page.waitForTimeout(2 * 1000); } diff --git a/x-pack/plugins/ux/public/hooks/use_client_metrics_query.ts b/x-pack/plugins/ux/public/hooks/use_client_metrics_query.ts index 9ad7af4eb360a..f92b0d9e0d167 100644 --- a/x-pack/plugins/ux/public/hooks/use_client_metrics_query.ts +++ b/x-pack/plugins/ux/public/hooks/use_client_metrics_query.ts @@ -48,7 +48,7 @@ export function useClientMetricsQuery() { const backendValue = backEnd.values[pkey] ?? 0; return { - pageViews: { value: (esQueryResponse.hits.total as any as number) ?? 0 }, + pageViews: { value: esQueryResponse.hits.total.value ?? 0 }, totalPageLoadDuration: { value: totalPageLoadDurationValueMs }, backEnd: { value: backendValue }, frontEnd: { value: totalPageLoadDurationValueMs - backendValue }, diff --git a/x-pack/plugins/ux/public/hooks/use_js_errors_query.tsx b/x-pack/plugins/ux/public/hooks/use_js_errors_query.tsx index b6ae1debb0c43..42cb153b59487 100644 --- a/x-pack/plugins/ux/public/hooks/use_js_errors_query.tsx +++ b/x-pack/plugins/ux/public/hooks/use_js_errors_query.tsx @@ -63,9 +63,9 @@ export function useJsErrorsQuery(pagination: { return { totalErrorPages: totalErrorPages?.value ?? 0, - totalErrors: esQueryResponse.hits.total ?? 0, + totalErrors: esQueryResponse.hits.total.value ?? 0, totalErrorGroups: totalErrorGroups?.value ?? 0, - items: errors?.buckets.map(({ sample, key, impactedPages }: any) => { + items: errors?.buckets.map(({ sample, key, impactedPages }) => { return { count: impactedPages.pageCount.value, errorGroupId: key, diff --git a/x-pack/plugins/ux/public/services/data/has_rum_data_query.ts b/x-pack/plugins/ux/public/services/data/has_rum_data_query.ts index f2ee851cb0f3b..91710cecf0c88 100644 --- a/x-pack/plugins/ux/public/services/data/has_rum_data_query.ts +++ b/x-pack/plugins/ux/public/services/data/has_rum_data_query.ts @@ -22,8 +22,7 @@ export function formatHasRumResult<T>( if (!esResult) return esResult; return { indices, - // @ts-ignore total.value is undefined by the returned type, total is a `number` - hasData: esResult.hits.total > 0, + hasData: esResult.hits.total.value > 0, serviceName: esResult.aggregations?.services?.mostTraffic?.buckets?.[0]?.key, }; diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts index 91e0ed1d5e1df..d680e99d13405 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts @@ -99,7 +99,8 @@ export default function ({ getService }: FtrProviderContext) { const apiResponse = await supertestAPI .post(API_URLS.SYNTHETICS_MONITORS) .set('kbn-xsrf', 'true') - .send(newMonitor); + .send(newMonitor) + .expect(200); expect(apiResponse.body.attributes).eql( omit( @@ -330,6 +331,97 @@ export default function ({ getService }: FtrProviderContext) { } }); + it('handles is_tls_enabled true', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: 'Test private location 0', + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: true, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(API_URLS.SYNTHETICS_MONITORS) + .set('kbn-xsrf', 'true') + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestAPI.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy(monitor.name, monitorId, undefined, undefined, true) + ); + } finally { + await supertestAPI + .delete(API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set('kbn-xsrf', 'true') + .send() + .expect(200); + } + }); + + it('handles is_tls_enabled false', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: 'Test private location 0', + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: false, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(API_URLS.SYNTHETICS_MONITORS) + .set('kbn-xsrf', 'true') + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestAPI.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies(packagePolicy, getTestSyntheticsPolicy(monitor.name, monitorId)); + } finally { + await supertestAPI + .delete(API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set('kbn-xsrf', 'true') + .send() + .expect(200); + } + }); + it('handles auto upgrading policies', async () => { let monitorId = ''; @@ -350,8 +442,8 @@ export default function ({ getService }: FtrProviderContext) { const apiResponse = await supertestAPI .post(API_URLS.SYNTHETICS_MONITORS) .set('kbn-xsrf', 'true') - .send(monitor); - + .send(monitor) + .expect(200); monitorId = apiResponse.body.id; const policyResponse = await supertestAPI.get( diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts index 6f83ba3c5be20..f3920d78588f3 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts @@ -70,6 +70,7 @@ export default function ({ getService }: FtrProviderContext) { }; before(async () => { + await supertest.post(API_URLS.SYNTHETICS_ENABLEMENT).set('kbn-xsrf', 'true').expect(200); await supertest.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); await supertest .post('/api/fleet/epm/packages/synthetics/0.11.4') @@ -286,6 +287,7 @@ export default function ({ getService }: FtrProviderContext) { for (const monitor of successfulMonitors) { const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); const createdMonitorsResponse = await supertest .get(API_URLS.SYNTHETICS_MONITORS) .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) @@ -299,7 +301,7 @@ export default function ({ getService }: FtrProviderContext) { expect(decryptedCreatedMonitor.body.attributes).to.eql({ __ui: { - is_tls_enabled: false, + is_tls_enabled: isTLSEnabled, }, 'check.request.method': 'POST', 'check.response.status': ['200'], @@ -354,7 +356,7 @@ export default function ({ getService }: FtrProviderContext) { 'ssl.certificate': '', 'ssl.certificate_authorities': '', 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], - 'ssl.verification_mode': 'full', + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', 'ssl.key': '', 'ssl.key_passphrase': '', tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), @@ -406,6 +408,7 @@ export default function ({ getService }: FtrProviderContext) { for (const monitor of successfulMonitors) { const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); const createdMonitorsResponse = await supertest .get(API_URLS.SYNTHETICS_MONITORS) .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) @@ -419,7 +422,7 @@ export default function ({ getService }: FtrProviderContext) { expect(decryptedCreatedMonitor.body.attributes).to.eql({ __ui: { - is_tls_enabled: false, + is_tls_enabled: isTLSEnabled, }, config_id: decryptedCreatedMonitor.body.id, custom_heartbeat_id: `${journeyId}-${project}-default`, @@ -460,7 +463,7 @@ export default function ({ getService }: FtrProviderContext) { 'ssl.certificate': '', 'ssl.certificate_authorities': '', 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], - 'ssl.verification_mode': 'full', + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', 'ssl.key': '', 'ssl.key_passphrase': '', tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), @@ -746,6 +749,102 @@ export default function ({ getService }: FtrProviderContext) { } }); + it('project monitors - handles editing with spaces', async () => { + const project = `test-project-${uuidv4()}`; + const username = 'admin'; + const roleName = `synthetics_admin`; + const password = `${username}-password`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + try { + await security.role.create(roleName, { + kibana: [ + { + feature: { + uptime: ['all'], + }, + spaces: ['*'], + }, + ], + }); + await security.user.create(username, { + password, + roles: [roleName], + full_name: 'a kibana user', + }); + await supertestWithoutAuth + .put( + `/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .auth(username, password) + .set('kbn-xsrf', 'true') + .send(projectMonitors) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertestWithoutAuth + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}`) + .auth(username, password) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + + const decryptedCreatedMonitor = await supertest + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${getResponse.body.monitors[0].id}`) + .set('kbn-xsrf', 'true') + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(decryptedCreatedMonitor.body.attributes[ConfigKey.SOURCE_PROJECT_CONTENT]).eql( + projectMonitors.monitors[0].content + ); + + const updatedSource = 'updatedSource'; + // update monitor + await supertestWithoutAuth + .put( + `/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .auth(username, password) + .set('kbn-xsrf', 'true') + .send({ + ...projectMonitors, + monitors: [{ ...projectMonitors.monitors[0], content: updatedSource }], + }) + .expect(200); + const getResponseUpdated = await supertestWithoutAuth + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}`) + .auth(username, password) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + const { monitors: monitorsUpdated } = getResponseUpdated.body; + expect(monitorsUpdated.length).eql(1); + + const decryptedUpdatedMonitor = await supertest + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorsUpdated[0].id}`) + .set('kbn-xsrf', 'true') + .expect(200); + expect(decryptedUpdatedMonitor.body.attributes[ConfigKey.SOURCE_PROJECT_CONTENT]).eql( + updatedSource + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + await security.user.delete(username); + await security.role.delete(roleName); + } + }); + it('project monitors - formats custom id appropriately', async () => { const project = `test project ${uuidv4()}`; const username = 'admin'; @@ -1469,6 +1568,7 @@ export default function ({ getService }: FtrProviderContext) { type: 'http', tags: 'tag2,tag2', urls: ['http://localhost:9200'], + 'ssl.verification_mode': 'strict', }, reason: 'Cannot update monitor to different type.', }, diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_legacy.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_legacy.ts index ccf7fd0a97518..c3a48d22da1c5 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_legacy.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_legacy.ts @@ -240,6 +240,7 @@ export default function ({ getService }: FtrProviderContext) { for (const monitor of successfulMonitors) { const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); const createdMonitorsResponse = await supertest .get(API_URLS.SYNTHETICS_MONITORS) .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) @@ -253,7 +254,7 @@ export default function ({ getService }: FtrProviderContext) { expect(decryptedCreatedMonitor.body.attributes).to.eql({ __ui: { - is_tls_enabled: false, + is_tls_enabled: isTLSEnabled, }, 'check.request.method': 'POST', 'check.response.status': ['200'], @@ -308,7 +309,7 @@ export default function ({ getService }: FtrProviderContext) { 'ssl.certificate': '', 'ssl.certificate_authorities': '', 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], - 'ssl.verification_mode': 'full', + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', 'ssl.key': '', 'ssl.key_passphrase': '', tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), @@ -357,6 +358,7 @@ export default function ({ getService }: FtrProviderContext) { for (const monitor of successfulMonitors) { const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); const createdMonitorsResponse = await supertest .get(API_URLS.SYNTHETICS_MONITORS) .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) @@ -370,7 +372,7 @@ export default function ({ getService }: FtrProviderContext) { expect(decryptedCreatedMonitor.body.attributes).to.eql({ __ui: { - is_tls_enabled: false, + is_tls_enabled: isTLSEnabled, }, config_id: decryptedCreatedMonitor.body.id, custom_heartbeat_id: `${journeyId}-test-suite-default`, @@ -411,7 +413,7 @@ export default function ({ getService }: FtrProviderContext) { 'ssl.certificate': '', 'ssl.certificate_authorities': '', 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], - 'ssl.verification_mode': 'full', + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', 'ssl.key': '', 'ssl.key_passphrase': '', tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), @@ -1783,7 +1785,7 @@ export default function ({ getService }: FtrProviderContext) { dataset: 'http', }, vars: { - __ui: { value: '{"is_tls_enabled":false}', type: 'yaml' }, + __ui: { value: '{"is_tls_enabled":true}', type: 'yaml' }, enabled: { value: false, type: 'bool' }, type: { value: 'http', type: 'text' }, name: { value: 'My Monitor 3', type: 'text' }, @@ -1812,7 +1814,7 @@ export default function ({ getService }: FtrProviderContext) { 'ssl.certificate': { value: null, type: 'yaml' }, 'ssl.key': { value: null, type: 'yaml' }, 'ssl.key_passphrase': { value: null, type: 'text' }, - 'ssl.verification_mode': { value: 'full', type: 'text' }, + 'ssl.verification_mode': { value: 'strict', type: 'text' }, 'ssl.supported_protocols': { value: '["TLSv1.1","TLSv1.2","TLSv1.3"]', type: 'yaml', @@ -1836,7 +1838,7 @@ export default function ({ getService }: FtrProviderContext) { }, id: `synthetics/http-http-${id}-${testPolicyId}`, compiled_stream: { - __ui: { is_tls_enabled: false }, + __ui: { is_tls_enabled: true }, type: 'http', name: 'My Monitor 3', id, @@ -1853,7 +1855,7 @@ export default function ({ getService }: FtrProviderContext) { 'check.request.headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, 'check.response.status': ['200'], 'check.response.body.positive': ['Saved', 'saved'], - 'ssl.verification_mode': 'full', + 'ssl.verification_mode': 'strict', 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], 'run_from.geo.name': 'Test private location 0', 'run_from.id': 'Test private location 0', diff --git a/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts b/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts index 2f2f7e75a7aab..f20a2cdf61a45 100644 --- a/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts +++ b/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts @@ -302,7 +302,7 @@ export default function ({ getService }: FtrProviderContext) { urls: 'https://elastic.co', locations: [ { - id: 'us_central_west', + id: 'us_central', label: 'Europe West', isServiceManaged: true, }, @@ -369,5 +369,80 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); } }); + + it('handles spaces', async () => { + const name = 'Monitor with private location'; + const newMonitor = { + name, + type: 'http', + urls: 'https://elastic.co', + locations: [ + { + id: 'us_central_west', + label: 'Europe West', + isServiceManaged: true, + }, + ], + }; + + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + let monitorId = ''; + + try { + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const response = await supertest + .post(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}`) + .set('kbn-xsrf', 'true') + .send(newMonitor) + .expect(200); + + const { id, attributes: savedMonitor } = response.body; + monitorId = id; + const toUpdate = { + ...savedMonitor, + urls: 'https://google.com', + }; + await supertest + .put(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set('kbn-xsrf', 'true') + .send(toUpdate) + .expect(200); + + const updatedResponse = await supertest + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set('kbn-xsrf', 'true') + .expect(200); + + // ensure monitor was updated + expect(updatedResponse.body.attributes.urls).eql(toUpdate.urls); + + // update a second time, ensures AAD was not corrupted + const toUpdate2 = { + ...savedMonitor, + urls: 'https://google.com', + }; + + await supertest + .put(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set('kbn-xsrf', 'true') + .send(toUpdate2) + .expect(200); + + const updatedResponse2 = await supertest + .get(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set('kbn-xsrf', 'true') + .expect(200); + + // ensure monitor was updated + expect(updatedResponse2.body.attributes.urls).eql(toUpdate2.urls); + } finally { + await supertest + .delete(`/s/${SPACE_ID}${API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set('kbn-xsrf', 'true') + .expect(200); + } + }); }); } diff --git a/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts b/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts index aaeb58f8bfa5f..278d01b0bd71d 100644 --- a/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts +++ b/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts @@ -13,7 +13,8 @@ export const getTestSyntheticsPolicy = ( name: string, id: string, locationName?: string, - namespace?: string + namespace?: string, + isTLSEnabled?: boolean ): PackagePolicy => ({ id: '2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', version: 'WzE2MjYsMV0=', @@ -41,8 +42,7 @@ export const getTestSyntheticsPolicy = ( }, vars: { __ui: { - value: - '{"is_tls_enabled":false,"is_zip_url_tls_enabled":false,"script_source":{"is_generated_script":false,"file_name":"test-file.name"}}', + value: `{"is_tls_enabled":${isTLSEnabled || false}}`, type: 'yaml', }, enabled: { value: true, type: 'bool' }, @@ -69,12 +69,18 @@ export const getTestSyntheticsPolicy = ( 'check.response.headers': { value: null, type: 'yaml' }, 'check.response.body.positive': { value: null, type: 'yaml' }, 'check.response.body.negative': { value: null, type: 'yaml' }, - 'ssl.certificate_authorities': { value: '"t.string"', type: 'yaml' }, - 'ssl.certificate': { value: '"t.string"', type: 'yaml' }, - 'ssl.key': { value: '"t.string"', type: 'yaml' }, - 'ssl.key_passphrase': { value: 't.string', type: 'text' }, - 'ssl.verification_mode': { value: 'certificate', type: 'text' }, - 'ssl.supported_protocols': { value: '["TLSv1.1","TLSv1.2"]', type: 'yaml' }, + 'ssl.certificate_authorities': { + value: isTLSEnabled ? '"t.string"' : null, + type: 'yaml', + }, + 'ssl.certificate': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key_passphrase': { value: isTLSEnabled ? 't.string' : null, type: 'text' }, + 'ssl.verification_mode': { value: isTLSEnabled ? 'certificate' : null, type: 'text' }, + 'ssl.supported_protocols': { + value: isTLSEnabled ? '["TLSv1.1","TLSv1.2"]' : null, + type: 'yaml', + }, location_name: { value: locationName ?? 'Test private location 0', type: 'text' }, id: { value: id, type: 'text' }, config_id: { value: id, type: 'text' }, @@ -86,9 +92,7 @@ export const getTestSyntheticsPolicy = ( id: 'synthetics/http-http-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', compiled_stream: { __ui: { - is_tls_enabled: false, - is_zip_url_tls_enabled: false, - script_source: { is_generated_script: false, file_name: 'test-file.name' }, + is_tls_enabled: isTLSEnabled || false, }, type: 'http', name, @@ -111,12 +115,16 @@ export const getTestSyntheticsPolicy = ( 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, 'check.request.body': 'testValue', 'check.response.status': ['200', '201'], - 'ssl.certificate': 't.string', - 'ssl.certificate_authorities': 't.string', - 'ssl.key': 't.string', - 'ssl.key_passphrase': 't.string', - 'ssl.verification_mode': 'certificate', - 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2'], + ...(isTLSEnabled + ? { + 'ssl.certificate': 't.string', + 'ssl.certificate_authorities': 't.string', + 'ssl.key': 't.string', + 'ssl.key_passphrase': 't.string', + 'ssl.verification_mode': 'certificate', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2'], + } + : {}), processors: [ { add_fields: { diff --git a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts index 1ea7933ce57de..73fcffe5a67e0 100644 --- a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts +++ b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts @@ -15,7 +15,7 @@ import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_mana import { PackagePolicy } from '@kbn/fleet-plugin/common'; import expect from '@kbn/expect'; import { syntheticsParamType } from '@kbn/synthetics-plugin/common/types/saved_objects'; -import { SavedObject } from '@kbn/core-saved-objects-common'; +import { SavedObject } from '@kbn/core-saved-objects-server'; import { FtrProviderContext } from '../../ftr_provider_context'; import { getFixtureJson } from '../uptime/rest/helper/get_fixture_json'; import { PrivateLocationTestService } from './services/private_location_test_service'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/fixtures/http_monitor.json b/x-pack/test/api_integration/apis/uptime/rest/fixtures/http_monitor.json index 363d9e5570324..091f18e6afe57 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/fixtures/http_monitor.json +++ b/x-pack/test/api_integration/apis/uptime/rest/fixtures/http_monitor.json @@ -18,12 +18,7 @@ "config_id": "", "timeout": "3m", "__ui": { - "is_tls_enabled": false, - "is_zip_url_tls_enabled": false, - "script_source": { - "is_generated_script": false, - "file_name": "test-file.name" - } + "is_tls_enabled": false }, "max_redirects": "3", "password": "test", diff --git a/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_http_monitor.json b/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_http_monitor.json index 5d2a3b9ff8eb5..c8c2c27ce0f17 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_http_monitor.json +++ b/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_http_monitor.json @@ -71,7 +71,8 @@ ] } }, - "hash": "ekrjelkjrelkjre" + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict" } ] } \ No newline at end of file diff --git a/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_tcp_monitor.json b/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_tcp_monitor.json index 5d028f447ba0a..a9decda5165d9 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_tcp_monitor.json +++ b/x-pack/test/api_integration/apis/uptime/rest/fixtures/project_tcp_monitor.json @@ -11,7 +11,8 @@ "schedule": 1, "tags": [ "service:smtp", "org:google" ], "privateLocations": [ "BEEP" ], - "hash": "ekrjelkjrelkjre" + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict" }, { "locations": [ "localhost" ], diff --git a/x-pack/test/apm_api_integration/tests/mobile/generate_mobile_data.ts b/x-pack/test/apm_api_integration/tests/mobile/generate_mobile_data.ts index 0e488773cadce..81b965d6108e3 100644 --- a/x-pack/test/apm_api_integration/tests/mobile/generate_mobile_data.ts +++ b/x-pack/test/apm_api_integration/tests/mobile/generate_mobile_data.ts @@ -101,7 +101,9 @@ export async function generateMobileData({ .span({ spanName: 'onCreate', spanType: 'app', - spanSubtype: 'internal', + spanSubtype: 'external', + 'service.target.type': 'http', + 'span.destination.service.resource': 'external', }) .duration(50) .success() diff --git a/x-pack/test/apm_api_integration/tests/mobile/mobile_http_requests_timeseries.spec.ts b/x-pack/test/apm_api_integration/tests/mobile/mobile_http_requests_timeseries.spec.ts index 451a3d803d8c6..5e9507618c3a4 100644 --- a/x-pack/test/apm_api_integration/tests/mobile/mobile_http_requests_timeseries.spec.ts +++ b/x-pack/test/apm_api_integration/tests/mobile/mobile_http_requests_timeseries.spec.ts @@ -74,9 +74,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { const response = await getHttpRequestsChart({ serviceName: 'synth-android', offset: '1d' }); expect(response.status).to.be(200); - expect( - response.body.currentPeriod.timeseries.some((item) => item.y === 0 && item.x) - ).to.eql(true); + expect(response.body.currentPeriod.timeseries.some((item) => item.x && item.y)).to.eql( + true + ); expect(response.body.previousPeriod.timeseries[0].y).to.eql(0); }); @@ -88,7 +88,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { response.body.currentPeriod.timeseries.some((item) => item.y === 0 && item.x) ).to.eql(true); - expect(response.body.currentPeriod.timeseries[0].y).to.eql(0); + expect(response.body.currentPeriod.timeseries[0].y).to.eql(1); expect(response.body.previousPeriod.timeseries).to.eql([]); }); }); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts index 6c5744ccb0515..c30cac8416bf4 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { v1 as uuidv1 } from 'uuid'; + import expect from '@kbn/expect'; import { CASES_URL } from '@kbn/cases-plugin/common/constants'; import { @@ -345,6 +347,10 @@ export default ({ getService }: FtrProviderContext): void => { await createCase(supertest, postCaseReq); }); + afterEach(async () => { + await deleteAllCaseItems(es); + }); + it('should successfully find a case when using valid searchFields', async () => { const cases = await findCases({ supertest, @@ -363,6 +369,44 @@ export default ({ getService }: FtrProviderContext): void => { expect(cases.total).to.be(1); }); + it('should successfully find a case when using a valid uuid', async () => { + const caseWithId = await createCase(supertest, postCaseReq); + + const cases = await findCases({ + supertest, + query: { searchFields: ['title', 'description'], search: caseWithId.id }, + }); + + expect(cases.total).to.be(1); + expect(cases.cases[0].id).to.equal(caseWithId.id); + }); + + it('should successfully find a case with a valid uuid in title', async () => { + const uuid = uuidv1(); + await createCase(supertest, { ...postCaseReq, title: uuid }); + + const cases = await findCases({ + supertest, + query: { searchFields: ['title', 'description'], search: uuid }, + }); + + expect(cases.total).to.be(1); + expect(cases.cases[0].title).to.equal(uuid); + }); + + it('should successfully find a case with a valid uuid in title', async () => { + const uuid = uuidv1(); + await createCase(supertest, { ...postCaseReq, description: uuid }); + + const cases = await findCases({ + supertest, + query: { searchFields: ['title', 'description'], search: uuid }, + }); + + expect(cases.total).to.be(1); + expect(cases.cases[0].description).to.equal(uuid); + }); + it('should not find any cases when it does not use a wildcard and the string does not match', async () => { const cases = await findCases({ supertest, diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/internal/get_connectors.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/internal/get_connectors.ts index c200cc366d5af..e4bea7009bf3e 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/internal/get_connectors.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/internal/get_connectors.ts @@ -233,7 +233,7 @@ export default ({ getService }: FtrProviderContext): void => { describe('push', () => { describe('latestPushDate', () => { - it('does not set latestPushDate when the connector has not been used to push', async () => { + it('does not set latestPushDate or oldestPushDate when the connector has not been used to push', async () => { const { postedCase, connector } = await createCaseWithConnector({ supertest, serviceNowSimulatorURL, @@ -245,9 +245,10 @@ export default ({ getService }: FtrProviderContext): void => { expect(Object.keys(connectors).length).to.be(1); expect(connectors).to.have.property(connector.id); expect(connectors[connector.id].latestPushDate).to.be(undefined); + expect(connectors[connector.id].oldestPushDate).to.be(undefined); }); - it('sets latestPushDate to the most recent push date', async () => { + it('sets latestPushDate to the most recent push date and oldestPushDate to the first push date', async () => { const { postedCase, connector } = await createCaseWithConnector({ supertest, serviceNowSimulatorURL, @@ -278,10 +279,12 @@ export default ({ getService }: FtrProviderContext): void => { ]); const pushes = userActions.filter((ua) => ua.type === ActionTypes.pushed); + const oldestPush = pushes[0]; const latestPush = pushes[pushes.length - 1]; expect(Object.keys(connectors).length).to.be(1); expect(connectors[connector.id].latestPushDate).to.eql(latestPush.created_at); + expect(connectors[connector.id].oldestPushDate).to.eql(oldestPush.created_at); }); }); diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index 2cb5c703d14e7..0de5bbbd7d57b 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -49,7 +49,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); it('should load 5 metrics trend tiles', async () => { - const hosts = await pageObjects.infraHostsView.getMetricsTrendTilesCount(); + const hosts = await pageObjects.infraHostsView.getAllMetricsTrendTiles(); expect(hosts.length).to.equal(5); }); @@ -65,6 +65,17 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { expect(tileValue).to.eql(value); }); }); + + describe('Lens charts', () => { + it('should load 7 lens metric charts', async () => { + const metricCharts = await pageObjects.infraHostsView.getAllMetricsCharts(); + expect(metricCharts.length).to.equal(7); + }); + + it('should have an option to open the chart in lens', async () => { + await pageObjects.infraHostsView.getOpenInLensOption(); + }); + }); }); }); }; diff --git a/x-pack/test/functional/apps/lens/group2/dashboard.ts b/x-pack/test/functional/apps/lens/group2/dashboard.ts index 7eb884839a1e9..08811fd836858 100644 --- a/x-pack/test/functional/apps/lens/group2/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/dashboard.ts @@ -34,6 +34,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await browser.getActions().move({ x, y, origin: el._webElement }).click().perform(); } + async function rightClickInChart(x: number, y: number) { + const el = await elasticChart.getCanvas(); + await browser.getActions().move({ x, y, origin: el._webElement }).contextClick().perform(); + } + describe('lens dashboard tests', () => { before(async () => { await PageObjects.common.navigateToApp('dashboard'); @@ -90,6 +95,23 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(hasIpFilter).to.be(true); }); + it('should be able to add filters by right clicking in XYChart', async () => { + await PageObjects.common.navigateToApp('dashboard'); + await PageObjects.dashboard.clickNewDashboard(); + await dashboardAddPanel.clickOpenAddPanel(); + await dashboardAddPanel.filterEmbeddableNames('lnsXYvis'); + await find.clickByButtonText('lnsXYvis'); + await dashboardAddPanel.closeAddPanel(); + await PageObjects.lens.goToTimeRange(); + await retry.try(async () => { + // show the tooltip actions + await rightClickInChart(30, 5); // hardcoded position of bar, depends heavy on data and charts implementation + await (await find.byCssSelector('.echTooltipActions__action')).click(); + const hasIpFilter = await filterBar.hasFilter('ip', '97.220.3.248'); + expect(hasIpFilter).to.be(true); + }); + }); + // Requires xpack.discoverEnhanced.actions.exploreDataInContextMenu.enabled // setting set in kibana.yml to test (not enabled by default) it('should hide old "explore underlying data" action', async () => { diff --git a/x-pack/test/functional/page_objects/infra_hosts_view.ts b/x-pack/test/functional/page_objects/infra_hosts_view.ts index 000fcc4b44dee..5968a27c312e4 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -20,7 +20,11 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { return testSubjects.find('hostsView-metricsTrend'); }, - async getMetricsTrendTilesCount() { + async getChartsContainer() { + return testSubjects.find('hostsView-metricChart'); + }, + + async getAllMetricsTrendTiles() { const container = await this.getMetricsTrendContainer(); return container.findAllByCssSelector('[data-test-subj*="hostsView-metricsTrend-"]'); }, @@ -31,5 +35,20 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { const div = await element.findByClassName('echMetricText__value'); return await div.getAttribute('title'); }, + + async getAllMetricsCharts() { + const container = await this.getChartsContainer(); + return container.findAllByCssSelector('[data-test-subj*="hostsView-metricChart-"]'); + }, + + async getOpenInLensOption() { + const metricCharts = await this.getAllMetricsCharts(); + const chart = metricCharts[0]; + await chart.moveMouseTo(); + const button = await testSubjects.findDescendant('embeddablePanelToggleMenuIcon', chart); + await button.click(); + await testSubjects.existOrFail('embeddablePanelContextMenuOpen'); + return testSubjects.existOrFail('embeddablePanelAction-openInLens'); + }, }; } diff --git a/x-pack/test/functional/services/cases/list.ts b/x-pack/test/functional/services/cases/list.ts index c214739d0d263..39713897afaba 100644 --- a/x-pack/test/functional/services/cases/list.ts +++ b/x-pack/test/functional/services/cases/list.ts @@ -115,7 +115,20 @@ export function CasesTableServiceProvider( await testSubjects.missingOrFail('cases-table-loading', { timeout: 5000 }); }, - async getCaseFromTable(index: number) { + async getCaseById(caseId: string) { + const targetCase = await find.allByCssSelector( + `[data-test-subj*="cases-table-row-${caseId}"`, + 100 + ); + + if (!targetCase.length) { + throw new Error(`Cannot find case with id ${caseId} on table.`); + } + + return targetCase[0]; + }, + + async getCaseByIndex(index: number) { const rows = await find.allByCssSelector('[data-test-subj*="cases-table-row-"', 100); assertCaseExists(index, rows.length); @@ -361,7 +374,7 @@ export function CasesTableServiceProvider( async getCaseTitle(index: number) { const titleElement = await ( - await this.getCaseFromTable(index) + await this.getCaseByIndex(index) ).findByTestSubject('case-details-link'); return await titleElement.getVisibleText(); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/list_view.ts b/x-pack/test/functional_with_es_ssl/apps/cases/list_view.ts index a137a68831221..a05c11940db7d 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/list_view.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/list_view.ts @@ -281,6 +281,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('filtering', () => { const caseTitle = 'matchme'; + const caseIds: string[] = []; before(async () => { await createUsersAndRoles(getService, users, roles); @@ -288,14 +289,26 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const profiles = await cases.api.suggestUserProfiles({ name: 'all', owners: ['cases'] }); - await cases.api.createCase({ + const case1 = await cases.api.createCase({ title: caseTitle, tags: ['one'], description: 'lots of information about an incident', }); - await cases.api.createCase({ title: 'test2', tags: ['two'] }); - await cases.api.createCase({ title: 'test3', assignees: [{ uid: profiles[0].uid }] }); - await cases.api.createCase({ title: 'test4', assignees: [{ uid: profiles[1].uid }] }); + const case2 = await cases.api.createCase({ title: 'test2', tags: ['two'] }); + const case3 = await cases.api.createCase({ + title: case2.id, + assignees: [{ uid: profiles[0].uid }], + }); + const case4 = await cases.api.createCase({ + title: 'test4', + assignees: [{ uid: profiles[1].uid }], + description: case2.id, + }); + + caseIds.push(case1.id); + caseIds.push(case2.id); + caseIds.push(case3.id); + caseIds.push(case4.id); await header.waitUntilLoadingHasFinished(); await cases.casesTable.waitForCasesToBeListed(); @@ -329,6 +342,34 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.casesTable.validateCasesTableHasNthRows(4); }); + it('filters cases from the list using an id search', async () => { + await testSubjects.missingOrFail('cases-table-loading', { timeout: 5000 }); + + const input = await testSubjects.find('search-cases'); + await input.type(caseIds[0]); + await input.pressKeys(browser.keys.ENTER); + + await cases.casesTable.validateCasesTableHasNthRows(1); + await cases.casesTable.getCaseById(caseIds[0]); + await testSubjects.click('clearSearchButton'); + await cases.casesTable.validateCasesTableHasNthRows(4); + }); + + it('id search also matches title and description', async () => { + await testSubjects.missingOrFail('cases-table-loading', { timeout: 5000 }); + + const input = await testSubjects.find('search-cases'); + await input.type(caseIds[1]); + await input.pressKeys(browser.keys.ENTER); + + await cases.casesTable.validateCasesTableHasNthRows(3); + await cases.casesTable.getCaseById(caseIds[1]); // id match + await cases.casesTable.getCaseById(caseIds[2]); // title match + await cases.casesTable.getCaseById(caseIds[3]); // description match + await testSubjects.click('clearSearchButton'); + await cases.casesTable.validateCasesTableHasNthRows(4); + }); + it('only shows cases with a wildcard query "test*" matching the title', async () => { await testSubjects.missingOrFail('cases-table-loading', { timeout: 5000 }); @@ -336,7 +377,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await input.type('test*'); await input.pressKeys(browser.keys.ENTER); - await cases.casesTable.validateCasesTableHasNthRows(3); + await cases.casesTable.validateCasesTableHasNthRows(2); await testSubjects.click('clearSearchButton'); await cases.casesTable.validateCasesTableHasNthRows(4); }); @@ -381,7 +422,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.casesTable.filterByTag('one'); await cases.casesTable.refreshTable(); await cases.casesTable.validateCasesTableHasNthRows(1); - const row = await cases.casesTable.getCaseFromTable(0); + const row = await cases.casesTable.getCaseByIndex(0); const tags = await row.findByTestSubject('case-table-column-tags-one'); expect(await tags.getVisibleText()).to.be('one'); }); @@ -426,11 +467,11 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.casesTable.validateCasesTableHasNthRows(2); const firstCaseTitle = await ( - await cases.casesTable.getCaseFromTable(0) + await cases.casesTable.getCaseByIndex(0) ).findByTestSubject('case-details-link'); const secondCaseTitle = await ( - await cases.casesTable.getCaseFromTable(1) + await cases.casesTable.getCaseByIndex(1) ).findByTestSubject('case-details-link'); expect(await firstCaseTitle.getVisibleText()).be('test2'); 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 31daa97f534cb..eeb9a162c24a7 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 @@ -203,7 +203,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - describe('editing', () => { + // FLAKY: https://github.com/elastic/kibana/issues/88639 + describe.skip('editing', () => { before(async () => { await PageObjects.visualize.gotoVisualizationLandingPage(); await PageObjects.visualize.deleteAllVisualizations(); diff --git a/x-pack/test/scalability/apis/api.core.capabilities.json b/x-pack/test/scalability/apis/api.core.capabilities.json index cf1f50e306191..15c9cb270bbb0 100644 --- a/x-pack/test/scalability/apis/api.core.capabilities.json +++ b/x-pack/test/scalability/apis/api.core.capabilities.json @@ -1,6 +1,11 @@ { "journeyName": "POST /api/core/capabilities", "scalabilitySetup": { + "responseTimeThreshold": { + "threshold1": 5000, + "threshold2": 10000, + "threshold3": 20000 + }, "warmup": [ { "action": "constantUsersPerSec", @@ -12,11 +17,11 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 250, - "duration": "4m" + "maxUsersCount": 200, + "duration": "285s" } ], - "maxDuration": "6m" + "maxDuration": "5m" }, "testData": { "esArchives": [], diff --git a/x-pack/test/scalability/apis/api.metrics.vis.data.json b/x-pack/test/scalability/apis/api.metrics.vis.data.json index d8b8d5e7ddbe9..37ba4bc74c6c4 100644 --- a/x-pack/test/scalability/apis/api.metrics.vis.data.json +++ b/x-pack/test/scalability/apis/api.metrics.vis.data.json @@ -4,7 +4,7 @@ "responseTimeThreshold": { "threshold1": 5000, "threshold2": 10000, - "threshold3": 30000 + "threshold3": 20000 }, "warmup": [ { @@ -17,11 +17,11 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 250, - "duration": "4m" + "maxUsersCount": 150, + "duration": "140s" } ], - "maxDuration": "6m" + "maxDuration": "5m" }, "testData": { "esArchives": ["x-pack/performance/es_archives/sample_data_ecommerce"], diff --git a/x-pack/test/scalability/apis/api.saved_objects_tagging.tags.json b/x-pack/test/scalability/apis/api.saved_objects_tagging.tags.json index 8fdd63609e742..7c82efa710f23 100644 --- a/x-pack/test/scalability/apis/api.saved_objects_tagging.tags.json +++ b/x-pack/test/scalability/apis/api.saved_objects_tagging.tags.json @@ -12,11 +12,11 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 600, - "duration": "275s" + "maxUsersCount": 500, + "duration": "245s" } ], - "maxDuration": "7m" + "maxDuration": "6m" }, "testData": { "esArchives": [], diff --git a/x-pack/test/scalability/apis/api.telemetry.cluster_stats.json b/x-pack/test/scalability/apis/api.telemetry.cluster_stats.json index 8d70cf1b677cc..eb5bf0808d3ea 100644 --- a/x-pack/test/scalability/apis/api.telemetry.cluster_stats.json +++ b/x-pack/test/scalability/apis/api.telemetry.cluster_stats.json @@ -12,11 +12,11 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 490, - "duration": "4m" + "maxUsersCount": 400, + "duration": "195s" } ], - "maxDuration": "6m" + "maxDuration": "5m" }, "testData": { "esArchives": [], diff --git a/x-pack/test/scalability/apis/bundles.core.entry.json b/x-pack/test/scalability/apis/bundles.core.entry.json index 8d0bc666d88f3..6292d0cd6c7df 100644 --- a/x-pack/test/scalability/apis/bundles.core.entry.json +++ b/x-pack/test/scalability/apis/bundles.core.entry.json @@ -17,8 +17,8 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 1400, - "duration": "278s" + "maxUsersCount": 1200, + "duration": "238s" } ], "maxDuration": "6m" diff --git a/x-pack/test/scalability/apis/internal.security.session.json b/x-pack/test/scalability/apis/internal.security.session.json index 453ae2da989ad..e5307e47f46d5 100644 --- a/x-pack/test/scalability/apis/internal.security.session.json +++ b/x-pack/test/scalability/apis/internal.security.session.json @@ -1,6 +1,11 @@ { "journeyName": "GET /internal/security/session", "scalabilitySetup": { + "responseTimeThreshold": { + "threshold1": 1000, + "threshold2": 3000, + "threshold3": 5000 + }, "warmup": [ { "action": "constantUsersPerSec", @@ -12,11 +17,11 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 700, - "duration": "345s" + "maxUsersCount": 610, + "duration": "150s" } ], - "maxDuration": "8m" + "maxDuration": "5m" }, "testData": { "esArchives": [], diff --git a/x-pack/test/scalability/apis/internal.security.user_profile.json b/x-pack/test/scalability/apis/internal.security.user_profile.json index a80f578dc7c44..3c78974d8d07d 100644 --- a/x-pack/test/scalability/apis/internal.security.user_profile.json +++ b/x-pack/test/scalability/apis/internal.security.user_profile.json @@ -1,6 +1,11 @@ { "journeyName": "GET /internal/security/user_profile", "scalabilitySetup": { + "responseTimeThreshold": { + "threshold1": 1000, + "threshold2": 3000, + "threshold3": 5000 + }, "warmup": [ { "action": "constantUsersPerSec", @@ -12,8 +17,8 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 700, - "duration": "345s" + "maxUsersCount": 600, + "duration": "295s" } ], "maxDuration": "8m" diff --git a/x-pack/test/scalability/apis/security.me.json b/x-pack/test/scalability/apis/security.me.json index 23111ecef3564..c43e720c08c8e 100644 --- a/x-pack/test/scalability/apis/security.me.json +++ b/x-pack/test/scalability/apis/security.me.json @@ -1,6 +1,11 @@ { "journeyName": "GET /internal/security/me", "scalabilitySetup": { + "responseTimeThreshold": { + "threshold1": 1000, + "threshold2": 3000, + "threshold3": 5000 + }, "warmup": [ { "action": "constantUsersPerSec", @@ -12,8 +17,8 @@ { "action": "rampUsersPerSec", "minUsersCount": 10, - "maxUsersCount": 1000, - "duration": "198s" + "maxUsersCount": 750, + "duration": "148s" } ], "maxDuration": "5m" diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts index deb4a53190ff6..1c947c3852446 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts @@ -13,7 +13,8 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid const PageObjects = getPageObjects(['common']); const searchSessions = getService('searchSessions'); - describe('Dashboard', function () { + // FLAKY: https://github.com/elastic/kibana/issues/103043 + describe.skip('Dashboard', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.savedObjects.cleanStandardList(); diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index b3be2d080e7fe..0deb6cd41c437 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -105,7 +105,6 @@ "@kbn/controls-plugin", "@kbn/core-saved-objects-server", "@kbn/core-provider-plugin", - "@kbn/core-saved-objects-common", "@kbn/user-profile-components", "@kbn/apm-synthtrace-client", "@kbn/utils", diff --git a/yarn.lock b/yarn.lock index 6db5758154d34..c77393870b07f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1511,19 +1511,19 @@ "@elastic/transport" "^8.3.1" tslib "^2.4.0" -"@elastic/ems-client@8.3.3": - version "8.3.3" - resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-8.3.3.tgz#16ddd582e1029055a5a77e7bebbc5b57b3246ff7" - integrity sha512-vcgPwnAw7QjcR68IddErobZqwJdH0T4h/6U4swUR3XEF+9jojNZnxBkvM3mEV9Z7QLQxDprebJJu04d37lzlUw== +"@elastic/ems-client@8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-8.4.0.tgz#e77bbddda998a77e29b86767fe4ff403c5a62133" + integrity sha512-uMxZl6BxCPLvIJiG80gqQbOlxKqNLYCo0KtHDFVwUGpTgUQnrVzAZUJ9PZ7fSD7cUDW6pE+QekDddDxB2nOCwA== dependencies: - "@types/geojson" "^7946.0.7" + "@types/geojson" "^7946.0.10" "@types/lru-cache" "^5.1.0" - "@types/topojson-client" "^3.0.0" + "@types/topojson-client" "^3.1.1" "@types/topojson-specification" "^1.0.1" chroma-js "^2.1.0" lodash "^4.17.15" lru-cache "^6.0.0" - semver "^7.3.2" + semver "^7.3.8" topojson-client "^3.1.0" "@elastic/eslint-plugin-eui@0.0.2": @@ -6903,7 +6903,7 @@ dependencies: "@types/node" "*" -"@types/geojson@*", "@types/geojson@^7946.0.7", "@types/geojson@^7946.0.8": +"@types/geojson@*", "@types/geojson@^7946.0.8": version "7946.0.8" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== @@ -6913,6 +6913,11 @@ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== +"@types/geojson@^7946.0.10": + version "7946.0.10" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" + integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== + "@types/getos@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/getos/-/getos-3.0.0.tgz#582c758e99e9d634f31f471faf7ce59cf1c39a71" @@ -7207,10 +7212,10 @@ dependencies: json5 "*" -"@types/jsonwebtoken@^8.5.6": - version "8.5.6" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.6.tgz#1913e5a61e70a192c5a444623da4901a7b1a9d42" - integrity sha512-+P3O/xC7nzVizIi5VbF34YtqSonFsdnbXBnWUCYRiKOi1f9gA4sEFvXkrGr/QVV23IbMYvcoerI7nnhDUiWXRQ== +"@types/jsonwebtoken@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#4db9bfaf276ef4fdc3608194fab8b8f2fd1c44f9" + integrity sha512-mM4TkDpA9oixqg1Fv2vVpOFyIVLJjm5x4k0V+K/rEsizfjD7Tk7LKk3GTtbB7KCfP0FEHQtsZqFxYA0+sijNVg== dependencies: "@types/node" "*" @@ -7394,12 +7399,12 @@ "@types/node" "*" "@types/node-fetch@^2.5.7", "@types/node-fetch@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.0.tgz#bf854a36a0d0d99436fd199e06612ef4e73591b6" - integrity sha512-HT+uU6V27wJFXgEqTk/+rVE1MWcp5bg7Yuz//43TZ2PjpQbQ8vDLwVmB+fSpgs83j/+p+rMIlDRo9TL3IexWMA== + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" - form-data "^2.3.3" + form-data "^3.0.0" "@types/node-forge@^1.3.1": version "1.3.1" @@ -7935,10 +7940,10 @@ resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.2.tgz#721ca5c5d1a2988b4a886e35c2ffc5735b6afbdf" integrity sha512-PeHg/AtdW6aaIO2a+98Xj7rWY4KC1E6yOy7AFknJQ7VXUGNrMlyxDFxJo7HqLtjQms/ZhhQX52mLVW/EX3JGOw== -"@types/topojson-client@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/topojson-client/-/topojson-client-3.1.0.tgz#2fd96d5e64f4f512742f22194f3e1e0443c27233" - integrity sha512-wmjTmMkF6k6m3Tn4mIyRjw8KUQZLHB1TxNcpGYirvV/aCINkC0eMJsUO/OPMkKIB6VO5iA6Vp39bmAq6QgvSfA== +"@types/topojson-client@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/topojson-client/-/topojson-client-3.1.1.tgz#d1396b2e79f530ef69bb162523cddf94576bd5a9" + integrity sha512-E4/Z2Xg56kVLRzYWem/6uOKVcVNqqxEqlWM9qCG2tCV1BxuzvvXC02/ELoGJWgtKkQhfycBPlMFEuTFdA/YiTg== dependencies: "@types/geojson" "*" "@types/topojson-specification" "*" @@ -14807,7 +14812,7 @@ fork-ts-checker-webpack-plugin@^6.0.4: semver "^7.3.2" tapable "^1.0.0" -form-data@^2.3.1, form-data@^2.3.3: +form-data@^2.3.1: version "2.5.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.0.tgz#094ec359dc4b55e7d62e0db4acd76e89fe874d37" integrity sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA== @@ -18360,21 +18365,15 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonwebtoken@^8.3.0: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== dependencies: jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" + lodash "^4.17.21" ms "^2.1.1" - semver "^5.6.0" + semver "^7.3.8" jsprim@^1.2.2: version "1.4.1" @@ -18923,16 +18922,6 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" @@ -18948,16 +18937,6 @@ lodash.isfunction@^3.0.9: resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" @@ -18983,7 +18962,7 @@ lodash.merge@4.6.2, lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.once@^4.0.0, lodash.once@^4.1.1: +lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= @@ -20475,13 +20454,20 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" -node-fetch@2.6.7, node-fetch@^1.0.1, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^1.0.1, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.8" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" + integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1, node-forge@^1.2.1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -24831,10 +24817,10 @@ simple-get@^4.0.0, simple-get@^4.0.1: once "^1.3.1" simple-concat "^1.0.0" -simple-git@^3.15.1: - version "3.15.1" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.15.1.tgz#57f595682cb0c2475d5056da078a05c8715a25ef" - integrity sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg== +simple-git@^3.16.0: + version "3.16.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.16.0.tgz#421773e24680f5716999cc4a1d60127b4b6a9dec" + integrity sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw== dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1"