diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 670fc3a7a4cac..3fb8a5f2d1b8e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -266,6 +266,8 @@ /test/functional/services/common @elastic/kibana-qa /test/functional/services/lib @elastic/kibana-qa /test/functional/services/remote @elastic/kibana-qa +/test/visual_regression @elastic/kibana-qa +/x-pack/test/visual_regression @elastic/kibana-qa # Core /examples/hello_world/ @elastic/kibana-core diff --git a/api-documenter.json b/api-documenter.json deleted file mode 100644 index a2303b939c8ec..0000000000000 --- a/api-documenter.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "newlineKind": "lf", - "outputTarget": "markdown" -} diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 266c9e3101296..05763e928ab5b 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github summary: API docs for the actions plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 8b8ac8261c081..6a89371755060 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github summary: API docs for the advancedSettings plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index d99384c4f3db0..22fb8f499d192 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github summary: API docs for the aiops plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 2db29e53cf015..54efd146e20bf 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github summary: API docs for the alerting plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 3050858419771..5c280aedc4e79 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github summary: API docs for the apm plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 0611e689c3760..a9b143c77d641 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github summary: API docs for the banners plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 80f63cf0a3fbf..a22860b027973 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github summary: API docs for the bfetch plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 434e0a37bb096..0ea11da82fed6 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github summary: API docs for the canvas plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index f155adf764c83..e4e1d5248f769 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github summary: API docs for the cases plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index b29658891ad61..8296e648db8ae 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github summary: API docs for the charts plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 892f3c9871d8c..598dfff2afce1 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloud plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 221935685c3aa..aaba13bb6730a 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloudSecurityPosture plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 46fcb6547e8f0..05d3de894d1f6 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github summary: API docs for the console plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 78f2941afcacd..f5138a8cf2438 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github summary: API docs for the controls plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 696d751b5a6ed..d2573ca167afc 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -62,13 +62,7 @@ "label": "uiSettings", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/core/public/notifications/toasts/toasts_api.tsx", "deprecated": false @@ -1318,13 +1312,7 @@ "{@link IUiSettingsClient}" ], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/core/public/index.ts", "deprecated": false @@ -1610,13 +1598,7 @@ "{@link IUiSettingsClient}" ], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/core/public/index.ts", "deprecated": false @@ -4469,7 +4451,7 @@ "description": [ "\nClient-side client that provides access to the advanced settings stored in elasticsearch.\nThe settings provide control over the behavior of the Kibana application.\nFor example, a user can specify how to display numeric or date fields.\nUsers can adjust the settings via Management UI.\n{@link IUiSettingsClient}\n" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4484,7 +4466,7 @@ "signature": [ "(key: string, defaultOverride?: T | undefined) => T" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4497,7 +4479,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true }, @@ -4511,7 +4493,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": false } @@ -4532,7 +4514,7 @@ "Observable", "" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4545,7 +4527,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true }, @@ -4559,7 +4541,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": false } @@ -4582,7 +4564,7 @@ "UserProvidedValues", ">>" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [], "returnComment": [] @@ -4599,7 +4581,7 @@ "signature": [ "(key: string, value: any) => Promise" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4612,7 +4594,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true }, @@ -4626,7 +4608,7 @@ "signature": [ "any" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4645,7 +4627,7 @@ "signature": [ "(key: string) => Promise" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4658,7 +4640,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4677,7 +4659,7 @@ "signature": [ "(key: string) => boolean" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4690,7 +4672,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4709,7 +4691,7 @@ "signature": [ "(key: string) => boolean" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4722,7 +4704,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4741,7 +4723,7 @@ "signature": [ "(key: string) => boolean" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4754,7 +4736,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4773,7 +4755,7 @@ "signature": [ "(key: string) => boolean" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -4786,7 +4768,7 @@ "signature": [ "string" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "isRequired": true } @@ -4807,7 +4789,7 @@ "Observable", "<{ key: string; newValue: T; oldValue: T; }>" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [], "returnComment": [] @@ -4826,7 +4808,7 @@ "Observable", "" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [], "returnComment": [] @@ -8783,7 +8765,7 @@ "UiSettingsParams", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "children": [ { @@ -8798,7 +8780,7 @@ "signature": [ "string | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8813,7 +8795,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8828,7 +8810,7 @@ "signature": [ "string | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8843,7 +8825,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8858,7 +8840,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8873,7 +8855,7 @@ "signature": [ "Record | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8888,7 +8870,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8903,7 +8885,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8918,7 +8900,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8934,7 +8916,7 @@ "UiSettingsType", " | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8950,7 +8932,7 @@ "DeprecationSettings", " | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8965,7 +8947,7 @@ "signature": [ "number | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8979,7 +8961,7 @@ "Type", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -8996,7 +8978,7 @@ "signature": [ "{ type: string; name: string; } | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": true, "references": [ { @@ -9027,7 +9009,7 @@ "tags": [], "label": "UiSettingsState", "description": [], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false, "children": [ { @@ -9044,7 +9026,7 @@ "UserProvidedValues", "" ], - "path": "src/core/public/ui_settings/types.ts", + "path": "node_modules/@types/kbn__core-ui-settings-browser/index.d.ts", "deprecated": false } ], @@ -9063,7 +9045,7 @@ "UserProvidedValues", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "children": [ { @@ -9076,7 +9058,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -9089,7 +9071,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false } ], @@ -9553,7 +9535,7 @@ "DeprecationSettings", " | undefined; }" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -10123,7 +10105,7 @@ "signature": [ "\"string\" | \"number\" | \"boolean\" | \"undefined\" | \"color\" | \"image\" | \"json\" | \"markdown\" | \"select\" | \"array\"" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -13236,7 +13218,7 @@ "description": [ "\nUiSettings deprecation field options." ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "children": [ { @@ -13248,7 +13230,7 @@ "description": [ "Deprecation message" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -13260,7 +13242,7 @@ "description": [ "Key to documentation links" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false } ], @@ -27221,7 +27203,7 @@ "UiSettingsParams", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "children": [ { @@ -27236,7 +27218,7 @@ "signature": [ "string | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27251,7 +27233,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27266,7 +27248,7 @@ "signature": [ "string | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27281,7 +27263,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27296,7 +27278,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27311,7 +27293,7 @@ "signature": [ "Record | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27326,7 +27308,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27341,7 +27323,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27356,7 +27338,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27372,7 +27354,7 @@ "UiSettingsType", " | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27388,7 +27370,7 @@ "DeprecationSettings", " | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27403,7 +27385,7 @@ "signature": [ "number | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27417,7 +27399,7 @@ "Type", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27434,7 +27416,7 @@ "signature": [ "{ type: string; name: string; } | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": true, "references": [ { @@ -27848,7 +27830,7 @@ "UserProvidedValues", "" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "children": [ { @@ -27861,7 +27843,7 @@ "signature": [ "T | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false }, { @@ -27874,7 +27856,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false } ], @@ -31088,7 +31070,7 @@ "DeprecationSettings", " | undefined; }" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -31718,7 +31700,7 @@ "signature": [ "\"string\" | \"number\" | \"boolean\" | \"undefined\" | \"color\" | \"image\" | \"json\" | \"markdown\" | \"select\" | \"array\"" ], - "path": "src/core/types/ui_settings.ts", + "path": "node_modules/@types/kbn__core-ui-settings-common/index.d.ts", "deprecated": false, "initialIsOpen": false }, diff --git a/api_docs/core.mdx b/api_docs/core.mdx index f1a1c1b2e0dc0..36624ab2e09e6 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github summary: API docs for the core plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2472 | 6 | 724 | 22 | +| 2472 | 5 | 705 | 17 | ## Client diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index b9d2d257b7d28..b7c69ea07a71b 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.application plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2472 | 6 | 724 | 22 | +| 2472 | 5 | 705 | 17 | ## Client diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 7dfaeefb9d685..7808fcb933101 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.chrome plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2472 | 6 | 724 | 22 | +| 2472 | 5 | 705 | 17 | ## Client diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index c6536a2b385fb..c5028544c3374 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.savedObjects plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2472 | 6 | 724 | 22 | +| 2472 | 5 | 705 | 17 | ## Client diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 92901a3bcc233..ea3c112fbd057 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github summary: API docs for the customIntegrations plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 6d6f8231dae94..879cf9096ab4c 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboard plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 9c8b86bab716f..007978579acf5 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboardEnhanced plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 128560ead897f..140ce8e70bb5c 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -6999,13 +6999,7 @@ "label": "uiSettings", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/plugins/data/public/types.ts", "deprecated": false @@ -13860,7 +13854,7 @@ "\nCreate a new data view instance." ], "signature": [ - "({ id, ...restOfSpec }: ", + "({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", @@ -13886,7 +13880,7 @@ "id": "def-server.DataViewsService.create.$1", "type": "Object", "tags": [], - "label": "{ id, ...restOfSpec }", + "label": "{ id, name, title, ...restOfSpec }", "description": [], "signature": [ { @@ -21001,7 +20995,7 @@ "\nCreate a new data view instance." ], "signature": [ - "({ id, ...restOfSpec }: ", + "({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", @@ -21027,7 +21021,7 @@ "id": "def-common.DataViewsService.create.$1", "type": "Object", "tags": [], - "label": "{ id, ...restOfSpec }", + "label": "{ id, name, title, ...restOfSpec }", "description": [], "signature": [ { @@ -23166,7 +23160,7 @@ "\nData views service interface" ], "signature": [ - "{ create: ({ id, ...restOfSpec }: ", + "{ create: ({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 3822a516eaafb..15f3bfc6a2da2 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github summary: API docs for the data plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_query.devdocs.json b/api_docs/data_query.devdocs.json index a061d52a3ae43..bd9bfa16a841d 100644 --- a/api_docs/data_query.devdocs.json +++ b/api_docs/data_query.devdocs.json @@ -53,13 +53,7 @@ "label": "uiSettings", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", "deprecated": false, diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index d5c579e9428a5..da114be75b8c0 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.query plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 606b543770e9b..197ae85a3baa6 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.search plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 242a4f5e76579..cc56b072a32e6 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewEditor plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 64b7f890a340d..c80016ad9eb54 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewFieldEditor plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index f6c1c816c3463..268981e86b6a8 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewManagement plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 69caa706b7227..ada9c71be6610 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -3455,7 +3455,7 @@ "\nCreate a new data view instance." ], "signature": [ - "({ id, ...restOfSpec }: ", + "({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", @@ -3481,7 +3481,7 @@ "id": "def-public.DataViewsService.create.$1", "type": "Object", "tags": [], - "label": "{ id, ...restOfSpec }", + "label": "{ id, name, title, ...restOfSpec }", "description": [], "signature": [ { @@ -4307,13 +4307,7 @@ "label": "uiSettings", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/plugins/data_views/public/ui_settings_wrapper.ts", "deprecated": false, @@ -8770,7 +8764,7 @@ "\nCreate a new data view instance." ], "signature": [ - "({ id, ...restOfSpec }: ", + "({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", @@ -8796,7 +8790,7 @@ "id": "def-server.DataViewsService.create.$1", "type": "Object", "tags": [], - "label": "{ id, ...restOfSpec }", + "label": "{ id, name, title, ...restOfSpec }", "description": [], "signature": [ { @@ -15223,7 +15217,7 @@ "\nCreate a new data view instance." ], "signature": [ - "({ id, ...restOfSpec }: ", + "({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", @@ -15249,7 +15243,7 @@ "id": "def-common.DataViewsService.create.$1", "type": "Object", "tags": [], - "label": "{ id, ...restOfSpec }", + "label": "{ id, name, title, ...restOfSpec }", "description": [], "signature": [ { @@ -19605,7 +19599,7 @@ "\nData views service interface" ], "signature": [ - "{ create: ({ id, ...restOfSpec }: ", + "{ create: ({ id, name, title, ...restOfSpec }: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index f5ad4f7c782d3..aadc3b05639be 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViews plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index ca0383f02bd8c..24e6455d7bd97 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataVisualizer plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 2b8ef4377da72..be6c99a1c136e 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -50,8 +50,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | canvas | - | | | canvas | - | | | canvas | - | -| | management, spaces, ml, canvas, cloudSecurityPosture, enterpriseSearch, osquery | - | -| | management, cloudSecurityPosture, enterpriseSearch | - | +| | management, spaces, ml, canvas, enterpriseSearch, osquery | - | +| | management, enterpriseSearch | - | | | enterpriseSearch | - | | | actions, ml, enterpriseSearch, savedObjectsTagging | - | | | spaces, savedObjectsManagement | - | @@ -137,4 +137,5 @@ Safe to remove. | | @kbn/core-http-browser | | | @kbn/core-http-browser | | | @kbn/core-injected-metadata-browser | -| | @kbn/core-injected-metadata-browser | \ No newline at end of file +| | @kbn/core-injected-metadata-browser | +| | @kbn/core-ui-settings-common | \ No newline at end of file diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 1c116f6874be7..769c52ec4d1c3 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -101,8 +101,6 @@ so TS and code-reference navigation might not highlight them. | | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [compliance_dashboard.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx#:~:text=KibanaPageTemplateProps), [compliance_dashboard.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx#:~:text=KibanaPageTemplateProps)+ 2 more | - | -| | [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate) | - | | | [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks) | - | | | [update_rules_configuration.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/server/routes/configuration/update_rules_configuration.ts#:~:text=authc) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index ec25b9ed7e4d5..c2ae3a4e2a4be 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team summary: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 3bbded301146a..0f92522c8e4fa 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github summary: API docs for the devTools plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 9ee768d6ccff2..7b750330f8b3f 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github summary: API docs for the discover plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 942b1a2791147..524261ba42d34 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the discoverEnhanced plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/elastic_apm_synthtrace.mdx b/api_docs/elastic_apm_synthtrace.mdx index 652bcb829b36d..117f93d54336b 100644 --- a/api_docs/elastic_apm_synthtrace.mdx +++ b/api_docs/elastic_apm_synthtrace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/elastic-apm-synthtrace title: "@elastic/apm-synthtrace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @elastic/apm-synthtrace plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/apm-synthtrace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 4a53f6c3bc704..f38bc345bb8b2 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddable plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 722821b64b8b9..95246bf706847 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddableEnhanced plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 25760de133fcd..ecef308ad273f 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the encryptedSavedObjects plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index ca000e0cbdda2..a929fbc68c58d 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the enterpriseSearch plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 744edc9147194..5d23cd86f018d 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github summary: API docs for the esUiShared plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 0cb6faf9f7921..6b67a6cba868b 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventAnnotation plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index bf8a6079f2f48..05f19ba18d64f 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventLog plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index fdb9f22e90e41..d72dc7200ecbf 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionError plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index bfe26a9810ee1..1abfc5ffccf58 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionGauge plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index ba8d4bde0ea74..de57119d89fa1 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionHeatmap plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 5090c83da7a37..d3cb0aa462936 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionImage plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index c60be92df439d..1240da8315114 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionLegacyMetricVis plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 448a10c15c0a0..841caeb2bf03b 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetric plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index a8fbfe9dccf90..51ac63bf2aa4b 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetricVis plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 0b3d3ec2cb487..f82a1500e73f6 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionPartitionVis plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 2ef5c54bd07e5..92bf641120ea7 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRepeatImage plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 39653b4b02bc8..9e5eb625a40ae 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRevealImage plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 62d44a3f287a4..247176a00c024 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionShape plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 58c5ff7542301..34bd8c8485237 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionTagcloud plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 3e646cc1d4144..e2dc9bd857e90 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionXY plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 239e15f230145..657c819aa76c7 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressions plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/features.mdx b/api_docs/features.mdx index b2e2cb8636e8f..b64bc536d0c33 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github summary: API docs for the features plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index be83fc50e1a71..6c1a9bb8c6998 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github summary: API docs for the fieldFormats plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 483619e1e4180..71087385d382e 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github summary: API docs for the fileUpload plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index aec385e2eab76..08aa1d377af7d 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -2994,6 +2994,38 @@ ], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.settings_edit_download_sources", + "type": "Function", + "tags": [], + "label": "settings_edit_download_sources", + "description": [], + "signature": [ + "({ downloadSourceId }: ", + "DynamicPagePathValues", + ") => [string, string]" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.settings_edit_download_sources.$1", + "type": "Object", + "tags": [], + "label": "{ downloadSourceId }", + "description": [], + "signature": [ + "DynamicPagePathValues" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-public.pagePathGetters.settings_create_outputs", @@ -3009,6 +3041,21 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.settings_create_download_sources", + "type": "Function", + "tags": [], + "label": "settings_create_download_sources", + "description": [], + "signature": [ + "() => [string, string]" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-public.pagePathGetters.debug", @@ -17784,7 +17831,7 @@ "label": "body", "description": [], "signature": [ - "{ id: string; name: string; hosts: string; is_default?: boolean | undefined; }" + "{ id?: string | undefined; name: string; host: string; is_default?: boolean | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/download_sources.ts", "deprecated": false @@ -18296,7 +18343,7 @@ "label": "body", "description": [], "signature": [ - "{ id: string; name: string; hosts: string; is_default?: boolean | undefined; }" + "{ name: string; host: string; is_default?: boolean | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/download_sources.ts", "deprecated": false @@ -20643,13 +20690,13 @@ }, { "parentPluginId": "fleet", - "id": "def-common.DEFAULT_DOWNLOAD_SOURCE", + "id": "def-common.DEFAULT_DOWNLOAD_SOURCE_ID", "type": "string", "tags": [], - "label": "DEFAULT_DOWNLOAD_SOURCE", + "label": "DEFAULT_DOWNLOAD_SOURCE_ID", "description": [], "signature": [ - "\"https://artifacts.elastic.co\"" + "\"fleet-default-download-source\"" ], "path": "x-pack/plugins/fleet/common/constants/download_source.ts", "deprecated": false, @@ -20657,13 +20704,13 @@ }, { "parentPluginId": "fleet", - "id": "def-common.DEFAULT_DOWNLOAD_SOURCE_ID", + "id": "def-common.DEFAULT_DOWNLOAD_SOURCE_URI", "type": "string", "tags": [], - "label": "DEFAULT_DOWNLOAD_SOURCE_ID", + "label": "DEFAULT_DOWNLOAD_SOURCE_URI", "description": [], "signature": [ - "\"fleet-default-download-source\"" + "\"https://artifacts.elastic.co/downloads/beats/elastic-agent\"" ], "path": "x-pack/plugins/fleet/common/constants/download_source.ts", "deprecated": false, @@ -21313,8 +21360,8 @@ "pluginId": "fleet", "scope": "common", "docId": "kibFleetPluginApi", - "section": "def-common.DownloadSourceBase", - "text": "DownloadSourceBase" + "section": "def-common.DownloadSource", + "text": "DownloadSource" }, ">" ], @@ -24354,6 +24401,139 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService", + "type": "Object", + "tags": [], + "label": "downloadSourceRoutesService", + "description": [], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getInfoPath", + "type": "Function", + "tags": [], + "label": "getInfoPath", + "description": [], + "signature": [ + "(downloadSourceId: string) => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getInfoPath.$1", + "type": "string", + "tags": [], + "label": "downloadSourceId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getUpdatePath", + "type": "Function", + "tags": [], + "label": "getUpdatePath", + "description": [], + "signature": [ + "(downloadSourceId: string) => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getUpdatePath.$1", + "type": "string", + "tags": [], + "label": "downloadSourceId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getListPath", + "type": "Function", + "tags": [], + "label": "getListPath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getDeletePath", + "type": "Function", + "tags": [], + "label": "getDeletePath", + "description": [], + "signature": [ + "(downloadSourceId: string) => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getDeletePath.$1", + "type": "string", + "tags": [], + "label": "downloadSourceId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.downloadSourceRoutesService.getCreatePath", + "type": "Function", + "tags": [], + "label": "getCreatePath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "fleet", "id": "def-common.ENROLLMENT_API_KEY_ROUTES", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 0c6b50fdcbaba..117a563958dc7 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github summary: API docs for the fleet plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Fleet](https://github.com/orgs/elastic/teams/fleet) for questions regar | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1525 | 8 | 1393 | 10 | +| 1537 | 8 | 1405 | 10 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 2723d4f6e8c65..19ad0b2d0d9b3 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the globalSearch plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/home.mdx b/api_docs/home.mdx index f854b50ca3c46..1d53d9ccc962c 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github summary: API docs for the home plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 4fc5d960a2148..5947770412fde 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexLifecycleManagement plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 8dd28aa8de103..929c44a78a530 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexManagement plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index cc46935d05be2..8adcb57942bba 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github summary: API docs for the infra plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 94489a03e5334..7ab236f2e8475 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github summary: API docs for the inspector plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index bc5f5239b9121..b7fdd8e5f9399 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github summary: API docs for the interactiveSetup plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 3a0fb68f7e276..b4a1c140b98ab 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ace plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index f892382e2d980..a192ac8bb5aba 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/aiops-components plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 3c4a88c4ece35..2a0e87a404b56 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/aiops-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 7576954a8e867..d112836d00174 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/alerts plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 58d40c7854834..08cb45a479a21 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 0f99bb0d50192..384398d48ec7a 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-client plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 89df1534b5024..d9cb8e5838b36 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 042d33148c7ab..10ed61ec2987d 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 6eab6975ace2a..7ba3fee43429a 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 1a6c6a6c29a8c..8d508a84af7c1 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 24b69f7e51081..a277e0e6df6b5 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-config-loader plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 1e5722fe7e8cc..f4959c303cbb2 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index a8f7220cc05ad..21ace4f24e9ee 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/axe-config plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_packages.mdx b/api_docs/kbn_bazel_packages.mdx index 7aeda72838515..7af8201b07ad5 100644 --- a/api_docs/kbn_bazel_packages.mdx +++ b/api_docs/kbn_bazel_packages.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-packages title: "@kbn/bazel-packages" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-packages plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-packages'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_runner.mdx b/api_docs/kbn_bazel_runner.mdx index 54d8e93528fc5..b13b3f1497198 100644 --- a/api_docs/kbn_bazel_runner.mdx +++ b/api_docs/kbn_bazel_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-runner title: "@kbn/bazel-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-runner plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 3ca28e5a00a81..7d2723635a8c8 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-core plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 11f5ff83daab5..47b07d40378f4 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 1df2abbea0d2e..b2c73aea5d5ee 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 44ef4146a587a..12ec70259e144 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/cli-dev-mode plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 37692b467b530..7a21b9a6003c9 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/coloring plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index ba10ea449d7ed..c86b58e9ae841 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index c5e14a6ce3ef8..dbb3bd5294dd5 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index e2369107ebad8..bc66e02e91abb 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-schema plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index f279096a8aeb8..ff39e174b0f92 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 6e9c64f546655..57c791bd78404 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 4af5fc170de17..1db334b5260bb 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 223d8d5438765..5d37bfcee4c4f 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 6d37d452f045a..ea5661f171819 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 13dd7f8718c31..fc9b33c0ac93b 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 4b27a8e593b66..09be17454f369 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index ad49df0e0fc86..12f1e9d59e547 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-common plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index d4548895b8138..0c7ec33166249 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 10746192e53dc..79b1cdfd9cdbe 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index db2484ca5660b..59440d9647401 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-config-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 8a09d18d10e2d..9a91cff9d5331 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 1ff6711cbba7e..5867759d1a1e4 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index f613c435d770d..a868008b3843e 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 1655e5ace5d75..b8041b80bb60e 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-deprecations-common plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 0d3d4b782a6e6..9f943599ce6cf 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 3db9ce527e743..efb6da0efdb53 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index b8bf4362d80e1..b1d8f15e299b3 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index e02f196c84624..940ca9d432ce6 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 8e9ab43eac32f..ce6282c68fa6c 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index d7206b6566221..d3901591836dc 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 935c7d10bb4e4..4564311a04f5f 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index e9d8b97b72bd4..ae478e201077b 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index ceebcf02bb548..920d3f084a8a4 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 174ba7a2883ba..d041b1c49391d 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-execution-context-common plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 1f3b85bc43bd5..e6e53b4df8012 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-execution-context-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index a2ac783457fdf..0cbb61879dde6 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 9f49fcec212b6..6209f6a8fecd1 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 1d7ad995b0c82..3a2aef585e3c5 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 6b7c0d2ddcf77..8cdf50585ef3f 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 61a5977759133..3d7b8a73833b7 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 9c8c687cdb714..9a2b5bb363c85 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 12d2c6fbf3df9..43351581068da 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 5976a476a2c79..6001df4df914d 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-common plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index b6a5c32870cfc..903e70697f31d 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index dfe9ea97fb622..7ccf1ce2c83de 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index f0957357d4c7f..4f738eaa65e1f 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 495e16540ff99..ce38cafc1ca4e 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index c73c69d8383de..ffaf4fecf4259 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index c516312a3b173..c7717cc9d83da 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index aa6d11478fe41..cd455c6ee5e02 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-i18n-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index a0fd4df5a9477..568dcaeeccb00 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index b47b634ce27c2..bb508c29fc5d4 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 60a73253e7339..ae0aadd5ddde5 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 1271bdaa68042..ec8b5272198c2 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 6f0eec690a19c..9cb5eeaee2bbd 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 643eb7e439c80..dd8d028170fa6 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 7baf8f68460bd..ac82f067f6083 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-node-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 5cadea53c1ad2..114e242814876 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-node-server-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 9b902ede606eb..00e7743d8d7e9 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index c5b4f7fd3a743..0d7a5a26ef5b0 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-preboot-server plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index da8147070af3c..5986ddbc80837 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.devdocs.json b/api_docs/kbn_core_test_helpers_http_setup_browser.devdocs.json new file mode 100644 index 0000000000000..477484917583d --- /dev/null +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.devdocs.json @@ -0,0 +1,141 @@ +{ + "id": "@kbn/core-test-helpers-http-setup-browser", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/core-test-helpers-http-setup-browser", + "id": "def-common.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "(tap: ", + { + "pluginId": "@kbn/core-test-helpers-http-setup-browser", + "scope": "common", + "docId": "kibKbnCoreTestHelpersHttpSetupBrowserPluginApi", + "section": "def-common.SetupTap", + "text": "SetupTap" + }, + ") => { httpService: ", + "HttpService", + "; injectedMetadata: jest.Mocked<", + "InternalInjectedMetadataSetup", + ">; fatalErrors: jest.Mocked<", + "FatalErrorsSetup", + ">; http: ", + "HttpSetup", + "; }" + ], + "path": "packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-http-setup-browser", + "id": "def-common.setup.$1", + "type": "Function", + "tags": [], + "label": "tap", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-test-helpers-http-setup-browser", + "scope": "common", + "docId": "kibKbnCoreTestHelpersHttpSetupBrowserPluginApi", + "section": "def-common.SetupTap", + "text": "SetupTap" + } + ], + "path": "packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/core-test-helpers-http-setup-browser", + "id": "def-common.SetupTap", + "type": "Type", + "tags": [], + "label": "SetupTap", + "description": [], + "signature": [ + "(injectedMetadata: jest.Mocked<", + "InternalInjectedMetadataSetup", + ">, fatalErrors: jest.Mocked<", + "FatalErrorsSetup", + ">) => void" + ], + "path": "packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-http-setup-browser", + "id": "def-common.SetupTap.$1", + "type": "CompoundType", + "tags": [], + "label": "injectedMetadata", + "description": [], + "signature": [ + "{ getBasePath: jest.MockInstance; getServerBasePath: jest.MockInstance; getPublicBaseUrl: jest.MockInstance; getKibanaBuildNumber: jest.MockInstance; getKibanaBranch: jest.MockInstance; getKibanaVersion: jest.MockInstance; getCspConfig: jest.MockInstance<{ warnLegacyBrowsers: boolean; }, []>; getExternalUrlConfig: jest.MockInstance<{ policy: ", + "InjectedMetadataExternalUrlPolicy", + "[]; }, []>; getTheme: jest.MockInstance<{ darkMode: boolean; version: \"v8\"; }, []>; getElasticsearchInfo: jest.MockInstance<", + "InjectedMetadataClusterInfo", + ", []>; getPlugins: jest.MockInstance<", + "InjectedMetadataPlugin", + "[], []>; getAnonymousStatusPage: jest.MockInstance; getLegacyMetadata: jest.MockInstance<{ uiSettings: { defaults: Record; user?: Record | undefined; }; }, []>; getInjectedVar: jest.MockInstance; getInjectedVars: jest.MockInstance<{ [key: string]: unknown; }, []>; } & ", + "InternalInjectedMetadataSetup" + ], + "path": "packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-test-helpers-http-setup-browser", + "id": "def-common.SetupTap.$2", + "type": "CompoundType", + "tags": [], + "label": "fatalErrors", + "description": [], + "signature": [ + "{ add: jest.MockInstance; get$: jest.MockInstance<", + "Observable", + "<", + "FatalErrorInfo", + ">, []>; } & ", + "FatalErrorsSetup" + ], + "path": "packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx new file mode 100644 index 0000000000000..5a2a989deb04f --- /dev/null +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -0,0 +1,30 @@ +--- +id: kibKbnCoreTestHelpersHttpSetupBrowserPluginApi +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 +summary: API docs for the @kbn/core-test-helpers-http-setup-browser plugin +date: 2022-07-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 5 | 0 | 5 | 0 | + +## Common + +### Functions + + +### Consts, variables and types + + diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index d34910c499bec..94db50a80a68a 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index bfa6185b08084..4b983ebbdf509 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index af0cf0d8eb376..e3cbdd4691d0b 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_ui_settings_browser.devdocs.json b/api_docs/kbn_core_ui_settings_browser.devdocs.json new file mode 100644 index 0000000000000..20f23615866bd --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser.devdocs.json @@ -0,0 +1,432 @@ +{ + "id": "@kbn/core-ui-settings-browser", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient", + "type": "Interface", + "tags": [], + "label": "IUiSettingsClient", + "description": [ + "\nClient-side client that provides access to the advanced settings stored in elasticsearch.\nThe settings provide control over the behavior of the Kibana application.\nFor example, a user can specify how to display numeric or date fields.\nUsers can adjust the settings via Management UI.\n{@link IUiSettingsClient}\n" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [ + "\nGets the value for a specific uiSetting. If this setting has no user-defined value\nthen the `defaultOverride` parameter is returned (and parsed if setting is of type\n\"json\" or \"number). If the parameter is not defined and the key is not registered\nby any plugin then an error is thrown, otherwise reads the default value defined by a plugin." + ], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => T" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get.$2", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get$", + "type": "Function", + "tags": [], + "label": "get$", + "description": [ + "\nGets an observable of the current value for a config key, and all updates to that config\nkey in the future. Providing a `defaultOverride` argument behaves the same as it does in #get()" + ], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => ", + "Observable", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get$.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.get$.$2", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [ + "\nGets the metadata about all uiSettings, including the type, default value, and user value\nfor each key." + ], + "signature": [ + "() => Readonly>>" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.set", + "type": "Function", + "tags": [], + "label": "set", + "description": [ + "\nSets the value for a uiSetting. If the setting is not registered by any plugin\nit will be stored as a custom setting. The new value will be synchronously available via\nthe `get()` method and sent to the server in the background. If the request to the\nserver fails then a updateErrors$ will be notified and the setting will be\nreverted to its value before `set()` was called." + ], + "signature": [ + "(key: string, value: any) => Promise" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.set.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.set.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.remove", + "type": "Function", + "tags": [], + "label": "remove", + "description": [ + "\nRemoves the user-defined value for a setting, causing it to revert to the default. This\nmethod behaves the same as calling `set(key, null)`, including the synchronization, custom\nsetting, and error behavior of that method." + ], + "signature": [ + "(key: string) => Promise" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.remove.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isDeclared", + "type": "Function", + "tags": [], + "label": "isDeclared", + "description": [ + "\nReturns true if the key is a \"known\" uiSetting, meaning it is either registered\nby any plugin or was previously added as a custom setting via the `set()` method." + ], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isDeclared.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isDefault", + "type": "Function", + "tags": [], + "label": "isDefault", + "description": [ + "\nReturns true if the setting has no user-defined value or is unknown" + ], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isDefault.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isCustom", + "type": "Function", + "tags": [], + "label": "isCustom", + "description": [ + "\nReturns true if the setting wasn't registered by any plugin, but was either\nadded directly via `set()`, or is an unknown setting found in the uiSettings saved\nobject" + ], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isCustom.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isOverridden", + "type": "Function", + "tags": [], + "label": "isOverridden", + "description": [ + "\nShows whether the uiSettings value set by the user." + ], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.isOverridden.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.getUpdate$", + "type": "Function", + "tags": [], + "label": "getUpdate$", + "description": [ + "\nReturns an Observable that notifies subscribers of each update to the uiSettings,\nincluding the key, newValue, and oldValue of the setting that changed." + ], + "signature": [ + "() => ", + "Observable", + "<{ key: string; newValue: T; oldValue: T; }>" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.IUiSettingsClient.getUpdateErrors$", + "type": "Function", + "tags": [], + "label": "getUpdateErrors$", + "description": [ + "\nReturns an Observable that notifies subscribers of each error while trying to update\nthe settings, containing the actual Error class." + ], + "signature": [ + "() => ", + "Observable", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.UiSettingsState", + "type": "Interface", + "tags": [], + "label": "UiSettingsState", + "description": [], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser", + "id": "def-common.UiSettingsState.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[key: string]: PublicUiSettingsParams & UserProvidedValues", + "description": [], + "signature": [ + "[key: string]: ", + "PublicUiSettingsParams", + " & ", + "UserProvidedValues", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser/src/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx new file mode 100644 index 0000000000000..14460ff78ad68 --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreUiSettingsBrowserPluginApi +slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser +title: "@kbn/core-ui-settings-browser" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-ui-settings-browser plugin +date: 2022-07-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 25 | 1 | 13 | 0 | + +## Common + +### Interfaces + + diff --git a/api_docs/kbn_core_ui_settings_browser_internal.devdocs.json b/api_docs/kbn_core_ui_settings_browser_internal.devdocs.json new file mode 100644 index 0000000000000..3bf2fabb7e222 --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser_internal.devdocs.json @@ -0,0 +1,419 @@ +{ + "id": "@kbn/core-ui-settings-browser-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient", + "type": "Class", + "tags": [], + "label": "UiSettingsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-browser-internal", + "scope": "common", + "docId": "kibKbnCoreUiSettingsBrowserInternalPluginApi", + "section": "def-common.UiSettingsClient", + "text": "UiSettingsClient" + }, + " implements ", + "IUiSettingsClient" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "UiSettingsClientParams" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [], + "signature": [ + "() => Record>" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => any" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get.$2", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get$", + "type": "Function", + "tags": [], + "label": "get$", + "description": [], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => ", + "Observable", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get$.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.get$.$2", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.set", + "type": "Function", + "tags": [], + "label": "set", + "description": [], + "signature": [ + "(key: string, value: any) => Promise" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.set.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.set.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.remove", + "type": "Function", + "tags": [], + "label": "remove", + "description": [], + "signature": [ + "(key: string) => Promise" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.remove.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isDeclared", + "type": "Function", + "tags": [], + "label": "isDeclared", + "description": [], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isDeclared.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isDefault", + "type": "Function", + "tags": [], + "label": "isDefault", + "description": [], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isDefault.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isCustom", + "type": "Function", + "tags": [], + "label": "isCustom", + "description": [], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isCustom.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isOverridden", + "type": "Function", + "tags": [], + "label": "isOverridden", + "description": [], + "signature": [ + "(key: string) => boolean" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.isOverridden.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.getUpdate$", + "type": "Function", + "tags": [], + "label": "getUpdate$", + "description": [], + "signature": [ + "() => ", + "Observable", + "<{ key: string; newValue: any; oldValue: any; }>" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-internal", + "id": "def-common.UiSettingsClient.getUpdateErrors$", + "type": "Function", + "tags": [], + "label": "getUpdateErrors$", + "description": [], + "signature": [ + "() => ", + "Observable", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx new file mode 100644 index 0000000000000..9bdb9a08effb1 --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreUiSettingsBrowserInternalPluginApi +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 +summary: API docs for the @kbn/core-ui-settings-browser-internal plugin +date: 2022-07-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 25 | 1 | 25 | 0 | + +## Common + +### Classes + + diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.devdocs.json b/api_docs/kbn_core_ui_settings_browser_mocks.devdocs.json new file mode 100644 index 0000000000000..c836e521e1e16 --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser_mocks.devdocs.json @@ -0,0 +1,90 @@ +{ + "id": "@kbn/core-ui-settings-browser-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-mocks", + "id": "def-common.uiSettingsServiceMock", + "type": "Object", + "tags": [], + "label": "uiSettingsServiceMock", + "description": [], + "path": "packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-browser-mocks", + "id": "def-common.uiSettingsServiceMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-mocks", + "id": "def-common.uiSettingsServiceMock.createSetupContract", + "type": "Function", + "tags": [], + "label": "createSetupContract", + "description": [], + "signature": [ + "() => jest.Mocked<", + "IUiSettingsClient", + ">" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-ui-settings-browser-mocks", + "id": "def-common.uiSettingsServiceMock.createStartContract", + "type": "Function", + "tags": [], + "label": "createStartContract", + "description": [], + "signature": [ + "() => jest.Mocked<", + "IUiSettingsClient", + ">" + ], + "path": "packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx new file mode 100644 index 0000000000000..5b06c9c47b5fd --- /dev/null +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreUiSettingsBrowserMocksPluginApi +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 +summary: API docs for the @kbn/core-ui-settings-browser-mocks plugin +date: 2022-07-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 4 | 0 | + +## Common + +### Objects + + diff --git a/api_docs/kbn_core_ui_settings_common.devdocs.json b/api_docs/kbn_core_ui_settings_common.devdocs.json new file mode 100644 index 0000000000000..2235802090141 --- /dev/null +++ b/api_docs/kbn_core_ui_settings_common.devdocs.json @@ -0,0 +1,418 @@ +{ + "id": "@kbn/core-ui-settings-common", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.DeprecationSettings", + "type": "Interface", + "tags": [], + "label": "DeprecationSettings", + "description": [ + "\nUiSettings deprecation field options." + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.DeprecationSettings.message", + "type": "string", + "tags": [], + "label": "message", + "description": [ + "Deprecation message" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.DeprecationSettings.docLinksKey", + "type": "string", + "tags": [], + "label": "docLinksKey", + "description": [ + "Key to documentation links" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams", + "type": "Interface", + "tags": [], + "label": "UiSettingsParams", + "description": [ + "\nUiSettings parameters defined by the plugins." + ], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.UiSettingsParams", + "text": "UiSettingsParams" + }, + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "title in the UI" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.value", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [ + "default value to fall back to if a user doesn't provide any" + ], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.description", + "type": "string", + "tags": [], + "label": "description", + "description": [ + "description provided to a user in UI" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [ + "used to group the configured setting in the UI" + ], + "signature": [ + "string[] | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [ + "array of permitted values for this setting" + ], + "signature": [ + "string[] | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.optionLabels", + "type": "Object", + "tags": [], + "label": "optionLabels", + "description": [ + "text labels for 'select' type UI element" + ], + "signature": [ + "Record | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.requiresPageReload", + "type": "CompoundType", + "tags": [], + "label": "requiresPageReload", + "description": [ + "a flag indicating whether new value applying requires page reloading" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.readonly", + "type": "CompoundType", + "tags": [], + "label": "readonly", + "description": [ + "a flag indicating that value cannot be changed" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.sensitive", + "type": "CompoundType", + "tags": [], + "label": "sensitive", + "description": [ + "\na flag indicating that value might contain user sensitive data.\nused by telemetry to mask the value of the setting when sent." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "defines a type of UI element {@link UiSettingsType}" + ], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.UiSettingsType", + "text": "UiSettingsType" + }, + " | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.deprecation", + "type": "Object", + "tags": [], + "label": "deprecation", + "description": [ + "optional deprecation information. Used to generate a deprecation warning." + ], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.DeprecationSettings", + "text": "DeprecationSettings" + }, + " | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.order", + "type": "number", + "tags": [], + "label": "order", + "description": [ + "\nindex of the settings within its category (ascending order, smallest will be displayed first).\nUsed for ordering in the UI.\n" + ], + "signature": [ + "number | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + "Type", + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsParams.metric", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "metric", + "description": [ + "\nMetric to track once this property changes" + ], + "signature": [ + "{ type: string; name: string; } | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": true, + "references": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UserProvidedValues", + "type": "Interface", + "tags": [], + "label": "UserProvidedValues", + "description": [ + "\nDescribes the values explicitly set by user." + ], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.UserProvidedValues", + "text": "UserProvidedValues" + }, + "" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UserProvidedValues.userValue", + "type": "Uncategorized", + "tags": [], + "label": "userValue", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UserProvidedValues.isOverridden", + "type": "CompoundType", + "tags": [], + "label": "isOverridden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.PublicUiSettingsParams", + "type": "Type", + "tags": [], + "label": "PublicUiSettingsParams", + "description": [ + "\nA sub-set of {@link UiSettingsParams} exposed to the client-side." + ], + "signature": [ + "{ metric?: { type: string; name: string; } | undefined; type?: ", + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.UiSettingsType", + "text": "UiSettingsType" + }, + " | undefined; value?: unknown; description?: string | undefined; name?: string | undefined; options?: string[] | undefined; order?: number | undefined; category?: string[] | undefined; optionLabels?: Record | undefined; requiresPageReload?: boolean | undefined; readonly?: boolean | undefined; sensitive?: boolean | undefined; deprecation?: ", + { + "pluginId": "@kbn/core-ui-settings-common", + "scope": "common", + "docId": "kibKbnCoreUiSettingsCommonPluginApi", + "section": "def-common.DeprecationSettings", + "text": "DeprecationSettings" + }, + " | undefined; }" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.UiSettingsType", + "type": "Type", + "tags": [], + "label": "UiSettingsType", + "description": [ + "\nUI element type to represent the settings." + ], + "signature": [ + "\"string\" | \"number\" | \"boolean\" | \"undefined\" | \"color\" | \"image\" | \"json\" | \"markdown\" | \"select\" | \"array\"" + ], + "path": "packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx new file mode 100644 index 0000000000000..7413390707e4c --- /dev/null +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -0,0 +1,30 @@ +--- +id: kibKbnCoreUiSettingsCommonPluginApi +slug: /kibana-dev-docs/api/kbn-core-ui-settings-common +title: "@kbn/core-ui-settings-common" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-ui-settings-common plugin +date: 2022-07-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 23 | 0 | 3 | 0 | + +## Common + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index f9666b549b956..741f86affb1cb 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/crypto plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 5dc3a3a9ce3d7..9d62886c68ff1 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/crypto-browser plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index ff8d5e58a4b30..73c7909fa6fc1 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/datemath plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 42af03db50d80..a516dd57550dd 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-errors plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index b397c9ca8b990..e3e8707100ecd 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-runner plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 7f40c05c56b03..c41c4d1304e43 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-proc-runner plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 90779a5021782..5616e5538cf3f 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 5e8a7dd11f985..db8f678d08219 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/doc-links plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 9954cf11e03ed..5336facbde41f 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/docs-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 33ed18985a880..31b25814a175d 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-archiver plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index fb1b50360c1a2..e566e500889ed 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-errors plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 9e2abca838898..5d52e5eb3ffd6 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-query plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 395685fc79323..c7a16ccad434b 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 94e56499a960e..a49c2ab54cee3 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/field-types plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 40e5082986662..3dac18ccdb743 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/find-used-node-modules plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index b256d678f979c..5831f54e64e50 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/generate plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index e4ede6274d832..a765db5aca444 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/handlebars plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index e65a0d5610c8e..cb02abf683cd7 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/hapi-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_home_sample_data_cards.mdx b/api_docs/kbn_home_sample_data_cards.mdx index b9dcbec9e5980..7118610ffa028 100644 --- a/api_docs/kbn_home_sample_data_cards.mdx +++ b/api_docs/kbn_home_sample_data_cards.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-cards title: "@kbn/home-sample-data-cards" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/home-sample-data-cards plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-cards'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index e352cba531780..b14f1fea8bba7 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/i18n plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 0ce4b91ab8488..31b6510d0b956 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/import-resolver plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 7ac13aed307e1..5ac3f2b5836c3 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/interpreter plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 85956d04c0326..4fc6ae3234927 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/io-ts-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index abf0e153fb8fc..52cdb43db779b 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/jest-serializers plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_kibana_json_schema.mdx b/api_docs/kbn_kibana_json_schema.mdx index 16c8895f92067..665be1fc885c3 100644 --- a/api_docs/kbn_kibana_json_schema.mdx +++ b/api_docs/kbn_kibana_json_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-json-schema title: "@kbn/kibana-json-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/kibana-json-schema plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-json-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 937e89a6f60bb..3461e681c3a5d 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 0375141e756fd..cb10ee1f836fd 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging-mocks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index fe260609be7c3..6d4ad60730578 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/mapbox-gl plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 2326cb5088e7e..513e437011dce 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ml-agg-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 8cddd1bca6fa2..618403b67a335 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 8899e289794ea..99bd4d89dc441 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ml-string-hash plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index ab1d72895d2ab..7c119a4db9768 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/monaco plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index e12739a0389a8..016938f8b83d0 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 4306f86b1cbc2..f906ccdb2ab4f 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index a6bbf05299d66..26401e1624193 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_discovery.mdx b/api_docs/kbn_plugin_discovery.mdx index bb0a1cbeb1d81..547252f87ca2f 100644 --- a/api_docs/kbn_plugin_discovery.mdx +++ b/api_docs/kbn_plugin_discovery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-discovery title: "@kbn/plugin-discovery" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-discovery plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-discovery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 29e0dbe26454d..faa2c604eef33 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-generator plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index a469596277018..5a533cf03cf21 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-helpers plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_pm.mdx b/api_docs/kbn_pm.mdx index a6ddd54dbaa4c..f5518d89d637e 100644 --- a/api_docs/kbn_pm.mdx +++ b/api_docs/kbn_pm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-pm title: "@kbn/pm" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/pm plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/pm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 472f8f650e343..85a9bb45b6c78 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/react-field plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 69a31da2c9fbc..6f6b75f79b43f 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/rule-data-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_scalability_simulation_generator.mdx b/api_docs/kbn_scalability_simulation_generator.mdx index 6732b843b90f3..ca8e37ea0f44b 100644 --- a/api_docs/kbn_scalability_simulation_generator.mdx +++ b/api_docs/kbn_scalability_simulation_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-scalability-simulation-generator title: "@kbn/scalability-simulation-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/scalability-simulation-generator plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scalability-simulation-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index bbbfaf383c906..3c4d3a2e9a099 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index c5b943774e8e0..cfc210b87c11b 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index ac1c7b8967aa3..08d0674c9f459 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 4ae789c8cccc6..d1ba7fb40d075 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 51ffe4adef099..ac65ff4dd6be7 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 52ec4ab06d2cd..231082359e6ca 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 09f6659d3c294..76961d4ed7444 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 2af92d9d20ef3..b4cca01450e41 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 0a7a1a861d403..dda2a551a8fdb 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index e373f97a3eaf3..b43a67b3aedde 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 4112405b146b6..a2183821bc7c1 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index c506a01635d44..2327f0286726e 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-rules plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 53b3e62b0d9ad..68d68325b6c5e 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 26df2ef43dede..50f9c062efb5a 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index ea74768f25ac3..117a1abb8bfd3 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-http-tools plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index ef73fedb99385..838cef0eaa202 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-route-repository plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 45d7af90368e6..b0721a25c8819 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 0ad1ee7db478b..c6a23b41433ae 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_components.mdx b/api_docs/kbn_shared_ux_components.mdx index 63abc719681ba..7c40d52f40ca8 100644 --- a/api_docs/kbn_shared_ux_components.mdx +++ b/api_docs/kbn_shared_ux_components.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-components title: "@kbn/shared-ux-components" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-components plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-components'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- 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 08c60b30869e6..71cf73be9d21c 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- 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 0fb75e8e5ce02..5f90ea9e325b6 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index f2e65d846dd67..b7a9f5e89ab3b 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- 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 282815be4cdf2..b4285d37224f9 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -4,7 +4,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 summary: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_services.mdx b/api_docs/kbn_shared_ux_services.mdx index 929788630e809..7416977201641 100644 --- a/api_docs/kbn_shared_ux_services.mdx +++ b/api_docs/kbn_shared_ux_services.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-services title: "@kbn/shared-ux-services" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-services plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-services'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_storybook.mdx b/api_docs/kbn_shared_ux_storybook.mdx index ee95534091753..51cdd0c46fd1d 100644 --- a/api_docs/kbn_shared_ux_storybook.mdx +++ b/api_docs/kbn_shared_ux_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook title: "@kbn/shared-ux-storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-storybook plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 1032117e3abb1..fef64601de28a 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-utility plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 109cb2d509e91..fc2505bc18a46 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/sort-package-json plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 963cde0877b05..2b9b469e25dd0 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/std plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index cbc555b6edf9f..62116769fe1fa 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 576de95c0b823..1144201e62736 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/storybook plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 0d6717d1bf28e..758fc35b41a03 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/telemetry-tools plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 100a2b0809468..bfef17e5b9c18 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 7d52dc054c9e4..bb302b41b7107 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test-jest-helpers plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 2ab7c2e09048d..ebd5517c66a5e 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/tooling-log plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index bdea1cff0e372..5080363fba5dd 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/type-summarizer plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index b1b9ead231e46..06110ee7a2515 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/type-summarizer-core plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 59448572ff829..887b8069a72d8 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/typed-react-router-config plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 855b1423815ef..95434d53e9454 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ui-theme plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index d4061ca811b7e..4474410440817 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 3fb921d16e6bb..c93eaa5495694 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types-jest plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 57327df0012ce..f532f9f1dd081 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 893bd46e05684..70d785235b432 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaOverview plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 0f34d3ce4eb49..1b233147eb7da 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -1076,18 +1076,6 @@ "plugin": "canvas", "path": "x-pack/plugins/canvas/public/components/home/home.component.tsx" }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, { "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx" @@ -4251,54 +4239,6 @@ "plugin": "management", "path": "src/plugins/management/public/components/management_app/management_app.tsx" }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx" - }, { "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" @@ -4369,13 +4309,7 @@ "text": "OverlayStart" }, " | undefined; uiSettings?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - }, + "IUiSettingsClient", " | undefined; fatalErrors?: ", "FatalErrorsSetup", " | undefined; deprecations?: ", diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 52f3d687d2aa2..a129708e4e0d7 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaReact plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 7e229a785ea75..efb6bbe2d9cf6 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaUtils plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 4925d77903fe7..ef08f367835eb 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github summary: API docs for the kubernetesSecurity plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index c85080551c808..7fd5485bd3bbd 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github summary: API docs for the lens plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 354f9509d85b8..45c86d7b2c0ab 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseApiGuard plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 7f2c726743dec..9952f8b3e9805 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseManagement plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 1b60079a59977..cd7f5f6616190 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github summary: API docs for the licensing plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 14e1fd3a97cb9..6919f9fde54c4 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github summary: API docs for the lists plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 9d5cc8eb94663..bc86fe66c3865 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github summary: API docs for the management plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 5533f216bc311..6f03b58483adc 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github summary: API docs for the maps plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index b2f1b093fe708..c29882d9e3fab 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github summary: API docs for the mapsEms plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index b8c74a83791fa..3497bfc46c256 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github summary: API docs for the ml plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 378819242c8ba..75e65b255345f 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoring plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring_collection.devdocs.json b/api_docs/monitoring_collection.devdocs.json index bca169a38e523..00992e0736f7f 100644 --- a/api_docs/monitoring_collection.devdocs.json +++ b/api_docs/monitoring_collection.devdocs.json @@ -119,7 +119,7 @@ "label": "MonitoringCollectionConfig", "description": [], "signature": [ - "{ readonly enabled: boolean; }" + "{ readonly enabled: boolean; readonly opentelemetry: Readonly<{} & { metrics: Readonly<{} & { otlp: Readonly<{ url?: string | undefined; headers?: Record | undefined; } & { exportIntervalMillis: number; logLevel: string; }>; prometheus: Readonly<{} & { enabled: boolean; }>; }>; }>; }" ], "path": "x-pack/plugins/monitoring_collection/server/config.ts", "deprecated": false, diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 19e39fc9ab761..0bbc87d0099d5 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoringCollection plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 8d158347118e6..7d82d1c958df8 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github summary: API docs for the navigation plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 1b26ead546787..5f1cfbf341de8 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github summary: API docs for the newsfeed plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index befddb468d6e4..ec6c17daefbf6 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github summary: API docs for the observability plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index b56428d38b910..b4679c0551575 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github summary: API docs for the osquery plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index f42c92bf244c1..b3a39d3f32aba 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -3,7 +3,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory summary: Directory of public APIs available through plugins or packages. -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -12,13 +12,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 345 | 285 | 36 | +| 350 | 290 | 36 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 27567 | 175 | 19645 | 1459 | +| 27662 | 176 | 19688 | 1464 | ## Plugin Directory @@ -38,7 +38,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 6 | 0 | 6 | 0 | | | [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 | 206 | 0 | 198 | 7 | -| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2472 | 6 | 724 | 22 | +| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2472 | 5 | 705 | 17 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 102 | 0 | 83 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 143 | 0 | 141 | 12 | @@ -76,7 +76,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 222 | 0 | 95 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Index pattern fields and ambiguous values formatters | 288 | 5 | 249 | 3 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | -| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1525 | 8 | 1393 | 10 | +| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1537 | 8 | 1405 | 10 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | globalSearchProviders | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -126,7 +126,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 4 | | searchprofiler | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 197 | 0 | 100 | 0 | -| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 52 | 0 | 51 | 21 | +| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 52 | 0 | 51 | 22 | | | [Security Team](https://github.com/orgs/elastic/teams/security-team) | - | 3 | 0 | 3 | 1 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds URL Service and sharing capabilities to Kibana | 114 | 0 | 55 | 10 | | | [Shared UX](https://github.com/orgs/elastic/teams/shared-ux) | A plugin providing components and services for shared user experiences in Kibana. | 4 | 0 | 0 | 0 | @@ -135,7 +135,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 0 | | synthetics | [Uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 82 | 0 | 41 | 7 | -| | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 43 | 0 | 1 | 0 | +| | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 44 | 0 | 1 | 0 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 32 | 0 | 32 | 6 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 1 | 0 | 1 | 0 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 11 | 0 | 10 | 0 | @@ -247,9 +247,14 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | - | 3 | 0 | 3 | 0 | | | [Owner missing] | - | 5 | 0 | 0 | 0 | | | [Owner missing] | - | 6 | 0 | 6 | 0 | +| | [Owner missing] | - | 5 | 0 | 5 | 0 | | | [Owner missing] | - | 6 | 0 | 4 | 0 | | | [Owner missing] | - | 2 | 0 | 1 | 0 | | | [Owner missing] | - | 6 | 0 | 6 | 0 | +| | [Owner missing] | - | 25 | 1 | 13 | 0 | +| | [Owner missing] | - | 25 | 1 | 25 | 0 | +| | [Owner missing] | - | 4 | 0 | 4 | 0 | +| | [Owner missing] | - | 23 | 0 | 3 | 0 | | | [Owner missing] | - | 13 | 0 | 7 | 0 | | | [Owner missing] | - | 10 | 0 | 10 | 0 | | | [Owner missing] | elasticsearch datemath parser, used in kibana | 44 | 0 | 43 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 04d1978da0585..d4f0eceb57296 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github summary: API docs for the presentationUtil plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 234251ac33a92..ec2452a73f2b6 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github summary: API docs for the remoteClusters plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 0e0dfa097fa0a..a363b1d14fcbb 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github summary: API docs for the reporting plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index a75cacfcc1572..d6a84bdaf3ae2 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github summary: API docs for the rollup plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index d6e20d8034ea6..0f214aebee120 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github summary: API docs for the ruleRegistry plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 22edf2e545f0e..301080f62151f 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github summary: API docs for the runtimeFields plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects.devdocs.json b/api_docs/saved_objects.devdocs.json index f0280fde583d7..1f715bff2765f 100644 --- a/api_docs/saved_objects.devdocs.json +++ b/api_docs/saved_objects.devdocs.json @@ -829,13 +829,7 @@ "text": "SavedObjectsStart" }, ", uiSettings: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - }, + "IUiSettingsClient", ") => (props: ", "SavedObjectFinderProps", ") => JSX.Element" @@ -871,13 +865,7 @@ "label": "uiSettings", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - } + "IUiSettingsClient" ], "path": "src/plugins/saved_objects/public/finder/saved_object_finder.tsx", "deprecated": false, @@ -2997,13 +2985,7 @@ "text": "SavedObjectsStart" }, "; uiSettings: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.IUiSettingsClient", - "text": "IUiSettingsClient" - }, + "IUiSettingsClient", "; } & ", "SavedObjectFinderProps" ], diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 89d4585144a26..542300c0a6b8e 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjects plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index fd466c3c3a99b..38024ff7fd635 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsManagement plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index d5ddfca5055d9..730d07d425ee7 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTagging plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index e0aead29fe244..dd543a11ceb66 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTaggingOss plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 8525bfa3cc6ca..f881e37ee6a87 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotMode plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 346eb39633f9b..bf48cbfdc4c0f 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotting plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 4d47b746b500c..a2da038f15ea7 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github summary: API docs for the security plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 9146fb540b3cc..98575276e9149 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -121,7 +121,7 @@ "text": "CoreSetup" }, "<", - "StartPlugins", + "StartPluginsDependencies", ", ", "PluginStart", ">, plugins: ", @@ -154,7 +154,7 @@ "text": "CoreSetup" }, "<", - "StartPlugins", + "StartPluginsDependencies", ", ", "PluginStart", ">" diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 31aaf47e64dfd..532c021e8c979 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github summary: API docs for the securitySolution plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Security solution](https://github.com/orgs/elastic/teams/security-solut | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 52 | 0 | 51 | 21 | +| 52 | 0 | 51 | 22 | ## Client diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 5541e10a3b3bb..4aac3695a54dd 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github summary: API docs for the sessionView plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/share.mdx b/api_docs/share.mdx index feea0969781ec..1c71602c69e9d 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github summary: API docs for the share plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/shared_u_x.mdx b/api_docs/shared_u_x.mdx index 6ae95456986e7..0029477be589a 100644 --- a/api_docs/shared_u_x.mdx +++ b/api_docs/shared_u_x.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sharedUX title: "sharedUX" image: https://source.unsplash.com/400x175/?github summary: API docs for the sharedUX plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sharedUX'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 8e903897b9a35..ee59befa71238 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github summary: API docs for the snapshotRestore plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 7ce756b9afaa2..276ec14eaaf47 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github summary: API docs for the spaces plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index ae5f9513f9769..bd563dc7e8bca 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the stackAlerts plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 84a68efa150be..c10d4671dffea 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the taskManager plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry.devdocs.json b/api_docs/telemetry.devdocs.json index a7909d0329970..d74bba309e07b 100644 --- a/api_docs/telemetry.devdocs.json +++ b/api_docs/telemetry.devdocs.json @@ -161,6 +161,21 @@ ], "path": "src/plugins/telemetry/public/plugin.ts", "deprecated": false + }, + { + "parentPluginId": "telemetry", + "id": "def-public.TelemetryPluginConfig.labels", + "type": "Object", + "tags": [], + "label": "labels", + "description": [ + "Extra labels to add to the telemetry context" + ], + "signature": [ + "{ [x: string]: unknown; }" + ], + "path": "src/plugins/telemetry/public/plugin.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index a96031bcd465d..a0ddc862aac13 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetry plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetr | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 43 | 0 | 1 | 0 | +| 44 | 0 | 1 | 0 | ## Client diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index ff5555bf4f259..f1711b413e103 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionManager plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index e3c006af01c2c..5afb6893daa0e 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionXpack plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 3a039df3de72d..ab3ee104c78a0 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryManagementSection plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 1d765a9f54761..f05946a26f972 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github summary: API docs for the timelines plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 52625666bf734..90476fb1215b0 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github summary: API docs for the transform plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 75f8479dac735..660f19504ebf1 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github summary: API docs for the triggersActionsUi plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 97fb23e83f3df..02a9d3da434a7 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActions plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index bb8880d47c606..f75ef3a1e4cb5 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActionsEnhanced plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 0cd501995770f..b3b428fa0af4c 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 29766e609bf00..a1070938be186 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch.autocomplete plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 1fad07a494c85..a657783ca523c 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github summary: API docs for the urlForwarding plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index dd8818245282a..80d0844a66e5e 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the usageCollection plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 34058194ec5d3..fc3e2b4824630 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github summary: API docs for the ux plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index ec8236e6f5118..8d63d7856320e 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the visDefaultEditor plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 407ea28ce7063..d858a7159c2dc 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeGauge plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 926a05ae26c60..caea8a1ba2b0f 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeHeatmap plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index be74dcbeb159e..75454d763361f 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypePie plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 791bed4ef1d41..b6945c41fd623 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTable plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 05c0f109bd2c9..986ec98c29f9b 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimelion plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 9ae9fa6db9d2b..2240eb7661687 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimeseries plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 3ebbe662877aa..cb07046a872bf 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVega plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 58c34f869c85b..0de85574bf909 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVislib plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index faf14dab5c609..cd40d438e72c6 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeXy plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 0622481dda318..fc7768646c1cf 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github summary: API docs for the visualizations plugin -date: 2022-07-14 +date: 2022-07-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/docs/api/cases/cases-api-get-case.asciidoc b/docs/api/cases/cases-api-get-case.asciidoc index 70cc7f5bab60c..d7bc316a7346d 100644 --- a/docs/api/cases/cases-api-get-case.asciidoc +++ b/docs/api/cases/cases-api-get-case.asciidoc @@ -4,7 +4,7 @@ Get case ++++ -Returns a specified case. +Returns information about a case. === {api-request-title} @@ -17,7 +17,7 @@ Returns a specified case. You must have `read` privileges for the *Cases* feature in the *Management*, *{observability}*, or *Security* section of the <>, depending on the -`owner` of the cases you're seeking. +`owner` of the case you're seeking. === {api-path-parms-title} @@ -42,11 +42,11 @@ default space is used. === {api-examples-title} -Returns case ID `a18b38a0-71b0-11ea-a0b2-c51ea50a58e2` without comments: +Returns case ID `31cdada0-02c1-11ed-85f2-4f7c222ca2fa`: [source,sh] -------------------------------------------------- -GET api/cases/a18b38a0-71b0-11ea-a0b2-c51ea50a58e2 +GET api/cases/31cdada0-02c1-11ed-85f2-4f7c222ca2fa -------------------------------------------------- // KIBANA @@ -55,49 +55,39 @@ The API returns a JSON object with the retrieved case. For example: [source,json] -------------------------------------------------- { - "id": "a18b38a0-71b0-11ea-a0b2-c51ea50a58e2", - "version": "Wzk4LDFd", - "comments": [], - "totalComment": 0, - "totalAlerts": 0, - "closed_at": null, - "closed_by": null, - "created_at": "2020-03-29T11:30:02.658Z", - "created_by": { - "email": "ahunley@imf.usa.gov", - "full_name": "Alan Hunley", - "username": "ahunley" - }, - "external_service": null, - "updated_at": "2020-03-29T12:01:50.244Z", - "updated_by": { - "full_name": "Classified", - "email": "classified@hms.oo.gov.uk", - "username": "M" - }, - "description": "James Bond clicked on a highly suspicious email banner advertising cheap holidays for underpaid civil servants. Operation bubblegum is active. Repeat - operation bubblegum is now active!", - "title": "This case will self-destruct in 5 seconds", - "status": "open", - "connector": { - "id": "131d4448-abe0-4789-939d-8ef60680b498", - "name": "My connector", - "type": ".jira", - "fields": { - "issueType": "10006", - "priority": "High", - } - }, - "settings": { - "syncAlerts": true - }, - "owner": "securitySolution", - "severity": "low", - "duration": null, <1> - "tags": [ - "phishing", - "social engineering", - "bubblegum" - ] + "id":"31cdada0-02c1-11ed-85f2-4f7c222ca2fa", + "version":"WzM2LDFd", + "comments":[{ + "id":"2134c1d0-02c2-11ed-85f2-4f7c222ca2fa", + "version":"WzM3LDFd", + "type":"user", + "owner":"cases", + "comment":"A new comment", + "created_at":"2022-07-13T15:40:32.335Z", + "created_by":{"email":null,"full_name":null,"username":"elastic"}, + "pushed_at":null, + "pushed_by":null, + "updated_at":null, + "updated_by":null + }], + "totalComment":1, + "totalAlerts":0, + "title":"Case title 1", + "tags":["tag 1"], + "settings":{"syncAlerts":true}, + "owner":"cases", + "description":"A case description", + "duration":null, <1> + "severity":"low", + "closed_at":null, + "closed_by":null, + "created_at":"2022-07-13T15:33:50.604Z", + "created_by":{"username":"elastic","email":null,"full_name":null}, + "status":"open", + "updated_at":"2022-07-13T15:40:32.335Z", + "updated_by":{"full_name":null,"email":null,"username":"elastic"}, + "connector":{"id":"none","name":"none","type":".none","fields":null}, + "external_service":null } -------------------------------------------------- <1> Duration represents the elapsed time from the creation of the case to its diff --git a/docs/apm/correlations.asciidoc b/docs/apm/correlations.asciidoc index cb72a1b305fd7..ca77c6c8c6afb 100644 --- a/docs/apm/correlations.asciidoc +++ b/docs/apm/correlations.asciidoc @@ -21,7 +21,7 @@ NOTE: Queries within the {apm-app} are also applied to the correlations. ==== Find high transaction latency correlations The correlations on the *Latency correlations* tab help you discover which -attributes are contributing to increased transaction latency. +attributes are contributing to increased transaction latency. [role="screenshot"] image::apm/images/correlations-hover.png[Latency correlations] @@ -74,7 +74,7 @@ The table is sorted by scores, which are mapped to high, medium, or low impact levels. Attributes with high impact levels are more likely to contribute to failed transactions. By default, the attribute with the highest score is added to the chart. To see a different attribute in the chart, select its row in the -table. +table. For example, in the screenshot below, there are attributes such as a specific node and pod name that have medium impact on the failed transactions. @@ -86,4 +86,4 @@ Select the `+` filter to create a new query in the {apm-app} for transactions with one or more of these attributes. If you are unfamiliar with a field, click the icon beside its name to view its most popular values and optionally filter on those values too. Each time that you add another attribute, it is filtering -out more and more noise and bringing you closer to a diagnosis. \ No newline at end of file +out more and more noise and bringing you closer to a diagnosis. diff --git a/docs/apm/how-to-guides.asciidoc b/docs/apm/how-to-guides.asciidoc index b634c937588b0..88b331de2acf2 100644 --- a/docs/apm/how-to-guides.asciidoc +++ b/docs/apm/how-to-guides.asciidoc @@ -12,6 +12,7 @@ Learn how to perform common APM app tasks. * <> * <> * <> +* <> * <> * <> @@ -30,6 +31,8 @@ include::correlations.asciidoc[] include::machine-learning.asciidoc[] +include::lambda.asciidoc[] + include::advanced-queries.asciidoc[] include::deployment-annotations.asciidoc[] \ No newline at end of file diff --git a/docs/apm/images/lambda-cold-start-trace.png b/docs/apm/images/lambda-cold-start-trace.png new file mode 100644 index 0000000000000..c6f6efd0557ce Binary files /dev/null and b/docs/apm/images/lambda-cold-start-trace.png differ diff --git a/docs/apm/images/lambda-cold-start.png b/docs/apm/images/lambda-cold-start.png new file mode 100644 index 0000000000000..54c3d36fddc64 Binary files /dev/null and b/docs/apm/images/lambda-cold-start.png differ diff --git a/docs/apm/images/lambda-correlations.png b/docs/apm/images/lambda-correlations.png new file mode 100644 index 0000000000000..c1a72ccb2d930 Binary files /dev/null and b/docs/apm/images/lambda-correlations.png differ diff --git a/docs/apm/lambda.asciidoc b/docs/apm/lambda.asciidoc new file mode 100644 index 0000000000000..2dcdf5b462b63 --- /dev/null +++ b/docs/apm/lambda.asciidoc @@ -0,0 +1,51 @@ +[role="xpack"] +[[apm-lambda]] +=== Observe Lambda functions + +Elastic APM provides performance and error monitoring for AWS Lambda functions. +Get insight into function execution and runtime behavior, as well as visibility into how your Lambda functions relate to and depend on other services. + +To set up Lambda monitoring, see the relevant +{apm-guide-ref}/monitoring-aws-lambda.html[quick start guide]. + +[float] +[[apm-lambda-cold-start-info]] +==== Cold starts + +A cold start occurs when a Lambda function has not been used for a certain period of time. A lambda worker receives a request to run the function and prepares an execution environment. + +Cold starts are an unavoidable byproduct of the serverless world, but visibility into how they impact your services can help you make better decisions about factors like how much memory to allocate to a function, whether to enable provisioned concurrency, or if it's time to consider removing a large dependency. + +[float] +[[apm-lambda-cold-start-rate]] +===== Cold start rate + +The cold start rate (i.e. proportion of requests that experience a cold start) is displayed per service and per transaction. + +[role="screenshot"] +image::apm/images/lambda-cold-start.png[lambda cold start graph] + +Cold start is also displayed in the trace waterfall, where you can drill-down into individual traces and see trace metadata like AWS request ID, trigger type, and trigger request ID. + +[role="screenshot"] +image::apm/images/lambda-cold-start-trace.png[lambda cold start trace] + +[float] +[[apm-lambda-cold-start-latency]] +===== Latency distribution correlation + +The <> feature can be used to visualize the impact of Lambda cold starts on latency--just select the `faas.coldstart` field. + +[role="screenshot"] +image::apm/images/lambda-correlations.png[lambda correlations example] + +[float] +[[apm-lambda-service-config]] +==== AWS Lambda function grouping + +The default APM agent configuration results in one APM service per AWS Lambda function, +where the Lambda function name is the service name. + +In some use cases, it makes more sense to logically group multiple lambda functions under a single +APM service. You can achieve this by setting the `ELASTIC_APM_SERVICE_NAME` environment variable +on related Lambda functions to the same value. diff --git a/docs/apm/service-overview.asciidoc b/docs/apm/service-overview.asciidoc index 22da9a132b4fa..eaf022cee8c74 100644 --- a/docs/apm/service-overview.asciidoc +++ b/docs/apm/service-overview.asciidoc @@ -8,7 +8,8 @@ high-level visibility into how a service is performing across your infrastructur * Service details like service version, runtime version, framework, and agent name and version * Container and orchestration information -* Cloud provider, machine type, and availability zone +* Cloud provider, machine type, service name, region, and availability zone +* Serverless function names and event trigger type * Latency, throughput, and errors over time * Service dependencies @@ -16,10 +17,10 @@ high-level visibility into how a service is performing across your infrastructur [[service-time-comparison]] === Time series and expected bounds comparison -For insight into the health of your services, you can compare how a service -performs relative to a previous time frame or to the expected bounds from the -corresponding {anomaly-job}. For example, has latency been slowly increasing -over time, did the service experience a sudden spike, is the throughput similar +For insight into the health of your services, you can compare how a service +performs relative to a previous time frame or to the expected bounds from the +corresponding {anomaly-job}. For example, has latency been slowly increasing +over time, did the service experience a sudden spike, is the throughput similar to what the {ml} job expects – enabling a comparison can provide the answer. [role="screenshot"] @@ -42,8 +43,8 @@ The time-based comparison options are based on the selected time filter range: |An identical amount of time immediately before the selected time range |==== -You can use the expected bounds comparison if {ml-jobs} exist in your selected -environment and you have +You can use the expected bounds comparison if {ml-jobs} exist in your selected +environment and you have {ml-docs}/setup.html#kib-visibility-spaces[access to the {ml-features}]. [discrete] @@ -79,7 +80,7 @@ image::apm/images/traffic-transactions.png[Traffic and transactions] The failed transaction rate represents the percentage of failed transactions from the perspective of the selected service. It's useful for visualizing unexpected increases, decreases, or irregular patterns in a service's transactions. -+ + [TIP] ==== HTTP **transactions** from the HTTP server perspective do not consider a `4xx` status code (client error) as a failure @@ -119,6 +120,17 @@ requires an agent version ≥ v5.6.3. [role="screenshot"] image::apm/images/spans-dependencies.png[Span type duration and dependencies] +[discrete] +[[service-cold-start]] +=== Cold start rate + +The cold start rate chart is specific to serverless services. +It displays the percentage of requests that trigger a cold start of a serverless function. +See <> for more information. + +[role="screenshot"] +image::apm/images/lambda-cold-start.png[lambda cold start graph] + [discrete] [[service-instances]] === Instances @@ -157,9 +169,16 @@ image::apm/images/metadata-icons.png[Service metadata] *Cloud provider information* * Cloud provider +* Cloud service name * Availability zones * Machine types * Project ID +* Region + +*Serverless information* + +* Function name(s) +* Event trigger type *Alerts* diff --git a/docs/apm/transactions.asciidoc b/docs/apm/transactions.asciidoc index e8c5d6600c0bd..8a0cc75bf0c62 100644 --- a/docs/apm/transactions.asciidoc +++ b/docs/apm/transactions.asciidoc @@ -8,7 +8,7 @@ APM agents automatically collect performance metrics on HTTP requests, database [role="screenshot"] image::apm/images/apm-transactions-overview.png[Example view of transactions table in the APM app in Kibana] -The *Latency*, *transactions per minute*, *Failed transaction rate*, and *Average duration by span type* +The *Latency*, *Throughput*, *Failed transaction rate*, *Average duration by span type*, and *Cold start rate* charts display information on all transactions associated with the selected service: *Latency*:: @@ -48,6 +48,10 @@ This could be a sign that the agent does not have auto-instrumentation for whate + It's important to note that if you have asynchronous spans, the sum of all span times may exceed the duration of the transaction. +*Cold start rate*:: +Only applicable to serverless transactions, this chart displays the percentage of requests that trigger a cold start of a serverless function. +See <> for more information. + [discrete] [[transactions-table]] === Transactions table @@ -149,6 +153,7 @@ Learn more about a trace sample in the *Metadata* tab: * Agent information * URL * User - Requires additional configuration, but allows you to see which user experienced the current transaction. +* FaaS information, like cold start, AWS request ID, trigger type, and trigger request ID TIP: All of this data is stored in documents in Elasticsearch. This means you can select "Actions - View transaction in Discover" to see the actual Elasticsearch document under the discover tab. diff --git a/package.json b/package.json index a0cab1288d620..4f98a16e13959 100644 --- a/package.json +++ b/package.json @@ -208,9 +208,14 @@ "@kbn/core-preboot-server": "link:bazel-bin/packages/core/preboot/core-preboot-server", "@kbn/core-preboot-server-internal": "link:bazel-bin/packages/core/preboot/core-preboot-server-internal", "@kbn/core-preboot-server-mocks": "link:bazel-bin/packages/core/preboot/core-preboot-server-mocks", + "@kbn/core-test-helpers-http-setup-browser": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser", "@kbn/core-theme-browser": "link:bazel-bin/packages/core/theme/core-theme-browser", "@kbn/core-theme-browser-internal": "link:bazel-bin/packages/core/theme/core-theme-browser-internal", "@kbn/core-theme-browser-mocks": "link:bazel-bin/packages/core/theme/core-theme-browser-mocks", + "@kbn/core-ui-settings-browser": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser", + "@kbn/core-ui-settings-browser-internal": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal", + "@kbn/core-ui-settings-browser-mocks": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks", + "@kbn/core-ui-settings-common": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-common", "@kbn/crypto": "link:bazel-bin/packages/kbn-crypto", "@kbn/crypto-browser": "link:bazel-bin/packages/kbn-crypto-browser", "@kbn/datemath": "link:bazel-bin/packages/kbn-datemath", @@ -407,7 +412,7 @@ "minimatch": "^3.1.2", "moment": "^2.29.4", "moment-duration-format": "^2.3.2", - "moment-timezone": "^0.5.27", + "moment-timezone": "^0.5.34", "monaco-editor": "^0.22.3", "mustache": "^2.3.2", "node-fetch": "^2.6.7", @@ -609,8 +614,6 @@ "@kbn/type-summarizer-core": "link:bazel-bin/packages/kbn-type-summarizer-core", "@loaders.gl/polyfills": "^2.3.5", "@mapbox/vector-tile": "1.3.1", - "@microsoft/api-documenter": "7.13.68", - "@microsoft/api-extractor": "7.18.19", "@octokit/rest": "^16.35.0", "@openpgp/web-stream-tools": "^0.0.10", "@percy/agent": "^0.28.6", @@ -793,9 +796,14 @@ "@types/kbn__core-preboot-server-mocks": "link:bazel-bin/packages/core/preboot/core-preboot-server-mocks/npm_module_types", "@types/kbn__core-public-internal-base": "link:bazel-bin/packages/core/public/internal-base/npm_module_types", "@types/kbn__core-server-internal-base": "link:bazel-bin/packages/core/server/internal-base/npm_module_types", + "@types/kbn__core-test-helpers-http-setup-browser": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser/npm_module_types", "@types/kbn__core-theme-browser": "link:bazel-bin/packages/core/theme/core-theme-browser/npm_module_types", "@types/kbn__core-theme-browser-internal": "link:bazel-bin/packages/core/theme/core-theme-browser-internal/npm_module_types", "@types/kbn__core-theme-browser-mocks": "link:bazel-bin/packages/core/theme/core-theme-browser-mocks/npm_module_types", + "@types/kbn__core-ui-settings-browser": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser/npm_module_types", + "@types/kbn__core-ui-settings-browser-internal": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal/npm_module_types", + "@types/kbn__core-ui-settings-browser-mocks": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks/npm_module_types", + "@types/kbn__core-ui-settings-common": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-common/npm_module_types", "@types/kbn__crypto": "link:bazel-bin/packages/kbn-crypto/npm_module_types", "@types/kbn__crypto-browser": "link:bazel-bin/packages/kbn-crypto-browser/npm_module_types", "@types/kbn__datemath": "link:bazel-bin/packages/kbn-datemath/npm_module_types", @@ -903,7 +911,7 @@ "@types/mocha": "^9.1.1", "@types/mock-fs": "^4.13.1", "@types/moment-duration-format": "^2.2.3", - "@types/moment-timezone": "^0.5.12", + "@types/moment-timezone": "^0.5.30", "@types/mustache": "^0.8.31", "@types/ncp": "^2.0.1", "@types/nock": "^10.0.3", @@ -1066,7 +1074,7 @@ "has-ansi": "^3.0.0", "hdr-histogram-js": "^1.2.0", "html": "1.0.0", - "html-loader": "^0.5.5", + "html-loader": "^1.3.2", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-path-inside": "^3.0.2", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 96786d77dd80f..fb1f7a6bdb146 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -76,9 +76,14 @@ filegroup( "//packages/core/preboot/core-preboot-server-internal:build", "//packages/core/preboot/core-preboot-server-mocks:build", "//packages/core/preboot/core-preboot-server:build", + "//packages/core/test-helpers/core-test-helpers-http-setup-browser:build", "//packages/core/theme/core-theme-browser-internal:build", "//packages/core/theme/core-theme-browser-mocks:build", "//packages/core/theme/core-theme-browser:build", + "//packages/core/ui-settings/core-ui-settings-browser-internal:build", + "//packages/core/ui-settings/core-ui-settings-browser-mocks:build", + "//packages/core/ui-settings/core-ui-settings-browser:build", + "//packages/core/ui-settings/core-ui-settings-common:build", "//packages/elastic-apm-synthtrace:build", "//packages/elastic-safer-lodash-set:build", "//packages/home/sample_data_cards:build", @@ -277,9 +282,14 @@ filegroup( "//packages/core/preboot/core-preboot-server-internal:build_types", "//packages/core/preboot/core-preboot-server-mocks:build_types", "//packages/core/preboot/core-preboot-server:build_types", + "//packages/core/test-helpers/core-test-helpers-http-setup-browser:build_types", "//packages/core/theme/core-theme-browser-internal:build_types", "//packages/core/theme/core-theme-browser-mocks:build_types", "//packages/core/theme/core-theme-browser:build_types", + "//packages/core/ui-settings/core-ui-settings-browser-internal:build_types", + "//packages/core/ui-settings/core-ui-settings-browser-mocks:build_types", + "//packages/core/ui-settings/core-ui-settings-browser:build_types", + "//packages/core/ui-settings/core-ui-settings-common:build_types", "//packages/elastic-apm-synthtrace:build_types", "//packages/elastic-safer-lodash-set:build_types", "//packages/home/sample_data_cards:build_types", diff --git a/packages/core/logging/core-logging-server-internal/BUILD.bazel b/packages/core/logging/core-logging-server-internal/BUILD.bazel index ea2e1e1550bdf..d5afc20b5e40a 100644 --- a/packages/core/logging/core-logging-server-internal/BUILD.bazel +++ b/packages/core/logging/core-logging-server-internal/BUILD.bazel @@ -31,6 +31,7 @@ RUNTIME_DEPS = [ "@npm//elastic-apm-node", "//packages/elastic-safer-lodash-set", "//packages/kbn-config-schema", + "//packages/kbn-std", ] TYPES_DEPS = [ diff --git a/packages/core/logging/core-logging-server-internal/src/global_context/index.ts b/packages/core/logging/core-logging-server-internal/src/global_context/index.ts new file mode 100644 index 0000000000000..e7a8a0be56c8e --- /dev/null +++ b/packages/core/logging/core-logging-server-internal/src/global_context/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { mergeGlobalContext } from './merge_global_context'; +export type { GlobalContext } from './types'; diff --git a/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.test.ts b/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.test.ts new file mode 100644 index 0000000000000..63840d3ab3fbc --- /dev/null +++ b/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.test.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { LogMeta } from '@kbn/logging'; +import { GlobalContext } from './types'; +import { mergeGlobalContext } from './merge_global_context'; + +describe('mergeGlobalContext', () => { + test('inserts global meta in entry meta', () => { + const context: GlobalContext = { + bar: false, + }; + const meta: LogMeta = { + // @ts-expect-error Custom ECS field + foo: true, + }; + + expect(mergeGlobalContext(context, meta)).toEqual({ + foo: true, + bar: false, + }); + }); + + test('handles nested context', () => { + const context: GlobalContext = { + 'bar.baz': false, + }; + const meta: LogMeta = { + // @ts-expect-error Custom ECS field + foo: true, + }; + + expect(mergeGlobalContext(context, meta)).toEqual({ + foo: true, + bar: { baz: false }, + }); + }); + + test('does not overwrite meta with global context if the path already exists', () => { + const context: GlobalContext = { + foo: false, + bar: [false], + }; + const meta: LogMeta = { + // @ts-expect-error Custom ECS field + foo: true, + bar: [true], + }; + + expect(mergeGlobalContext(context, meta)).toEqual({ + foo: true, + bar: [true], + }); + }); + + test('if conflicting entries exist in the context, the most specific entry wins', () => { + const context: GlobalContext = { + 'a.b.c': 'd', + 'a.b': 'c', + }; + + // Note that this "most specific entry wins" behavior should not happen in practice, + // as the `LoggingSystem` is handling deconfliction of paths before anything is + // provided to the `LoggerAdapter` in the first place. Including this test just to + // ensure the actual behavior of this function is documented for posterity. + expect(mergeGlobalContext(context)).toEqual({ + a: { b: { c: 'd' } }, + }); + }); + + test('does nothing if no global meta has been set', () => { + const context: GlobalContext = {}; + const meta: LogMeta = { + // @ts-expect-error Custom ECS field + foo: true, + }; + + expect(mergeGlobalContext(context, meta)).toEqual({ + foo: true, + }); + }); + + test('adds global meta even if no user-provided meta exists', () => { + const context: GlobalContext = { + foo: true, + }; + + expect(mergeGlobalContext(context)).toEqual({ + foo: true, + }); + }); + + test('does nothing if no global meta or user-provided meta has been set', () => { + const context: GlobalContext = {}; + + expect(mergeGlobalContext(context)).toBeUndefined(); + }); +}); diff --git a/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.ts b/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.ts new file mode 100644 index 0000000000000..64186392caa56 --- /dev/null +++ b/packages/core/logging/core-logging-server-internal/src/global_context/merge_global_context.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { has } from 'lodash'; +import { set } from '@elastic/safer-lodash-set'; +import { LogMeta } from '@kbn/logging'; +import { GlobalContext } from './types'; + +/** + * Takes a flattened object of {@link GlobalContext} and applies it to the + * provided {@link LogMeta}. + * + * @remarks + * The provided `LogMeta` takes precedence over the `GlobalContext`; + * if duplicate keys are found, the `GlobalContext` will be overridden. + * + * @example + * ```ts + * const meta: LogMeta = { + * a: { b: false }, + * d: 'hi', + * }; + * const context: GlobalContext = { + * 'a.b': true, + * c: [1, 2, 3], + * }; + * + * mergeGlobalContext(context, meta); + * // { + * // a: { b: false }, + * // c: [1, 2, 3], + * // d: 'hi', + * // } + * ``` + * + * @internal + */ +export function mergeGlobalContext(globalContext: GlobalContext, meta?: LogMeta) { + if (!meta && Object.keys(globalContext).length === 0) { + return; + } + + const mergedMeta = meta ?? {}; + for (const [path, data] of Object.entries(globalContext)) { + if (!has(mergedMeta, path)) { + set(mergedMeta, path, data); + } + } + + return mergedMeta; +} diff --git a/packages/core/logging/core-logging-server-internal/src/global_context/types.ts b/packages/core/logging/core-logging-server-internal/src/global_context/types.ts new file mode 100644 index 0000000000000..bb377aa14e390 --- /dev/null +++ b/packages/core/logging/core-logging-server-internal/src/global_context/types.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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. + */ + +/** + * A flattened object containing lodash-style dot-separated keys, which + * indicate the path to where each corresponding value should live in a + * nested object. + * + * @remarks + * Arrays are treated as primitives here: array entries should not be broken + * down into separate keys. + * + * @example + * ```ts + * const context: GlobalContext = { + * a: true, + * 'b.c': [1, 2, 3], + * 'd.e.f': 'g', + * }; + * ``` + * + * @internal + */ +export type GlobalContext = Record; diff --git a/packages/core/logging/core-logging-server-internal/src/logger_adapter.test.ts b/packages/core/logging/core-logging-server-internal/src/logger_adapter.test.ts index c7be02e5c0a98..28f747ef3fcf6 100644 --- a/packages/core/logging/core-logging-server-internal/src/logger_adapter.test.ts +++ b/packages/core/logging/core-logging-server-internal/src/logger_adapter.test.ts @@ -7,84 +7,172 @@ */ import type { Logger } from '@kbn/logging'; +import { loggerMock } from '@kbn/logging-mocks'; import { LoggerAdapter } from './logger_adapter'; -test('proxies all method calls to the internal logger.', () => { - const internalLogger: Logger = { - debug: jest.fn(), - error: jest.fn(), - fatal: jest.fn(), - info: jest.fn(), - log: jest.fn(), - trace: jest.fn(), - warn: jest.fn(), - get: jest.fn(), - }; - - const adapter = new LoggerAdapter(internalLogger); - - adapter.trace('trace-message'); - expect(internalLogger.trace).toHaveBeenCalledTimes(1); - expect(internalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); - - adapter.debug('debug-message'); - expect(internalLogger.debug).toHaveBeenCalledTimes(1); - expect(internalLogger.debug).toHaveBeenCalledWith('debug-message', undefined); - - adapter.info('info-message'); - expect(internalLogger.info).toHaveBeenCalledTimes(1); - expect(internalLogger.info).toHaveBeenCalledWith('info-message', undefined); - - adapter.warn('warn-message'); - expect(internalLogger.warn).toHaveBeenCalledTimes(1); - expect(internalLogger.warn).toHaveBeenCalledWith('warn-message', undefined); - - adapter.error('error-message'); - expect(internalLogger.error).toHaveBeenCalledTimes(1); - expect(internalLogger.error).toHaveBeenCalledWith('error-message', undefined); - - adapter.fatal('fatal-message'); - expect(internalLogger.fatal).toHaveBeenCalledTimes(1); - expect(internalLogger.fatal).toHaveBeenCalledWith('fatal-message', undefined); - - adapter.get('context'); - expect(internalLogger.get).toHaveBeenCalledTimes(1); - expect(internalLogger.get).toHaveBeenCalledWith('context'); -}); +describe('LoggerAdapter', () => { + let internalLogger: Logger; + + beforeEach(() => { + internalLogger = loggerMock.create(); + }); + + test('proxies all method calls to the internal logger.', () => { + const adapter = new LoggerAdapter(internalLogger); + + adapter.trace('trace-message'); + expect(internalLogger.trace).toHaveBeenCalledTimes(1); + expect(internalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); + + adapter.debug('debug-message'); + expect(internalLogger.debug).toHaveBeenCalledTimes(1); + expect(internalLogger.debug).toHaveBeenCalledWith('debug-message', undefined); + + adapter.info('info-message'); + expect(internalLogger.info).toHaveBeenCalledTimes(1); + expect(internalLogger.info).toHaveBeenCalledWith('info-message', undefined); + + adapter.warn('warn-message'); + expect(internalLogger.warn).toHaveBeenCalledTimes(1); + expect(internalLogger.warn).toHaveBeenCalledWith('warn-message', undefined); + + adapter.error('error-message'); + expect(internalLogger.error).toHaveBeenCalledTimes(1); + expect(internalLogger.error).toHaveBeenCalledWith('error-message', undefined); + + adapter.fatal('fatal-message'); + expect(internalLogger.fatal).toHaveBeenCalledTimes(1); + expect(internalLogger.fatal).toHaveBeenCalledWith('fatal-message', undefined); + + adapter.get('context'); + expect(internalLogger.get).toHaveBeenCalledTimes(1); + expect(internalLogger.get).toHaveBeenCalledWith('context'); + }); + + test('forwards all method calls to new internal logger if it is updated.', () => { + const newInternalLogger = loggerMock.create(); + + const adapter = new LoggerAdapter(internalLogger); + + adapter.trace('trace-message'); + expect(internalLogger.trace).toHaveBeenCalledTimes(1); + expect(internalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); + (internalLogger.trace as jest.Mock<() => void>).mockReset(); + + adapter.updateLogger(newInternalLogger); + adapter.trace('trace-message'); + expect(internalLogger.trace).not.toHaveBeenCalled(); + expect(newInternalLogger.trace).toHaveBeenCalledTimes(1); + expect(newInternalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); + }); + + describe('global context', () => { + ['trace', 'debug', 'info', 'warn', 'error', 'fatal'].forEach((method) => { + test(`inserts global context in ${method} entries`, () => { + const adapter = new LoggerAdapter(internalLogger, { 'a.b.c': `${method}: d` }); + + // @ts-expect-error Custom ECS field + adapter[method](`new ${method} message`, { hello: 'world' }); + expect(internalLogger[method as keyof Logger]).toHaveBeenCalledTimes(1); + expect(internalLogger[method as keyof Logger]).toHaveBeenCalledWith( + `new ${method} message`, + { + hello: 'world', + a: { b: { c: `${method}: d` } }, + } + ); + + adapter.updateGlobalContext({ e: true }); + + // @ts-expect-error Custom ECS field + adapter[method](`another new ${method} message`, { hello: 'world' }); + expect(internalLogger[method as keyof Logger]).toHaveBeenCalledTimes(2); + expect(internalLogger[method as keyof Logger]).toHaveBeenCalledWith( + `another new ${method} message`, + { + hello: 'world', + e: true, + } + ); + }); + }); + + test('inserts global meta in log entries', () => { + const adapter = new LoggerAdapter(internalLogger, { 'a.b.c': 'd' }); + + adapter.log({ + message: 'message', + meta: { + // @ts-expect-error Custom ECS field + hello: 'world', + }, + }); + expect(internalLogger.log).toHaveBeenCalledTimes(1); + expect(internalLogger.log).toHaveBeenCalledWith({ + message: 'message', + meta: { + hello: 'world', + a: { b: { c: 'd' } }, + }, + }); + + adapter.updateGlobalContext({ e: true }); + + adapter.log({ + message: 'another message', + meta: { + // @ts-expect-error Custom ECS field + hello: 'world', + }, + }); + expect(internalLogger.log).toHaveBeenCalledTimes(2); + expect(internalLogger.log).toHaveBeenCalledWith({ + message: 'another message', + meta: { + hello: 'world', + e: true, + }, + }); + }); + + test('does not overwrite user-provided meta with global meta if the path already exists', () => { + const adapter = new LoggerAdapter(internalLogger, { hello: 'there' }); + + // @ts-expect-error Custom ECS field + adapter.info('message', { hello: 'world' }); + expect(internalLogger.info).toHaveBeenCalledTimes(1); + expect(internalLogger.info).toHaveBeenCalledWith('message', { + hello: 'world', + }); + }); + + test('does nothing if no global meta has been set', () => { + const adapter = new LoggerAdapter(internalLogger); + + // @ts-expect-error Custom ECS field + adapter.info('message', { hello: 'world' }); + expect(internalLogger.info).toHaveBeenCalledTimes(1); + expect(internalLogger.info).toHaveBeenCalledWith('message', { + hello: 'world', + }); + }); + + test('adds global meta even if no user-provided meta exists', () => { + const adapter = new LoggerAdapter(internalLogger, { hello: 'there' }); + + adapter.info('message'); + expect(internalLogger.info).toHaveBeenCalledTimes(1); + expect(internalLogger.info).toHaveBeenCalledWith('message', { + hello: 'there', + }); + }); + + test('does nothing if no global meta or user-provided meta has been set', () => { + const adapter = new LoggerAdapter(internalLogger); -test('forwards all method calls to new internal logger if it is updated.', () => { - const oldInternalLogger: Logger = { - debug: jest.fn(), - error: jest.fn(), - fatal: jest.fn(), - info: jest.fn(), - log: jest.fn(), - trace: jest.fn(), - warn: jest.fn(), - get: jest.fn(), - }; - - const newInternalLogger: Logger = { - debug: jest.fn(), - error: jest.fn(), - fatal: jest.fn(), - info: jest.fn(), - log: jest.fn(), - trace: jest.fn(), - warn: jest.fn(), - get: jest.fn(), - }; - - const adapter = new LoggerAdapter(oldInternalLogger); - - adapter.trace('trace-message'); - expect(oldInternalLogger.trace).toHaveBeenCalledTimes(1); - expect(oldInternalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); - (oldInternalLogger.trace as jest.Mock<() => void>).mockReset(); - - adapter.updateLogger(newInternalLogger); - adapter.trace('trace-message'); - expect(oldInternalLogger.trace).not.toHaveBeenCalled(); - expect(newInternalLogger.trace).toHaveBeenCalledTimes(1); - expect(newInternalLogger.trace).toHaveBeenCalledWith('trace-message', undefined); + adapter.info('message'); + expect(internalLogger.info).toHaveBeenCalledTimes(1); + expect(internalLogger.info).toHaveBeenCalledWith('message', undefined); + }); + }); }); diff --git a/packages/core/logging/core-logging-server-internal/src/logger_adapter.ts b/packages/core/logging/core-logging-server-internal/src/logger_adapter.ts index d2a2c7f52923a..5439fe0205796 100644 --- a/packages/core/logging/core-logging-server-internal/src/logger_adapter.ts +++ b/packages/core/logging/core-logging-server-internal/src/logger_adapter.ts @@ -7,10 +7,11 @@ */ import { LogRecord, Logger, LogMeta } from '@kbn/logging'; +import { GlobalContext, mergeGlobalContext } from './global_context'; /** @internal */ export class LoggerAdapter implements Logger { - constructor(private logger: Logger) {} + constructor(private logger: Logger, private globalContext: GlobalContext = {}) {} /** * The current logger can be updated "on the fly", e.g. when the log config @@ -24,32 +25,44 @@ export class LoggerAdapter implements Logger { this.logger = logger; } + /** + * The current record of {@link GlobalContext} that can be updated on the fly. + * Any updates via this method will be applied to all subsequent log entries. + * + * This is not intended for external use, only internally in Kibana + * + * @internal + */ + public updateGlobalContext(context: GlobalContext) { + this.globalContext = context; + } + public trace(message: string, meta?: LogMeta): void { - this.logger.trace(message, meta); + this.logger.trace(message, mergeGlobalContext(this.globalContext, meta)); } public debug(message: string, meta?: LogMeta): void { - this.logger.debug(message, meta); + this.logger.debug(message, mergeGlobalContext(this.globalContext, meta)); } public info(message: string, meta?: LogMeta): void { - this.logger.info(message, meta); + this.logger.info(message, mergeGlobalContext(this.globalContext, meta)); } public warn(errorOrMessage: string | Error, meta?: LogMeta): void { - this.logger.warn(errorOrMessage, meta); + this.logger.warn(errorOrMessage, mergeGlobalContext(this.globalContext, meta)); } public error(errorOrMessage: string | Error, meta?: LogMeta): void { - this.logger.error(errorOrMessage, meta); + this.logger.error(errorOrMessage, mergeGlobalContext(this.globalContext, meta)); } public fatal(errorOrMessage: string | Error, meta?: LogMeta): void { - this.logger.fatal(errorOrMessage, meta); + this.logger.fatal(errorOrMessage, mergeGlobalContext(this.globalContext, meta)); } public log(record: LogRecord) { - this.logger.log(record); + this.logger.log({ ...record, meta: mergeGlobalContext(this.globalContext, record.meta) }); } public get(...contextParts: string[]): Logger { diff --git a/packages/core/logging/core-logging-server-internal/src/logging_service.test.ts b/packages/core/logging/core-logging-server-internal/src/logging_service.test.ts index 965337fca4a31..1e8f7bddbb86b 100644 --- a/packages/core/logging/core-logging-server-internal/src/logging_service.test.ts +++ b/packages/core/logging/core-logging-server-internal/src/logging_service.test.ts @@ -22,6 +22,7 @@ const createLoggingSystemMock = () => { get: jest.fn().mockImplementation(() => loggerMock.create()), asLoggerFactory: jest.fn().mockImplementation(() => loggerMock.create()), setContextConfig: jest.fn(), + setGlobalContext: jest.fn(), upgrade: jest.fn(), stop: jest.fn(), }; diff --git a/packages/core/logging/core-logging-server-internal/src/logging_system.test.mocks.ts b/packages/core/logging/core-logging-server-internal/src/logging_system.test.mocks.ts new file mode 100644 index 0000000000000..abda107ae2144 --- /dev/null +++ b/packages/core/logging/core-logging-server-internal/src/logging_system.test.mocks.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { merge, getFlattenedObject } from '@kbn/std'; + +export const mockStreamWrite = jest.fn(); +jest.doMock('fs', () => ({ + ...(jest.requireActual('fs') as any), + constants: {}, + createWriteStream: jest.fn(() => ({ write: mockStreamWrite })), +})); + +export const mockGetFlattenedObject = jest.fn().mockImplementation(getFlattenedObject); +jest.doMock('@kbn/std', () => ({ + merge: jest.fn().mockImplementation(merge), + getFlattenedObject: mockGetFlattenedObject, +})); diff --git a/packages/core/logging/core-logging-server-internal/src/logging_system.test.ts b/packages/core/logging/core-logging-server-internal/src/logging_system.test.ts index ebe06326f499d..724319dbfb565 100644 --- a/packages/core/logging/core-logging-server-internal/src/logging_system.test.ts +++ b/packages/core/logging/core-logging-server-internal/src/logging_system.test.ts @@ -6,12 +6,7 @@ * Side Public License, v 1. */ -const mockStreamWrite = jest.fn(); -jest.mock('fs', () => ({ - ...(jest.requireActual('fs') as any), - constants: {}, - createWriteStream: jest.fn(() => ({ write: mockStreamWrite })), -})); +import { mockStreamWrite, mockGetFlattenedObject } from './logging_system.test.mocks'; const dynamicProps = { process: { pid: expect.any(Number) } }; @@ -34,6 +29,7 @@ afterEach(() => { jest.restoreAllMocks(); mockCreateWriteStream.mockClear(); mockStreamWrite.mockClear(); + mockGetFlattenedObject.mockClear(); }); test('uses default memory buffer logger until config is provided', () => { @@ -521,3 +517,115 @@ test('buffers log records for appenders created during config upgrade', async () await upgradePromise; expect(JSON.parse(mockConsoleLog.mock.calls[0][0]).message).toBe('message to a new context'); }); + +test('setGlobalContext() applies meta to new and existing loggers', async () => { + await system.upgrade( + config.schema.validate({ + appenders: { default: { type: 'console', layout: { type: 'json' } } }, + root: { level: 'info' }, + }) + ); + + const existingLogger = system.get('some-existing-context'); + // @ts-expect-error Custom ECS field + system.setGlobalContext({ a: { b: { c: true } } }); + const newLogger = system.get('some-new-context'); + + existingLogger.info('You know, just for your info.'); + newLogger.info('You know, just for your info.'); + // @ts-expect-error Custom ECS field + existingLogger.warn('You have been warned.', { someMeta: 'goes here' }); + // @ts-expect-error Custom ECS field + newLogger.warn('You have been warned.', { someMeta: 'goes here' }); + + expect(mockConsoleLog).toHaveBeenCalledTimes(4); + expect(JSON.parse(mockConsoleLog.mock.calls[0][0])).toMatchObject({ + log: { logger: 'some-existing-context' }, + message: 'You know, just for your info.', + a: { b: { c: true } }, + }); + expect(JSON.parse(mockConsoleLog.mock.calls[1][0])).toMatchObject({ + log: { logger: 'some-new-context' }, + message: 'You know, just for your info.', + a: { b: { c: true } }, + }); + expect(JSON.parse(mockConsoleLog.mock.calls[2][0])).toMatchObject({ + log: { logger: 'some-existing-context' }, + message: 'You have been warned.', + someMeta: 'goes here', + a: { b: { c: true } }, + }); + expect(JSON.parse(mockConsoleLog.mock.calls[3][0])).toMatchObject({ + log: { logger: 'some-new-context' }, + message: 'You have been warned.', + someMeta: 'goes here', + a: { b: { c: true } }, + }); +}); + +test('new global context always overwrites existing context', async () => { + await system.upgrade( + config.schema.validate({ + appenders: { default: { type: 'console', layout: { type: 'json' } } }, + root: { level: 'info' }, + }) + ); + + const logger = system.get('some-context'); + + // @ts-expect-error Custom ECS field + system.setGlobalContext({ a: { b: { c: true } }, d: false }); + logger.info('You know, just for your info.'); + + // @ts-expect-error Custom ECS field + system.setGlobalContext({ a: false, d: true }); + logger.info('You know, just for your info, again.'); + + expect(mockConsoleLog).toHaveBeenCalledTimes(2); + expect(JSON.parse(mockConsoleLog.mock.calls[0][0])).toMatchObject({ + log: { logger: 'some-context' }, + message: 'You know, just for your info.', + a: { b: { c: true } }, + d: false, + }); + expect(JSON.parse(mockConsoleLog.mock.calls[1][0])).toMatchObject({ + log: { logger: 'some-context' }, + message: 'You know, just for your info, again.', + a: false, + d: true, + }); +}); + +test('flattens global context objects before passing to LoggerAdapter', async () => { + await system.upgrade( + config.schema.validate({ + appenders: { default: { type: 'console', layout: { type: 'json' } } }, + root: { level: 'info' }, + }) + ); + + // @ts-expect-error Custom ECS field + system.setGlobalContext({ a: { b: { c: true } }, d: false }); + + const logger = system.get('some-context'); + + // @ts-expect-error Custom ECS field + system.setGlobalContext({ d: true, e: false }); + + logger.info('You know, just for your info.'); + + expect(mockGetFlattenedObject).toHaveBeenCalledTimes(3); + expect(mockGetFlattenedObject.mock.calls[0][0]).toEqual({ + a: { b: { c: true } }, + d: false, + }); + expect(mockGetFlattenedObject.mock.calls[1][0]).toEqual({ + a: { b: { c: true } }, + d: false, + }); + expect(mockGetFlattenedObject.mock.calls[2][0]).toEqual({ + a: { b: { c: true } }, + d: true, + e: false, + }); +}); diff --git a/packages/core/logging/core-logging-server-internal/src/logging_system.ts b/packages/core/logging/core-logging-server-internal/src/logging_system.ts index a267651ebe55a..c1bdf38433189 100644 --- a/packages/core/logging/core-logging-server-internal/src/logging_system.ts +++ b/packages/core/logging/core-logging-server-internal/src/logging_system.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { DisposableAppender, LogLevel, Logger, LoggerFactory } from '@kbn/logging'; +import { getFlattenedObject, merge } from '@kbn/std'; +import { DisposableAppender, LogLevel, Logger, LoggerFactory, LogMeta } from '@kbn/logging'; import type { LoggerConfigType, LoggerContextConfigInput } from '@kbn/core-logging-server'; import { Appenders } from './appenders/appenders'; import { BufferAppender } from './appenders/buffer/buffer_appender'; @@ -25,6 +26,7 @@ export interface ILoggingSystem extends LoggerFactory { asLoggerFactory(): LoggerFactory; upgrade(rawConfig?: LoggingConfigType): Promise; setContextConfig(baseContextParts: string[], rawConfig: LoggerContextConfigInput): Promise; + setGlobalContext(meta: Partial): void; stop(): Promise; } @@ -41,13 +43,20 @@ export class LoggingSystem implements ILoggingSystem { private readonly bufferAppender = new BufferAppender(); private readonly loggers: Map = new Map(); private readonly contextConfigs = new Map(); + private globalContext: Partial = {}; constructor() {} public get(...contextParts: string[]): Logger { const context = LoggingConfig.getLoggerContext(contextParts); if (!this.loggers.has(context)) { - this.loggers.set(context, new LoggerAdapter(this.createLogger(context, this.computedConfig))); + this.loggers.set( + context, + new LoggerAdapter( + this.createLogger(context, this.computedConfig), + getFlattenedObject(this.globalContext) + ) + ); } return this.loggers.get(context)!; } @@ -110,6 +119,23 @@ export class LoggingSystem implements ILoggingSystem { } } + /** + * A mechanism for specifying some "global" {@link LogMeta} that we want + * to inject into all log entries. + * + * @remarks + * The provided context will be merged with the meta of each individual log + * entry. In the case of conflicting keys, the global context will always be + * overridden by the log entry. + */ + public setGlobalContext(meta: Partial) { + this.globalContext = merge(this.globalContext, meta); + const flattenedContext = getFlattenedObject(this.globalContext); + for (const loggerAdapter of this.loggers.values()) { + loggerAdapter.updateGlobalContext(flattenedContext); + } + } + /** * Disposes all loggers (closes log files, clears buffers etc.). Service is not usable after * calling of this method until new config is provided via `upgrade` method. diff --git a/packages/core/logging/core-logging-server-mocks/src/logging_system.mock.ts b/packages/core/logging/core-logging-server-mocks/src/logging_system.mock.ts index b486839ddac6a..ca09498d92640 100644 --- a/packages/core/logging/core-logging-server-mocks/src/logging_system.mock.ts +++ b/packages/core/logging/core-logging-server-mocks/src/logging_system.mock.ts @@ -23,6 +23,7 @@ const createLoggingSystemMock = () => { get: jest.fn(), asLoggerFactory: jest.fn(), setContextConfig: jest.fn(), + setGlobalContext: jest.fn(), upgrade: jest.fn(), stop: jest.fn(), }; diff --git a/packages/core/node/core-node-server-internal/BUILD.bazel b/packages/core/node/core-node-server-internal/BUILD.bazel index dfbd25fdaeb73..5acec90dbd637 100644 --- a/packages/core/node/core-node-server-internal/BUILD.bazel +++ b/packages/core/node/core-node-server-internal/BUILD.bazel @@ -39,6 +39,7 @@ TYPES_DEPS = [ "//packages/kbn-config-schema:npm_module_types", "//packages/kbn-logging:npm_module_types", "//packages/core/base/core-base-server-internal:npm_module_types", + "//packages/core/logging/core-logging-server-internal:npm_module_types", "//packages/core/node/core-node-server:npm_module_types", ] diff --git a/packages/core/node/core-node-server-internal/src/node_service.test.ts b/packages/core/node/core-node-server-internal/src/node_service.test.ts index 309535905445f..a707e8ec1aed8 100644 --- a/packages/core/node/core-node-server-internal/src/node_service.test.ts +++ b/packages/core/node/core-node-server-internal/src/node_service.test.ts @@ -47,7 +47,7 @@ describe('NodeService', () => { coreContext = mockCoreContext.create({ logger, configService }); service = new NodeService(coreContext); - const { roles } = await service.preboot(); + const { roles } = await service.preboot({ loggingSystem: logger }); expect(roles.backgroundTasks).toBe(true); expect(roles.ui).toBe(true); @@ -58,7 +58,7 @@ describe('NodeService', () => { coreContext = mockCoreContext.create({ logger, configService }); service = new NodeService(coreContext); - const { roles } = await service.preboot(); + const { roles } = await service.preboot({ loggingSystem: logger }); expect(roles.backgroundTasks).toBe(true); expect(roles.ui).toBe(false); @@ -69,7 +69,7 @@ describe('NodeService', () => { coreContext = mockCoreContext.create({ logger, configService }); service = new NodeService(coreContext); - const { roles } = await service.preboot(); + const { roles } = await service.preboot({ loggingSystem: logger }); expect(roles.backgroundTasks).toBe(false); expect(roles.ui).toBe(true); @@ -80,7 +80,7 @@ describe('NodeService', () => { coreContext = mockCoreContext.create({ logger, configService }); service = new NodeService(coreContext); - const { roles } = await service.preboot(); + const { roles } = await service.preboot({ loggingSystem: logger }); expect(roles.backgroundTasks).toBe(true); expect(roles.ui).toBe(true); @@ -94,7 +94,7 @@ describe('NodeService', () => { coreContext = mockCoreContext.create({ logger, configService }); service = new NodeService(coreContext); - await service.preboot(); + await service.preboot({ loggingSystem: logger }); expect(logger.get).toHaveBeenCalledTimes(1); expect(logger.get).toHaveBeenCalledWith('node'); @@ -103,5 +103,18 @@ describe('NodeService', () => { `"Kibana process configured with roles: [background_tasks, ui]"` ); }); + + it('sets the node roles in the global context', async () => { + configService = getMockedConfigService({ roles: ['*'] }); + coreContext = mockCoreContext.create({ logger, configService }); + + service = new NodeService(coreContext); + await service.preboot({ loggingSystem: logger }); + + expect(logger.setGlobalContext).toHaveBeenCalledTimes(1); + expect(logger.setGlobalContext).toHaveBeenCalledWith({ + service: { node: { roles: ['background_tasks', 'ui'] } }, + }); + }); }); }); diff --git a/packages/core/node/core-node-server-internal/src/node_service.ts b/packages/core/node/core-node-server-internal/src/node_service.ts index 10006744cf956..cd73c7f85e6f5 100644 --- a/packages/core/node/core-node-server-internal/src/node_service.ts +++ b/packages/core/node/core-node-server-internal/src/node_service.ts @@ -10,6 +10,7 @@ import { firstValueFrom } from 'rxjs'; import { camelCase } from 'lodash'; import type { IConfigService } from '@kbn/config'; import type { CoreContext } from '@kbn/core-base-server-internal'; +import type { ILoggingSystem } from '@kbn/core-logging-server-internal'; import type { NodeRoles } from '@kbn/core-node-server'; import type { Logger } from '@kbn/logging'; import { @@ -32,6 +33,10 @@ export interface InternalNodeServicePreboot { roles: NodeRoles; } +interface PrebootDeps { + loggingSystem: ILoggingSystem; +} + /** @internal */ export class NodeService { private readonly configService: IConfigService; @@ -42,18 +47,15 @@ export class NodeService { this.log = core.logger.get('node'); } - public async preboot(): Promise { - const nodeRoles = await this.getNodeRoles(); - this.log.info(`Kibana process configured with roles: [${nodeRoles.join(', ')}]`, { - service: { - // @ts-expect-error Field not available in ECS until 8.4 - node: { roles: nodeRoles }, - }, - }); + public async preboot({ loggingSystem }: PrebootDeps): Promise { + const roles = await this.getNodeRoles(); + // @ts-expect-error Custom ECS field + loggingSystem.setGlobalContext({ service: { node: { roles } } }); + this.log.info(`Kibana process configured with roles: [${roles.join(', ')}]`); return { roles: NODE_ACCEPTED_ROLES.reduce((acc, curr) => { - return { ...acc, [camelCase(curr)]: nodeRoles.includes(curr) }; + return { ...acc, [camelCase(curr)]: roles.includes(curr) }; }, {} as NodeRoles), }; } diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/BUILD.bazel b/packages/core/test-helpers/core-test-helpers-http-setup-browser/BUILD.bazel new file mode 100644 index 0000000000000..b802747956bda --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/BUILD.bazel @@ -0,0 +1,113 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-test-helpers-http-setup-browser" +PKG_REQUIRE_NAME = "@kbn/core-test-helpers-http-setup-browser" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + "**/*.stories.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "//packages/core/execution-context/core-execution-context-browser-mocks", + "//packages/core/fatal-errors/core-fatal-errors-browser-mocks", + "//packages/core/injected-metadata/core-injected-metadata-browser-mocks", + "//packages/core/http/core-http-browser-internal" +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/core/execution-context/core-execution-context-browser-mocks:npm_module_types", + "//packages/core/fatal-errors/core-fatal-errors-browser-mocks:npm_module_types", + "//packages/core/injected-metadata/core-injected-metadata-browser-mocks:npm_module_types", + "//packages/core/http/core-http-browser-internal:npm_module_types" +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/README.md b/packages/core/test-helpers/core-test-helpers-http-setup-browser/README.md new file mode 100644 index 0000000000000..f4e1825d67d05 --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/README.md @@ -0,0 +1,3 @@ +# @kbn/core-test-helpers-http-setup-browser + +This package contains Core's browser-side test helpers. diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/jest.config.js b/packages/core/test-helpers/core-test-helpers-http-setup-browser/jest.config.js new file mode 100644 index 0000000000000..06aa6045ec68b --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/test-helpers/core-test-helpers-http-setup-browser'], +}; diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/package.json b/packages/core/test-helpers/core-test-helpers-http-setup-browser/package.json new file mode 100644 index 0000000000000..b6c321f96c8fc --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-test-helpers-http-setup-browser", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/test_helpers/http_test_setup.ts b/packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts similarity index 100% rename from src/core/test_helpers/http_test_setup.ts rename to packages/core/test-helpers/core-test-helpers-http-setup-browser/src/http_test_setup.ts diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/src/index.ts b/packages/core/test-helpers/core-test-helpers-http-setup-browser/src/index.ts new file mode 100644 index 0000000000000..db5c37cc1ecac --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { SetupTap } from './http_test_setup'; +export { setup } from './http_test_setup'; diff --git a/packages/core/test-helpers/core-test-helpers-http-setup-browser/tsconfig.json b/packages/core/test-helpers/core-test-helpers-http-setup-browser/tsconfig.json new file mode 100644 index 0000000000000..39d3c7097814a --- /dev/null +++ b/packages/core/test-helpers/core-test-helpers-http-setup-browser/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/ui-settings/core-ui-settings-browser-internal/BUILD.bazel b/packages/core/ui-settings/core-ui-settings-browser-internal/BUILD.bazel new file mode 100644 index 0000000000000..79c90204e03c2 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/BUILD.bazel @@ -0,0 +1,113 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-ui-settings-browser-internal" +PKG_REQUIRE_NAME = "@kbn/core-ui-settings-browser-internal" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + "**/*.stories.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", + "@npm//lodash", + "//packages/core/test-helpers/core-test-helpers-http-setup-browser" +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "@npm//lodash", + "//packages/core/test-helpers/core-test-helpers-http-setup-browser:npm_module_types", + "//packages/core/http/core-http-browser:npm_module_types", + "//packages/core/ui-settings/core-ui-settings-browser:npm_module_types" +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/ui-settings/core-ui-settings-browser-internal/README.md b/packages/core/ui-settings/core-ui-settings-browser-internal/README.md new file mode 100644 index 0000000000000..0ca0464803902 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-ui-settings-browser-internal + +This package contains the internal types and implementation for Core's browser-side uiSettings service. diff --git a/packages/core/ui-settings/core-ui-settings-browser-internal/jest.config.js b/packages/core/ui-settings/core-ui-settings-browser-internal/jest.config.js new file mode 100644 index 0000000000000..286747d11869e --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/ui-settings/core-ui-settings-browser-internal'], +}; diff --git a/packages/core/ui-settings/core-ui-settings-browser-internal/package.json b/packages/core/ui-settings/core-ui-settings-browser-internal/package.json new file mode 100644 index 0000000000000..a333808e2fe63 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-ui-settings-browser-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/public/ui_settings/__snapshots__/ui_settings_api.test.ts.snap b/packages/core/ui-settings/core-ui-settings-browser-internal/src/__snapshots__/ui_settings_api.test.ts.snap similarity index 100% rename from src/core/public/ui_settings/__snapshots__/ui_settings_api.test.ts.snap rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/__snapshots__/ui_settings_api.test.ts.snap diff --git a/src/core/public/ui_settings/__snapshots__/ui_settings_client.test.ts.snap b/packages/core/ui-settings/core-ui-settings-browser-internal/src/__snapshots__/ui_settings_client.test.ts.snap similarity index 100% rename from src/core/public/ui_settings/__snapshots__/ui_settings_client.test.ts.snap rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/__snapshots__/ui_settings_client.test.ts.snap diff --git a/src/core/public/ui_settings/index.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/index.ts similarity index 87% rename from src/core/public/ui_settings/index.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/index.ts index 7c7bdae34a3c1..b57cef6053106 100644 --- a/src/core/public/ui_settings/index.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/src/index.ts @@ -8,4 +8,3 @@ export { UiSettingsService } from './ui_settings_service'; export type { UiSettingsClient } from './ui_settings_client'; -export type { UiSettingsState, IUiSettingsClient } from './types'; diff --git a/src/core/public/ui_settings/ui_settings_api.test.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.test.ts similarity index 98% rename from src/core/public/ui_settings/ui_settings_api.test.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.test.ts index d5f0f1175b9e5..c250b78d68ce5 100644 --- a/src/core/public/ui_settings/ui_settings_api.test.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.test.ts @@ -11,7 +11,7 @@ import fetchMock from 'fetch-mock/es5/client'; import * as Rx from 'rxjs'; import { takeUntil, toArray } from 'rxjs/operators'; -import { setup as httpSetup } from '../../test_helpers/http_test_setup'; +import { setup as httpSetup } from '@kbn/core-test-helpers-http-setup-browser'; import { UiSettingsApi } from './ui_settings_api'; function setup() { diff --git a/src/core/public/ui_settings/ui_settings_api.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.ts similarity index 98% rename from src/core/public/ui_settings/ui_settings_api.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.ts index 0428de810cca9..2686307357723 100644 --- a/src/core/public/ui_settings/ui_settings_api.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_api.ts @@ -9,7 +9,7 @@ import { BehaviorSubject } from 'rxjs'; import type { HttpSetup } from '@kbn/core-http-browser'; -import type { UiSettingsState } from './types'; +import type { UiSettingsState } from '@kbn/core-ui-settings-browser'; export interface UiSettingsApiResponse { settings: UiSettingsState; diff --git a/src/core/public/ui_settings/ui_settings_client.test.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.test.ts similarity index 100% rename from src/core/public/ui_settings/ui_settings_client.test.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.test.ts diff --git a/src/core/public/ui_settings/ui_settings_client.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts similarity index 96% rename from src/core/public/ui_settings/ui_settings_client.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts index 979f6be5ebe2c..d5b6b7f1513b2 100644 --- a/src/core/public/ui_settings/ui_settings_client.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_client.ts @@ -10,8 +10,8 @@ import { cloneDeep, defaultsDeep } from 'lodash'; import { Observable, Subject, concat, defer, of } from 'rxjs'; import { filter, map } from 'rxjs/operators'; -import { UserProvidedValues, PublicUiSettingsParams } from '../../server/types'; -import { IUiSettingsClient, UiSettingsState } from './types'; +import { UserProvidedValues, PublicUiSettingsParams } from '@kbn/core-ui-settings-common'; +import { IUiSettingsClient, UiSettingsState } from '@kbn/core-ui-settings-browser'; import { UiSettingsApi } from './ui_settings_api'; diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_service.test.ts similarity index 100% rename from src/core/public/ui_settings/ui_settings_service.test.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_service.test.ts diff --git a/src/core/public/ui_settings/ui_settings_service.ts b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_service.ts similarity index 96% rename from src/core/public/ui_settings/ui_settings_service.ts rename to packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_service.ts index 5117ac3247af8..3ff66d8216967 100644 --- a/src/core/public/ui_settings/ui_settings_service.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/src/ui_settings_service.ts @@ -11,9 +11,9 @@ import { Subject } from 'rxjs'; import type { InternalInjectedMetadataSetup } from '@kbn/core-injected-metadata-browser-internal'; import type { HttpSetup } from '@kbn/core-http-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { UiSettingsApi } from './ui_settings_api'; import { UiSettingsClient } from './ui_settings_client'; -import type { IUiSettingsClient } from './types'; export interface UiSettingsServiceDeps { http: HttpSetup; diff --git a/packages/core/ui-settings/core-ui-settings-browser-internal/tsconfig.json b/packages/core/ui-settings/core-ui-settings-browser-internal/tsconfig.json new file mode 100644 index 0000000000000..39d3c7097814a --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/BUILD.bazel b/packages/core/ui-settings/core-ui-settings-browser-mocks/BUILD.bazel new file mode 100644 index 0000000000000..c9c564ccc620a --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/BUILD.bazel @@ -0,0 +1,111 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-ui-settings-browser-mocks" +PKG_REQUIRE_NAME = "@kbn/core-ui-settings-browser-mocks" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + "**/*.stories.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/core/ui-settings/core-ui-settings-browser-internal" +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/kbn-utility-types:npm_module_types", + "//packages/core/ui-settings/core-ui-settings-browser-internal:npm_module_types", + "//packages/core/ui-settings/core-ui-settings-browser:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/README.md b/packages/core/ui-settings/core-ui-settings-browser-mocks/README.md new file mode 100644 index 0000000000000..15e17139c444f --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/README.md @@ -0,0 +1,3 @@ +# @kbn/core-ui-settings-browser-mocks + +This package contains the mocks for the browser-side uiSettings service. diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/jest.config.js b/packages/core/ui-settings/core-ui-settings-browser-mocks/jest.config.js new file mode 100644 index 0000000000000..a585eb84171ea --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/ui-settings/core-ui-settings-browser-mocks'], +}; diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/package.json b/packages/core/ui-settings/core-ui-settings-browser-mocks/package.json new file mode 100644 index 0000000000000..7d88d26720d3f --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-ui-settings-browser-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/src/index.ts b/packages/core/ui-settings/core-ui-settings-browser-mocks/src/index.ts new file mode 100644 index 0000000000000..1eaa0bff3a4c7 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { uiSettingsServiceMock } from './ui_settings_service.mock'; diff --git a/src/core/public/ui_settings/ui_settings_service.mock.ts b/packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts similarity index 91% rename from src/core/public/ui_settings/ui_settings_service.mock.ts rename to packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts index d0633c4fca1fc..834a86d03e049 100644 --- a/src/core/public/ui_settings/ui_settings_service.mock.ts +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/src/ui_settings_service.mock.ts @@ -8,8 +8,8 @@ import * as Rx from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; -import { UiSettingsService } from '.'; -import { IUiSettingsClient } from './types'; +import type { UiSettingsService } from '@kbn/core-ui-settings-browser-internal'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; const createSetupContractMock = () => { const setupContract: jest.Mocked = { diff --git a/packages/core/ui-settings/core-ui-settings-browser-mocks/tsconfig.json b/packages/core/ui-settings/core-ui-settings-browser-mocks/tsconfig.json new file mode 100644 index 0000000000000..39d3c7097814a --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser-mocks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/ui-settings/core-ui-settings-browser/BUILD.bazel b/packages/core/ui-settings/core-ui-settings-browser/BUILD.bazel new file mode 100644 index 0000000000000..fb495d492646f --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/BUILD.bazel @@ -0,0 +1,108 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-ui-settings-browser" +PKG_REQUIRE_NAME = "@kbn/core-ui-settings-browser" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + "**/*.stories.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/core/ui-settings/core-ui-settings-common:npm_module_types" +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/ui-settings/core-ui-settings-browser/README.md b/packages/core/ui-settings/core-ui-settings-browser/README.md new file mode 100644 index 0000000000000..7bc7eb409096b --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/README.md @@ -0,0 +1,3 @@ +# @kbn/core-ui-settings-browser + +This package contains the public types for the browser-side ui-settings service. diff --git a/packages/core/ui-settings/core-ui-settings-browser/jest.config.js b/packages/core/ui-settings/core-ui-settings-browser/jest.config.js new file mode 100644 index 0000000000000..7ab068830f85d --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/ui-settings/core-ui-settings-browser'], +}; diff --git a/packages/core/ui-settings/core-ui-settings-browser/package.json b/packages/core/ui-settings/core-ui-settings-browser/package.json new file mode 100644 index 0000000000000..e40aeeac64196 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-ui-settings-browser", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/ui-settings/core-ui-settings-browser/src/index.ts b/packages/core/ui-settings/core-ui-settings-browser/src/index.ts new file mode 100644 index 0000000000000..99150ded40035 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { UiSettingsState, IUiSettingsClient } from './types'; diff --git a/src/core/public/ui_settings/types.ts b/packages/core/ui-settings/core-ui-settings-browser/src/types.ts similarity index 96% rename from src/core/public/ui_settings/types.ts rename to packages/core/ui-settings/core-ui-settings-browser/src/types.ts index 243ac82ed14ab..4d23814c2b35d 100644 --- a/src/core/public/ui_settings/types.ts +++ b/packages/core/ui-settings/core-ui-settings-browser/src/types.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { Observable } from 'rxjs'; -import { PublicUiSettingsParams, UserProvidedValues } from '../../server/types'; +import type { Observable } from 'rxjs'; +import type { PublicUiSettingsParams, UserProvidedValues } from '@kbn/core-ui-settings-common'; /** @public */ export interface UiSettingsState { diff --git a/packages/core/ui-settings/core-ui-settings-browser/tsconfig.json b/packages/core/ui-settings/core-ui-settings-browser/tsconfig.json new file mode 100644 index 0000000000000..4c665fe2ba49a --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-browser/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node", + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/ui-settings/core-ui-settings-common/BUILD.bazel b/packages/core/ui-settings/core-ui-settings-common/BUILD.bazel new file mode 100644 index 0000000000000..92ffc8188cae5 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/BUILD.bazel @@ -0,0 +1,107 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-ui-settings-common" +PKG_REQUIRE_NAME = "@kbn/core-ui-settings-common" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + "**/*.stories.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-config-schema:npm_module_types", + "//packages/kbn-analytics:npm_module_types" +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/ui-settings/core-ui-settings-common/README.md b/packages/core/ui-settings/core-ui-settings-common/README.md new file mode 100644 index 0000000000000..aa9cf61a0bc88 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/README.md @@ -0,0 +1,3 @@ +# @kbn/core-ui-settings-common + +This package contains the common types for Core's uiSettings service. diff --git a/packages/core/ui-settings/core-ui-settings-common/jest.config.js b/packages/core/ui-settings/core-ui-settings-common/jest.config.js new file mode 100644 index 0000000000000..1d7330c330d26 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/ui-settings/core-ui-settings-common'], +}; diff --git a/packages/core/ui-settings/core-ui-settings-common/package.json b/packages/core/ui-settings/core-ui-settings-common/package.json new file mode 100644 index 0000000000000..1476582f96d07 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-ui-settings-common", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/ui-settings/core-ui-settings-common/src/index.ts b/packages/core/ui-settings/core-ui-settings-common/src/index.ts new file mode 100644 index 0000000000000..da84668311cd2 --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/src/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + UiSettingsType, + DeprecationSettings, + UiSettingsParams, + PublicUiSettingsParams, + UserProvidedValues, +} from './ui_settings'; diff --git a/src/core/types/ui_settings.ts b/packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts similarity index 96% rename from src/core/types/ui_settings.ts rename to packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts index 469f43327e498..ea1e5f92a7491 100644 --- a/src/core/types/ui_settings.ts +++ b/packages/core/ui-settings/core-ui-settings-common/src/ui_settings.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { Type } from '@kbn/config-schema'; -import { UiCounterMetricType } from '@kbn/analytics'; +import type { Type } from '@kbn/config-schema'; +import type { UiCounterMetricType } from '@kbn/analytics'; /** * UI element type to represent the settings. diff --git a/packages/core/ui-settings/core-ui-settings-common/tsconfig.json b/packages/core/ui-settings/core-ui-settings-common/tsconfig.json new file mode 100644 index 0000000000000..39d3c7097814a --- /dev/null +++ b/packages/core/ui-settings/core-ui-settings-common/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index ee2fb5143e92b..67bfabcbd0984 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -396,7 +396,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { classificationAucRoc: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/ml-dfa-classification.html#ml-dfanalytics-class-aucroc`, setUpgradeMode: `${ELASTICSEARCH_DOCS}ml-set-upgrade-mode.html`, trainedModels: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/ml-trained-models.html`, - startTrainedModelsDeploymentQueryParams: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/reference/${DOC_LINK_VERSION}/start-trained-model-deployment.html#start-trained-model-deployment-query-params`, + startTrainedModelsDeployment: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/ml-nlp-deploy-models.html#ml-nlp-deploy-model`, }, transforms: { guide: `${ELASTICSEARCH_DOCS}transforms.html`, diff --git a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts index 76346f3618a51..54e01a6b7916b 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts @@ -68,7 +68,7 @@ export async function runKibanaServer({ }; const prefixArgs = devMode - ? [Path.relative(process.cwd(), Path.resolve(REPO_ROOT, 'scripts/kibana'))] + ? [Path.relative(procRunnerOpts.cwd, Path.resolve(REPO_ROOT, 'scripts/kibana'))] : []; const buildArgs: string[] = config.get('kbnTestServer.buildArgs') || []; diff --git a/src/core/public/chrome/chrome_service.test.ts b/src/core/public/chrome/chrome_service.test.ts index f5d276ef25172..737b561bed8e3 100644 --- a/src/core/public/chrome/chrome_service.test.ts +++ b/src/core/public/chrome/chrome_service.test.ts @@ -16,7 +16,7 @@ import { httpServiceMock } from '@kbn/core-http-browser-mocks'; import { App, PublicAppInfo } from '../application'; import { applicationServiceMock } from '../application/application_service.mock'; import { notificationServiceMock } from '../notifications/notifications_service.mock'; -import { uiSettingsServiceMock } from '../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { ChromeService } from './chrome_service'; import { getAppInfo } from '../application/utils'; diff --git a/src/core/public/core_app/core_app.ts b/src/core/public/core_app/core_app.ts index 82ae595f86477..d834ece6e76cf 100644 --- a/src/core/public/core_app/core_app.ts +++ b/src/core/public/core_app/core_app.ts @@ -11,6 +11,7 @@ import type { CoreContext } from '@kbn/core-base-browser-internal'; import type { InternalInjectedMetadataSetup } from '@kbn/core-injected-metadata-browser-internal'; import type { DocLinksStart } from '@kbn/core-doc-links-browser'; import type { HttpSetup, HttpStart } from '@kbn/core-http-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { type InternalApplicationSetup, type InternalApplicationStart, @@ -18,7 +19,6 @@ import { type AppMountParameters, } from '../application'; import type { NotificationsSetup, NotificationsStart } from '../notifications'; -import type { IUiSettingsClient } from '../ui_settings'; import { renderApp as renderErrorApp, setupPublicBaseUrlConfigWarning, diff --git a/src/core/public/core_app/errors/url_overflow.test.ts b/src/core/public/core_app/errors/url_overflow.test.ts index 0e166e5d5e7ee..e68b80931d2ec 100644 --- a/src/core/public/core_app/errors/url_overflow.test.ts +++ b/src/core/public/core_app/errors/url_overflow.test.ts @@ -11,9 +11,9 @@ import type { IBasePath } from '@kbn/core-http-browser'; import { BasePath } from '@kbn/core-http-browser-internal'; import { notificationServiceMock } from '../../notifications/notifications_service.mock'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import type { IToasts } from '../../notifications'; -import type { IUiSettingsClient } from '../../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { setupUrlOverflowDetection, URL_MAX_LENGTH, URL_WARNING_LENGTH } from './url_overflow'; diff --git a/src/core/public/core_app/errors/url_overflow.tsx b/src/core/public/core_app/errors/url_overflow.tsx index f2a525a9c2e68..4925cf18c0f77 100644 --- a/src/core/public/core_app/errors/url_overflow.tsx +++ b/src/core/public/core_app/errors/url_overflow.tsx @@ -13,9 +13,9 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { IBasePath } from '@kbn/core-http-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { mountReactNode } from '../../utils'; import { IToasts } from '../../notifications'; -import { IUiSettingsClient } from '../../ui_settings'; const IE_REGEX = /(; ?MSIE |Edge\/\d|Trident\/[\d+\.]+;.*rv:*11\.\d+)/; export const IS_IE = IE_REGEX.test(window.navigator.userAgent); diff --git a/src/core/public/core_system.test.mocks.ts b/src/core/public/core_system.test.mocks.ts index 0d46af80b34eb..baf4c28401c06 100644 --- a/src/core/public/core_system.test.mocks.ts +++ b/src/core/public/core_system.test.mocks.ts @@ -18,7 +18,7 @@ import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { notificationServiceMock } from './notifications/notifications_service.mock'; import { overlayServiceMock } from './overlays/overlay_service.mock'; import { pluginsServiceMock } from './plugins/plugins_service.mock'; -import { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { renderingServiceMock } from './rendering/rendering_service.mock'; import { integrationsServiceMock } from './integrations/integrations_service.mock'; import { coreAppMock } from './core_app/core_app.mock'; @@ -76,7 +76,7 @@ export const MockUiSettingsService = uiSettingsServiceMock.create(); export const UiSettingsServiceConstructor = jest .fn() .mockImplementation(() => MockUiSettingsService); -jest.doMock('./ui_settings', () => ({ +jest.doMock('@kbn/core-ui-settings-browser-internal', () => ({ UiSettingsService: UiSettingsServiceConstructor, })); diff --git a/src/core/public/core_system.ts b/src/core/public/core_system.ts index 834927ae7f541..710d7b90c4c30 100644 --- a/src/core/public/core_system.ts +++ b/src/core/public/core_system.ts @@ -23,13 +23,13 @@ import { ExecutionContextService } from '@kbn/core-execution-context-browser-int import type { FatalErrorsSetup } from '@kbn/core-fatal-errors-browser'; import { FatalErrorsService } from '@kbn/core-fatal-errors-browser-internal'; import { HttpService } from '@kbn/core-http-browser-internal'; +import { UiSettingsService } from '@kbn/core-ui-settings-browser-internal'; import { DeprecationsService } from '@kbn/core-deprecations-browser-internal'; import { CoreSetup, CoreStart } from '.'; import { ChromeService } from './chrome'; import { NotificationsService } from './notifications'; import { OverlayService } from './overlays'; import { PluginsService } from './plugins'; -import { UiSettingsService } from './ui_settings'; import { ApplicationService } from './application'; import { RenderingService } from './rendering'; import { SavedObjectsService } from './saved_objects'; diff --git a/src/core/public/index.ts b/src/core/public/index.ts index b3ffc84a51f58..ccde84105ea89 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -42,6 +42,7 @@ import type { FatalErrorsStart, FatalErrorInfo, } from '@kbn/core-fatal-errors-browser'; +import type { UiSettingsState, IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import type { DeprecationsServiceStart } from '@kbn/core-deprecations-browser'; import type { ChromeBadge, @@ -73,7 +74,6 @@ import type { PluginInitializerContext, PluginOpaqueId, } from './plugins'; -import type { UiSettingsState, IUiSettingsClient } from './ui_settings'; import type { ApplicationSetup, Capabilities, ApplicationStart } from './application'; import type { SavedObjectsStart } from './saved_objects'; @@ -82,7 +82,12 @@ export type { DomainDeprecationDetails } from '@kbn/core-deprecations-common'; export type { CoreContext } from '@kbn/core-base-browser-internal'; export type { CoreSystem } from './core_system'; export { DEFAULT_APP_CATEGORIES, APP_WRAPPER_CLASS } from '../utils'; -export type { AppCategory, UiSettingsParams, UserProvidedValues, UiSettingsType } from '../types'; +export type { AppCategory } from '../types'; +export type { + UiSettingsParams, + UserProvidedValues, + UiSettingsType, +} from '@kbn/core-ui-settings-common'; export type { AnalyticsServiceSetup, AnalyticsServiceStart } from '@kbn/core-analytics-browser'; export type { diff --git a/src/core/public/integrations/integrations_service.test.ts b/src/core/public/integrations/integrations_service.test.ts index 9543012833feb..a98e5bf1d7bc2 100644 --- a/src/core/public/integrations/integrations_service.test.ts +++ b/src/core/public/integrations/integrations_service.test.ts @@ -9,7 +9,7 @@ import { styleServiceMock, momentServiceMock } from './integrations_service.test.mocks'; import { IntegrationsService } from './integrations_service'; -import { uiSettingsServiceMock } from '../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; describe('IntegrationsService', () => { test('it wires up styles and moment', async () => { diff --git a/src/core/public/integrations/integrations_service.ts b/src/core/public/integrations/integrations_service.ts index e03546998ba7e..ca01e1b86ce7e 100644 --- a/src/core/public/integrations/integrations_service.ts +++ b/src/core/public/integrations/integrations_service.ts @@ -7,7 +7,7 @@ */ import type { CoreService } from '@kbn/core-base-browser-internal'; -import { IUiSettingsClient } from '../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { MomentService } from './moment'; import { StylesService } from './styles'; diff --git a/src/core/public/integrations/moment/moment_service.test.ts b/src/core/public/integrations/moment/moment_service.test.ts index 4e7c345e7e05d..d3c4d44f100e8 100644 --- a/src/core/public/integrations/moment/moment_service.test.ts +++ b/src/core/public/integrations/moment/moment_service.test.ts @@ -8,7 +8,7 @@ import { momentMock } from './moment_service.test.mocks'; import { MomentService } from './moment_service'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { BehaviorSubject } from 'rxjs'; describe('MomentService', () => { diff --git a/src/core/public/integrations/moment/moment_service.ts b/src/core/public/integrations/moment/moment_service.ts index 0f58c8d7fb19f..633223864f202 100644 --- a/src/core/public/integrations/moment/moment_service.ts +++ b/src/core/public/integrations/moment/moment_service.ts @@ -11,7 +11,7 @@ import { merge, Subscription } from 'rxjs'; import { tap } from 'rxjs/operators'; import type { CoreService } from '@kbn/core-base-browser-internal'; -import { IUiSettingsClient } from '../../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; interface StartDeps { uiSettings: IUiSettingsClient; diff --git a/src/core/public/integrations/styles/styles_service.test.ts b/src/core/public/integrations/styles/styles_service.test.ts index 5fae4b976c59e..20625dcbc3b94 100644 --- a/src/core/public/integrations/styles/styles_service.test.ts +++ b/src/core/public/integrations/styles/styles_service.test.ts @@ -11,7 +11,7 @@ import { BehaviorSubject } from 'rxjs'; jest.mock('!!raw-loader!./disable_animations.css', () => 'MOCK DISABLE ANIMATIONS CSS'); import { StylesService } from './styles_service'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; describe('StylesService', () => { const flushPromises = () => new Promise((resolve) => setTimeout(resolve, 100)); diff --git a/src/core/public/integrations/styles/styles_service.ts b/src/core/public/integrations/styles/styles_service.ts index 3e8f02739a8d0..9bbed46ff12f5 100644 --- a/src/core/public/integrations/styles/styles_service.ts +++ b/src/core/public/integrations/styles/styles_service.ts @@ -9,7 +9,7 @@ import { Subscription } from 'rxjs'; import type { CoreService } from '@kbn/core-base-browser-internal'; -import { IUiSettingsClient } from '../../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; // @ts-expect-error import disableAnimationsCss from '!!raw-loader!./disable_animations.css'; diff --git a/src/core/public/mocks.ts b/src/core/public/mocks.ts index 97f3af9f33cca..73e4a5a80fbde 100644 --- a/src/core/public/mocks.ts +++ b/src/core/public/mocks.ts @@ -17,6 +17,7 @@ import { executionContextServiceMock } from '@kbn/core-execution-context-browser import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { fatalErrorsServiceMock } from '@kbn/core-fatal-errors-browser-mocks'; import { httpServiceMock } from '@kbn/core-http-browser-mocks'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { deprecationsServiceMock } from '@kbn/core-deprecations-browser-mocks'; import type { PluginInitializerContext, AppMountParameters } from '.'; // Import values from their individual modules instead. @@ -25,7 +26,6 @@ import { applicationServiceMock } from './application/application_service.mock'; import { chromeServiceMock } from './chrome/chrome_service.mock'; import { notificationServiceMock } from './notifications/notifications_service.mock'; import { overlayServiceMock } from './overlays/overlay_service.mock'; -import { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; import { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; export { injectedMetadataServiceMock } from '@kbn/core-injected-metadata-browser-mocks'; @@ -39,7 +39,7 @@ export { httpServiceMock } from '@kbn/core-http-browser-mocks'; export { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; export { notificationServiceMock } from './notifications/notifications_service.mock'; export { overlayServiceMock } from './overlays/overlay_service.mock'; -export { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; +export { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; export { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; export { scopedHistoryMock } from './application/scoped_history.mock'; export { applicationServiceMock } from './application/application_service.mock'; diff --git a/src/core/public/notifications/notifications_service.ts b/src/core/public/notifications/notifications_service.ts index 859e21de5ffed..6a5a5f81f1a40 100644 --- a/src/core/public/notifications/notifications_service.ts +++ b/src/core/public/notifications/notifications_service.ts @@ -11,8 +11,8 @@ import { i18n } from '@kbn/i18n'; import { Subscription } from 'rxjs'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import type { I18nStart } from '@kbn/core-i18n-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { ToastsService, ToastsSetup, ToastsStart } from './toasts'; -import { IUiSettingsClient } from '../ui_settings'; import { OverlayStart } from '../overlays'; export interface SetupDeps { diff --git a/src/core/public/notifications/toasts/toasts_api.test.ts b/src/core/public/notifications/toasts/toasts_api.test.ts index d6b67bdb63f7a..ec07f32d2f1c9 100644 --- a/src/core/public/notifications/toasts/toasts_api.test.ts +++ b/src/core/public/notifications/toasts/toasts_api.test.ts @@ -10,7 +10,7 @@ import { firstValueFrom } from 'rxjs'; import { ToastsApi } from './toasts_api'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; async function getCurrentToasts(toasts: ToastsApi) { diff --git a/src/core/public/notifications/toasts/toasts_api.tsx b/src/core/public/notifications/toasts/toasts_api.tsx index ecf32d442931c..f78927c7f7579 100644 --- a/src/core/public/notifications/toasts/toasts_api.tsx +++ b/src/core/public/notifications/toasts/toasts_api.tsx @@ -12,10 +12,10 @@ import * as Rx from 'rxjs'; import { omitBy, isUndefined } from 'lodash'; import type { I18nStart } from '@kbn/core-i18n-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { ErrorToast } from './error_toast'; import { MountPoint } from '../../types'; import { mountReactNode } from '../../utils'; -import { IUiSettingsClient } from '../../ui_settings'; import { OverlayStart } from '../../overlays'; /** diff --git a/src/core/public/notifications/toasts/toasts_service.test.tsx b/src/core/public/notifications/toasts/toasts_service.test.tsx index d2694d076e8c0..a6854f679d086 100644 --- a/src/core/public/notifications/toasts/toasts_service.test.tsx +++ b/src/core/public/notifications/toasts/toasts_service.test.tsx @@ -12,7 +12,7 @@ import { ToastsService } from './toasts_service'; import { ToastsApi } from './toasts_api'; import { overlayServiceMock } from '../../overlays/overlay_service.mock'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; const mockI18n: any = { Context: function I18nContext() { diff --git a/src/core/public/notifications/toasts/toasts_service.tsx b/src/core/public/notifications/toasts/toasts_service.tsx index 63edd56085797..692e6ec9dd504 100644 --- a/src/core/public/notifications/toasts/toasts_service.tsx +++ b/src/core/public/notifications/toasts/toasts_service.tsx @@ -12,7 +12,7 @@ import { render, unmountComponentAtNode } from 'react-dom'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import type { I18nStart } from '@kbn/core-i18n-browser'; import { CoreContextProvider } from '@kbn/core-theme-browser-internal'; -import { IUiSettingsClient } from '../../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { GlobalToastList } from './global_toast_list'; import { ToastsApi, IToasts } from './toasts_api'; import { OverlayStart } from '../../overlays'; diff --git a/src/core/public/overlays/banners/banners_service.test.ts b/src/core/public/overlays/banners/banners_service.test.ts index d3093879f8715..69f30d99b9826 100644 --- a/src/core/public/overlays/banners/banners_service.test.ts +++ b/src/core/public/overlays/banners/banners_service.test.ts @@ -9,7 +9,7 @@ import { OverlayBannersService, OverlayBannersStart } from './banners_service'; import { take } from 'rxjs/operators'; import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; describe('OverlayBannersService', () => { let service: OverlayBannersStart; diff --git a/src/core/public/overlays/banners/banners_service.tsx b/src/core/public/overlays/banners/banners_service.tsx index a5436d21ef45e..11bc995c059f8 100644 --- a/src/core/public/overlays/banners/banners_service.tsx +++ b/src/core/public/overlays/banners/banners_service.tsx @@ -11,9 +11,9 @@ import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import type { I18nStart } from '@kbn/core-i18n-browser'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { PriorityMap } from './priority_map'; import { BannersList } from './banners_list'; -import { IUiSettingsClient } from '../../ui_settings'; import { MountPoint } from '../../types'; import { UserBannerService } from './user_banner_service'; diff --git a/src/core/public/overlays/banners/user_banner_service.test.ts b/src/core/public/overlays/banners/user_banner_service.test.ts index 52d6d00171261..e0a46cbb7fd6a 100644 --- a/src/core/public/overlays/banners/user_banner_service.test.ts +++ b/src/core/public/overlays/banners/user_banner_service.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { UserBannerService } from './user_banner_service'; import { overlayBannersServiceMock } from './banners_service.mock'; import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; diff --git a/src/core/public/overlays/banners/user_banner_service.tsx b/src/core/public/overlays/banners/user_banner_service.tsx index 175d43ea8ba59..7d3c9eab9b17f 100644 --- a/src/core/public/overlays/banners/user_banner_service.tsx +++ b/src/core/public/overlays/banners/user_banner_service.tsx @@ -15,7 +15,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiCallOut, EuiButton, EuiLoadingSpinner } from '@elastic/eui'; import type { I18nStart } from '@kbn/core-i18n-browser'; -import { IUiSettingsClient } from '../../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { OverlayBannersStart } from './banners_service'; interface StartDeps { diff --git a/src/core/public/overlays/overlay_service.ts b/src/core/public/overlays/overlay_service.ts index 35e839b0e175b..07a8cbea29a37 100644 --- a/src/core/public/overlays/overlay_service.ts +++ b/src/core/public/overlays/overlay_service.ts @@ -8,7 +8,7 @@ import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import type { I18nStart } from '@kbn/core-i18n-browser'; -import { IUiSettingsClient } from '../ui_settings'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { OverlayBannersStart, OverlayBannersService } from './banners'; import { FlyoutService, OverlayFlyoutStart } from './flyout'; import { ModalService, OverlayModalStart } from './modal'; diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index d6b7810f44cd6..dbc3fd253a1c1 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -34,7 +34,7 @@ import { applicationServiceMock } from '../application/application_service.mock' import { overlayServiceMock } from '../overlays/overlay_service.mock'; import { chromeServiceMock } from '../chrome/chrome_service.mock'; import { fatalErrorsServiceMock } from '@kbn/core-fatal-errors-browser-mocks'; -import { uiSettingsServiceMock } from '../ui_settings/ui_settings_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { httpServiceMock } from '@kbn/core-http-browser-mocks'; import type { CoreSetup, CoreStart, PluginInitializerContext } from '..'; import { savedObjectsServiceMock } from '../saved_objects/saved_objects_service.mock'; diff --git a/src/core/public/types.ts b/src/core/public/types.ts index 5b594373e3523..8df8b2c10f179 100644 --- a/src/core/public/types.ts +++ b/src/core/public/types.ts @@ -11,7 +11,7 @@ export type { PublicUiSettingsParams, UserProvidedValues, UiSettingsType, -} from '../types'; +} from '@kbn/core-ui-settings-common'; /** * A function that should mount DOM content inside the provided container element diff --git a/src/core/server/node/integration_tests/logging.test.ts b/src/core/server/node/integration_tests/logging.test.ts new file mode 100644 index 0000000000000..931e56beeab73 --- /dev/null +++ b/src/core/server/node/integration_tests/logging.test.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as kbnTestServer from '../../../test_helpers/kbn_server'; + +function createRootWithRoles(roles: string[]) { + return kbnTestServer.createRoot({ + node: { + roles, + }, + logging: { + appenders: { + 'test-console': { + type: 'console', + layout: { + type: 'json', + }, + }, + }, + root: { + appenders: ['test-console'], + level: 'info', + }, + }, + }); +} + +describe('node service global context', () => { + const validRoles = [['ui', 'background_tasks'], ['ui'], ['background_tasks']]; + + validRoles.forEach((roles) => { + describe(`with node.roles: ${roles}`, () => { + let root: ReturnType; + let mockConsoleLog: jest.SpyInstance; + + beforeAll(async () => { + mockConsoleLog = jest.spyOn(global.console, 'log'); + root = createRootWithRoles(roles); + + await root.preboot(); + await root.setup(); + }, 30000); + + beforeEach(() => { + mockConsoleLog.mockClear(); + }); + + afterAll(async () => { + mockConsoleLog.mockRestore(); + await root.shutdown(); + }); + + it('logs the correct roles in service.node.roles', () => { + const logger = root.logger.get('foo.bar'); + + logger.info('test info'); + + expect(mockConsoleLog).toHaveBeenCalledTimes(1); + expect(JSON.parse(mockConsoleLog.mock.calls[0][0])).toEqual( + expect.objectContaining({ service: { node: { roles } } }) + ); + }); + }); + }); +}); diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 6f5e072aa1fa7..5f811723845c1 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -167,7 +167,7 @@ export class Server { const analyticsPreboot = this.analytics.preboot(); const environmentPreboot = await this.environment.preboot({ analytics: analyticsPreboot }); - const nodePreboot = await this.node.preboot(); + const nodePreboot = await this.node.preboot({ loggingSystem: this.loggingSystem }); // Discover any plugins before continuing. This allows other systems to utilize the plugin dependency graph. this.discoveredPlugins = await this.plugins.discover({ diff --git a/src/core/server/ui_settings/types.ts b/src/core/server/ui_settings/types.ts index c442e37c4b022..a7405e8b75731 100644 --- a/src/core/server/ui_settings/types.ts +++ b/src/core/server/ui_settings/types.ts @@ -5,16 +5,20 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import { + UiSettingsParams, + UserProvidedValues, + PublicUiSettingsParams, +} from '@kbn/core-ui-settings-common'; import { SavedObjectsClientContract } from '../saved_objects/types'; -import { UiSettingsParams, UserProvidedValues, PublicUiSettingsParams } from '../../types'; export type { UiSettingsParams, - PublicUiSettingsParams, DeprecationSettings, + PublicUiSettingsParams, UiSettingsType, UserProvidedValues, -} from '../../types'; +} from '@kbn/core-ui-settings-common'; /** * Server-side client that provides access to the advanced settings stored in elasticsearch. diff --git a/src/core/types/index.ts b/src/core/types/index.ts index 7b9df84770365..005e5fb611cfb 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -12,6 +12,12 @@ */ export * from './capabilities'; export * from './app_category'; -export * from './ui_settings'; export * from './saved_objects'; export type { KibanaExecutionContext } from '@kbn/core-execution-context-common'; +export type { + UiSettingsType, + DeprecationSettings, + UiSettingsParams, + PublicUiSettingsParams, + UserProvidedValues, +} from '@kbn/core-ui-settings-common'; diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index b16dc39c4f50b..0c65b924f14b1 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -53,9 +53,6 @@ export const IGNORE_FILE_GLOBS = [ '**/preview-body.html', '**/preview-head.html', - // filename required by api-extractor - 'api-documenter.json', - // filename must match upstream filenames from lodash 'packages/elastic-safer-lodash-set/**/*', diff --git a/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx b/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx index 7726258b399e2..318db746fbe42 100644 --- a/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx +++ b/src/plugins/dashboard/public/application/embeddable/viewport/dashboard_viewport.tsx @@ -107,12 +107,16 @@ export class DashboardViewport extends React.Component {controlsEnabled ? ( <> - {isEditMode && panelCount !== 0 && controlGroup?.getPanelCount() === 0 ? ( + {!hideAnnouncements && + isEditMode && + panelCount !== 0 && + controlGroup?.getPanelCount() === 0 ? ( { return controlGroup?.getCreateControlButton('callout'); diff --git a/src/plugins/data_views/public/data_views/data_views_api_client.test.mock.ts b/src/plugins/data_views/public/data_views/data_views_api_client.test.mock.ts index 5880bd9fd36fa..fd12291a2bc16 100644 --- a/src/plugins/data_views/public/data_views/data_views_api_client.test.mock.ts +++ b/src/plugins/data_views/public/data_views/data_views_api_client.test.mock.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { setup } from '@kbn/core/test_helpers/http_test_setup'; +import { setup } from '@kbn/core-test-helpers-http-setup-browser'; export const { http } = setup((injectedMetadata) => { injectedMetadata.getBasePath.mockReturnValue('/hola/daro/'); diff --git a/src/plugins/visualizations/public/visualize_app/utils/utils.ts b/src/plugins/visualizations/public/visualize_app/utils/utils.ts index 70ffae134aacf..f122b301af1f8 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/utils.ts +++ b/src/plugins/visualizations/public/visualize_app/utils/utils.ts @@ -102,5 +102,5 @@ export function getVizEditorOriginatingAppUrl(history: History) { } export function isFallbackDataView(dataView?: DataView): dataView is DataView { - return Boolean(dataView && !Object.keys(dataView.getOriginalSavedObjectBody() ?? {}).length); + return Boolean(dataView && !dataView.isPersisted()); } diff --git a/test/analytics/tests/instrumented_events/from_the_browser/click.ts b/test/analytics/tests/instrumented_events/from_the_browser/click.ts index 56e33b13ff6c2..dcf405825e90b 100644 --- a/test/analytics/tests/instrumented_events/from_the_browser/click.ts +++ b/test/analytics/tests/instrumented_events/from_the_browser/click.ts @@ -13,7 +13,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const ebtUIHelper = getService('kibana_ebt_ui'); const { common } = getPageObjects(['common']); - describe('General "click"', () => { + // FLAKY: https://github.com/elastic/kibana/issues/133800 + describe.skip('General "click"', () => { beforeEach(async () => { await common.navigateToApp('home'); // Just clicking the top-nav-button and expecting it's still there... we're just testing the click event generation diff --git a/test/functional/apps/dashboard_elements/controls/controls_callout.ts b/test/functional/apps/dashboard_elements/controls/controls_callout.ts index 73bf8fb50c241..0883957c37d8a 100644 --- a/test/functional/apps/dashboard_elements/controls/controls_callout.ts +++ b/test/functional/apps/dashboard_elements/controls/controls_callout.ts @@ -11,8 +11,12 @@ import { OPTIONS_LIST_CONTROL } from '@kbn/controls-plugin/common'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { + const kibanaServer = getService('kibanaServer'); + const browser = getService('browser'); const testSubjects = getService('testSubjects'); const dashboardAddPanel = getService('dashboardAddPanel'); + const dashboardPanelActions = getService('dashboardPanelActions'); + const { dashboardControls, timePicker, dashboard } = getPageObjects([ 'dashboardControls', 'timePicker', @@ -25,12 +29,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('callout visibility', async () => { before(async () => { await dashboard.gotoDashboardLandingPage(); + await dashboard.clickNewDashboard(); await timePicker.setDefaultDataRange(); await dashboard.saveDashboard('Test Controls Callout'); }); describe('does not show the empty control callout on an empty dashboard', async () => { + before(async () => { + const panelCount = await dashboard.getPanelCount(); + if (panelCount > 0) { + const panels = await dashboard.getAllPanels(); + for (const panel of panels) { + await dashboardPanelActions.removePanel(panel); + } + await dashboard.clickQuickSave(); + } + }); + it('in view mode', async () => { await dashboard.clickCancelOutOfEditMode(); await testSubjects.missingOrFail('controls-empty'); @@ -44,7 +60,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('show the empty control callout on a dashboard with panels', async () => { await dashboard.switchToEditMode(); - await dashboardAddPanel.addVisualization('Rendering-Test:-animal-sounds-pie'); + const panelCount = await dashboard.getPanelCount(); + if (panelCount < 1) { + await dashboardAddPanel.addVisualization('Rendering-Test:-animal-sounds-pie'); + } await testSubjects.existOrFail('controls-empty'); }); @@ -57,6 +76,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.missingOrFail('controls-empty'); }); + it('deleting all controls shows the emoty control callout again', async () => { + await dashboardControls.deleteAllControls(); + await testSubjects.existOrFail('controls-empty'); + }); + + it('hide callout when hide announcement setting is true', async () => { + await dashboard.clickQuickSave(); + await dashboard.gotoDashboardLandingPage(); + await kibanaServer.uiSettings.update({ hideAnnouncements: true }); + await browser.refresh(); + + await dashboard.loadSavedDashboard('Test Controls Callout'); + await dashboard.switchToEditMode(); + await testSubjects.missingOrFail('controls-empty'); + + await kibanaServer.uiSettings.update({ hideAnnouncements: false }); + }); + after(async () => { await dashboard.clickCancelOutOfEditMode(); await dashboard.gotoDashboardLandingPage(); diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index a035e05d9a0f1..7ff6bff172f58 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -42,6 +42,7 @@ export class DashboardPageObject extends FtrService { private readonly header = this.ctx.getPageObject('header'); private readonly visualize = this.ctx.getPageObject('visualize'); private readonly discover = this.ctx.getPageObject('discover'); + private readonly logstashIndex = this.config.get('esTestCluster.ccs') ? 'ftr-remote:logstash-*' : 'logstash-*'; @@ -605,6 +606,11 @@ export class DashboardPageObject extends FtrService { return panels.length; } + public async getAllPanels() { + this.log.debug('getAllPanels'); + return await this.testSubjects.findAll('embeddablePanel'); + } + public getTestVisualizations() { return [ { name: PIE_CHART_VIS_NAME, description: 'PieChart' }, diff --git a/x-pack/plugins/actions/README.md b/x-pack/plugins/actions/README.md index 3c5c459d5a780..c9b60be5e8c14 100644 --- a/x-pack/plugins/actions/README.md +++ b/x-pack/plugins/actions/README.md @@ -3,11 +3,11 @@ The Kibana actions plugin provides a framework to create executable actions. You can: - Register an action type and associate a JavaScript function to run when actions - are executed. + are generated. - Get a list of registered action types - Create an action from an action type and encrypted configuration object. - Get a list of actions that have been created. -- Execute an action, passing it a parameter object. +- Trigger an action, passing it a parameter object. - Perform CRUD operations on actions. --- @@ -81,13 +81,13 @@ Table of Contents **Action Type**: A programatically defined integration with another service, with an expected set of configuration and parameters properties, typically defined with a schema. Plugins can add new action types. -**Action**: A configuration object associated with an action type, that is ready to be executed. The configuration is persisted via Saved Objects, and some/none/all of the configuration properties can be stored encrypted. +**Action**: A configuration object associated with an action type, that is ready to run. The configuration is persisted via Saved Objects, and some/none/all of the configuration properties can be stored encrypted. ## Usage 1. Develop and register an action type (see [Action types -> Example](#example)). 2. Create an action by using the [RESTful API](#restful-api). -3. Use alerts to execute actions or execute manually (see [Firing actions](#firing-actions)). +3. Use alerting rules to generate actions or trigger them manually (see [Firing actions](#firing-actions)). ## Kibana Actions Configuration @@ -99,7 +99,8 @@ Built-In-Actions are configured using the _xpack.actions_ namespace under _kiban #### **allowedHosts** configuration -- You can use the string "*" in the **allowedHosts** configuration in place of a specific hostname to enable Kibana to target any URL, but keep in mind the potential to use such a feature to execute [SSRF](https://www.owasp.org/index.php/Server_Side_Request_Forgery) attacks from your server. +- You can use the string "*" in the **allowedHosts** configuration in place of a specific hostname to enable Kibana to target any URL, but keep in mind the potential to use such a feature to launch [SSRF](https://owasp.org/www-community/attacks/Server_Side_Request_Forgery) attacks from your server. + - The **allowedHosts** configuration applies to built-in action types (such as Slack and PagerDuty). While the _PagerDuty Action Type_ has been configured to support the service's Events API (at _https://events.pagerduty.com/v2/enqueue_, which you can read about in [Pagerduty's documentation](https://v2.developer.pagerduty.com/docs/events-api-v2)), the PagerDuty domain must still be included in the allowedHosts configuration before the action can be used. @@ -130,28 +131,28 @@ The following table describes the properties of the `options` object. | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | | id | Unique identifier for the action type. For convention, ids starting with `.` are reserved for built in action types. We recommend using a convention like `.mySpecialAction` for your action types. | string | | name | A user-friendly name for the action type. These will be displayed in dropdowns when chosing action types. | string | -| maxAttempts | The maximum number of times this action will attempt to execute when scheduled. | number | +| maxAttempts | The maximum number of times this action will attempt to run when scheduled. | number | | minimumLicenseRequired | The license required to use the action type. | string | | validate.params | When developing an action type, it needs to accept parameters to know what to do with the action. (Example `to`, `from`, `subject`, `body` of an email). See the current built-in email action type for an example of the state-of-the-art validation.

Technically, the value of this property should have a property named `validate()` which is a function that takes a params object to validate and returns a sanitized version of that object to pass to the execution function. Validation errors should be thrown from the `validate()` function and will be available as an error message | schema / validation function | | validate.config | Similar to params, a config may be required when creating an action (for example `host` and `port` for an email server). | schema / validation function | | validate.secrets | Similar to params, a secrets object may be required when creating an action (for example `user` and `password` for an email server). | schema / validation function | -| executor | This is where the code of an action type lives. This is a function gets called for executing an action from either alerting or manually by using the exposed function (see firing actions). For full details, see executor section below. | Function | +| executor | This is where the code of an action type lives. This is a function gets called for generating an action from either alerting or manually by using the exposed function (see firing actions). For full details, see executor section below. | Function | | renderParameterTemplates | Optionally define a function to provide custom rendering for this action type. | Function | **Important** - The config object is persisted in ElasticSearch and updated via the ElasticSearch update document API. This API allows "partial updates" - and this can cause issues with the encryption used on specified properties. So, a `validate()` function should return values for all configuration properties, so that partial updates do not occur. Setting property values to `null` rather than `undefined`, or not including a property in the config object, is all you need to do to ensure partial updates won't occur. ### Executor -This is the primary function for an action type. Whenever the action needs to execute, this function will perform the action. It receives a variety of parameters. The following table describes the properties that the executor receives. +This is the primary function for an action type. Whenever the action needs to run, this function will perform the action. It receives a variety of parameters. The following table describes the properties that the executor receives. **executor(options)** | Property | Description | | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| actionId | The action saved object id that the action type is executing for. | +| actionId | The action saved object id that the connector is generating. | | config | The action configuration. If you would like to validate the config before being passed to the executor, define `validate.config` within the action type. | | secrets | The decrypted secrets object given to an action. This comes from the action saved object that is partially or fully encrypted within the data store. If you would like to validate the secrets object before being passed to the executor, define `validate.secrets` within the action type. | -| params | Parameters for the execution. These will be given at execution time by either an alert or manually provided when calling the plugin provided execute function. | +| params | Parameters for the action. These will be given at run time by either an alert or manually provided when calling the plugin provided execute function. | | services.scopedClusterClient | Use this to do Elasticsearch queries on the cluster Kibana connects to. Serves the same purpose as the normal IClusterClient, but exposes an additional `asCurrentUser` method that doesn't use credentials of the Kibana internal user (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API instead. | | services.savedObjectsClient | This is an instance of the saved objects client. This provides the ability to do CRUD on any saved objects within the same space the alert lives in.

The scope of the saved objects client is tied to the user in context calling the execute API or the API key provided to the execute plugin function (only when security isenabled). | | services.log(tags, [data], [timestamp]) | Use this to create server logs. (This is the same function as server.log) | @@ -176,7 +177,7 @@ By providing the user's Request you'll receive an instance of the ActionsClient const actionsClient = server.plugins.actions.getActionsClientWithRequest(request); ``` -Once you have a scoped ActionsClient you can execute an action by caling either the `enqueueExecution` which will schedule the action to run later or the `execute` apis which will run it immediately and return the result respectively. +Once you have a scoped ActionsClient you can generate an action by calling either the `enqueueExecution` which will schedule the action to run later or the `execute` apis which will run it immediately and return the result respectively. ### actionsClient.enqueueExecution(options) @@ -191,7 +192,7 @@ The following table describes the properties of the `options` object. | Property | Description | Type | | -------- | ------------------------------------------------------------------------------------------------------ | ---------------- | -| id | The id of the action you want to execute. | string | +| id | The id of the action you want to run. | string | | params | The `params` value to give the action type executor. | object | | spaceId | The space id the action is within. | string | | apiKey | The Elasticsearch API key to use for context. (Note: only required and used when security is enabled). | string | @@ -225,7 +226,7 @@ The following table describes the properties of the `options` object. | Property | Description | Type | | -------- | ------------------------------------------------------------------------------------- | ---------------- | -| id | The id of the action you want to execute. | string | +| id | The id of the action you want to generate. | string | | params | The `params` value to give the action type executor. | object | | source | The source of the execution, either an HTTP request or a reference to a Saved Object. | object, optional | diff --git a/x-pack/plugins/cases/docs/openapi/bundled.json b/x-pack/plugins/cases/docs/openapi/bundled.json index ef89279600760..9482e4489d875 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.json +++ b/x-pack/plugins/cases/docs/openapi/bundled.json @@ -2699,44 +2699,30 @@ } ] }, - "/api/cases/{caseId}/comments": { - "post": { - "summary": "Adds a comment or alert to a case in the default space.", - "operationId": "addCaseCommentDefaultSpace", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", + "/api/cases/{caseId}": { + "get": { + "summary": "Retrieves information about a case in the default space.", + "operationId": "getCaseDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/kbn_xsrf" + "$ref": "#/components/parameters/case_id" }, { - "$ref": "#/components/parameters/case_id" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/add_alert_comment_request_properties" - }, - { - "$ref": "#/components/schemas/add_user_comment_request_properties" - } - ] - }, - "examples": { - "createCaseCommentRequest": { - "$ref": "#/components/examples/add_comment_request" - } - } + "in": "query", + "name": "includeComments", + "description": "Determines whether case comments are returned.", + "deprecated": true, + "schema": { + "type": "boolean", + "default": true } } - }, + ], "responses": { "200": { "description": "Indicates a successful call.", @@ -3013,8 +2999,8 @@ } }, "examples": { - "createCaseCommentResponse": { - "$ref": "#/components/examples/add_comment_response" + "getCaseResponse": { + "$ref": "#/components/examples/get_case_response" } } } @@ -3027,37 +3013,17 @@ } ] }, - "delete": { - "summary": "Deletes all comments and alerts from a case in the default space.", - "operationId": "deleteCaseCommentsDefaultSpace", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "$ref": "#/components/parameters/case_id" - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "patch": { - "summary": "Updates a comment or alert in a case in the default space.", - "operationId": "updateCaseCommentDefaultSpace", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.\n", + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/comments": { + "post": { + "summary": "Adds a comment or alert to a case in the default space.", + "operationId": "addCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", "tags": [ "cases", "kibana" @@ -3076,16 +3042,16 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/update_alert_comment_request_properties" + "$ref": "#/components/schemas/add_alert_comment_request_properties" }, { - "$ref": "#/components/schemas/update_user_comment_request_properties" + "$ref": "#/components/schemas/add_user_comment_request_properties" } ] }, "examples": { - "updateCaseCommentRequest": { - "$ref": "#/components/examples/update_comment_request" + "createCaseCommentRequest": { + "$ref": "#/components/examples/add_comment_request" } } } @@ -3367,8 +3333,8 @@ } }, "examples": { - "updateCaseCommentResponse": { - "$ref": "#/components/examples/update_comment_response" + "createCaseCommentResponse": { + "$ref": "#/components/examples/add_comment_response" } } } @@ -3381,59 +3347,9 @@ } ] }, - "get": { - "summary": "Retrieves all the comments from a case in the default space.", - "operationId": "getAllCaseCommentsDefaultSpace", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", - "tags": [ - "cases", - "kibana" - ], - "deprecated": true, - "parameters": [ - { - "$ref": "#/components/parameters/case_id" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/alert_comment_response_properties" - }, - { - "$ref": "#/components/schemas/user_comment_response_properties" - } - ] - } - } - }, - "examples": {} - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/api/cases/{caseId}/comments/{commentId}": { "delete": { - "summary": "Deletes a comment or alert from a case in the default space.", - "operationId": "deleteCaseCommentDefaultSpace", + "summary": "Deletes all comments and alerts from a case in the default space.", + "operationId": "deleteCaseCommentsDefaultSpace", "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", "tags": [ "cases", @@ -3445,9 +3361,6 @@ }, { "$ref": "#/components/parameters/case_id" - }, - { - "$ref": "#/components/parameters/comment_id" } ], "responses": { @@ -3461,239 +3374,56 @@ } ] }, - "get": { - "summary": "Retrieves a comment from a case in the default space.", - "operationId": "getCaseCommentDefaultSpace", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", + "patch": { + "summary": "Updates a comment or alert in a case in the default space.", + "operationId": "updateCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.\n", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/case_id" + "$ref": "#/components/parameters/kbn_xsrf" }, { - "$ref": "#/components/parameters/comment_id" + "$ref": "#/components/parameters/case_id" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/update_alert_comment_request_properties" + }, + { + "$ref": "#/components/schemas/update_user_comment_request_properties" + } + ] + }, + "examples": { + "updateCaseCommentRequest": { + "$ref": "#/components/examples/update_comment_request" + } + } + } + } + }, "responses": { "200": { "description": "Indicates a successful call.", "content": { "application/json; charset=utf-8": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/alert_comment_response_properties" - }, - { - "$ref": "#/components/schemas/user_comment_response_properties" - } - ] - }, - "examples": { - "getCaseCommentResponse": { - "$ref": "#/components/examples/get_comment_response" - } - } - } - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases": { - "post": { - "summary": "Creates a case.", - "operationId": "createCase", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "$ref": "#/components/parameters/space_id" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "connector": { - "description": "An object that contains the connector configuration.", - "type": "object", - "properties": { - "fields": { - "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", - "nullable": true, - "type": "object", - "properties": { - "caseId": { - "description": "The case identifier for Swimlane connectors.", - "type": "string" - }, - "category": { - "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", - "type": "string" - }, - "destIp": { - "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", - "type": "string" - }, - "impact": { - "description": "The effect an incident had on business for ServiceNow ITSM connectors.", - "type": "string" - }, - "issueType": { - "description": "The type of issue for Jira connectors.", - "type": "string" - }, - "issueTypes": { - "description": "The type of incident for IBM Resilient connectors.", - "type": "array", - "items": { - "type": "number" - } - }, - "malwareHash": { - "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", - "type": "string" - }, - "malwareUrl": { - "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", - "type": "string" - }, - "parent": { - "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", - "type": "string" - }, - "priority": { - "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", - "type": "string" - }, - "severity": { - "description": "The severity of the incident for ServiceNow ITSM connectors.", - "type": "string" - }, - "severityCode": { - "description": "The severity code of the incident for IBM Resilient connectors.", - "type": "number" - }, - "sourceIp": { - "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", - "type": "string" - }, - "subcategory": { - "description": "The subcategory of the incident for ServiceNow ITSM connectors.", - "type": "string" - }, - "urgency": { - "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", - "type": "string" - } - }, - "example": null - }, - "id": { - "description": "The identifier for the connector. To create a case without a connector, use `none`.", - "type": "string", - "example": "none" - }, - "name": { - "description": "The name of the connector. To create a case without a connector, use `none`.", - "type": "string", - "example": "none" - }, - "type": { - "$ref": "#/components/schemas/connector_types" - } - }, - "required": [ - "fields", - "id", - "name", - "type" - ] - }, - "description": { - "description": "The description for the case.", - "type": "string" - }, - "owner": { - "$ref": "#/components/schemas/owners" - }, - "settings": { - "description": "An object that contains the case settings.", - "type": "object", - "properties": { - "syncAlerts": { - "description": "Turns alert syncing on or off.", - "type": "boolean" - } - } - }, - "severity": { - "$ref": "#/components/schemas/severity_property" - }, - "tags": { - "description": "The words and phrases that help categorize cases. It can be an empty array.", - "type": "array", - "items": { - "type": "string" - } - }, - "title": { - "description": "A title for the case.", - "type": "string" - } - }, - "required": [ - "connector", - "description", - "owner", - "settings", - "tags", - "title" - ] - }, - "examples": { - "createCaseRequest": { - "$ref": "#/components/examples/create_case_request" - } - } - } - } - }, - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "object", - "properties": { - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "example": null + "type": "object", + "properties": { + "closed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null }, "closed_by": { "type": "object", @@ -3957,8 +3687,8 @@ } }, "examples": { - "createCaseResponse": { - "$ref": "#/components/examples/create_case_response" + "updateCaseCommentResponse": { + "$ref": "#/components/examples/update_comment_response" } } } @@ -3971,10 +3701,60 @@ } ] }, + "get": { + "summary": "Retrieves all the comments from a case in the default space.", + "operationId": "getAllCaseCommentsDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", + "tags": [ + "cases", + "kibana" + ], + "deprecated": true, + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + } + } + }, + "examples": {} + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/comments/{commentId}": { "delete": { - "summary": "Deletes one or more cases.", - "operationId": "deleteCase", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "summary": "Deletes a comment or alert from a case in the default space.", + "operationId": "deleteCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", "tags": [ "cases", "kibana" @@ -3984,17 +3764,10 @@ "$ref": "#/components/parameters/kbn_xsrf" }, { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/case_id" }, { - "name": "ids", - "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.", - "in": "query", - "required": true, - "schema": { - "type": "string" - }, - "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + "$ref": "#/components/parameters/comment_id" } ], "responses": { @@ -4008,54 +3781,601 @@ } ] }, - "patch": { - "summary": "Updates one or more cases.", - "operationId": "updateCase", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating.\n", + "get": { + "summary": "Retrieves a comment from a case in the default space.", + "operationId": "getCaseCommentDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/kbn_xsrf" + "$ref": "#/components/parameters/case_id" }, { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/comment_id" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cases": { - "type": "array", - "items": { - "type": "object", - "properties": { - "connector": { - "description": "An object that contains the connector configuration.", - "type": "object", - "properties": { - "fields": { - "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", - "nullable": true, - "type": "object", - "properties": { - "caseId": { - "description": "The case identifier for Swimlane connectors.", - "type": "string" - }, - "category": { - "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", - "type": "string" - }, - "destIp": { - "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", - "type": "string" - }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "examples": { + "getCaseCommentResponse": { + "$ref": "#/components/examples/get_comment_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases": { + "post": { + "summary": "Creates a case.", + "operationId": "createCase", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connector": { + "description": "An object that contains the connector configuration.", + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + }, + "required": [ + "fields", + "id", + "name", + "type" + ] + }, + "description": { + "description": "The description for the case.", + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "description": "An object that contains the case settings.", + "type": "object", + "properties": { + "syncAlerts": { + "description": "Turns alert syncing on or off.", + "type": "boolean" + } + } + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "tags": { + "description": "The words and phrases that help categorize cases. It can be an empty array.", + "type": "array", + "items": { + "type": "string" + } + }, + "title": { + "description": "A title for the case.", + "type": "string" + } + }, + "required": [ + "connector", + "description", + "owner", + "settings", + "tags", + "title" + ] + }, + "examples": { + "createCaseRequest": { + "$ref": "#/components/examples/create_case_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "object", + "properties": { + "closed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "closed_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "nullable": true, + "example": null + }, + "comments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "example": [] + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-05-13T09:16:17.416Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + } + }, + "description": { + "type": "string", + "example": "A case description." + }, + "duration": { + "type": "integer", + "description": "The elapsed time from the creation of the case to its closure (in seconds). If the case has not been closed, the duration is set to null. If the case was closed after less than half a second, the duration is rounded down to zero.\n", + "example": 120 + }, + "external_service": { + "type": "object", + "properties": { + "connector_id": { + "type": "string" + }, + "connector_name": { + "type": "string" + }, + "external_id": { + "type": "string" + }, + "external_title": { + "type": "string" + }, + "external_url": { + "type": "string" + }, + "pushed_at": { + "type": "string", + "format": "date-time" + }, + "pushed_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "nullable": true, + "example": null + } + } + }, + "id": { + "type": "string", + "example": "66b9aa00-94fa-11ea-9f74-e7e108796192" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "type": "object", + "properties": { + "syncAlerts": { + "type": "boolean", + "example": true + } + } + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "status": { + "$ref": "#/components/schemas/status" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "tag-1" + ] + }, + "title": { + "type": "string", + "example": "Case title 1" + }, + "totalAlerts": { + "type": "integer", + "example": 0 + }, + "totalComment": { + "type": "integer", + "example": 0 + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "nullable": true, + "example": null + }, + "version": { + "type": "string", + "example": "WzUzMiwxXQ==" + } + } + }, + "examples": { + "createCaseResponse": { + "$ref": "#/components/examples/create_case_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "delete": { + "summary": "Deletes one or more cases.", + "operationId": "deleteCase", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + }, + { + "name": "ids", + "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.", + "in": "query", + "required": true, + "schema": { + "type": "string" + }, + "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "patch": { + "summary": "Updates one or more cases.", + "operationId": "updateCase", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cases": { + "type": "array", + "items": { + "type": "object", + "properties": { + "connector": { + "description": "An object that contains the connector configuration.", + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, "impact": { "description": "The effect an incident had on business for ServiceNow ITSM connectors.", "type": "string" @@ -5979,47 +6299,228 @@ "schema": { "type": "array", "items": { - "type": "object", - "properties": { - "actionTypeId": { - "$ref": "#/components/schemas/connector_types" - }, - "config": { - "type": "object", - "properties": { - "apiUrl": { - "type": "string" - }, - "projectKey": { - "type": "string" - } - }, - "additionalProperties": true - }, - "id": { - "type": "string" - }, - "isDeprecated": { - "type": "boolean" - }, - "isMissingSecrets": { - "type": "boolean" - }, - "isPreconfigured": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "referencedByCount": { - "type": "integer" - } - } + "type": "object", + "properties": { + "actionTypeId": { + "$ref": "#/components/schemas/connector_types" + }, + "config": { + "type": "object", + "properties": { + "apiUrl": { + "type": "string" + }, + "projectKey": { + "type": "string" + } + }, + "additionalProperties": true + }, + "id": { + "type": "string" + }, + "isDeprecated": { + "type": "boolean" + }, + "isMissingSecrets": { + "type": "boolean" + }, + "isPreconfigured": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "referencedByCount": { + "type": "integer" + } + } + } + }, + "examples": { + "findConnectorResponse": { + "$ref": "#/components/examples/find_connector_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/reporters": { + "get": { + "summary": "Returns information about the users who opened cases.", + "operationId": "getCaseReporters", + "description": "You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/space_id" + }, + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + }, + "examples": { + "getReportersResponse": { + "$ref": "#/components/examples/get_reporters_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/status": { + "get": { + "summary": "Returns the number of cases that are open, closed, and in progress.", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "deprecated": true, + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/space_id" + }, + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "object", + "properties": { + "count_closed_cases": { + "type": "integer" + }, + "count_in_progress_cases": { + "type": "integer" + }, + "count_open_cases": { + "type": "integer" + } + } + }, + "examples": { + "getStatusResponse": { + "$ref": "#/components/examples/get_status_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/tags": { + "get": { + "summary": "Aggregates and returns a list of case tags.", + "operationId": "getCaseTags", + "description": "You must have read privileges for the **Cases*** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/space_id" + }, + { + "in": "query", + "name": "owner", + "description": "A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read.", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/owners" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/owners" + } + } + ] + } + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "type": "string" } }, "examples": { - "findConnectorResponse": { - "$ref": "#/components/examples/find_connector_response" + "getTagsResponse": { + "$ref": "#/components/examples/get_tags_response" } } } @@ -6038,21 +6539,31 @@ } ] }, - "/s/{spaceId}/api/cases/reporters": { + "/s/{spaceId}/api/cases/{caseId}": { "get": { - "summary": "Returns information about the users who opened cases.", - "operationId": "getCaseReporters", - "description": "You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.\n", + "summary": "Retrieves information about a case.", + "operationId": "getCase", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", "tags": [ "cases", "kibana" ], "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, { "$ref": "#/components/parameters/space_id" }, { - "$ref": "#/components/parameters/owner" + "in": "query", + "name": "includeComments", + "description": "Determines whether case comments are returned.", + "deprecated": true, + "schema": { + "type": "boolean", + "default": true + } } ], "responses": { @@ -6061,146 +6572,278 @@ "content": { "application/json; charset=utf-8": { "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "email": { - "type": "string" + "type": "object", + "properties": { + "closed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "closed_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } }, - "full_name": { + "nullable": true, + "example": null + }, + "comments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "example": [] + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-05-13T09:16:17.416Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + } + }, + "description": { + "type": "string", + "example": "A case description." + }, + "duration": { + "type": "integer", + "description": "The elapsed time from the creation of the case to its closure (in seconds). If the case has not been closed, the duration is set to null. If the case was closed after less than half a second, the duration is rounded down to zero.\n", + "example": 120 + }, + "external_service": { + "type": "object", + "properties": { + "connector_id": { + "type": "string" + }, + "connector_name": { + "type": "string" + }, + "external_id": { + "type": "string" + }, + "external_title": { + "type": "string" + }, + "external_url": { + "type": "string" + }, + "pushed_at": { + "type": "string", + "format": "date-time" + }, + "pushed_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "nullable": true, + "example": null + } + } + }, + "id": { + "type": "string", + "example": "66b9aa00-94fa-11ea-9f74-e7e108796192" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "type": "object", + "properties": { + "syncAlerts": { + "type": "boolean", + "example": true + } + } + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "status": { + "$ref": "#/components/schemas/status" + }, + "tags": { + "type": "array", + "items": { "type": "string" }, - "username": { - "type": "string" - } - } - } - }, - "examples": { - "getReportersResponse": { - "$ref": "#/components/examples/get_reporters_response" - } - } - } - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases/status": { - "get": { - "summary": "Returns the number of cases that are open, closed, and in progress.", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", - "deprecated": true, - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/space_id" - }, - { - "$ref": "#/components/parameters/owner" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "object", - "properties": { - "count_closed_cases": { - "type": "integer" + "example": [ + "tag-1" + ] }, - "count_in_progress_cases": { - "type": "integer" + "title": { + "type": "string", + "example": "Case title 1" }, - "count_open_cases": { - "type": "integer" + "totalAlerts": { + "type": "integer", + "example": 0 + }, + "totalComment": { + "type": "integer", + "example": 0 + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "nullable": true, + "example": null + }, + "version": { + "type": "string", + "example": "WzUzMiwxXQ==" } } }, "examples": { - "getStatusResponse": { - "$ref": "#/components/examples/get_status_response" - } - } - } - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases/tags": { - "get": { - "summary": "Aggregates and returns a list of case tags.", - "operationId": "getCaseTags", - "description": "You must have read privileges for the **Cases*** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/space_id" - }, - { - "in": "query", - "name": "owner", - "description": "A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read.", - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/owners" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/owners" - } - } - ] - } - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "examples": { - "getTagsResponse": { - "$ref": "#/components/examples/get_tags_response" + "getCaseResponse": { + "$ref": "#/components/examples/get_case_response" } } } @@ -7857,6 +8500,67 @@ "tag 2" ] }, + "get_case_response": { + "summary": "Retrieves information about a case including its comments.", + "value": { + "id": "31cdada0-02c1-11ed-85f2-4f7c222ca2fa", + "version": "WzM2LDFd", + "comments": [ + { + "id": "2134c1d0-02c2-11ed-85f2-4f7c222ca2fa", + "version": "WzM3LDFd", + "type": "user", + "owner": "cases", + "comment": "A new comment", + "created_at": "2022-07-13T15:40:32.335Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "pushed_at": null, + "pushed_by": null, + "updated_at": null, + "updated_by": null + } + ], + "totalComment": 1, + "totalAlerts": 0, + "title": "Case title 1", + "tags": [ + "tag 1" + ], + "settings": { + "syncAlerts": true + }, + "owner": "cases", + "description": "A case description", + "duration": null, + "severity": "low", + "closed_at": null, + "closed_by": null, + "created_at": "2022-07-13T15:33:50.604Z", + "created_by": { + "username": "elastic", + "email": null, + "full_name": null + }, + "status": "open", + "updated_at": "2022-07-13T15:40:32.335Z", + "updated_by": { + "full_name": null, + "email": null, + "username": "elastic" + }, + "connector": { + "id": "none", + "name": "none", + "type": ".none", + "fields": null + }, + "external_service": null + } + }, "add_comment_request": { "summary": "Adds a comment to a case.", "value": { diff --git a/x-pack/plugins/cases/docs/openapi/bundled.yaml b/x-pack/plugins/cases/docs/openapi/bundled.yaml index 57b3c4647887c..57b01b3f05365 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.yaml +++ b/x-pack/plugins/cases/docs/openapi/bundled.yaml @@ -2259,6 +2259,266 @@ paths: - url: https://localhost:5601 servers: - url: https://localhost:5601 + /api/cases/{caseId}: + get: + summary: Retrieves information about a case in the default space. + operationId: getCaseDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + - kibana + parameters: + - $ref: '#/components/parameters/case_id' + - in: query + name: includeComments + description: Determines whether case comments are returned. + deprecated: true + schema: + type: boolean + default: true + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + closed_at: + type: string + format: date-time + nullable: true + example: null + closed_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + comments: + type: array + items: + oneOf: + - $ref: >- + #/components/schemas/alert_comment_response_properties + - $ref: >- + #/components/schemas/user_comment_response_properties + example: [] + connector: + type: object + properties: + fields: + description: >- + An object containing the connector fields. To create a + case without a connector, specify null. If you want to + omit any individual field, specify null as its value. + nullable: true + type: object + properties: + caseId: + description: The case identifier for Swimlane connectors. + type: string + category: + description: >- + The category of the incident for ServiceNow ITSM + and ServiceNow SecOps connectors. + type: string + destIp: + description: >- + A comma-separated list of destination IPs for + ServiceNow SecOps connectors. + type: string + impact: + description: >- + The effect an incident had on business for + ServiceNow ITSM connectors. + type: string + issueType: + description: The type of issue for Jira connectors. + type: string + issueTypes: + description: The type of incident for IBM Resilient connectors. + type: array + items: + type: number + malwareHash: + description: >- + A comma-separated list of malware hashes for + ServiceNow SecOps connectors. + type: string + malwareUrl: + description: >- + A comma-separated list of malware URLs for + ServiceNow SecOps connectors. + type: string + parent: + description: >- + The key of the parent issue, when the issue type + is sub-task for Jira connectors. + type: string + priority: + description: >- + The priority of the issue for Jira and ServiceNow + SecOps connectors. + type: string + severity: + description: >- + The severity of the incident for ServiceNow ITSM + connectors. + type: string + severityCode: + description: >- + The severity code of the incident for IBM + Resilient connectors. + type: number + sourceIp: + description: >- + A comma-separated list of source IPs for + ServiceNow SecOps connectors. + type: string + subcategory: + description: >- + The subcategory of the incident for ServiceNow + ITSM connectors. + type: string + urgency: + description: >- + The extent to which the incident resolution can be + delayed for ServiceNow ITSM connectors. + type: string + example: null + id: + description: >- + The identifier for the connector. To create a case + without a connector, use `none`. + type: string + example: none + name: + description: >- + The name of the connector. To create a case without a + connector, use `none`. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-05-13T09:16:17.416Z' + created_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + description: + type: string + example: A case description. + duration: + type: integer + description: > + The elapsed time from the creation of the case to its + closure (in seconds). If the case has not been closed, the + duration is set to null. If the case was closed after less + than half a second, the duration is rounded down to zero. + example: 120 + external_service: + type: object + properties: + connector_id: + type: string + connector_name: + type: string + external_id: + type: string + external_title: + type: string + external_url: + type: string + pushed_at: + type: string + format: date-time + pushed_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + id: + type: string + example: 66b9aa00-94fa-11ea-9f74-e7e108796192 + owner: + $ref: '#/components/schemas/owners' + settings: + type: object + properties: + syncAlerts: + type: boolean + example: true + severity: + $ref: '#/components/schemas/severity_property' + status: + $ref: '#/components/schemas/status' + tags: + type: array + items: + type: string + example: + - tag-1 + title: + type: string + example: Case title 1 + totalAlerts: + type: integer + example: 0 + totalComment: + type: integer + example: 0 + updated_at: + type: string + format: date-time + nullable: true + example: null + updated_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + version: + type: string + example: WzUzMiwxXQ== + examples: + getCaseResponse: + $ref: '#/components/examples/get_case_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 /api/cases/{caseId}/comments: post: summary: Adds a comment or alert to a case in the default space. @@ -5139,12 +5399,273 @@ paths: - url: https://localhost:5601 servers: - url: https://localhost:5601 - /s/{spaceId}/api/cases/{caseId}/comments: - post: - summary: Adds a comment or alert to a case. - operationId: addCaseComment + /s/{spaceId}/api/cases/{caseId}: + get: + summary: Retrieves information about a case. + operationId: getCase description: > - You must have `all` privileges for the **Cases** feature in the + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + - kibana + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/space_id' + - in: query + name: includeComments + description: Determines whether case comments are returned. + deprecated: true + schema: + type: boolean + default: true + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + closed_at: + type: string + format: date-time + nullable: true + example: null + closed_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + comments: + type: array + items: + oneOf: + - $ref: >- + #/components/schemas/alert_comment_response_properties + - $ref: >- + #/components/schemas/user_comment_response_properties + example: [] + connector: + type: object + properties: + fields: + description: >- + An object containing the connector fields. To create a + case without a connector, specify null. If you want to + omit any individual field, specify null as its value. + nullable: true + type: object + properties: + caseId: + description: The case identifier for Swimlane connectors. + type: string + category: + description: >- + The category of the incident for ServiceNow ITSM + and ServiceNow SecOps connectors. + type: string + destIp: + description: >- + A comma-separated list of destination IPs for + ServiceNow SecOps connectors. + type: string + impact: + description: >- + The effect an incident had on business for + ServiceNow ITSM connectors. + type: string + issueType: + description: The type of issue for Jira connectors. + type: string + issueTypes: + description: The type of incident for IBM Resilient connectors. + type: array + items: + type: number + malwareHash: + description: >- + A comma-separated list of malware hashes for + ServiceNow SecOps connectors. + type: string + malwareUrl: + description: >- + A comma-separated list of malware URLs for + ServiceNow SecOps connectors. + type: string + parent: + description: >- + The key of the parent issue, when the issue type + is sub-task for Jira connectors. + type: string + priority: + description: >- + The priority of the issue for Jira and ServiceNow + SecOps connectors. + type: string + severity: + description: >- + The severity of the incident for ServiceNow ITSM + connectors. + type: string + severityCode: + description: >- + The severity code of the incident for IBM + Resilient connectors. + type: number + sourceIp: + description: >- + A comma-separated list of source IPs for + ServiceNow SecOps connectors. + type: string + subcategory: + description: >- + The subcategory of the incident for ServiceNow + ITSM connectors. + type: string + urgency: + description: >- + The extent to which the incident resolution can be + delayed for ServiceNow ITSM connectors. + type: string + example: null + id: + description: >- + The identifier for the connector. To create a case + without a connector, use `none`. + type: string + example: none + name: + description: >- + The name of the connector. To create a case without a + connector, use `none`. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-05-13T09:16:17.416Z' + created_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + description: + type: string + example: A case description. + duration: + type: integer + description: > + The elapsed time from the creation of the case to its + closure (in seconds). If the case has not been closed, the + duration is set to null. If the case was closed after less + than half a second, the duration is rounded down to zero. + example: 120 + external_service: + type: object + properties: + connector_id: + type: string + connector_name: + type: string + external_id: + type: string + external_title: + type: string + external_url: + type: string + pushed_at: + type: string + format: date-time + pushed_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + id: + type: string + example: 66b9aa00-94fa-11ea-9f74-e7e108796192 + owner: + $ref: '#/components/schemas/owners' + settings: + type: object + properties: + syncAlerts: + type: boolean + example: true + severity: + $ref: '#/components/schemas/severity_property' + status: + $ref: '#/components/schemas/status' + tags: + type: array + items: + type: string + example: + - tag-1 + title: + type: string + example: Case title 1 + totalAlerts: + type: integer + example: 0 + totalComment: + type: integer + example: 0 + updated_at: + type: string + format: date-time + nullable: true + example: null + updated_by: + type: object + properties: + email: + type: string + full_name: + type: string + username: + type: string + nullable: true + example: null + version: + type: string + example: WzUzMiwxXQ== + examples: + getCaseResponse: + $ref: '#/components/examples/get_case_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /s/{spaceId}/api/cases/{caseId}/comments: + post: + summary: Adds a comment or alert to a case. + operationId: addCaseComment + description: > + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating. tags: @@ -6432,6 +6953,56 @@ components: - security - tag 1 - tag 2 + get_case_response: + summary: Retrieves information about a case including its comments. + value: + id: 31cdada0-02c1-11ed-85f2-4f7c222ca2fa + version: WzM2LDFd + comments: + - id: 2134c1d0-02c2-11ed-85f2-4f7c222ca2fa + version: WzM3LDFd + type: user + owner: cases + comment: A new comment + created_at: '2022-07-13T15:40:32.335Z' + created_by: + email: null + full_name: null + username: elastic + pushed_at: null + pushed_by: null + updated_at: null + updated_by: null + totalComment: 1 + totalAlerts: 0 + title: Case title 1 + tags: + - tag 1 + settings: + syncAlerts: true + owner: cases + description: A case description + duration: null + severity: low + closed_at: null + closed_by: null + created_at: '2022-07-13T15:33:50.604Z' + created_by: + username: elastic + email: null + full_name: null + status: open + updated_at: '2022-07-13T15:40:32.335Z' + updated_by: + full_name: null + email: null + username: elastic + connector: + id: none + name: none + type: .none + fields: null + external_service: null add_comment_request: summary: Adds a comment to a case. value: diff --git a/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml new file mode 100644 index 0000000000000..936a21a5cfc70 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml @@ -0,0 +1,44 @@ +summary: Retrieves information about a case including its comments. +value: + { + "id":"31cdada0-02c1-11ed-85f2-4f7c222ca2fa", + "version":"WzM2LDFd", + "comments":[{ + "id":"2134c1d0-02c2-11ed-85f2-4f7c222ca2fa", + "version":"WzM3LDFd", + "type":"user", + "owner":"cases", + "comment":"A new comment", + "created_at":"2022-07-13T15:40:32.335Z", + "created_by":{ + "email":null, + "full_name":null, + "username":"elastic" + }, + "pushed_at":null, + "pushed_by":null, + "updated_at":null, + "updated_by":null + }], + "totalComment":1, + "totalAlerts":0, + "title":"Case title 1", + "tags":["tag 1"], + "settings":{"syncAlerts":true}, + "owner":"cases", + "description":"A case description", + "duration":null, + "severity":"low", + "closed_at":null, + "closed_by":null, + "created_at":"2022-07-13T15:33:50.604Z", + "created_by":{"username":"elastic","email":null,"full_name":null},"status":"open", + "updated_at":"2022-07-13T15:40:32.335Z", + "updated_by":{"full_name":null,"email":null,"username":"elastic"},"connector":{ + "id":"none", + "name":"none", + "type":".none", + "fields":null + }, + "external_service":null + } \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/examples/get_status.yaml b/x-pack/plugins/cases/docs/openapi/components/examples/get_status_response.yaml similarity index 100% rename from x-pack/plugins/cases/docs/openapi/components/examples/get_status.yaml rename to x-pack/plugins/cases/docs/openapi/components/examples/get_status_response.yaml diff --git a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml index c32112eacbda0..7e05b510d5375 100644 --- a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml +++ b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml @@ -35,8 +35,8 @@ paths: $ref: 'paths/api@cases@status.yaml' '/api/cases/tags': $ref: 'paths/api@cases@tags.yaml' -# '/api/cases/{caseId}': -# $ref: 'paths/api@cases@{caseid}.yaml' + '/api/cases/{caseId}': + $ref: 'paths/api@cases@{caseid}.yaml' # '/api/cases/{caseId}/alerts': # $ref: 'paths/api@cases@{caseid}@alerts.yaml' '/api/cases/{caseId}/comments': @@ -66,8 +66,8 @@ paths: $ref: 'paths/s@{spaceid}@api@cases@status.yaml' '/s/{spaceId}/api/cases/tags': $ref: 'paths/s@{spaceid}@api@cases@tags.yaml' - # '/s/{spaceId}/api/cases/{caseId}': - # $ref: 'paths/s@{spaceid}@api@cases@{caseid}.yaml' + '/s/{spaceId}/api/cases/{caseId}': + $ref: 'paths/s@{spaceid}@api@cases@{caseid}.yaml' # '/s/{spaceId}/api/cases/{caseId}/alerts': # $ref: 'paths/s@{spaceid}@api@cases@{caseid}@alerts.yaml' '/s/{spaceId}/api/cases/{caseId}/comments': diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml new file mode 100644 index 0000000000000..7290e5f5fdfba --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml @@ -0,0 +1,35 @@ +get: + summary: Retrieves information about a case in the default space. + operationId: getCaseDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + - kibana + parameters: + - $ref: ../components/parameters/case_id.yaml + - in: query + name: includeComments + description: Determines whether case comments are returned. + deprecated: true + schema: + type: boolean + default: true + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + getCaseResponse: + $ref: '../components/examples/get_case_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml new file mode 100644 index 0000000000000..30c33a27a37f6 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml @@ -0,0 +1,36 @@ +get: + summary: Retrieves information about a case. + operationId: getCase + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + - kibana + parameters: + - $ref: ../components/parameters/case_id.yaml + - $ref: '../components/parameters/space_id.yaml' + - in: query + name: includeComments + description: Determines whether case comments are returned. + deprecated: true + schema: + type: boolean + default: true + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + getCaseResponse: + $ref: '../components/examples/get_case_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/data_visualizer/common/constants.ts b/x-pack/plugins/data_visualizer/common/constants.ts index f31a42cc7784c..1923613d72c58 100644 --- a/x-pack/plugins/data_visualizer/common/constants.ts +++ b/x-pack/plugins/data_visualizer/common/constants.ts @@ -29,16 +29,17 @@ export const FILE_FORMATS = { // XML: 'xml', }; -export const JOB_FIELD_TYPES = { +export const SUPPORTED_FIELD_TYPES = { BOOLEAN: 'boolean', DATE: 'date', GEO_POINT: 'geo_point', GEO_SHAPE: 'geo_shape', + HISTOGRAM: 'histogram', IP: 'ip', KEYWORD: 'keyword', NUMBER: 'number', TEXT: 'text', - HISTOGRAM: 'histogram', + VERSION: 'version', UNKNOWN: 'unknown', } as const; diff --git a/x-pack/plugins/data_visualizer/common/types/field_request_config.ts b/x-pack/plugins/data_visualizer/common/types/field_request_config.ts index 5f21748575831..4db8cc8aa7996 100644 --- a/x-pack/plugins/data_visualizer/common/types/field_request_config.ts +++ b/x-pack/plugins/data_visualizer/common/types/field_request_config.ts @@ -29,6 +29,16 @@ export interface DocumentCounts { interval?: number; } +export interface LatLongExample { + lat: number; + lon: number; +} + +export interface GeoPointExample { + coordinates: number[]; + type?: string; +} + export interface FieldVisStats { error?: Error; cardinality?: number; @@ -56,7 +66,7 @@ export interface FieldVisStats { topValues?: Array<{ key: number | string; doc_count: number }>; topValuesSampleSize?: number; topValuesSamplerShardSize?: number; - examples?: Array; + examples?: Array; timeRangeEarliest?: number; timeRangeLatest?: number; } diff --git a/x-pack/plugins/data_visualizer/common/types/job_field_type.ts b/x-pack/plugins/data_visualizer/common/types/job_field_type.ts index ecb6ade035695..bc44361a416c7 100644 --- a/x-pack/plugins/data_visualizer/common/types/job_field_type.ts +++ b/x-pack/plugins/data_visualizer/common/types/job_field_type.ts @@ -5,5 +5,5 @@ * 2.0. */ -import { JOB_FIELD_TYPES } from '../constants'; -export type JobFieldType = typeof JOB_FIELD_TYPES[keyof typeof JOB_FIELD_TYPES]; +import { SUPPORTED_FIELD_TYPES } from '../constants'; +export type JobFieldType = typeof SUPPORTED_FIELD_TYPES[keyof typeof SUPPORTED_FIELD_TYPES]; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/examples_list/examples_list.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/examples_list/examples_list.tsx index c4792b314b6a6..71722faab8829 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/examples_list/examples_list.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/examples_list/examples_list.tsx @@ -10,12 +10,19 @@ import React, { FC } from 'react'; import { EuiListGroup, EuiListGroupItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; +import { GeoPointExample } from '../../../../../common/types/field_request_config'; import { ExpandedRowFieldHeader } from '../stats_table/components/expanded_row_field_header'; import { ExpandedRowPanel } from '../stats_table/components/field_data_expanded_row/expanded_row_panel'; + interface Props { - examples: Array; + examples: Array; } +const EMPTY_EXAMPLE = i18n.translate( + 'xpack.dataVisualizer.dataGrid.field.examplesList.emptyExampleMessage', + { defaultMessage: '(empty)' } +); export const ExamplesList: FC = ({ examples }) => { if (examples === undefined || examples === null || !Array.isArray(examples)) { return null; @@ -34,7 +41,13 @@ export const ExamplesList: FC = ({ examples }) => { ); }); diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/file_based_expanded_row.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/file_based_expanded_row.tsx index 07e5d01e71d9b..ebe37dda153f4 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/file_based_expanded_row.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/file_based_expanded_row.tsx @@ -16,7 +16,7 @@ import { NumberContent, } from '../stats_table/components/field_data_expanded_row'; import { GeoPointContent } from './geo_point_content/geo_point_content'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; import type { FileBasedFieldVisConfig } from '../../../../../common/types/field_vis_config'; export const FileBasedDataVisualizerExpandedRow = ({ item }: { item: FileBasedFieldVisConfig }) => { @@ -25,25 +25,26 @@ export const FileBasedDataVisualizerExpandedRow = ({ item }: { item: FileBasedFi function getCardContent() { switch (type) { - case JOB_FIELD_TYPES.NUMBER: + case SUPPORTED_FIELD_TYPES.NUMBER: return ; - case JOB_FIELD_TYPES.BOOLEAN: + case SUPPORTED_FIELD_TYPES.BOOLEAN: return ; - case JOB_FIELD_TYPES.DATE: + case SUPPORTED_FIELD_TYPES.DATE: return ; - case JOB_FIELD_TYPES.GEO_POINT: + case SUPPORTED_FIELD_TYPES.GEO_POINT: return ; - case JOB_FIELD_TYPES.IP: + case SUPPORTED_FIELD_TYPES.IP: return ; - case JOB_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.VERSION: return ; - case JOB_FIELD_TYPES.TEXT: + case SUPPORTED_FIELD_TYPES.TEXT: return ; default: diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/geo_point_content_with_map/geo_point_content_with_map.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/geo_point_content_with_map/geo_point_content_with_map.tsx index 8a0b1d7a3dfe6..f12b65569be1c 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/geo_point_content_with_map/geo_point_content_with_map.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/geo_point_content_with_map/geo_point_content_with_map.tsx @@ -4,7 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - import React, { FC, useEffect, useState } from 'react'; import { DataView } from '@kbn/data-views-plugin/public'; import { ES_GEO_FIELD_TYPE, LayerDescriptor } from '@kbn/maps-plugin/common'; @@ -14,7 +13,7 @@ import { DocumentStatsTable } from '../../stats_table/components/field_data_expa import { ExamplesList } from '../../examples_list'; import { FieldVisConfig } from '../../stats_table/types'; import { useDataVisualizerKibana } from '../../../../kibana_context'; -import { JOB_FIELD_TYPES } from '../../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../../common/constants'; import { EmbeddedMapComponent } from '../../embedded_map'; import { ExpandedRowPanel } from '../../stats_table/components/field_data_expanded_row/expanded_row_panel'; @@ -36,7 +35,8 @@ export const GeoPointContentWithMap: FC<{ dataView?.id !== undefined && config !== undefined && config.fieldName !== undefined && - (config.type === JOB_FIELD_TYPES.GEO_POINT || config.type === JOB_FIELD_TYPES.GEO_SHAPE) + (config.type === SUPPORTED_FIELD_TYPES.GEO_POINT || + config.type === SUPPORTED_FIELD_TYPES.GEO_SHAPE) ) { const params = { indexPatternId: dataView.id, @@ -64,7 +64,7 @@ export const GeoPointContentWithMap: FC<{ return ( - + diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/index_based_expanded_row.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/index_based_expanded_row.tsx index c108ca238de8a..e770a4c6bba7a 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/index_based_expanded_row.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/expanded_row/index_based_expanded_row.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { GeoPointContentWithMap } from './geo_point_content_with_map'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; import { BooleanContent, DateContent, @@ -51,17 +51,17 @@ export const IndexBasedDataVisualizerExpandedRow = ({ } switch (type) { - case JOB_FIELD_TYPES.NUMBER: + case SUPPORTED_FIELD_TYPES.NUMBER: return ; - case JOB_FIELD_TYPES.BOOLEAN: - return ; + case SUPPORTED_FIELD_TYPES.BOOLEAN: + return ; - case JOB_FIELD_TYPES.DATE: + case SUPPORTED_FIELD_TYPES.DATE: return ; - case JOB_FIELD_TYPES.GEO_POINT: - case JOB_FIELD_TYPES.GEO_SHAPE: + case SUPPORTED_FIELD_TYPES.GEO_POINT: + case SUPPORTED_FIELD_TYPES.GEO_SHAPE: return ( ); - case JOB_FIELD_TYPES.IP: + case SUPPORTED_FIELD_TYPES.IP: return ; - case JOB_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.VERSION: return ; - case JOB_FIELD_TYPES.TEXT: + case SUPPORTED_FIELD_TYPES.TEXT: return ; default: diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts b/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts index 73e69b00132d3..314856e07554f 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts @@ -18,7 +18,7 @@ import { dataVisualizerRefresh$, Refresh, } from '../../../../index_data_visualizer/services/timefilter_refresh_service'; -import { JOB_FIELD_TYPES } from '../../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../../common/constants'; import { APP_ID } from '../../../../../../common/constants'; export function getActions( @@ -80,7 +80,10 @@ export function getActions( type: 'icon', icon: 'gisApp', available: (item: FieldVisConfig) => { - return item.type === JOB_FIELD_TYPES.GEO_POINT || item.type === JOB_FIELD_TYPES.GEO_SHAPE; + return ( + item.type === SUPPORTED_FIELD_TYPES.GEO_POINT || + item.type === SUPPORTED_FIELD_TYPES.GEO_SHAPE + ); }, onClick: async (item: FieldVisConfig) => { if (services?.uiActions && dataView) { diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/lens_utils.ts b/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/lens_utils.ts index 731499cee2f89..034f7037fc29a 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/lens_utils.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/field_data_row/action_menu/lens_utils.ts @@ -19,7 +19,7 @@ import type { import { DOCUMENT_FIELD_NAME as RECORDS_FIELD } from '@kbn/lens-plugin/common/constants'; import type { CombinedQuery } from '../../../../index_data_visualizer/types/combined_query'; import { FieldVisConfig } from '../../stats_table/types'; -import { JOB_FIELD_TYPES } from '../../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../../common/constants'; interface ColumnsAndLayer { columns: Record; @@ -200,19 +200,20 @@ export function getBooleanSettings(item: FieldVisConfig) { export function getCompatibleLensDataType(type: FieldVisConfig['type']): string | undefined { let lensType: string | undefined; switch (type) { - case JOB_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.VERSION: lensType = 'string'; break; - case JOB_FIELD_TYPES.DATE: + case SUPPORTED_FIELD_TYPES.DATE: lensType = 'date'; break; - case JOB_FIELD_TYPES.NUMBER: + case SUPPORTED_FIELD_TYPES.NUMBER: lensType = 'number'; break; - case JOB_FIELD_TYPES.IP: + case SUPPORTED_FIELD_TYPES.IP: lensType = 'ip'; break; - case JOB_FIELD_TYPES.BOOLEAN: + case SUPPORTED_FIELD_TYPES.BOOLEAN: lensType = 'string'; break; default: @@ -228,16 +229,20 @@ function getColumnsAndLayer( ): ColumnsAndLayer | undefined { if (item.fieldName === undefined) return; - if (fieldType === JOB_FIELD_TYPES.DATE) { + if (fieldType === SUPPORTED_FIELD_TYPES.DATE) { return getDateSettings(item); } - if (fieldType === JOB_FIELD_TYPES.NUMBER) { + if (fieldType === SUPPORTED_FIELD_TYPES.NUMBER) { return getNumberSettings(item, defaultDataView); } - if (fieldType === JOB_FIELD_TYPES.IP || fieldType === JOB_FIELD_TYPES.KEYWORD) { + if ( + fieldType === SUPPORTED_FIELD_TYPES.IP || + fieldType === SUPPORTED_FIELD_TYPES.KEYWORD || + fieldType === SUPPORTED_FIELD_TYPES.VERSION + ) { return getKeywordSettings(item); } - if (fieldType === JOB_FIELD_TYPES.BOOLEAN) { + if (fieldType === SUPPORTED_FIELD_TYPES.BOOLEAN) { return getBooleanSettings(item); } } diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx index 874cdaa670c49..9962937fa80dc 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx @@ -9,12 +9,12 @@ import React from 'react'; import { mount, shallow } from 'enzyme'; import { FieldTypeIcon } from './field_type_icon'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; describe('FieldTypeIcon', () => { test(`render component when type matches a field type`, () => { const typeIconComponent = shallow( - + ); expect(typeIconComponent).toMatchSnapshot(); }); @@ -24,7 +24,7 @@ describe('FieldTypeIcon', () => { jest.useFakeTimers(); const typeIconComponent = mount( - + ); expect(typeIconComponent.find('EuiToolTip').children()).toHaveLength(1); diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/create_fields.ts b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/create_fields.ts index 05d07111c80ac..2ac163104eea5 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/create_fields.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/create_fields.ts @@ -8,7 +8,7 @@ import { FindFileStructureResponse } from '@kbn/file-upload-plugin/common'; import { getFieldNames, getSupportedFieldType } from './get_field_names'; import { FileBasedFieldVisConfig } from '../stats_table/types'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; import { roundToDecimalPlace } from '../utils'; export function createFields(results: FindFileStructureResponse) { @@ -28,20 +28,20 @@ export function createFields(results: FindFileStructureResponse) { if (fieldStats[name] !== undefined) { const field: FileBasedFieldVisConfig = { fieldName: name, - type: JOB_FIELD_TYPES.UNKNOWN, + type: SUPPORTED_FIELD_TYPES.UNKNOWN, }; const f = fieldStats[name]; const m = mappings.properties[name]; // sometimes the timestamp field is not in the mappings, and so our // collection of fields will be missing a time field with a type of date - if (name === timestampField && field.type === JOB_FIELD_TYPES.UNKNOWN) { - field.type = JOB_FIELD_TYPES.DATE; + if (name === timestampField && field.type === SUPPORTED_FIELD_TYPES.UNKNOWN) { + field.type = SUPPORTED_FIELD_TYPES.DATE; } if (m !== undefined) { field.type = getSupportedFieldType(m.type); - if (field.type === JOB_FIELD_TYPES.NUMBER) { + if (field.type === SUPPORTED_FIELD_TYPES.NUMBER) { numericFieldsCount += 1; } if (m.format !== undefined) { @@ -71,7 +71,7 @@ export function createFields(results: FindFileStructureResponse) { } if (f.top_hits !== undefined) { - if (field.type === JOB_FIELD_TYPES.TEXT) { + if (field.type === SUPPORTED_FIELD_TYPES.TEXT) { _stats = { ..._stats, examples: f.top_hits.map((hit) => hit.value), @@ -84,7 +84,7 @@ export function createFields(results: FindFileStructureResponse) { } } - if (field.type === JOB_FIELD_TYPES.DATE) { + if (field.type === SUPPORTED_FIELD_TYPES.DATE) { _stats = { ..._stats, earliest: f.earliest, @@ -99,9 +99,9 @@ export function createFields(results: FindFileStructureResponse) { // this could be the message field for a semi-structured log file or a // field which the endpoint has not been able to work out any information for const type = - mappings.properties[name] && mappings.properties[name].type === JOB_FIELD_TYPES.TEXT - ? JOB_FIELD_TYPES.TEXT - : JOB_FIELD_TYPES.UNKNOWN; + mappings.properties[name] && mappings.properties[name].type === SUPPORTED_FIELD_TYPES.TEXT + ? SUPPORTED_FIELD_TYPES.TEXT + : SUPPORTED_FIELD_TYPES.UNKNOWN; return { fieldName: name, diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/filter_fields.ts b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/filter_fields.ts index 145a8fa5f8867..4ca65eec6635b 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/filter_fields.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/filter_fields.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; interface CommonFieldConfig { type: string; @@ -32,6 +32,6 @@ export function filterFields( return { filteredFields: items, visibleFieldsCount: items.length, - visibleMetricsCount: items.filter((d) => d.type === JOB_FIELD_TYPES.NUMBER).length, + visibleMetricsCount: items.filter((d) => d.type === SUPPORTED_FIELD_TYPES.NUMBER).length, }; } diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/get_field_names.ts b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/get_field_names.ts index b6868ced4de69..b0750278ab9e3 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/get_field_names.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/components/fields_stats_grid/get_field_names.ts @@ -9,7 +9,7 @@ import { difference } from 'lodash'; import { ES_FIELD_TYPES } from '@kbn/data-plugin/common'; import type { FindFileStructureResponse } from '@kbn/file-upload-plugin/common'; import type { JobFieldType } from '../../../../../common/types'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; export function getFieldNames(results: FindFileStructureResponse) { const { mappings, field_stats: fieldStats, column_names: columnNames } = results; @@ -44,11 +44,11 @@ export function getSupportedFieldType(type: string): JobFieldType { case ES_FIELD_TYPES.LONG: case ES_FIELD_TYPES.SHORT: case ES_FIELD_TYPES.UNSIGNED_LONG: - return JOB_FIELD_TYPES.NUMBER; + return SUPPORTED_FIELD_TYPES.NUMBER; case ES_FIELD_TYPES.DATE: case ES_FIELD_TYPES.DATE_NANOS: - return JOB_FIELD_TYPES.DATE; + return SUPPORTED_FIELD_TYPES.DATE; default: return type as JobFieldType; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/_index.scss b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/_index.scss index 7ac8aa4365732..5aaf24b82a1a6 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/_index.scss +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/_index.scss @@ -31,9 +31,8 @@ $panelWidthL: #{'max(40%, 450px)'}; } .euiTableRow > .euiTableRowCell { - border-bottom: 0; - border-top: $euiBorderThin; - + border-top: 0; + border-bottom: $euiBorderThin; } .euiTableCellContent { diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/boolean_content.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/boolean_content.tsx index 907bc6166afff..210f69c435a45 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/boolean_content.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/boolean_content.tsx @@ -5,18 +5,13 @@ * 2.0. */ -import React, { FC, ReactNode, useMemo } from 'react'; -import { - EuiBasicTable, - EuiSpacer, - RIGHT_ALIGNMENT, - LEFT_ALIGNMENT, - HorizontalAlignment, -} from '@elastic/eui'; +import React, { FC, useMemo } from 'react'; +import { EuiSpacer } from '@elastic/eui'; import { Axis, BarSeries, Chart, Settings, ScaleType } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; +import { TopValues } from '../../../top_values'; import type { FieldDataRowProps } from '../../types/field_data_row'; import { ExpandedRowFieldHeader } from '../expanded_row_field_header'; import { getTFPercentage } from '../../utils'; @@ -44,72 +39,42 @@ function getFormattedValue(value: number, totalCount: number): string { const BOOLEAN_DISTRIBUTION_CHART_HEIGHT = 70; -export const BooleanContent: FC = ({ config }) => { +export const BooleanContent: FC = ({ config, onAddFilter }) => { const fieldFormat = 'fieldFormat' in config ? config.fieldFormat : undefined; const formattedPercentages = useMemo(() => getTFPercentage(config), [config]); const theme = useDataVizChartTheme(); if (!formattedPercentages) return null; const { trueCount, falseCount, count } = formattedPercentages; - const summaryTableItems = [ - { - function: 'true', - display: ( - - ), - value: getFormattedValue(trueCount, count), - }, - { - function: 'false', - display: ( - - ), - value: getFormattedValue(falseCount, count), - }, - ]; - const summaryTableColumns = [ - { - field: 'function', - name: '', - render: (_: string, summaryItem: { display: ReactNode }) => summaryItem.display, - width: '25px', - align: LEFT_ALIGNMENT as HorizontalAlignment, - }, - { - field: 'value', - name: '', - render: (v: string) => {v}, - align: RIGHT_ALIGNMENT as HorizontalAlignment, - }, - ]; - - const summaryTableTitle = i18n.translate( - 'xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.summaryTableTitle', - { - defaultMessage: 'Summary', - } - ); - + const stats = { + ...config.stats, + topValues: [ + { + key: i18n.translate( + 'xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.trueCountLabel', + { defaultMessage: 'true' } + ), + doc_count: trueCount ?? 0, + }, + { + key: i18n.translate( + 'xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.falseCountLabel', + { defaultMessage: 'false' } + ), + doc_count: falseCount ?? 0, + }, + ], + }; return ( - - {summaryTableTitle} - - + diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx index a2d61d104d138..8b38563591e3d 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx @@ -20,11 +20,13 @@ import { RIGHT_ALIGNMENT, EuiResizeObserver, EuiLoadingSpinner, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EuiTableComputedColumnType } from '@elastic/eui/src/components/basic_table/table_types'; import { throttle } from 'lodash'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { css } from '@emotion/react'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; import type { JobFieldType, DataVisualizerTableState } from '../../../../../common/types'; import { DocumentStat } from './components/field_data_row/document_stats'; import { IndexBasedNumberContentPreview } from './components/field_data_row/number_content_preview'; @@ -70,6 +72,8 @@ export const DataVisualizerTable = ({ onChange, loading, }: DataVisualizerTableProps) => { + const { euiTheme } = useEuiTheme(); + const [expandedRowItemIds, setExpandedRowItemIds] = useState([]); const [expandAll, setExpandAll] = useState(false); @@ -289,13 +293,14 @@ export const DataVisualizerTable = ({ } if ( - (item.type === JOB_FIELD_TYPES.KEYWORD || item.type === JOB_FIELD_TYPES.IP) && + (item.type === SUPPORTED_FIELD_TYPES.KEYWORD || + item.type === SUPPORTED_FIELD_TYPES.IP) && item.stats?.topValues !== undefined ) { return ; } - if (item.type === JOB_FIELD_TYPES.NUMBER) { + if (item.type === SUPPORTED_FIELD_TYPES.NUMBER) { if (isIndexBasedFieldVisConfig(item) && item.stats?.distribution !== undefined) { // If the cardinality is only low, show the top values instead of a distribution chart return item.stats?.distribution?.percentiles.length <= 2 ? ( @@ -308,7 +313,7 @@ export const DataVisualizerTable = ({ } } - if (item.type === JOB_FIELD_TYPES.BOOLEAN) { + if (item.type === SUPPORTED_FIELD_TYPES.BOOLEAN) { return ; } @@ -361,6 +366,18 @@ export const DataVisualizerTable = ({ rowProps={(item) => ({ 'data-test-subj': `dataVisualizerRow row-${item.fieldName}`, })} + css={css` + thead { + position: sticky; + inset-block-start: 0; + z-index: 1; + background-color: ${euiTheme.colors.emptyShade}; + box-shadow: inset 0 0px 0, inset 0 -1px 0 ${euiTheme.border.color}; + } + .euiTableRow > .euiTableRowCel { + border-top: 0px; + } + `} /> )} diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.test.ts b/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.test.ts new file mode 100644 index 0000000000000..bc1c489cd77a0 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.test.ts @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getUniqGeoOrStrExamples } from './example_utils'; + +describe('example utils', () => { + describe('getUniqGeoOrStrExamples', () => { + test('should remove duplicated strings up to maxExamples', () => { + expect( + getUniqGeoOrStrExamples( + [ + 'deb', + '', + 'css', + 'deb', + '', + '', + 'deb', + 'gz', + '', + 'gz', + '', + 'deb', + 'gz', + 'deb', + '', + 'deb', + 'deb', + '', + 'gz', + 'gz', + ], + 20 + ) + ).toMatchObject(['deb', '', 'css', 'gz']); + expect( + getUniqGeoOrStrExamples( + [ + 'deb', + '', + 'css', + 'deb', + '', + '', + 'deb', + 'gz', + '', + 'gz', + '', + 'deb', + 'gz', + 'deb', + '', + 'deb', + 'deb', + '', + 'gz', + 'gz', + ], + 2 + ) + ).toMatchObject(['deb', '']); + }); + + test('should remove duplicated coordinates up to maxExamples', () => { + expect( + getUniqGeoOrStrExamples([ + { coordinates: [0.1, 2343], type: 'Point' }, + { coordinates: [0.1, 2343], type: 'Point' }, + { coordinates: [0.1, 2343], type: 'Point' }, + { coordinates: [0.1, 2343], type: 'Shape' }, + { coordinates: [0.1, 2343] }, + { coordinates: [4321, 2343], type: 'Point' }, + { coordinates: [4321, 2343], type: 'Point' }, + ]) + ).toMatchObject([ + { + coordinates: [0.1, 2343], + type: 'Point', + }, + { + coordinates: [0.1, 2343], + type: 'Shape', + }, + { + coordinates: [0.1, 2343], + }, + { + coordinates: [4321, 2343], + type: 'Point', + }, + ]); + expect( + getUniqGeoOrStrExamples([ + { coordinates: [1, 2, 3], type: 'Point' }, + { coordinates: [1, 2, 3], type: 'Point' }, + { coordinates: [1, 2, 3], type: 'Point' }, + { coordinates: [1, 2, 3, 4], type: 'Shape' }, + { coordinates: [1, 2, 3, 4] }, + ]) + ).toMatchObject([ + { + coordinates: [1, 2, 3], + type: 'Point', + }, + { coordinates: [1, 2, 3, 4], type: 'Shape' }, + { coordinates: [1, 2, 3, 4] }, + ]); + }); + + test('should remove duplicated lon/lat coordinates up to maxExamples', () => { + expect( + getUniqGeoOrStrExamples([ + { lon: 0.1, lat: 2343 }, + { lon: 0.1, lat: 2343 }, + { lon: 0.1, lat: 2343 }, + { lon: 0.1, lat: 2343 }, + { lon: 0.1, lat: 2343 }, + { lon: 4321, lat: 2343 }, + { lon: 4321, lat: 2343 }, + ]) + ).toMatchObject([ + { lon: 0.1, lat: 2343 }, + { lon: 4321, lat: 2343 }, + ]); + expect( + getUniqGeoOrStrExamples( + [ + { lon: 1, lat: 2 }, + { lon: 1, lat: 2 }, + { lon: 2, lat: 3 }, + { lon: 2, lat: 3 }, + { lon: 3, lat: 4 }, + { lon: 3, lat: 4 }, + { lon: 4, lat: 5 }, + { lon: 4, lat: 5 }, + { lon: 5, lat: 6 }, + { lon: 5, lat: 6 }, + ], + 3 + ) + ).toMatchObject([ + { lon: 1, lat: 2 }, + { lon: 2, lat: 3 }, + { lon: 3, lat: 4 }, + ]); + }); + }); +}); diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.ts b/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.ts new file mode 100644 index 0000000000000..cc4a9a3ca9bfa --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/util/example_utils.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 { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { isDefined } from './is_defined'; +import { GeoPointExample, LatLongExample } from '../../../../common/types/field_request_config'; + +export function isGeoPointExample(arg: unknown): arg is GeoPointExample { + return isPopulatedObject(arg, ['coordinates']) && Array.isArray(arg.coordinates); +} + +export function isLonLatExample(arg: unknown): arg is LatLongExample { + return isPopulatedObject(arg, ['lon', 'lat']); +} + +export function getUniqGeoOrStrExamples( + examples: Array | undefined, + maxExamples = 10 +): Array { + const uniqueCoordinates: Array = []; + if (!isDefined(examples)) return uniqueCoordinates; + for (let i = 0; i < examples.length; i++) { + const example = examples[i]; + if (typeof example === 'string' && uniqueCoordinates.indexOf(example) === -1) { + uniqueCoordinates.push(example); + } else { + if ( + isGeoPointExample(example) && + uniqueCoordinates.findIndex( + (c) => + isGeoPointExample(c) && + c.type === example.type && + example.coordinates.every((coord, idx) => coord === c.coordinates[idx]) + ) === -1 + ) { + uniqueCoordinates.push(example); + } + + if ( + isLonLatExample(example) && + uniqueCoordinates.findIndex( + (c) => isLonLatExample(c) && example.lon === c.lon && example.lat === c.lat + ) === -1 + ) { + uniqueCoordinates.push(example); + } + } + if (uniqueCoordinates.length === maxExamples) { + return uniqueCoordinates; + } + } + + return uniqueCoordinates; +} diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.test.ts b/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.test.ts index 8f9e4ffd3b898..0f3ae62eae209 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.test.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.test.ts @@ -5,24 +5,26 @@ * 2.0. */ -import { JOB_FIELD_TYPES } from '../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../common/constants'; import { getJobTypeLabel, jobTypeLabels } from './field_types_utils'; describe('field type utils', () => { describe('getJobTypeLabel: Getting a field type aria label by passing what it is stored in constants', () => { - test('should returns all JOB_FIELD_TYPES labels exactly as it is for each correct value', () => { - const keys = Object.keys(JOB_FIELD_TYPES); + test('should returns all SUPPORTED_FIELD_TYPES labels exactly as it is for each correct value', () => { + const keys = Object.keys(SUPPORTED_FIELD_TYPES); const receivedLabels: Record = {}; const testStorage = jobTypeLabels; keys.forEach((key) => { - const constant = key as keyof typeof JOB_FIELD_TYPES; - receivedLabels[JOB_FIELD_TYPES[constant]] = getJobTypeLabel(JOB_FIELD_TYPES[constant]); + const constant = key as keyof typeof SUPPORTED_FIELD_TYPES; + receivedLabels[SUPPORTED_FIELD_TYPES[constant]] = getJobTypeLabel( + SUPPORTED_FIELD_TYPES[constant] + ); }); expect(receivedLabels).toEqual(testStorage); }); - test('should returns NULL as JOB_FIELD_TYPES does not contain such a keyword', () => { - expect(getJobTypeLabel('JOB_FIELD_TYPES')).toBe(null); + test('should returns NULL as SUPPORTED_FIELD_TYPES does not contain such a keyword', () => { + expect(getJobTypeLabel('SUPPORTED_FIELD_TYPES')).toBe(null); }); }); }); diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.ts b/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.ts index d9617ae61e2ec..5d1293f0a22b3 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.ts +++ b/x-pack/plugins/data_visualizer/public/application/common/util/field_types_utils.ts @@ -8,52 +8,70 @@ import { i18n } from '@kbn/i18n'; import { DataViewField } from '@kbn/data-views-plugin/public'; import { KBN_FIELD_TYPES } from '@kbn/data-plugin/common'; -import { JOB_FIELD_TYPES } from '../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../common/constants'; export const getJobTypeLabel = (type: string) => { return type in jobTypeLabels ? jobTypeLabels[type as keyof typeof jobTypeLabels] : null; }; export const jobTypeLabels = { - [JOB_FIELD_TYPES.BOOLEAN]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.booleanTypeLabel', { - defaultMessage: 'Boolean', - }), - [JOB_FIELD_TYPES.DATE]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.dateTypeLabel', { + [SUPPORTED_FIELD_TYPES.BOOLEAN]: i18n.translate( + 'xpack.dataVisualizer.fieldTypeIcon.booleanTypeLabel', + { + defaultMessage: 'Boolean', + } + ), + [SUPPORTED_FIELD_TYPES.DATE]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.dateTypeLabel', { defaultMessage: 'Date', }), - [JOB_FIELD_TYPES.GEO_POINT]: i18n.translate( + [SUPPORTED_FIELD_TYPES.GEO_POINT]: i18n.translate( 'xpack.dataVisualizer.fieldTypeIcon.geoPointTypeLabel', { defaultMessage: 'Geo point', } ), - [JOB_FIELD_TYPES.GEO_SHAPE]: i18n.translate( + [SUPPORTED_FIELD_TYPES.GEO_SHAPE]: i18n.translate( 'xpack.dataVisualizer.fieldTypeIcon.geoShapeTypeLabel', { defaultMessage: 'Geo shape', } ), - [JOB_FIELD_TYPES.IP]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.ipTypeLabel', { + [SUPPORTED_FIELD_TYPES.IP]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.ipTypeLabel', { defaultMessage: 'IP', }), - [JOB_FIELD_TYPES.KEYWORD]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.keywordTypeLabel', { - defaultMessage: 'Keyword', - }), - [JOB_FIELD_TYPES.NUMBER]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.numberTypeLabel', { - defaultMessage: 'Number', - }), - [JOB_FIELD_TYPES.HISTOGRAM]: i18n.translate( + [SUPPORTED_FIELD_TYPES.KEYWORD]: i18n.translate( + 'xpack.dataVisualizer.fieldTypeIcon.keywordTypeLabel', + { + defaultMessage: 'Keyword', + } + ), + [SUPPORTED_FIELD_TYPES.NUMBER]: i18n.translate( + 'xpack.dataVisualizer.fieldTypeIcon.numberTypeLabel', + { + defaultMessage: 'Number', + } + ), + [SUPPORTED_FIELD_TYPES.HISTOGRAM]: i18n.translate( 'xpack.dataVisualizer.fieldTypeIcon.histogramTypeLabel', { defaultMessage: 'Histogram', } ), - [JOB_FIELD_TYPES.TEXT]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.textTypeLabel', { + [SUPPORTED_FIELD_TYPES.TEXT]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.textTypeLabel', { defaultMessage: 'Text', }), - [JOB_FIELD_TYPES.UNKNOWN]: i18n.translate('xpack.dataVisualizer.fieldTypeIcon.unknownTypeLabel', { - defaultMessage: 'Unknown', - }), + [SUPPORTED_FIELD_TYPES.UNKNOWN]: i18n.translate( + 'xpack.dataVisualizer.fieldTypeIcon.unknownTypeLabel', + { + defaultMessage: 'Unknown', + } + ), + [SUPPORTED_FIELD_TYPES.VERSION]: i18n.translate( + 'xpack.dataVisualizer.fieldTypeIcon.versionTypeLabel', + { + defaultMessage: 'Version', + } + ), }; // convert kibana types to ML Job types @@ -62,30 +80,35 @@ export const jobTypeLabels = { export function kbnTypeToJobType(field: DataViewField) { // Return undefined if not one of the supported data visualizer field types. let type; + switch (field.type) { case KBN_FIELD_TYPES.STRING: - type = field.aggregatable ? JOB_FIELD_TYPES.KEYWORD : JOB_FIELD_TYPES.TEXT; + type = field.aggregatable ? SUPPORTED_FIELD_TYPES.KEYWORD : SUPPORTED_FIELD_TYPES.TEXT; + + if (field.esTypes?.includes(SUPPORTED_FIELD_TYPES.VERSION)) { + type = SUPPORTED_FIELD_TYPES.VERSION; + } break; case KBN_FIELD_TYPES.NUMBER: - type = JOB_FIELD_TYPES.NUMBER; + type = SUPPORTED_FIELD_TYPES.NUMBER; break; case KBN_FIELD_TYPES.DATE: - type = JOB_FIELD_TYPES.DATE; + type = SUPPORTED_FIELD_TYPES.DATE; break; case KBN_FIELD_TYPES.IP: - type = JOB_FIELD_TYPES.IP; + type = SUPPORTED_FIELD_TYPES.IP; break; case KBN_FIELD_TYPES.BOOLEAN: - type = JOB_FIELD_TYPES.BOOLEAN; + type = SUPPORTED_FIELD_TYPES.BOOLEAN; break; case KBN_FIELD_TYPES.GEO_POINT: - type = JOB_FIELD_TYPES.GEO_POINT; + type = SUPPORTED_FIELD_TYPES.GEO_POINT; break; case KBN_FIELD_TYPES.GEO_SHAPE: - type = JOB_FIELD_TYPES.GEO_SHAPE; + type = SUPPORTED_FIELD_TYPES.GEO_SHAPE; break; case KBN_FIELD_TYPES.HISTOGRAM: - type = JOB_FIELD_TYPES.HISTOGRAM; + type = SUPPORTED_FIELD_TYPES.HISTOGRAM; break; default: diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx index 0b4103687bbde..079804a47cd7b 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx @@ -399,7 +399,7 @@ export const IndexDataVisualizerView: FC = (dataVi

-

{currentDataView.title}

+

{currentDataView.getName()}

{ const fieldData = nonMetricFieldData.find((f) => f.fieldName === field.spec.name); - const nonMetricConfig: Partial = { ...(fieldData ? fieldData : {}), fieldFormat: currentDataView.getFormatterForField(field), diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts index 0e04665256e20..dfc68e6dac9ae 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts @@ -15,6 +15,8 @@ import type { ISearchStart, } from '@kbn/data-plugin/public'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import type { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { getUniqGeoOrStrExamples } from '../../../common/util/example_utils'; import { buildBaseFilterCriteria } from '../../../../../common/utils/query_utils'; import type { Field, @@ -90,20 +92,11 @@ export const fetchFieldsExamples = ( if (body.hits.total > 0) { const hits = body.hits.hits; - for (let i = 0; i < hits.length; i++) { - // Use lodash get() to support field names containing dots. - const doc: object[] | undefined = get(hits[i].fields, field.fieldName); - // the results from fields query is always an array - if (Array.isArray(doc) && doc.length > 0) { - const example = doc[0]; - if (example !== undefined && stats.examples.indexOf(example) === -1) { - stats.examples.push(example); - if (stats.examples.length === maxExamples) { - break; - } - } - } - } + const processedDocs = hits.map((hit: SearchHit) => { + const doc: object[] | undefined = get(hit.fields, field.fieldName); + return Array.isArray(doc) && doc.length > 0 ? doc[0] : doc; + }); + stats.examples = getUniqGeoOrStrExamples(processedDocs, maxExamples); } return stats; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_fields_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_fields_stats.ts index 4dd0b3a7ba40a..a549e40704c0f 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_fields_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_fields_stats.ts @@ -11,7 +11,7 @@ import { ISearchStart } from '@kbn/data-plugin/public'; import type { FieldStatsCommonRequestParams } from '../../../../../common/types/field_stats'; import type { FieldStatsError } from '../../../../../common/types/field_stats'; import type { FieldStats } from '../../../../../common/types/field_stats'; -import { JOB_FIELD_TYPES } from '../../../../../common/constants'; +import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; import { fetchDateFieldsStats } from './get_date_field_stats'; import { fetchBooleanFieldsStats } from './get_boolean_field_stats'; import { fetchFieldsExamples } from './get_field_examples'; @@ -31,16 +31,17 @@ export const getFieldsStats = ( ): Observable | undefined => { const fieldType = fields[0].type; switch (fieldType) { - case JOB_FIELD_TYPES.NUMBER: + case SUPPORTED_FIELD_TYPES.NUMBER: return fetchNumericFieldsStats(dataSearch, params, fields, options); - case JOB_FIELD_TYPES.KEYWORD: - case JOB_FIELD_TYPES.IP: + case SUPPORTED_FIELD_TYPES.KEYWORD: + case SUPPORTED_FIELD_TYPES.IP: + case SUPPORTED_FIELD_TYPES.VERSION: return fetchStringFieldsStats(dataSearch, params, fields, options); - case JOB_FIELD_TYPES.DATE: + case SUPPORTED_FIELD_TYPES.DATE: return fetchDateFieldsStats(dataSearch, params, fields, options); - case JOB_FIELD_TYPES.BOOLEAN: + case SUPPORTED_FIELD_TYPES.BOOLEAN: return fetchBooleanFieldsStats(dataSearch, params, fields, options); - case JOB_FIELD_TYPES.TEXT: + case SUPPORTED_FIELD_TYPES.TEXT: return fetchFieldsExamples(dataSearch, params, fields, options); default: // Use an exists filter on the the field name to get diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/create_crawler_index_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/create_crawler_index_api_logic.ts index 81194357faea1..93532514703f1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/create_crawler_index_api_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/crawler/create_crawler_index_api_logic.ts @@ -7,15 +7,16 @@ import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; import { HttpLogic } from '../../../shared/http'; +import { LanguageForOptimization } from '../../components/new_index/types'; export interface CreateCrawlerIndexArgs { indexName: string; - language: string; + language: LanguageForOptimization; } interface CreateCrawlerIndexRequest { index_name: string; - language: string; + language: LanguageForOptimization; } export interface CreateCrawlerIndexResponse { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/constants.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/constants.ts index 1377a80cd9b38..4c37b03d705cb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/constants.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { EuiSelectOption } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; export const NEW_INDEX_TEMPLATE_TYPES: { [key: string]: string } = { @@ -60,9 +61,11 @@ export const DOCUMENTS_API_JSON_EXAMPLE = [ }, ]; -export const SUPPORTED_LANGUAGES = [ +export const UNIVERSAL_LANGUAGE_VALUE = ''; + +export const SUPPORTED_LANGUAGES: EuiSelectOption[] = [ { - value: 'Universal', + value: UNIVERSAL_LANGUAGE_VALUE, text: i18n.translate( 'xpack.enterpriseSearch.content.newIndex.supportedLanguages.universalDropDownOptionLabel', { @@ -201,5 +204,3 @@ export const SUPPORTED_LANGUAGES = [ ), }, ]; - -export const DEFAULT_LANGUAGE = 'Universal'; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts index d12ab55a37f75..4f41bb7dcadcd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts @@ -7,13 +7,14 @@ import { LogicMounter } from '../../../__mocks__/kea_logic'; -import { DEFAULT_LANGUAGE } from './constants'; -import { NewSearchIndexLogic } from './new_search_index_logic'; +import { UNIVERSAL_LANGUAGE_VALUE } from './constants'; +import { NewSearchIndexLogic, NewSearchIndexValues } from './new_search_index_logic'; -const DEFAULT_VALUES = { +const DEFAULT_VALUES: NewSearchIndexValues = { rawName: '', name: '', - language: DEFAULT_LANGUAGE, + language: null, + languageSelectValue: UNIVERSAL_LANGUAGE_VALUE, }; describe('NewSearchIndexLogic', () => { @@ -25,13 +26,27 @@ describe('NewSearchIndexLogic', () => { }); describe('actions', () => { - describe('setLanguage', () => { + describe('setLanguageSelectValue', () => { it('sets language to the provided value', () => { mount(); - NewSearchIndexLogic.actions.setLanguage('English'); + NewSearchIndexLogic.actions.setLanguageSelectValue('en'); expect(NewSearchIndexLogic.values).toEqual({ ...DEFAULT_VALUES, - language: 'English', + language: 'en', + languageSelectValue: 'en', + }); + }); + + it('sets language to null when the universal language option is picked', () => { + mount({ + language: 'en', + languageSelectValue: 'en', + }); + NewSearchIndexLogic.actions.setLanguageSelectValue(UNIVERSAL_LANGUAGE_VALUE); + expect(NewSearchIndexLogic.values).toEqual({ + ...DEFAULT_VALUES, + language: null, + languageSelectValue: UNIVERSAL_LANGUAGE_VALUE, }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts index 7f3a9c767b590..d1727371db533 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts @@ -9,30 +9,33 @@ import { kea, MakeLogicType } from 'kea'; import { formatApiName } from '../../utils/format_api_name'; -import { DEFAULT_LANGUAGE } from './constants'; +import { UNIVERSAL_LANGUAGE_VALUE } from './constants'; +import { LanguageForOptimization } from './types'; +import { getLanguageForOptimizatioin } from './utils'; export interface NewSearchIndexValues { - language: string; + language: LanguageForOptimization; + languageSelectValue: string; name: string; rawName: string; } export interface NewSearchIndexActions { - setLanguage(language: string): { language: string }; + setLanguageSelectValue(language: string): { language: string }; setRawName(rawName: string): { rawName: string }; } export const NewSearchIndexLogic = kea>({ actions: { - setLanguage: (language) => ({ language }), + setLanguageSelectValue: (language) => ({ language }), setRawName: (rawName) => ({ rawName }), }, path: ['enterprise_search', 'content', 'new_search_index'], reducers: { - language: [ - DEFAULT_LANGUAGE, + languageSelectValue: [ + UNIVERSAL_LANGUAGE_VALUE, { - setLanguage: (_, { language }) => language, + setLanguageSelectValue: (_, { language }) => language ?? null, }, ], rawName: [ @@ -43,6 +46,10 @@ export const NewSearchIndexLogic = kea ({ + language: [ + () => [selectors.languageSelectValue], + (languageSelectValue) => getLanguageForOptimizatioin(languageSelectValue), + ], name: [() => [selectors.rawName], (rawName) => formatApiName(rawName)], }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.test.tsx index 8d7a41312a642..8274d6b7008f1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.test.tsx @@ -11,6 +11,7 @@ import React from 'react'; import { shallow } from 'enzyme'; +import { UNIVERSAL_LANGUAGE_VALUE } from './constants'; import { NewSearchIndexTemplate, Props as NewSearchIndexTemplateProps, @@ -27,8 +28,13 @@ describe('NewSearchIndexTemplate', () => { beforeEach(() => { jest.clearAllMocks(); - setMockValues({ name: 'my-name', rawName: 'MY$_RAW_$NAME', language: 'Universal' }); - setMockActions({ makeRequest: jest.fn() }); + setMockValues({ + name: 'my-name', + rawName: 'MY$_RAW_$NAME', + language: null, + languageSelectValue: UNIVERSAL_LANGUAGE_VALUE, + }); + setMockActions({ makeRequest: jest.fn(), setLanguageSelectValue: jest.fn() }); }); it('renders children', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx index b86f48f82859d..b5696f6a4535c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx @@ -34,6 +34,7 @@ import { i18n } from '@kbn/i18n'; import { SUPPORTED_LANGUAGES } from './constants'; import { NewSearchIndexLogic } from './new_search_index_logic'; +import { LanguageForOptimization } from './types'; export interface Props { title: React.ReactNode; @@ -41,7 +42,7 @@ export interface Props { docsUrl: string; type: string; onNameChange?(name: string): void; - onSubmit(name: string, language: string): void; + onSubmit(name: string, language: LanguageForOptimization): void; buttonLoading?: boolean; formDisabled?: boolean; } @@ -55,8 +56,8 @@ export const NewSearchIndexTemplate: React.FC = ({ formDisabled, buttonLoading, }) => { - const { name, language, rawName } = useValues(NewSearchIndexLogic); - const { setRawName, setLanguage } = useActions(NewSearchIndexLogic); + const { name, language, rawName, languageSelectValue } = useValues(NewSearchIndexLogic); + const { setRawName, setLanguageSelectValue } = useActions(NewSearchIndexLogic); const handleNameChange = (e: ChangeEvent) => { setRawName(e.target.value); @@ -66,7 +67,7 @@ export const NewSearchIndexTemplate: React.FC = ({ }; const handleLanguageChange = (e: ChangeEvent) => { - setLanguage(e.target.value); + setLanguageSelectValue(e.target.value); }; return ( @@ -153,7 +154,7 @@ export const NewSearchIndexTemplate: React.FC = ({ diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/types.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/types.ts new file mode 100644 index 0000000000000..bb6f172b80114 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/types.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type LanguageForOptimization = string | null; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.test.ts new file mode 100644 index 0000000000000..b6068a76ccadc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.test.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 { UNIVERSAL_LANGUAGE_VALUE } from './constants'; +import { getLanguageForOptimizatioin } from './utils'; + +describe('getLanguageForOptimizatioin', () => { + it('returns null for the universal language option', () => { + expect(getLanguageForOptimizatioin(UNIVERSAL_LANGUAGE_VALUE)).toEqual(null); + }); + + it('returns the language code for non-Universal languageoptions', () => { + expect(getLanguageForOptimizatioin('zh')).toEqual('zh'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.ts new file mode 100644 index 0000000000000..a8e7625db5c19 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/utils.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. + */ + +import { UNIVERSAL_LANGUAGE_VALUE } from './constants'; +import { LanguageForOptimization } from './types'; + +// Enterprise Search expects the Universal language option to be represented by null +// but we can't use null as the value for an EuiSelectOption +export const getLanguageForOptimizatioin = (language: string): LanguageForOptimization => + language === UNIVERSAL_LANGUAGE_VALUE ? null : language; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler_total_stats.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler_total_stats.tsx new file mode 100644 index 0000000000000..367932d987900 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/crawler_total_stats.tsx @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useValues } from 'kea'; + +import { i18n } from '@kbn/i18n'; + +import { CrawlerLogic } from './crawler/crawler_logic'; +import { TotalStats } from './total_stats'; + +export const CrawlerTotalStats: React.FC = () => { + const { domains, dataLoading } = useValues(CrawlerLogic); + + const additionalItems = [ + { + description: i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.totalStats.domainCountCardLabel', + { + defaultMessage: 'Domain count', + } + ), + isLoading: dataLoading, + title: domains.length, + }, + ]; + + return ( + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.tsx index 989cd6570e3ea..774783f9da473 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.tsx @@ -11,16 +11,18 @@ import { useValues } from 'kea'; import { EuiSpacer } from '@elastic/eui'; -import { Status } from '../../../../../common/types/api'; +import { i18n } from '@kbn/i18n'; + import { FetchIndexApiLogic } from '../../api/index/fetch_index_api_logic'; import { CrawlDetailsFlyout } from './crawler/crawl_details_flyout/crawl_details_flyout'; import { CrawlRequestsPanel } from './crawler/crawl_requests_panel/crawl_requests_panel'; +import { CrawlerTotalStats } from './crawler_total_stats'; import { GenerateApiKeyPanel } from './generate_api_key_panel'; import { TotalStats } from './total_stats'; export const SearchIndexOverview: React.FC = () => { - const { data, status } = useValues(FetchIndexApiLogic); + const { data } = useValues(FetchIndexApiLogic); const isCrawler = typeof data?.crawler !== 'undefined'; const isConnector = typeof data?.connector !== 'undefined'; @@ -29,12 +31,25 @@ export const SearchIndexOverview: React.FC = () => { return ( <> - {status === Status.SUCCESS && data && ( + {isCrawler ? ( + + ) : ( )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/total_stats.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/total_stats.tsx index a6ef7ffad409d..b3ed64e1b6e9f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/total_stats.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/total_stats.tsx @@ -7,45 +7,72 @@ import React from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiStat } from '@elastic/eui'; +import { useValues } from 'kea'; + +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiStat, EuiStatProps } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { Status } from '../../../../../common/types/api'; + +import { CustomFormattedTimestamp } from '../../../shared/custom_formatted_timestamp/custom_formatted_timestamp'; +import { FetchIndexApiLogic } from '../../api/index/fetch_index_api_logic'; interface TotalStatsProps { - lastUpdated: string; - documentCount: number; - indexHealth: string; + additionalItems?: EuiStatProps[]; ingestionType: string; } -export const TotalStats: React.FC = ({ - lastUpdated, - documentCount, - indexHealth, - ingestionType, -}) => { +export const TotalStats: React.FC = ({ ingestionType, additionalItems = [] }) => { + const { data, status } = useValues(FetchIndexApiLogic); + const documentCount = data?.index.total.docs.count ?? 0; + const lastUpdated = ( + + ); + const isLoading = status !== Status.SUCCESS; + const stats: EuiStatProps[] = [ + { + description: i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.totalStats.ingestionTypeCardLabel', + { + defaultMessage: 'Ingestion type', + } + ), + isLoading, + title: ingestionType, + }, + { + description: i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.totalStats.documentCountCardLabel', + { + defaultMessage: 'Document count', + } + ), + isLoading, + title: documentCount, + }, + { + description: i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.totalStats.lastUpdatedCardLabel', + { + defaultMessage: 'Last updated', + } + ), + isLoading, + title: lastUpdated, + }, + ...additionalItems, + ]; + return ( - - - - - - - - - - - - - - - - - - - - - - + {stats.map((item, index) => ( + + + + + + ))} ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/custom_formatted_timestamp/custom_formatted_timestamp.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/custom_formatted_timestamp/custom_formatted_timestamp.tsx index 7e65493ec7e08..c9893ecdf1547 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/custom_formatted_timestamp/custom_formatted_timestamp.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/custom_formatted_timestamp/custom_formatted_timestamp.tsx @@ -12,7 +12,7 @@ import { FormattedRelative } from '@kbn/i18n-react'; import { FormattedDateTime } from '../formatted_date_time'; interface CustomFormattedTimestampProps { - timestamp: string; + timestamp: string | number | Date; } export const CustomFormattedTimestamp: React.FC = ({ diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.test.ts index 3891f4023feb0..8dc5a7e3d7081 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.test.ts @@ -10,6 +10,49 @@ import { MockRouter, mockDependencies, mockRequestHandler } from '../../../__moc import { registerCrawlerRoutes } from './crawler'; describe('crawler routes', () => { + describe('POST /internal/enterprise_search/crawler', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/internal/enterprise_search/crawler', + }); + + registerCrawlerRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request to enterprise search', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/api/ent/v1/internal/indices', + }); + }); + + it('validates correctly with name and language', () => { + const request = { body: { index_name: 'index-name', language: 'en' } }; + mockRouter.shouldValidate(request); + }); + + it('validates correctly when language is null', () => { + const request = { body: { index_name: 'index-name', language: null } }; + mockRouter.shouldValidate(request); + }); + + it('fails validation without name', () => { + const request = { body: { language: 'en' } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation without language', () => { + const request = { body: { index_name: 'index-ame' } }; + mockRouter.shouldThrow(request); + }); + }); + describe('GET /internal/enterprise_search/indices/{indexName}/crawler', () => { let mockRouter: MockRouter; @@ -430,7 +473,7 @@ describe('crawler routes', () => { it('creates a request to enterprise search', () => { expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ - path: '/api/ent/v1/internal/crawler/validate_url', + path: '/api/ent/v1/internal/crawler2/validate_url', }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts index 652f72318074e..c41916fe20675 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler.ts @@ -22,12 +22,12 @@ export function registerCrawlerRoutes(routeDependencies: RouteDependencies) { validate: { body: schema.object({ index_name: schema.string(), - language: schema.string(), + language: schema.oneOf([schema.string(), schema.literal(null)]), }), }, }, enterpriseSearchRequestHandler.createRequest({ - path: '/api/ent/v1/internal/indices/', + path: '/api/ent/v1/internal/indices', }) ); @@ -42,7 +42,7 @@ export function registerCrawlerRoutes(routeDependencies: RouteDependencies) { }, }, enterpriseSearchRequestHandler.createRequest({ - path: '/api/ent/v1/internal/crawler/validate_url', + path: '/api/ent/v1/internal/crawler2/validate_url', }) ); diff --git a/x-pack/plugins/fleet/cypress/cypress.json b/x-pack/plugins/fleet/cypress/cypress.json index 6886e5c245cc0..b36d0c513116c 100644 --- a/x-pack/plugins/fleet/cypress/cypress.json +++ b/x-pack/plugins/fleet/cypress/cypress.json @@ -2,7 +2,7 @@ "baseUrl": "http://localhost:5620", "defaultCommandTimeout": 60000, "requestTimeout": 60000, - "responseTimetout": 60000, + "responseTimeout": 60000, "execTimeout": 120000, "pageLoadTimeout": 120000, "nodeVersion": "system", diff --git a/x-pack/plugins/fleet/server/routes/data_streams/get_data_streams_query_metadata.ts b/x-pack/plugins/fleet/server/routes/data_streams/get_data_streams_query_metadata.ts index 44a77a511ca4c..05f7989d8baea 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/get_data_streams_query_metadata.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/get_data_streams_query_metadata.ts @@ -24,9 +24,22 @@ export async function getDataStreamsQueryMetadata({ esClient.search({ size: 1, index: dataStreamName, - sort: 'event.ingested:desc', _source: false, fields: ['event.ingested'], + // We need to use `body` to control the `sort` value here, because otherwise + // it's just appended as a query string to the search operation and we can't + // set `unmapped_type` for cases where `event.ingested` is not defiend, e.g. + // in custom logs or custom HTTPJSON integrations + body: { + sort: { + 'event.ingested': { + order: 'desc', + // Necessary because of https://github.com/elastic/elasticsearch/issues/81960 + missing: 0, + unmapped_type: 'long', + }, + }, + }, }), esClient.termsEnum({ index: dataStreamName, diff --git a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts index f68c8d287472e..f0a5471832de8 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts @@ -190,7 +190,7 @@ export const getListHandler: RequestHandler = async (context, request, response) }); // Return final data streams objects sorted by last activity, descending - // After filtering out data streams that are missing dataset/namespace/type fields + // After filtering out data streams that are missing dataset/namespace/type/package fields body.data_streams = (await Promise.all(dataStreamPromises)) .filter(({ dataset, namespace, type }) => dataset && namespace && type) .sort((a, b) => b.last_activity_ms - a.last_activity_ms); diff --git a/x-pack/plugins/kubernetes_security/common/constants.ts b/x-pack/plugins/kubernetes_security/common/constants.ts index 625946b99a123..f61633fabc14f 100644 --- a/x-pack/plugins/kubernetes_security/common/constants.ts +++ b/x-pack/plugins/kubernetes_security/common/constants.ts @@ -20,6 +20,8 @@ export const AGGREGATE_MAX_BUCKETS = 2000; // react-query caching keys export const QUERY_KEY_PERCENT_WIDGET = 'kubernetesSecurityPercentWidget'; export const QUERY_KEY_COUNT_WIDGET = 'kubernetesSecurityCountWidget'; +export const QUERY_KEY_CONTAINER_NAME_WIDGET = 'kubernetesSecurityContainerNameWidget'; +export const QUERY_KEY_PROCESS_EVENTS = 'kubernetesSecurityProcessEvents'; export const DEFAULT_QUERY = '{"bool":{"must":[],"filter":[],"should":[],"must_not":[]}}'; diff --git a/x-pack/plugins/kubernetes_security/common/translations.ts b/x-pack/plugins/kubernetes_security/common/translations.ts index d13bf8be60265..7d447d3650a06 100644 --- a/x-pack/plugins/kubernetes_security/common/translations.ts +++ b/x-pack/plugins/kubernetes_security/common/translations.ts @@ -22,12 +22,45 @@ export const SEARCH_GROUP_SORT_BY = i18n.translate('xpack.kubernetesSecurity.sea defaultMessage: 'Sort by', }); -export const WIDGET_TOGGLE_SHOW = i18n.translate('xpack.kubernetesSecurity.widgetsToggle.show', { - defaultMessage: 'Show widgets', +export const TREE_VIEW_LOGICAL_VIEW = i18n.translate( + 'xpack.kubernetesSecurity.treeView.logicalView', + { + defaultMessage: 'Logical view', + } +); + +export const TREE_VIEW_INFRASTRUCTURE_VIEW = i18n.translate( + 'xpack.kubernetesSecurity.treeView.infrastructureView', + { + defaultMessage: 'Infrastructure view', + } +); + +export const TREE_VIEW_SWITCHER_LEGEND = i18n.translate( + 'xpack.kubernetesSecurity.treeView.switherLegend', + { + defaultMessage: 'You can switch between the Logical and Infrastructure view', + } +); + +export const TREE_NAVIGATION_LOADING = i18n.translate( + 'xpack.kubernetesSecurity.treeNavigation.loading', + { + defaultMessage: 'Loading', + } +); +export const TREE_NAVIGATION_SHOW_MORE = (name: string) => + i18n.translate('xpack.kubernetesSecurity.treeNavigation.loadMore', { + values: { name }, + defaultMessage: 'Show more {name}', + }); + +export const CHART_TOGGLE_SHOW = i18n.translate('xpack.kubernetesSecurity.chartsToggle.show', { + defaultMessage: 'Show charts', }); -export const WIDGET_TOGGLE_HIDE = i18n.translate('xpack.kubernetesSecurity.widgetsToggle.hide', { - defaultMessage: 'Hide widgets', +export const CHART_TOGGLE_HIDE = i18n.translate('xpack.kubernetesSecurity.chartsToggle.hide', { + defaultMessage: 'Hide charts', }); export const COUNT_WIDGET_CLUSTERS = i18n.translate( @@ -58,3 +91,24 @@ export const COUNT_WIDGET_CONTAINER_IMAGES = i18n.translate( defaultMessage: 'Container Images', } ); + +export const CONTAINER_NAME_SESSION = i18n.translate( + 'xpack.kubernetesSecurity.containerNameWidget.containerImage', + { + defaultMessage: 'Container Images Session', + } +); + +export const CONTAINER_NAME_SESSION_COUNT_COLUMN = i18n.translate( + 'xpack.kubernetesSecurity.containerNameWidget.containerImageCountColumn', + { + defaultMessage: 'Count', + } +); + +export const CONTAINER_NAME_SESSION_ARIA_LABEL = i18n.translate( + 'xpack.kubernetesSecurity.containerNameWidget.containerImageAriaLabel', + { + defaultMessage: 'Container Name Session Widget', + } +); diff --git a/x-pack/plugins/kubernetes_security/common/types/aggregate/index.ts b/x-pack/plugins/kubernetes_security/common/types/aggregate/index.ts index 70747aa8e878d..57a1df44292e9 100644 --- a/x-pack/plugins/kubernetes_security/common/types/aggregate/index.ts +++ b/x-pack/plugins/kubernetes_security/common/types/aggregate/index.ts @@ -5,11 +5,23 @@ * 2.0. */ -export interface AggregateResult { +interface Aggregate { key: string | number; - key_as_string?: string; doc_count: number; +} + +interface Buckets extends Aggregate { + key_as_string?: string; count_by_aggs: { value: number; }; } +export interface AggregateResult { + buckets: Buckets[]; + hasNextPage: boolean; +} + +export interface AggregateBucketPaginationResult { + buckets: Aggregate[]; + hasNextPage: boolean; +} diff --git a/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx new file mode 100644 index 0000000000000..e0d8249326d55 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; +import { CHART_TOGGLE_SHOW, CHART_TOGGLE_HIDE } from '../../../common/translations'; +import { ChartsToggle, TOGGLE_TEST_ID } from '.'; + +describe('ChartsToggle component', () => { + let render: () => ReturnType; + let renderResult: ReturnType; + let mockedContext: AppContextTestRender; + const handleToggleHideCharts = jest.fn(); + + beforeEach(() => { + mockedContext = createAppRootMockRenderer(); + }); + + describe('When ChartsToggle is mounted', () => { + it('show "hide charts" text when shouldHideCharts is false', async () => { + renderResult = mockedContext.render( + + ); + + expect(renderResult.getByText(CHART_TOGGLE_HIDE)).toBeVisible(); + }); + it('show "show charts" text when shouldHideCharts is true', async () => { + renderResult = mockedContext.render( + + ); + + expect(renderResult.getByText(CHART_TOGGLE_SHOW)).toBeVisible(); + }); + it('shouldHideCharts defaults to false when not provided', async () => { + renderResult = mockedContext.render( + + ); + + expect(renderResult.getByText(CHART_TOGGLE_HIDE)).toBeVisible(); + }); + it('clicking the toggle fires the callback', async () => { + renderResult = mockedContext.render( + + ); + + renderResult.queryByTestId(TOGGLE_TEST_ID)?.click(); + expect(handleToggleHideCharts).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.tsx b/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.tsx new file mode 100644 index 0000000000000..d38d1fed3c7aa --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { EuiButtonEmpty } from '@elastic/eui'; +import { CHART_TOGGLE_SHOW, CHART_TOGGLE_HIDE } from '../../../common/translations'; + +export const TOGGLE_TEST_ID = 'kubernetesSecurity:chartToggle'; + +interface ChartsToggleDeps { + handleToggleHideCharts: () => void; + shouldHideCharts?: boolean; +} + +export const ChartsToggle = ({ + handleToggleHideCharts, + shouldHideCharts = false, +}: ChartsToggleDeps) => ( + + {shouldHideCharts ? CHART_TOGGLE_SHOW : CHART_TOGGLE_HIDE} + +); diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx new file mode 100644 index 0000000000000..8691288bd7c7a --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; +import { ContainerNameRow } from './container_name_row'; +import { fireEvent } from '@testing-library/react'; + +const TEST_NAME = 'TEST ROW'; +const TEST_BUTTON_FILTER =
Filter In
; +const TEST_BUTTON_FILTER_OUT =
Filter Out
; + +describe('ContainerNameRow component with valid row', () => { + let renderResult: ReturnType; + const mockedContext = createAppRootMockRenderer(); + const render: () => ReturnType = () => + (renderResult = mockedContext.render( + + )); + + it('should show the row element as well as the pop up filter button when mouse hovers above it', async () => { + render(); + expect(renderResult.getByText(TEST_NAME)).toBeVisible(); + fireEvent.mouseOver(renderResult.queryByText(TEST_NAME)!); + expect(renderResult.getByText('Filter In')).toBeVisible(); + expect(renderResult.getByText('Filter Out')).toBeVisible(); + }); + + it('should show the row element but not the pop up filter button outside mouse hover', async () => { + render(); + expect(renderResult.getByText(TEST_NAME)).toBeVisible(); + expect(renderResult.queryByText('Filter In')).toBeFalsy(); + expect(renderResult.queryByText('Filter Out')).toBeFalsy(); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx new file mode 100644 index 0000000000000..50bb4504f5d6d --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { ReactNode, useState } from 'react'; +import { EuiFlexItem, EuiText } from '@elastic/eui'; +import { useStyles } from './styles'; + +export interface ContainerNameRowDeps { + name: string; + filterButtonIn?: ReactNode; + filterButtonOut?: ReactNode; +} + +export const ROW_TEST_ID = 'kubernetesSecurity:containerNameSessionRow'; + +export const ContainerNameRow = ({ + name, + filterButtonIn, + filterButtonOut, +}: ContainerNameRowDeps) => { + const [isHover, setIsHover] = useState(false); + + const styles = useStyles(); + + return ( + setIsHover(true)} + onMouseLeave={() => setIsHover(false)} + data-test-subj={ROW_TEST_ID} + > + + {name} + {isHover && ( +
+ {filterButtonIn} + {filterButtonOut} +
+ )} +
+
+ ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts new file mode 100644 index 0000000000000..66dcbc5b50265 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useInfiniteQuery } from 'react-query'; +import { CoreStart } from '@kbn/core/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { QUERY_KEY_CONTAINER_NAME_WIDGET, AGGREGATE_ROUTE } from '../../../common/constants'; +import { AggregateResult } from '../../../common/types/aggregate'; + +export const useFetchContainerNameData = ( + filterQuery: string, + widgetKey: string, + groupBy: string, + countBy?: string, + index?: string, + sortByCount?: string, + pageNumber?: number +) => { + const { http } = useKibana().services; + const cachingKeys = [ + QUERY_KEY_CONTAINER_NAME_WIDGET, + widgetKey, + filterQuery, + groupBy, + countBy, + sortByCount, + pageNumber, + ]; + const query = useInfiniteQuery( + cachingKeys, + async ({ pageParam = 0 }) => { + const res = await http.get(AGGREGATE_ROUTE, { + query: { + query: filterQuery, + groupBy, + countBy, + page: pageParam, + index, + sortByCount, + }, + }); + return res; + }, + { + refetchOnWindowFocus: false, + refetchOnMount: false, + refetchOnReconnect: false, + getNextPageParam: (lastPage, pages) => (lastPage.hasNextPage ? pages.length : undefined), + } + ); + return query; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx new file mode 100644 index 0000000000000..bdafb47a8b246 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { ENTRY_LEADER_ENTITY_ID, CONTAINER_IMAGE_NAME } from '../../../common/constants'; +import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; +import { GlobalFilter } from '../../types'; +import { + ContainerNameWidget, + LOADING_TEST_ID, + NAME_COLUMN_TEST_ID, + COUNT_COLUMN_TEST_ID, + CONTAINER_NAME_TABLE_TEST_ID, +} from '.'; +import { useFetchContainerNameData } from './hooks'; +import { ROW_TEST_ID } from './container_name_row'; + +const TABLE_SORT_BUTTON_ID = 'tableHeaderSortButton'; + +const TITLE = 'Container Images Session'; +const GLOBAL_FILTER: GlobalFilter = { + endDate: '2022-06-15T14:15:25.777Z', + filterQuery: '{"bool":{"must":[],"filter":[],"should":[],"must_not":[]}}', + startDate: '2022-05-15T14:15:25.777Z', +}; +const MOCK_DATA = { + pages: [ + { + buckets: [ + { key: 'Container A', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container B', doc_count: 295, count_by_aggs: { value: 3 } }, + { key: 'Container C', doc_count: 295, count_by_aggs: { value: 2 } }, + { key: 'Container D', doc_count: 295, count_by_aggs: { value: 4 } }, + { key: 'Container E', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container F', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container G', doc_count: 295, count_by_aggs: { value: 0 } }, + { key: 'Container H', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container J', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container K', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container L', doc_count: 295, count_by_aggs: { value: 5 } }, + ], + hasNextPage: true, + }, + { + buckets: [ + { key: 'Container A2', doc_count: 295, count_by_aggs: { value: 2 } }, + { key: 'Container B2', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container C2', doc_count: 295, count_by_aggs: { value: 6 } }, + { key: 'Container D2', doc_count: 295, count_by_aggs: { value: 1 } }, + { key: 'Container E2', doc_count: 295, count_by_aggs: { value: 3 } }, + { key: 'Container F2', doc_count: 295, count_by_aggs: { value: 1 } }, + ], + hasNextPage: false, + }, + ], + pageParams: [undefined], +}; + +jest.mock('../../hooks/use_filter', () => ({ + useSetFilter: () => ({ + getFilterForValueButton: jest.fn(), + getFilterOutValueButton: jest.fn(), + filterManager: {}, + }), +})); + +jest.mock('./hooks'); +const mockUseFetchData = useFetchContainerNameData as jest.Mock; + +describe('ContainerNameWidget component', () => { + let renderResult: ReturnType; + const mockedContext = createAppRootMockRenderer(); + const render: () => ReturnType = () => + (renderResult = mockedContext.render( + + )); + + describe('When ContainerNameWidget is mounted', () => { + describe('with data', () => { + beforeEach(() => { + mockUseFetchData.mockImplementation(() => ({ + data: MOCK_DATA, + isFetchingNextPage: true, + })); + }); + + it('should show the table, table title, table columns, sort button', async () => { + render(); + expect(renderResult.queryByTestId(CONTAINER_NAME_TABLE_TEST_ID)).toBeVisible(); + expect(renderResult.queryAllByTestId(TABLE_SORT_BUTTON_ID)).toHaveLength(1); + expect(renderResult.queryAllByTestId(NAME_COLUMN_TEST_ID)).toHaveLength(17); + expect(renderResult.queryAllByTestId(COUNT_COLUMN_TEST_ID)).toHaveLength(17); + }); + + it('should show data value names and value', async () => { + render(); + expect(renderResult.queryAllByTestId(ROW_TEST_ID)).toHaveLength(17); + }); + }); + + describe('without data ', () => { + it('should show no items found text', async () => { + mockUseFetchData.mockImplementation(() => ({ + data: undefined, + isFetchingNextPage: false, + })); + render(); + expect(renderResult.getByText(TITLE)).toBeVisible(); + expect(renderResult.getByText('No items found')).toBeVisible(); + expect(renderResult.getByTestId(CONTAINER_NAME_TABLE_TEST_ID)).toBeVisible(); + }); + }); + + describe('when loading data', () => { + it('should show progress bar', async () => { + mockUseFetchData.mockImplementation(() => ({ + data: MOCK_DATA, + isFetchingNextPage: false, + isLoading: true, + })); + render(); + expect(renderResult.getByTestId(LOADING_TEST_ID)).toBeVisible(); + }); + }); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.tsx b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.tsx new file mode 100644 index 0000000000000..15f3727efa660 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.tsx @@ -0,0 +1,226 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, { ReactNode, useMemo, useState, useRef, useCallback } from 'react'; +import { EuiBasicTable, EuiTableSortingType, EuiProgress, EuiBasicTableColumn } from '@elastic/eui'; +import { useStyles } from './styles'; +import { ContainerNameRow } from './container_name_row'; +import type { IndexPattern, GlobalFilter } from '../../types'; +import { useSetFilter, useScroll } from '../../hooks'; +import { addTimerangeToQuery } from '../../utils/add_timerange_to_query'; +import { useFetchContainerNameData } from './hooks'; +import { CONTAINER_IMAGE_NAME } from '../../../common/constants'; +import { + CONTAINER_NAME_SESSION, + CONTAINER_NAME_SESSION_COUNT_COLUMN, + CONTAINER_NAME_SESSION_ARIA_LABEL, +} from '../../../common/translations'; + +export const LOADING_TEST_ID = 'kubernetesSecurity:containerNameWidgetLoading'; +export const NAME_COLUMN_TEST_ID = 'kubernetesSecurity:containerImageNameSessionNameColumn'; +export const COUNT_COLUMN_TEST_ID = 'kubernetesSecurity:containerImageNameSessionCountColumn'; +export const CONTAINER_NAME_TABLE_TEST_ID = 'kubernetesSecurity:containerNameSessionTable'; + +export interface ContainerNameWidgetDataValueMap { + key: string; + doc_count: number; + count_by_aggs: { + value: number; + }; +} + +export interface ContainerNameArrayDataValue { + name: string; + count: number; +} + +export interface ContainerNameWidgetDeps { + widgetKey: string; + indexPattern?: IndexPattern; + globalFilter: GlobalFilter; + groupedBy: string; + countBy?: string; +} + +interface FilterButtons { + filterForButtons: ReactNode[]; + filterOutButtons: ReactNode[]; +} + +export const ContainerNameWidget = ({ + widgetKey, + indexPattern, + globalFilter, + groupedBy, + countBy, +}: ContainerNameWidgetDeps) => { + const [sortField, setSortField] = useState('count'); + const [sortDirection, setSortDirection] = useState('desc'); + const styles = useStyles(); + + const filterQueryWithTimeRange = useMemo(() => { + return addTimerangeToQuery( + globalFilter.filterQuery, + globalFilter.startDate, + globalFilter.endDate + ); + }, [globalFilter.filterQuery, globalFilter.startDate, globalFilter.endDate]); + + const { data, fetchNextPage, isFetchingNextPage, isLoading } = useFetchContainerNameData( + filterQueryWithTimeRange, + widgetKey, + groupedBy, + countBy, + indexPattern?.title, + sortDirection + ); + + const onTableChange = useCallback(({ sort = {} }) => { + // @ts-ignore + const { field: sortingField, direction: sortingDirection } = sort; + + setSortField(sortingField); + setSortDirection(sortingDirection); + }, []); + + const sorting: EuiTableSortingType = { + sort: { + field: sortField as keyof ContainerNameArrayDataValue, + direction: sortDirection as 'desc' | 'asc', + }, + enableAllColumns: true, + }; + + const { getFilterForValueButton, getFilterOutValueButton, filterManager } = useSetFilter(); + const filterButtons = useMemo((): FilterButtons => { + const result: FilterButtons = { + filterForButtons: + data?.pages + ?.map((aggsData) => { + return aggsData?.buckets.map((aggData) => { + return getFilterForValueButton({ + field: CONTAINER_IMAGE_NAME, + filterManager, + size: 'xs', + onClick: () => {}, + onFilterAdded: () => {}, + ownFocus: false, + showTooltip: true, + value: aggData.key as string, + }); + }); + }) + .flat() || [], + + filterOutButtons: + data?.pages + ?.map((aggsData) => { + return aggsData?.buckets.map((aggData) => { + return getFilterOutValueButton({ + field: CONTAINER_IMAGE_NAME, + filterManager, + size: 'xs', + onClick: () => {}, + onFilterAdded: () => {}, + ownFocus: false, + showTooltip: true, + value: aggData.key as string, + }); + }); + }) + .flat() || [], + }; + return result; + }, [data, getFilterForValueButton, getFilterOutValueButton, filterManager]); + + const containerNameArray = useMemo((): ContainerNameArrayDataValue[] => { + return data + ? data?.pages + ?.map((aggsData) => { + return aggsData?.buckets.map((aggData) => { + return { + name: aggData.key as string, + count: aggData.count_by_aggs.value, + }; + }); + }) + .flat() + : []; + }, [data]); + + const columns = useMemo((): Array> => { + return [ + { + field: 'name', + name: CONTAINER_NAME_SESSION, + 'data-test-subj': NAME_COLUMN_TEST_ID, + render: (name: string) => { + const indexHelper = containerNameArray.findIndex((obj) => { + return obj.name === name; + }); + + return ( + + ); + }, + align: 'left', + width: '74%', + sortable: false, + }, + { + field: 'count', + name: CONTAINER_NAME_SESSION_COUNT_COLUMN, + width: '26%', + 'data-test-subj': COUNT_COLUMN_TEST_ID, + render: (count: number) => { + return {count}; + }, + sortable: true, + align: 'right', + }, + ]; + }, [filterButtons.filterForButtons, filterButtons.filterOutButtons, containerNameArray, styles]); + + const scrollerRef = useRef(null); + useScroll({ + div: scrollerRef.current, + handler: (pos: number, endReached: boolean) => { + if (!isFetchingNextPage && endReached) { + fetchNextPage(); + } + }, + }); + + return ( +
+ {isLoading && ( + + )} + +
+ ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/styles.ts b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/styles.ts new file mode 100644 index 0000000000000..7e676b3e03445 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/container_name_widget/styles.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { transparentize } from '@elastic/eui'; +import { useEuiTheme } from '../../hooks'; + +export const useStyles = () => { + const { euiTheme } = useEuiTheme(); + + const cached = useMemo(() => { + const { size, font, colors } = euiTheme; + + const container: CSSObject = { + padding: size.base, + border: euiTheme.border.thin, + borderRadius: euiTheme.border.radius.medium, + overflow: 'auto', + height: '100%', + minHeight: '250px', + position: 'relative', + marginBottom: size.l, + }; + + const dataInfo: CSSObject = { + marginBottom: size.xs, + display: 'flex', + alignItems: 'center', + height: size.l, + position: 'relative', + }; + + const filters: CSSObject = { + marginLeft: size.s, + position: 'absolute', + left: '50%', + backgroundColor: colors.emptyShade, + borderRadius: euiTheme.border.radius.small, + border: euiTheme.border.thin, + bottom: '-25px', + boxShadow: `0 ${size.xs} ${size.xs} ${transparentize(euiTheme.colors.shadow, 0.04)}`, + }; + + const countValue: CSSObject = { + fontWeight: font.weight.semiBold, + }; + + return { + container, + dataInfo, + filters, + countValue, + }; + }, [euiTheme]); + + return cached; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx index 72d087f47d364..a0fbe2c90c690 100644 --- a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; import { GlobalFilter } from '../../types'; -import { CountWidget, LOADING_TEST_ID, TOOLTIP_TEST_ID } from '.'; +import { CountWidget, LOADING_TEST_ID, TOOLTIP_TEST_ID, VALUE_TEST_ID } from '.'; import { useFetchCountWidgetData } from './hooks'; import { fireEvent, waitFor } from '@testing-library/dom'; @@ -137,9 +137,9 @@ describe('CountWidget component', () => { isLoading: false, })); render(); - fireEvent.mouseOver(renderResult.getByText('Info')); + fireEvent.mouseOver(renderResult.getByTestId(VALUE_TEST_ID)); await waitFor(() => renderResult.getByTestId(TOOLTIP_TEST_ID)); - expect(renderResult.queryByText(MOCK_DATA_THOUSAND.pages[0])).toBeTruthy(); + expect(renderResult.queryByText('5,236')).toBeTruthy(); }); }); }); diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx index 5e5f5eacc374f..534187057b5e9 100644 --- a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx @@ -6,9 +6,10 @@ */ import React, { useMemo } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiLoadingSpinner, EuiIconTip } from '@elastic/eui'; +import { EuiText, EuiLoadingSpinner, EuiToolTip } from '@elastic/eui'; import { useStyles } from './styles'; import type { IndexPattern, GlobalFilter } from '../../types'; +import { addCommasToNumber } from '../../utils/add_commas_to_number'; import { addTimerangeToQuery } from '../../utils/add_timerange_to_query'; import { useFetchCountWidgetData } from './hooks'; import { addResourceTypeToFilterQuery, numberFormatter } from './helpers'; @@ -16,6 +17,7 @@ import { COUNT_WIDGET_KEY_PODS } from '../../../common/constants'; export const LOADING_TEST_ID = 'kubernetesSecurity:countWidgetLoading'; export const TOOLTIP_TEST_ID = 'kubernetesSecurity:countWidgetTooltip'; +export const VALUE_TEST_ID = 'kubernetesSecurity:countWidgetValue'; export interface CountWidgetDeps { title: string; @@ -60,26 +62,21 @@ export const CountWidget = ({ return (
-
- {title} - -
- - - - {isLoading ? ( - - ) : ( - formattedNumber - )} - - - +
{title}
+ + + {isLoading ? ( + + ) : ( + formattedNumber + )} + +
); }; diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts b/x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts index abd89925b5cf3..adea8ee704c97 100644 --- a/x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts +++ b/x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts @@ -21,6 +21,7 @@ export const useStyles = () => { borderRadius: border.radius.medium, overflow: 'auto', position: 'relative', + height: '100%', }; const title: CSSObject = { @@ -31,8 +32,6 @@ export const useStyles = () => { const dataInfo: CSSObject = { marginBottom: size.xs, - display: 'flex', - alignItems: 'center', height: '18px', fontSize: size.l, fontWeight: font.weight.bold, diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx index 5399975091420..ea9b8b11da891 100644 --- a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx @@ -25,6 +25,10 @@ jest.mock('../count_widget', () => ({ CountWidget: () =>
{'Mock count widget'}
, })); +jest.mock('../container_name_widget', () => ({ + ContainerNameWidget: () =>
{'Mock Container Name widget'}
, +})); + const renderWithRouter = ( initialEntries: MemoryRouterProps['initialEntries'] = ['/kubernetes'] ) => { diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx index 182873f954d8d..26c0b041ab18f 100644 --- a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx @@ -36,7 +36,7 @@ import { AggregateResult } from '../../../common/types/aggregate'; import { useLastUpdated } from '../../hooks'; import { useStyles } from './styles'; import { TreeViewContainer } from '../tree_view_container'; -import { WidgetsToggle } from '../widgets_toggle'; +import { ChartsToggle } from '../charts_toggle'; import { COUNT_WIDGET_CLUSTERS, COUNT_WIDGET_NAMESPACE, @@ -44,6 +44,7 @@ import { COUNT_WIDGET_PODS, COUNT_WIDGET_CONTAINER_IMAGES, } from '../../../common/translations'; +import { ContainerNameWidget } from '../container_name_widget'; const KubernetesSecurityRoutesComponent = ({ filter, @@ -51,7 +52,7 @@ const KubernetesSecurityRoutesComponent = ({ globalFilter, renderSessionsView, }: KubernetesSecurityDeps) => { - const [shouldHideWidgets, setShouldHideWidgets] = useLocalStorage( + const [shouldHideCharts, setShouldHideCharts] = useLocalStorage( LOCAL_STORAGE_HIDE_WIDGETS_KEY, false ); @@ -59,8 +60,8 @@ const KubernetesSecurityRoutesComponent = ({ const lastUpdated = useLastUpdated(globalFilter); const onReduceInteractiveAggs = useCallback( - (result: AggregateResult[]): Record => - result.reduce((groupedByKeyValue, aggregate) => { + (result: AggregateResult): Record => + result.buckets.reduce((groupedByKeyValue, aggregate) => { groupedByKeyValue[aggregate.key_as_string || (aggregate.key.toString() as string)] = aggregate.count_by_aggs.value; return groupedByKeyValue; @@ -69,9 +70,9 @@ const KubernetesSecurityRoutesComponent = ({ ); const onReduceRootAggs = useCallback( - (result: AggregateResult[]): Record => - result.reduce((groupedByKeyValue, aggregate) => { - if (aggregate.key === '0') { + (result: AggregateResult): Record => + result.buckets.reduce((groupedByKeyValue, aggregate) => { + if (aggregate.key.toString() === '0') { groupedByKeyValue[aggregate.key] = aggregate.count_by_aggs.value; } else { groupedByKeyValue.nonRoot = @@ -82,9 +83,9 @@ const KubernetesSecurityRoutesComponent = ({ [] ); - const handleToggleHideWidgets = useCallback(() => { - setShouldHideWidgets(!shouldHideWidgets); - }, [setShouldHideWidgets, shouldHideWidgets]); + const handleToggleHideCharts = useCallback(() => { + setShouldHideCharts(!shouldHideCharts); + }, [setShouldHideCharts, shouldHideCharts]); return ( @@ -98,185 +99,182 @@ const KubernetesSecurityRoutesComponent = ({
{lastUpdated}
-
- {!shouldHideWidgets && ( + {!shouldHideCharts && ( <> - - - + + + - - - - - - - - - - - - - - - - - + - - - - - - - - } + + + + + + + + + + + + + + + + + + + - - } - widgetKey="sessionsPercentage" - indexPattern={indexPattern} - globalFilter={globalFilter} - dataValueMap={{ - true: { - name: i18n.translate( - 'xpack.kubernetesSecurity.sessionChart.interactive', - { - defaultMessage: 'Interactive', - } - ), - fieldName: ENTRY_LEADER_INTERACTIVE, - color: euiThemeVars.euiColorVis0, - }, - false: { - name: i18n.translate( - 'xpack.kubernetesSecurity.sessionChart.nonInteractive', - { - defaultMessage: 'Non-interactive', - } - ), - fieldName: ENTRY_LEADER_INTERACTIVE, - color: euiThemeVars.euiColorVis1, - shouldHideFilter: true, - }, - }} - groupedBy={ENTRY_LEADER_INTERACTIVE} - countBy={ENTRY_LEADER_ENTITY_ID} - onReduce={onReduceInteractiveAggs} - /> - - - - - - - - } + } + /> + + } + widgetKey="sessionsPercentage" + indexPattern={indexPattern} + globalFilter={globalFilter} + dataValueMap={{ + true: { + name: i18n.translate( + 'xpack.kubernetesSecurity.sessionChart.interactive', + { + defaultMessage: 'Interactive', + } + ), + fieldName: ENTRY_LEADER_INTERACTIVE, + color: euiThemeVars.euiColorVis0, + }, + false: { + name: i18n.translate( + 'xpack.kubernetesSecurity.sessionChart.nonInteractive', + { + defaultMessage: 'Non-interactive', + } + ), + fieldName: ENTRY_LEADER_INTERACTIVE, + color: euiThemeVars.euiColorVis1, + shouldHideFilter: true, + }, + }} + groupedBy={ENTRY_LEADER_INTERACTIVE} + countBy={ENTRY_LEADER_ENTITY_ID} + onReduce={onReduceInteractiveAggs} + /> + + + + + + + - - } - widgetKey="rootLoginPercentage" - indexPattern={indexPattern} - globalFilter={globalFilter} - dataValueMap={{ - '0': { - name: i18n.translate('xpack.kubernetesSecurity.entryUserChart.root', { - defaultMessage: 'Root', - }), - fieldName: ENTRY_LEADER_USER_ID, - color: euiThemeVars.euiColorVis2, - }, - nonRoot: { - name: i18n.translate( - 'xpack.kubernetesSecurity.entryUserChart.nonRoot', - { - defaultMessage: 'Non-root', - } - ), - fieldName: ENTRY_LEADER_USER_ID, - color: euiThemeVars.euiColorVis3, - shouldHideFilter: true, - }, - }} - groupedBy={ENTRY_LEADER_USER_ID} - countBy={ENTRY_LEADER_ENTITY_ID} - onReduce={onReduceRootAggs} - /> - - + } + /> + + } + widgetKey="rootLoginPercentage" + indexPattern={indexPattern} + globalFilter={globalFilter} + dataValueMap={{ + '0': { + name: i18n.translate('xpack.kubernetesSecurity.entryUserChart.root', { + defaultMessage: 'Root', + }), + fieldName: ENTRY_LEADER_USER_ID, + color: euiThemeVars.euiColorVis2, + }, + nonRoot: { + name: i18n.translate('xpack.kubernetesSecurity.entryUserChart.nonRoot', { + defaultMessage: 'Non-root', + }), + fieldName: ENTRY_LEADER_USER_ID, + color: euiThemeVars.euiColorVis3, + shouldHideFilter: true, + }, + }} + groupedBy={ENTRY_LEADER_USER_ID} + countBy={ENTRY_LEADER_ENTITY_ID} + onReduce={onReduceRootAggs} + /> - - - -
PlaceHolder for Container Name Widget
-
-
+ +
)} - +
); diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts index 889f99715393b..aa35cd8a22a4f 100644 --- a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts +++ b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts @@ -48,8 +48,26 @@ export const useStyles = () => { height: '500px', }; - const percentageWidgets: CSSObject = { - marginBottom: size.l, + const widgetsBottomSpacing: CSSObject = { + marginBottom: size.m, + }; + + const noBottomSpacing: CSSObject = { + marginBottom: 0, + }; + + const countWidgetsGroup: CSSObject = { + ...widgetsBottomSpacing, + flexWrap: 'wrap', + }; + + const leftWidgetsGroup: CSSObject = { + ...noBottomSpacing, + minWidth: `calc(70% - ${size.xxxl})`, + }; + + const rightWidgetsGroup: CSSObject = { + minWidth: '30%', }; const percentageChartTitle: CSSObject = { @@ -58,16 +76,10 @@ export const useStyles = () => { fontWeight: font.weight.bold, }; - const countWidgets: CSSObject = { - margin: size.l, - }; - const widgetHolder: CSSObject = { position: 'relative', width: '332px', height: '235px', - padding: size.base, - border: border.thin, borderRadius: border.radius.medium, fontWeight: font.weight.bold, fontSize: size.m, @@ -80,9 +92,12 @@ export const useStyles = () => { updatedAt, widgetBadge, treeViewContainer, - percentageWidgets, + countWidgetsGroup, + leftWidgetsGroup, + rightWidgetsGroup, + widgetsBottomSpacing, percentageChartTitle, - countWidgets, + noBottomSpacing, widgetHolder, }; }, [euiTheme]); diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts b/x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts index decdb0c6e27a9..f13cdfa0ac7a4 100644 --- a/x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts +++ b/x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts @@ -11,7 +11,7 @@ import { QUERY_KEY_PERCENT_WIDGET, AGGREGATE_ROUTE } from '../../../common/const import { AggregateResult } from '../../../common/types/aggregate'; export const useFetchPercentWidgetData = ( - onReduce: (result: AggregateResult[]) => Record, + onReduce: (result: AggregateResult) => Record, filterQuery: string, widgetKey: string, groupBy: string, @@ -20,27 +20,19 @@ export const useFetchPercentWidgetData = ( ) => { const { http } = useKibana().services; const cachingKeys = [QUERY_KEY_PERCENT_WIDGET, widgetKey, filterQuery, groupBy, countBy, index]; - const query = useQuery( - cachingKeys, - async (): Promise> => { - const res = await http.get(AGGREGATE_ROUTE, { - query: { - query: filterQuery, - groupBy, - countBy, - page: 0, - index, - }, - }); + const query = useQuery(cachingKeys, async (): Promise> => { + const res = await http.get(AGGREGATE_ROUTE, { + query: { + query: filterQuery, + groupBy, + countBy, + page: 0, + index, + }, + }); - return onReduce(res); - }, - { - refetchOnWindowFocus: false, - refetchOnMount: false, - refetchOnReconnect: false, - } - ); + return onReduce(res); + }); return query; }; diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx b/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx index 0c3cb3da9c5a8..21c068978a345 100644 --- a/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx @@ -32,7 +32,7 @@ export interface PercentWidgetDeps { globalFilter: GlobalFilter; groupedBy: string; countBy?: string; - onReduce: (result: AggregateResult[]) => Record; + onReduce: (result: AggregateResult) => Record; } interface FilterButtons { diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap new file mode 100644 index 0000000000000..97a7fdd38f611 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap @@ -0,0 +1,435 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Tree view Breadcrumb component When Breadcrumb is mounted renders Breadcrumb correctly 1`] = ` +Object { + "asFragment": [Function], + "baseElement": +
+
+ + + + + + + + + + + +
+
+ , + "container":
+
+ + + + + + + + + + + +
+
, + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "unmount": [Function], +} +`; + +exports[`Tree view Breadcrumb component When Breadcrumb is mounted renders provided collections only 1`] = ` +Object { + "asFragment": [Function], + "baseElement": +
+
+ + + + + + + + +
+
+ , + "container":
+
+ + + + + + + + +
+
, + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "unmount": [Function], +} +`; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx new file mode 100644 index 0000000000000..1c127294ea7bb --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { AppContextTestRender, createAppRootMockRenderer } from '../../../test'; +import { KubernetesCollection, TreeNavSelection } from '../../../types'; +import { Breadcrumb } from '.'; + +const MOCK_TREE_SELECTION: TreeNavSelection = { + [KubernetesCollection.cluster]: 'selected cluster', + [KubernetesCollection.namespace]: 'selected namespace', + [KubernetesCollection.node]: 'selected node', + [KubernetesCollection.pod]: 'selected pod', + [KubernetesCollection.containerImage]: 'selected image', +}; + +describe('Tree view Breadcrumb component', () => { + let render: () => ReturnType; + let renderResult: ReturnType; + let mockedContext: AppContextTestRender; + let onSelect: jest.Mock; + + beforeEach(() => { + mockedContext = createAppRootMockRenderer(); + onSelect = jest.fn(); + }); + + describe('When Breadcrumb is mounted', () => { + it('renders Breadcrumb correctly', async () => { + renderResult = mockedContext.render( + + ); + + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.cluster]!) + ).toBeVisible(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.namespace]!) + ).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.node]!)).toBeFalsy(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.pod]!) + ).toBeVisible(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.containerImage]!) + ).toBeVisible(); + expect(renderResult).toMatchSnapshot(); + }); + + it('returns null when no selected collection', async () => { + renderResult = mockedContext.render(); + + expect(renderResult.container).toBeEmptyDOMElement(); + }); + + it('returns null when no cluster in selection', async () => { + renderResult = mockedContext.render( + + ); + + expect(renderResult.container).toBeEmptyDOMElement(); + }); + + it('renders provided collections only', async () => { + renderResult = mockedContext.render( + + ); + + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.cluster]!) + ).toBeVisible(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.namespace]!) + ).toBeFalsy(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.node]!) + ).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.pod]!)).toBeFalsy(); + expect( + renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.containerImage]!) + ).toBeVisible(); + expect(renderResult).toMatchSnapshot(); + }); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx new file mode 100644 index 0000000000000..ddef4abd86481 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { EuiButtonEmpty, EuiIcon } from '@elastic/eui'; +import { TreeNavSelection, KubernetesCollection } from '../../../types'; +import { useStyles } from './styles'; + +interface BreadcrumbDeps { + treeNavSelection: TreeNavSelection; + onSelect: (selection: TreeNavSelection) => void; +} + +export const Breadcrumb = ({ treeNavSelection, onSelect }: BreadcrumbDeps) => { + const styles = useStyles(); + const onBreadCrumbClick = useCallback( + (collectionType: string) => { + const selectionCopy = { ...treeNavSelection }; + switch (collectionType) { + case KubernetesCollection.cluster: { + onSelect({ + [KubernetesCollection.cluster]: treeNavSelection[KubernetesCollection.cluster], + }); + break; + } + case KubernetesCollection.namespace: + case KubernetesCollection.node: { + delete selectionCopy[KubernetesCollection.pod]; + delete selectionCopy[KubernetesCollection.containerImage]; + onSelect(selectionCopy); + break; + } + case KubernetesCollection.pod: { + delete selectionCopy[KubernetesCollection.containerImage]; + onSelect(selectionCopy); + break; + } + } + }, + [onSelect, treeNavSelection] + ); + + const renderBreadcrumbLink = useCallback( + ( + collectionType: KubernetesCollection, + icon: JSX.Element, + isBolded: boolean, + hasRightArrow: boolean = true + ) => ( + <> + {hasRightArrow && } + {icon} + onBreadCrumbClick(collectionType)} + > + {treeNavSelection[collectionType]} + + + ), + [ + onBreadCrumbClick, + styles.breadcrumbButton, + styles.breadcrumbButtonBold, + styles.breadcrumbRightIcon, + treeNavSelection, + ] + ); + + if (!treeNavSelection[KubernetesCollection.cluster]) { + return null; + } + + return ( +
+ {renderBreadcrumbLink( + KubernetesCollection.cluster, + , + !( + treeNavSelection[KubernetesCollection.namespace] || + treeNavSelection[KubernetesCollection.node] + ), + false + )} + {treeNavSelection[KubernetesCollection.namespace] && + renderBreadcrumbLink( + KubernetesCollection.namespace, + , + !treeNavSelection[KubernetesCollection.pod] + )} + {treeNavSelection[KubernetesCollection.node] && + renderBreadcrumbLink( + KubernetesCollection.node, + , + !treeNavSelection[KubernetesCollection.pod] + )} + {treeNavSelection[KubernetesCollection.pod] && + renderBreadcrumbLink( + KubernetesCollection.pod, + , + !treeNavSelection[KubernetesCollection.containerImage] + )} + {treeNavSelection[KubernetesCollection.containerImage] && + renderBreadcrumbLink( + KubernetesCollection.containerImage, + , + true + )} +
+ ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts new file mode 100644 index 0000000000000..e2a5f297b04f0 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { useEuiTheme } from '../../../hooks'; + +export const useStyles = () => { + const { euiTheme } = useEuiTheme(); + + const cached = useMemo(() => { + const { colors, size, font, border } = euiTheme; + + const breadcrumb: CSSObject = { + borderBottom: border.thin, + borderColor: colors.lightShade, + paddingBottom: size.s, + marginBottom: size.m, + }; + + const breadcrumbButton: CSSObject = { + height: 'fit-content', + maxWidth: '248px', + fontWeight: font.weight.regular, + '.euiButtonEmpty__content': { + paddingLeft: size.xs, + paddingRight: size.xs, + }, + }; + + const breadcrumbButtonBold: CSSObject = { + ...breadcrumbButton, + fontWeight: font.weight.semiBold, + }; + + const breadcrumbRightIcon: CSSObject = { + marginRight: size.xs, + }; + + return { + breadcrumb, + breadcrumbButton, + breadcrumbButtonBold, + breadcrumbRightIcon, + }; + }, [euiTheme]); + + return cached; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx new file mode 100644 index 0000000000000..b9851f65df2cb --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { FC } from 'react'; +import { render } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { focusNextElement } from './helpers'; + +// dummy component for testing +const TestButtonList: FC = (props: any) => ( + <> + {[...Array(100)].map((_, idx) => ( + + ))} + +); + +describe('DynamicTreeView component', () => { + it('Should focus the next element', async () => { + const onKeyDown = (e: any) => { + focusNextElement(e, 'button', 'next'); + }; + const wrapper = render(); + wrapper.getByText('Button 40').focus(); + + userEvent.keyboard('{ArrowRight}'); + expect(wrapper.getByText('Button 41')).toHaveFocus(); + userEvent.keyboard('{ArrowRight}'); + expect(wrapper.getByText('Button 42')).toHaveFocus(); + }); + it('Should focus the previous element', async () => { + const onKeyDown = (e: any) => { + focusNextElement(e, 'button', 'prev'); + }; + const wrapper = render(); + wrapper.getByText('Button 40').focus(); + + userEvent.keyboard('{ArrowLeft}'); + expect(wrapper.getByText('Button 39')).toHaveFocus(); + userEvent.keyboard('{ArrowLeft}'); + expect(wrapper.getByText('Button 38')).toHaveFocus(); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts new file mode 100644 index 0000000000000..774ea3eb10ee5 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KeyboardEvent, MouseEvent } from 'react'; + +export const disableEventDefaults = (event: KeyboardEvent | MouseEvent) => { + event.preventDefault(); + event.stopPropagation(); +}; + +export const focusNextElement = ( + event: KeyboardEvent, + selector: string, + direction: 'prev' | 'next' +) => { + const list = Array.from(document.querySelectorAll(selector)); + const currentIndex = list.indexOf(event.currentTarget); + if (currentIndex > -1) { + const nextButton = list[currentIndex + (direction === 'next' ? +1 : -1)] as HTMLElement; + if (nextButton) { + disableEventDefaults(event); + nextButton.focus(); + } + } +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts new file mode 100644 index 0000000000000..7607b7253ada5 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useInfiniteQuery } from 'react-query'; +import { CoreStart } from '@kbn/core/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { QueryDslQueryContainerBool } from '../../../types'; +import { QUERY_KEY_PROCESS_EVENTS, AGGREGATE_ROUTE } from '../../../../common/constants'; +import { AggregateBucketPaginationResult } from '../../../../common/types/aggregate'; + +export const useFetchDynamicTreeView = ( + query: QueryDslQueryContainerBool, + groupBy: string, + index?: string, + enabled?: boolean +) => { + const { http } = useKibana().services; + const cachingKeys = [QUERY_KEY_PROCESS_EVENTS, query, groupBy, index]; + + return useInfiniteQuery( + cachingKeys, + async ({ pageParam = 0 }) => + await http.get(AGGREGATE_ROUTE, { + query: { + query: JSON.stringify(query), + groupBy, + page: pageParam, + perPage: 50, + index, + }, + }), + { + enabled, + getNextPageParam: (lastPage, pages) => (lastPage.hasNextPage ? pages.length : undefined), + } + ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx new file mode 100644 index 0000000000000..c61de91b6884d --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx @@ -0,0 +1,178 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { waitFor } from '@testing-library/react'; +import { AppContextTestRender, createAppRootMockRenderer } from '../../../test'; +import { DynamicTreeView } from '.'; +import { clusterResponseMock, nodeResponseMock } from './mocks'; + +describe('DynamicTreeView component', () => { + let render: (props?: any) => ReturnType; + let renderResult: ReturnType; + let mockedContext: AppContextTestRender; + let mockedApi: AppContextTestRender['coreStart']['http']['get']; + + const waitForApiCall = () => waitFor(() => expect(mockedApi).toHaveBeenCalled()); + + beforeEach(() => { + mockedContext = createAppRootMockRenderer(); + mockedApi = mockedContext.coreStart.http.get; + mockedApi.mockResolvedValue(clusterResponseMock); + render = (props) => + (renderResult = mockedContext.render( + {}} + {...props} + /> + )); + }); + + describe('When DynamicTreeView is mounted', () => { + it('should show loading state while retrieving empty data and hide it when settled', async () => { + render(); + expect(renderResult.queryByText(/loading/i)).toBeInTheDocument(); + await waitForApiCall(); + expect(renderResult.queryByText(/loading/i)).not.toBeInTheDocument(); + }); + }); + + describe('DynamicTreeView parent level', () => { + const key = 'cluster-test'; + const tree = [ + { + key, + name: 'cluster', + namePlural: 'clusters', + type: 'cluster', + iconProps: { + type: 'cluster', + }, + }, + ]; + + it('should make a api call with group based on tree parameters', async () => { + render({ + tree, + }); + await waitForApiCall(); + + expect(mockedApi).toHaveBeenCalledWith('/internal/kubernetes_security/aggregate', { + query: { + groupBy: key, + index: '*-logs', + page: 0, + perPage: 50, + query: '{"bool":{"filter":[],"must":[],"must_not":[],"should":[]}}', + }, + }); + }); + + it('should render the parent level based on api response', async () => { + render({ + tree, + }); + await waitForApiCall(); + + ['awp-demo-gke-main', 'awp-demo-gke-test'].forEach((cluster) => { + expect(renderResult.queryByText(cluster)).toBeInTheDocument(); + }); + }); + + it('should trigger a callback when tree node is clicked', async () => { + const callback = jest.fn(); + render({ tree, onSelect: callback }); + await waitForApiCall(); + + renderResult.getByRole('button', { name: 'awp-demo-gke-main' }).click(); + + expect(callback).toHaveBeenCalled(); + }); + }); + + describe('DynamicTreeView children', () => { + const tree = [ + { + key: 'cluster', + name: 'cluster', + namePlural: 'clusters', + type: 'cluster', + iconProps: { + type: 'cluster', + }, + }, + { + key: 'node', + name: 'node', + namePlural: 'nodes', + type: 'node', + iconProps: { + type: 'node', + }, + }, + ]; + + const parent = 'awp-demo-gke-main'; + + it('should make a children api call with filter when parent is expanded', async () => { + render({ tree }); + await waitForApiCall(); + renderResult.getByRole('button', { name: parent }).click(); + + mockedApi.mockResolvedValueOnce(nodeResponseMock); + + await waitForApiCall(); + expect(mockedApi).toHaveBeenCalledWith('/internal/kubernetes_security/aggregate', { + query: { + groupBy: 'node', + index: '*-logs', + page: 0, + perPage: 50, + query: `{"bool":{"filter":[{"term":{"cluster":"${parent}"}}],"must":[],"must_not":[],"should":[]}}`, + }, + }); + }); + + it('should render children when parent is expanded based on api request', async () => { + render({ tree }); + await waitForApiCall(); + + renderResult.getByRole('button', { name: parent }).click(); + + mockedApi.mockResolvedValueOnce(nodeResponseMock); + + // check if children has loading state + expect(renderResult.queryByText(/loading/i)).toBeInTheDocument(); + await waitForApiCall(); + + ['default', 'kube-system', 'production', 'qa', 'staging'].forEach((node) => { + expect(renderResult.queryByText(node)).toBeInTheDocument(); + }); + }); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx new file mode 100644 index 0000000000000..bed7238d59ec4 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx @@ -0,0 +1,331 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState, useRef, MouseEvent, KeyboardEvent, useMemo } from 'react'; +import { + EuiIcon, + EuiText, + EuiI18n, + EuiScreenReaderOnly, + EuiBadge, + keys, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { + TREE_NAVIGATION_LOADING, + TREE_NAVIGATION_SHOW_MORE, +} from '../../../../common/translations'; +import { useFetchDynamicTreeView } from './hooks'; +import { useStyles } from './styles'; +import { disableEventDefaults, focusNextElement } from './helpers'; +import type { DynamicTreeViewProps, DynamicTreeViewItemProps } from './types'; + +const BUTTON_TEST_ID = 'kubernetesSecurity:dynamicTreeViewButton'; + +const focusNextButton = (event: KeyboardEvent) => { + focusNextElement(event, `[data-test-subj="${BUTTON_TEST_ID}"]`, 'next'); +}; +const focusPreviousButton = (event: KeyboardEvent) => { + focusNextElement(event, `[data-test-subj="${BUTTON_TEST_ID}"]`, 'prev'); +}; + +const DynamicTreeViewExpander = ({ + children, +}: { + children: (childrenProps: { isExpanded: boolean; onToggleExpand: () => void }) => JSX.Element; +}) => { + const [isExpanded, setIsExpanded] = useState(false); + + const onToggleExpand = () => { + setIsExpanded((e) => !e); + }; + + return children({ + isExpanded, + onToggleExpand, + }); +}; + +export const DynamicTreeView = ({ + tree, + depth = 0, + selectionDepth = {}, + query, + indexPattern = '', + onSelect, + hasSelection, + selected = '', + expanded = true, + ...props +}: DynamicTreeViewProps) => { + const styles = useStyles(depth); + + const { data, fetchNextPage, isFetchingNextPage, hasNextPage, isLoading } = + useFetchDynamicTreeView(query, tree[depth].key, indexPattern, expanded); + + const ariaLabel = props['aria-label']; + + const onLoadMoreKeydown = (event: React.KeyboardEvent) => { + switch (event.key) { + case keys.ARROW_DOWN: { + focusNextButton(event); + break; + } + case keys.ARROW_UP: { + focusPreviousButton(event); + break; + } + case keys.ARROW_RIGHT: { + disableEventDefaults(event); + fetchNextPage(); + } + } + }; + + useEffect(() => { + if (expanded) { + fetchNextPage(); + } + }, [fetchNextPage, expanded]); + + useEffect(() => { + if (!hasSelection && !depth && data && data.pages?.[0].buckets?.[0]?.key) { + onSelect({}, data.pages[0].buckets[0].key, tree[depth].type); + } + }, [data, depth, hasSelection, onSelect, tree]); + + const onClickNextPageHandler = () => { + fetchNextPage(); + }; + + const itemList = useMemo(() => { + return ( + data?.pages + ?.map((aggsData) => { + return aggsData?.buckets; + }) + .flat() || [] + ); + }, [data?.pages]); + + return ( + + {isLoading && ( +
+ + {TREE_NAVIGATION_LOADING} +
+ )} + {depth === 0 && ( + + {(listNavigationInstructions: string) => ( + +

{listNavigationInstructions}

+
+ )} +
+ )} +
    + {itemList.map((aggData) => { + const queryFilter = { + ...query, + bool: { + ...query.bool, + filter: [...query.bool.filter, { term: { [tree[depth].key]: aggData.key } }], + }, + }; + + return ( + + {({ isExpanded, onToggleExpand }) => ( + + )} + + ); + })} + {hasNextPage && ( +
  • + onLoadMoreKeydown(event)} + onClick={onClickNextPageHandler} + > + + {isFetchingNextPage + ? TREE_NAVIGATION_LOADING + : TREE_NAVIGATION_SHOW_MORE(tree[depth].namePlural)} + + {isFetchingNextPage ? ( + + ) : ( + + )} + +
  • + )} +
+
+ ); +}; + +const DynamicTreeViewItem = ({ + depth, + tree, + onToggleExpand, + onSelect, + aggData, + selectionDepth, + isExpanded, + selected, + expanded, + query, + indexPattern, + ...props +}: DynamicTreeViewItemProps) => { + const isLastNode = depth === tree.length - 1; + const styles = useStyles(depth); + const buttonRef = useRef>({}); + + const onKeyboardToggle = () => { + if (!isLastNode) { + onToggleExpand(); + } + onSelect(selectionDepth, aggData.key, tree[depth].type); + }; + + const onButtonToggle = () => { + if (!isLastNode && !isExpanded) { + onToggleExpand(); + } + onSelect(selectionDepth, aggData.key, tree[depth].type); + }; + + const onArrowToggle = (event: MouseEvent) => { + disableEventDefaults(event); + if (!isLastNode) { + onToggleExpand(); + } + }; + + // Enable keyboard navigation + const onKeyDown = (event: React.KeyboardEvent) => { + switch (event.key) { + case keys.ARROW_DOWN: { + focusNextButton(event); + break; + } + case keys.ARROW_UP: { + focusPreviousButton(event); + break; + } + case keys.ARROW_RIGHT: { + if (!isExpanded && !isLastNode) { + disableEventDefaults(event); + onKeyboardToggle(); + } + break; + } + case keys.ARROW_LEFT: { + if (isExpanded) { + disableEventDefaults(event); + onKeyboardToggle(); + } + } + default: + break; + } + }; + + const onChildrenKeydown = (event: React.KeyboardEvent, key: string) => { + if (event.key === keys.ARROW_LEFT) { + disableEventDefaults(event); + buttonRef.current[key].focus(); + } + }; + + const isSelected = useMemo(() => { + return ( + selected === + Object.entries({ ...selectionDepth, [tree[depth].type]: aggData.key }) + .map(([k, v]) => `${k}.${v}`) + .join() + ); + }, [aggData.key, depth, selected, selectionDepth, tree]); + + return ( +
  • + +
    onChildrenKeydown(event, aggData.key.toString())} + > + {!isLastNode && ( + + )} +
    +
  • + ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/mocks.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/mocks.ts new file mode 100644 index 0000000000000..e14a1aa73e04b --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/mocks.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const clusterResponseMock = { + buckets: [ + { key: 'awp-demo-gke-main', doc_count: 58645 }, + { key: 'awp-demo-gke-test', doc_count: 23957 }, + ], + hasNextPage: false, +}; + +export const nodeResponseMock = { + buckets: [ + { key: 'default', doc_count: 236 }, + { key: 'kube-system', doc_count: 30360 }, + { key: 'production', doc_count: 30713 }, + { key: 'qa', doc_count: 412 }, + { key: 'staging', doc_count: 220 }, + ], + hasNextPage: false, +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts new file mode 100644 index 0000000000000..65593a013e7bf --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { transparentize } from '@elastic/eui'; +import { useEuiTheme } from '../../../hooks'; + +export const useStyles = (depth: number) => { + const { euiTheme } = useEuiTheme(); + + const cached = useMemo(() => { + const { size, colors } = euiTheme; + + const loadMoreButtonWrapper: CSSObject = { + position: 'relative', + textAlign: 'center', + width: `calc(100% + ${depth * 24}px)`, + marginLeft: `-${depth * 24}px`, + '&:after': { + content: `''`, + position: 'absolute', + top: '50%', + width: '100%', + border: `1px dashed ${colors.mediumShade}`, + left: 0, + }, + }; + const loadMoreButton: CSSObject = { + position: 'relative', + cursor: 'pointer', + zIndex: 2, + }; + const loadMoreText: CSSObject = { + marginRight: size.s, + }; + const loadMoreTextLeft: CSSObject = { + marginLeft: size.s, + }; + const labelIcon: CSSObject = { + marginRight: size.s, + marginLeft: size.s, + }; + + const treeViewWrapper = (expanded: boolean): CSSObject => ({ + display: !expanded ? 'none' : 'inherit', + '.euiTreeView__node--selected > .euiTreeView__nodeInner': { + backgroundColor: transparentize(colors.darkestShade, 0.1), + }, + '.euiTreeView__node--expanded': { + maxHeight: '100%', + }, + }); + + return { + loadMoreButton, + loadMoreButtonWrapper, + loadMoreText, + loadMoreTextLeft, + labelIcon, + treeViewWrapper, + }; + }, [euiTheme, depth]); + + return cached; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts new file mode 100644 index 0000000000000..106bc8c2130bd --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { QueryDslQueryContainerBool, TreeNavSelection, DynamicTree } from '../../../types'; + +export type DynamicTreeViewProps = { + tree: DynamicTree[]; + depth?: number; + selectionDepth?: TreeNavSelection; + query: QueryDslQueryContainerBool; + indexPattern?: string; + onSelect: (selectionDepth: TreeNavSelection, key: string | number, type: string) => void; + hasSelection?: boolean; + 'aria-label': string; + selected?: string; + expanded?: boolean; +}; + +export type DynamicTreeViewItemProps = Required> & { + onToggleExpand: any; + aggData: any; + isExpanded: boolean; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts new file mode 100644 index 0000000000000..12a77a923c6c3 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DEFAULT_QUERY } from '../../../common/constants'; +import { KubernetesCollection, QueryDslQueryContainerBool, TreeNavSelection } from '../../types'; + +export const KUBERNETES_COLLECTION_FIELDS = { + [KubernetesCollection.cluster]: 'orchestrator.cluster.name', + [KubernetesCollection.namespace]: 'orchestrator.namespace', + [KubernetesCollection.node]: 'cloud.instance.name', + [KubernetesCollection.pod]: 'orchestrator.resource.name', + [KubernetesCollection.containerImage]: 'container.image.name', +}; + +export const addTreeNavSelectionToFilterQuery = ( + filterQuery: string | undefined, + treeNavSelection: TreeNavSelection +) => { + let validFilterQuery = DEFAULT_QUERY; + + try { + const parsedFilterQuery: QueryDslQueryContainerBool = JSON.parse(filterQuery || '{}'); + if (!(parsedFilterQuery?.bool?.filter && Array.isArray(parsedFilterQuery.bool.filter))) { + throw new Error('Invalid filter query'); + } + parsedFilterQuery.bool.filter.push( + ...Object.keys(treeNavSelection).map((collectionKey) => { + const collection = collectionKey as KubernetesCollection; + return { + bool: { + should: [ + { + match: { + [KUBERNETES_COLLECTION_FIELDS[collection]]: treeNavSelection[collection], + }, + }, + ], + }, + }; + }) + ); + validFilterQuery = JSON.stringify(parsedFilterQuery); + } catch { + // no-op since validFilterQuery is initialized to be DEFAULT_QUERY + } + + return validFilterQuery; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx index e934fe4a31f2d..7de0969df8e97 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx @@ -5,10 +5,13 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { EuiSplitPanel, EuiText } from '@elastic/eui'; import { useStyles } from './styles'; -import type { IndexPattern, GlobalFilter } from '../../types'; +import { IndexPattern, GlobalFilter, TreeNavSelection, KubernetesCollection } from '../../types'; +import { TreeNav } from './tree_nav'; +import { addTreeNavSelectionToFilterQuery } from './helpers'; +import { Breadcrumb } from './breadcrumb'; export interface TreeViewContainerDeps { globalFilter: GlobalFilter; @@ -16,19 +19,41 @@ export interface TreeViewContainerDeps { indexPattern?: IndexPattern; } -export const TreeViewContainer = ({ globalFilter, renderSessionsView }: TreeViewContainerDeps) => { +export const TreeViewContainer = ({ + globalFilter, + renderSessionsView, + indexPattern, +}: TreeViewContainerDeps) => { const styles = useStyles(); - // TODO: combine filterQuery with filters from tree view nav + const [treeNavSelection, setTreeNavSelection] = useState({}); + + const onTreeNavSelect = useCallback((selection: TreeNavSelection) => { + setTreeNavSelection(selection); + }, []); + + const hasSelection = useMemo( + () => !!treeNavSelection[KubernetesCollection.cluster], + [treeNavSelection] + ); return ( -

    Tree view nav panel

    +
    - {renderSessionsView(globalFilter.filterQuery)} + + {hasSelection && + renderSessionsView( + addTreeNavSelectionToFilterQuery(globalFilter.filterQuery, treeNavSelection) + )}
    ); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts index c490e5b711889..3aa1f786e8c32 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts @@ -24,7 +24,7 @@ export const useStyles = () => { }; const treeViewNav: CSSObject = { - width: '284px', + width: '316px', }; const sessionsPanel: CSSObject = { diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts new file mode 100644 index 0000000000000..b0dd7a66c0473 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KubernetesCollection, DynamicTree } from '../../../types'; +import { KUBERNETES_COLLECTION_FIELDS } from '../helpers'; +import { translations } from './translations'; + +const LOGICAL_TREE_VIEW: DynamicTree[] = [ + { + key: KUBERNETES_COLLECTION_FIELDS.cluster, + iconProps: { type: 'heatmap', color: 'success' }, + type: KubernetesCollection.cluster, + name: translations.cluster(), + namePlural: translations.cluster(true), + }, + { + key: KUBERNETES_COLLECTION_FIELDS.namespace, + iconProps: { type: 'nested', color: 'primary' }, + type: KubernetesCollection.namespace, + name: translations.namespace(), + namePlural: translations.namespace(true), + }, + { + key: KUBERNETES_COLLECTION_FIELDS.pod, + iconProps: { type: 'package', color: 'warning' }, + type: KubernetesCollection.pod, + name: translations.pod(), + namePlural: translations.pod(true), + }, + { + key: KUBERNETES_COLLECTION_FIELDS.containerImage, + iconProps: { type: 'image', color: 'danger' }, + type: KubernetesCollection.containerImage, + name: translations.containerImage(), + namePlural: translations.containerImage(true), + }, +]; + +const INFRASTRUCTURE_TREE_VIEW = LOGICAL_TREE_VIEW.map((tree, index) => { + if (index === 1) { + return { + key: KUBERNETES_COLLECTION_FIELDS.node, + iconProps: { type: 'node', color: 'primary' }, + type: KubernetesCollection.node, + name: translations.node(), + namePlural: translations.node(true), + }; + } + return tree; +}); + +export const TREE_VIEW = { + logical: LOGICAL_TREE_VIEW, + infrastructure: INFRASTRUCTURE_TREE_VIEW, +}; + +export const INFRASTRUCTURE = 'infrastructure'; +export const LOGICAL = 'logical'; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx new file mode 100644 index 0000000000000..6664acb125f11 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.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 { AppContextTestRender, createAppRootMockRenderer } from '../../../test'; +import { TreeNav } from '.'; + +describe('TreeNav component', () => { + let render: () => ReturnType; + let renderResult: ReturnType; + let mockedContext: AppContextTestRender; + + const defaultProps = { + globalFilter: { + startDate: Date.now().toString(), + endDate: (Date.now() + 1).toString(), + }, + onSelect: () => {}, + hasSelection: false, + }; + + beforeEach(() => { + mockedContext = createAppRootMockRenderer(); + }); + + it('mount with Logical View selected by default', async () => { + renderResult = mockedContext.render(); + const elemLabel = await renderResult.getByDisplayValue(/logical/i); + expect(elemLabel).toBeChecked(); + }); + + it('shows the tree path according with the selected view type', async () => { + renderResult = mockedContext.render(); + + const logicalViewPath = 'cluster / namespace / pod / container image'; + const logicViewRadio = await renderResult.getByDisplayValue(/logical/i); + expect(logicViewRadio).toBeChecked(); + expect(renderResult.getByText(logicalViewPath)).toBeInTheDocument(); + + const infraStructureViewRadio = await renderResult.getByDisplayValue(/infrastructure/i); + infraStructureViewRadio.click(); + + expect(renderResult.getByText('cluster / node / pod / container image')).toBeInTheDocument(); + + logicViewRadio.click(); + expect(renderResult.getByText(logicalViewPath)).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx new file mode 100644 index 0000000000000..56ab1c94d93a5 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useState, useMemo } from 'react'; +import { EuiButtonGroup, useGeneratedHtmlId, EuiText, EuiSpacer } from '@elastic/eui'; +import { + TREE_VIEW_INFRASTRUCTURE_VIEW, + TREE_VIEW_LOGICAL_VIEW, + TREE_VIEW_SWITCHER_LEGEND, +} from '../../../../common/translations'; +import { useStyles } from './styles'; +import { IndexPattern, GlobalFilter, TreeNavSelection } from '../../../types'; +import { DynamicTreeView } from '../dynamic_tree_view'; +import { addTimerangeToQuery } from '../../../utils/add_timerange_to_query'; +import { INFRASTRUCTURE, LOGICAL, TREE_VIEW } from './constants'; +import { TreeViewKind, TreeViewOptionsGroup } from './types'; + +interface TreeNavProps { + indexPattern?: IndexPattern; + globalFilter: GlobalFilter; + onSelect: (selection: TreeNavSelection) => void; + hasSelection: boolean; +} + +export const TreeNav = ({ indexPattern, globalFilter, onSelect, hasSelection }: TreeNavProps) => { + const styles = useStyles(); + const [tree, setTree] = useState(TREE_VIEW.logical); + const [selected, setSelected] = useState(''); + + const filterQueryWithTimeRange = useMemo(() => { + return addTimerangeToQuery( + globalFilter.filterQuery, + globalFilter.startDate, + globalFilter.endDate + ); + }, [globalFilter.filterQuery, globalFilter.startDate, globalFilter.endDate]); + + const treeNavTypePrefix = useGeneratedHtmlId({ + prefix: 'treeNavType', + }); + + const logicalTreeViewPrefix = `${treeNavTypePrefix}${LOGICAL}`; + + const [toggleIdSelected, setToggleIdSelected] = useState(logicalTreeViewPrefix); + + const options: TreeViewOptionsGroup[] = [ + { + id: logicalTreeViewPrefix, + label: TREE_VIEW_LOGICAL_VIEW, + value: LOGICAL, + }, + { + id: `${treeNavTypePrefix}${INFRASTRUCTURE}`, + label: TREE_VIEW_INFRASTRUCTURE_VIEW, + value: INFRASTRUCTURE, + }, + ]; + + const handleTreeViewSwitch = (id: string, value: TreeViewKind) => { + setToggleIdSelected(id); + setTree(TREE_VIEW[value]); + }; + + return ( + <> + + + + {tree.map((t) => t.name).join(' / ')} + + +
    + { + const newSelectionDepth = { + ...selectionDepth, + [type]: key, + }; + setSelected( + Object.entries(newSelectionDepth) + .map(([k, v]) => `${k}.${v}`) + .join() + ); + onSelect(newSelectionDepth); + }} + hasSelection={hasSelection} + /> +
    + + ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts new file mode 100644 index 0000000000000..27bab04d90511 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { useEuiTheme } from '../../../hooks'; + +export const useStyles = () => { + const { euiTheme } = useEuiTheme(); + + const cached = useMemo(() => { + const { size } = euiTheme; + + const treeViewSwitcher: CSSObject = { + '.euiButton__text': { + fontSize: size.m, + }, + }; + + const treeViewContainer: CSSObject = { + height: '600px', + overflowY: 'auto', + }; + + const treeViewLegend: CSSObject = { + textTransform: 'capitalize', + }; + + return { + treeViewSwitcher, + treeViewContainer, + treeViewLegend, + }; + }, [euiTheme]); + + return cached; +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts new file mode 100644 index 0000000000000..d020b3ae64a24 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +const TREE_NAV_CLUSTER = (isPlural = false) => + i18n.translate('xpack.kubernetesSecurity.treeNav.cluster', { + defaultMessage: '{isPlural, plural, =true {clusters} other {cluster}}', + values: { isPlural }, + }); +const TREE_NAV_NAMESPACE = (isPlural = false) => + i18n.translate('xpack.kubernetesSecurity.treeNav.namespace', { + defaultMessage: '{isPlural, plural, =true {namespaces} other {namespace}}', + values: { isPlural }, + }); +const TREE_NAV_POD = (isPlural = false) => + i18n.translate('xpack.kubernetesSecurity.treeNav.pod', { + defaultMessage: '{isPlural, plural, =true {pods} other {pod}}', + values: { isPlural }, + }); +const TREE_NAV_CONTAINER_IMAGE = (isPlural = false) => + i18n.translate('xpack.kubernetesSecurity.treeNav.containerImage', { + defaultMessage: '{isPlural, plural, =true {container images} other { container image}}', + values: { isPlural }, + }); +const TREE_NAV_NODE = (isPlural = false) => + i18n.translate('xpack.kubernetesSecurity.treeNav.node', { + defaultMessage: '{isPlural, plural, =true {nodes} other {node}}', + values: { isPlural }, + }); + +export const translations = { + cluster: TREE_NAV_CLUSTER, + namespace: TREE_NAV_NAMESPACE, + pod: TREE_NAV_POD, + containerImage: TREE_NAV_CONTAINER_IMAGE, + node: TREE_NAV_NODE, +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts new file mode 100644 index 0000000000000..0643f84e26119 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type TreeViewKind = 'infrastructure' | 'logical'; + +export interface TreeViewOptionsGroup { + id: string; + label: string; + value: TreeViewKind; +} diff --git a/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.test.tsx deleted file mode 100644 index cb2db24d28faf..0000000000000 --- a/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.test.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; -import { WIDGET_TOGGLE_SHOW, WIDGET_TOGGLE_HIDE } from '../../../common/translations'; -import { WidgetsToggle, TOGGLE_TEST_ID } from '.'; - -describe('WidgetsToggle component', () => { - let render: () => ReturnType; - let renderResult: ReturnType; - let mockedContext: AppContextTestRender; - const handleToggleHideWidgets = jest.fn(); - - beforeEach(() => { - mockedContext = createAppRootMockRenderer(); - }); - - describe('When PercentWidget is mounted', () => { - it('show "hide widgets" text when shouldHideWidgets is false', async () => { - renderResult = mockedContext.render( - - ); - - expect(renderResult.getByText(WIDGET_TOGGLE_HIDE)).toBeVisible(); - }); - it('show "show widgets" text when shouldHideWidgets is true', async () => { - renderResult = mockedContext.render( - - ); - - expect(renderResult.getByText(WIDGET_TOGGLE_SHOW)).toBeVisible(); - }); - it('shouldHideWidgets defaults to false when not provided', async () => { - renderResult = mockedContext.render( - - ); - - expect(renderResult.getByText(WIDGET_TOGGLE_HIDE)).toBeVisible(); - }); - it('clicking the toggle fires the callback', async () => { - renderResult = mockedContext.render( - - ); - - renderResult.queryByTestId(TOGGLE_TEST_ID)?.click(); - expect(handleToggleHideWidgets).toHaveBeenCalledTimes(1); - }); - }); -}); diff --git a/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.tsx b/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.tsx deleted file mode 100644 index 5a31b8504f8ab..0000000000000 --- a/x-pack/plugins/kubernetes_security/public/components/widgets_toggle/index.tsx +++ /dev/null @@ -1,29 +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 from 'react'; -import { EuiButtonEmpty } from '@elastic/eui'; -import { WIDGET_TOGGLE_SHOW, WIDGET_TOGGLE_HIDE } from '../../../common/translations'; - -export const TOGGLE_TEST_ID = 'kubernetesSecurity:widgetToggle'; - -interface WidgetsToggleDeps { - handleToggleHideWidgets: () => void; - shouldHideWidgets?: boolean; -} - -export const WidgetsToggle = ({ - handleToggleHideWidgets, - shouldHideWidgets = false, -}: WidgetsToggleDeps) => ( - - {shouldHideWidgets ? WIDGET_TOGGLE_SHOW : WIDGET_TOGGLE_HIDE} - -); diff --git a/x-pack/plugins/kubernetes_security/public/hooks/index.ts b/x-pack/plugins/kubernetes_security/public/hooks/index.ts index 14d956be9b629..2e330dfb1b159 100644 --- a/x-pack/plugins/kubernetes_security/public/hooks/index.ts +++ b/x-pack/plugins/kubernetes_security/public/hooks/index.ts @@ -8,3 +8,4 @@ export { useEuiTheme } from './use_eui_theme'; export { useSetFilter } from './use_filter'; export { useLastUpdated } from './use_last_updated'; +export { useScroll } from './use_scroll'; diff --git a/x-pack/plugins/kubernetes_security/public/hooks/use_scroll.ts b/x-pack/plugins/kubernetes_security/public/hooks/use_scroll.ts new file mode 100644 index 0000000000000..716e35dbb0987 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/hooks/use_scroll.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEffect } from 'react'; +import _ from 'lodash'; + +const SCROLL_END_BUFFER_HEIGHT = 20; +const DEBOUNCE_TIMEOUT = 500; + +function getScrollPosition(div: HTMLElement) { + if (div) { + return div.scrollTop; + } else { + return document.documentElement.scrollTop || document.body.scrollTop; + } +} + +interface IUseScrollDeps { + div: HTMLElement | null; + handler(pos: number, endReached: boolean): void; +} + +/** + * listens to scroll events on given div, if scroll reaches bottom, calls a callback + * @param {ref} ref to listen to scroll events on + * @param {function} handler function receives params (scrollTop, endReached) + */ +export function useScroll({ div, handler }: IUseScrollDeps) { + useEffect(() => { + if (div) { + const debounced = _.debounce(() => { + const pos = getScrollPosition(div); + const endReached = pos + div.offsetHeight > div.scrollHeight - SCROLL_END_BUFFER_HEIGHT; + + handler(pos, endReached); + }, DEBOUNCE_TIMEOUT); + + div.onscroll = debounced; + + return () => { + debounced.cancel(); + + div.onscroll = null; + }; + } + }, [div, handler]); +} diff --git a/x-pack/plugins/kubernetes_security/public/methods/index.tsx b/x-pack/plugins/kubernetes_security/public/methods/index.tsx index 85316f74b04f6..f0a140a612705 100644 --- a/x-pack/plugins/kubernetes_security/public/methods/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/methods/index.tsx @@ -11,7 +11,15 @@ import { QueryClient, QueryClientProvider } from 'react-query'; import { KubernetesSecurityDeps } from '../types'; // Initializing react-query -const queryClient = new QueryClient(); +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + refetchOnMount: false, + refetchOnReconnect: false, + }, + }, +}); const KubernetesSecurityLazy = lazy(() => import('../components/kubernetes_security_routes')); diff --git a/x-pack/plugins/kubernetes_security/public/types.ts b/x-pack/plugins/kubernetes_security/public/types.ts index 5a41e72d89d89..873c3783be781 100644 --- a/x-pack/plugins/kubernetes_security/public/types.ts +++ b/x-pack/plugins/kubernetes_security/public/types.ts @@ -11,6 +11,7 @@ import type { FieldSpec } from '@kbn/data-plugin/common'; import type { TimelinesUIStart } from '@kbn/timelines-plugin/public'; import type { SessionViewStart } from '@kbn/session-view-plugin/public'; import { BoolQuery } from '@kbn/es-query'; +import { EuiIconProps } from '@elastic/eui'; export interface StartPlugins { data: DataPublicPluginStart; @@ -45,3 +46,27 @@ export interface KubernetesSecurityStart { export type QueryDslQueryContainerBool = { bool: BoolQuery; }; + +export enum KubernetesCollection { + cluster = 'cluster', + namespace = 'namespace', + node = 'node', + pod = 'pod', + containerImage = 'containerImage', +} + +export interface TreeNavSelection { + [KubernetesCollection.cluster]?: string; + [KubernetesCollection.namespace]?: string; + [KubernetesCollection.node]?: string; + [KubernetesCollection.pod]?: string; + [KubernetesCollection.containerImage]?: string; +} + +export type DynamicTree = { + key: string; + type: KubernetesCollection; + iconProps: EuiIconProps; + name: string; + namePlural: string; +}; diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts b/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts new file mode 100644 index 0000000000000..03faf16921c1b --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { addCommasToNumber } from './add_commas_to_number'; + +describe('addCommasToNumber(num)', () => { + it('works for a number without needing a comma', () => { + expect(addCommasToNumber(123)).toEqual('123'); + }); + it('works for a number that needs a comma', () => { + expect(addCommasToNumber(1234)).toEqual('1,234'); + }); + it('works for a number that needs multiple commas', () => { + expect(addCommasToNumber(123456789)).toEqual('123,456,789'); + }); + it('works for negative number', () => { + expect(addCommasToNumber(-10)).toEqual('-10'); + }); + it('works for negative number with commas', () => { + expect(addCommasToNumber(-10000)).toEqual('-10,000'); + }); + it('works for NaN', () => { + expect(addCommasToNumber(NaN)).toEqual('NaN'); + }); + it('works for Infinity', () => { + expect(addCommasToNumber(Infinity)).toEqual('Infinity'); + }); + it('works for zero', () => { + expect(addCommasToNumber(0)).toEqual('0'); + }); +}); diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.ts b/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.ts new file mode 100644 index 0000000000000..3e440ab8c9226 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Add commas as thousands separators to a number. + * + * @param {Number} num + * @return {String} num in string with commas as thousands separaters + */ +export function addCommasToNumber(num: number) { + return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); +} diff --git a/x-pack/plugins/kubernetes_security/server/routes/aggregate.ts b/x-pack/plugins/kubernetes_security/server/routes/aggregate.ts index 252b20a458a78..e56a17d89845f 100644 --- a/x-pack/plugins/kubernetes_security/server/routes/aggregate.ts +++ b/x-pack/plugins/kubernetes_security/server/routes/aggregate.ts @@ -14,6 +14,7 @@ import { AGGREGATE_PAGE_SIZE, AGGREGATE_MAX_BUCKETS, } from '../../common/constants'; +import { AggregateBucketPaginationResult } from '../../common/types/aggregate'; // sort by values const ASC = 'asc'; @@ -29,6 +30,7 @@ export const registerAggregateRoute = (router: IRouter) => { countBy: schema.maybe(schema.string()), groupBy: schema.string(), page: schema.number(), + perPage: schema.maybe(schema.number()), index: schema.maybe(schema.string()), sortByCount: schema.maybe(schema.string()), }), @@ -36,10 +38,19 @@ export const registerAggregateRoute = (router: IRouter) => { }, async (context, request, response) => { const client = (await context.core).elasticsearch.client.asCurrentUser; - const { query, countBy, sortByCount, groupBy, page, index } = request.query; + const { query, countBy, sortByCount, groupBy, page, perPage, index } = request.query; try { - const body = await doSearch(client, query, groupBy, page, index, countBy, sortByCount); + const body = await doSearch( + client, + query, + groupBy, + page, + perPage, + index, + countBy, + sortByCount + ); return response.ok({ body }); } catch (err) { @@ -54,10 +65,11 @@ export const doSearch = async ( query: string, groupBy: string, page: number, // zero based + perPage = AGGREGATE_PAGE_SIZE, index?: string, countBy?: string, sortByCount?: string -) => { +): Promise => { const queryDSL = JSON.parse(query); const countByAggs = countBy @@ -91,8 +103,8 @@ export const doSearch = async ( bucket_sort: { bucket_sort: { sort: [sort], // defaulting to alphabetic sort - size: AGGREGATE_PAGE_SIZE, - from: AGGREGATE_PAGE_SIZE * page, + size: perPage + 1, // check if there's a "next page" + from: perPage * page, }, }, }, @@ -102,6 +114,16 @@ export const doSearch = async ( }); const agg: any = search.aggregations?.custom_agg; + const buckets = agg?.buckets || []; - return agg?.buckets || []; + const hasNextPage = buckets.length > perPage; + + if (hasNextPage) { + buckets.pop(); + } + + return { + buckets, + hasNextPage, + }; }; diff --git a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.ts b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx similarity index 97% rename from x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.ts rename to x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx index 05009abc7793b..bedf997566ec2 100644 --- a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.ts +++ b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx @@ -5,13 +5,15 @@ * 2.0. */ +import React from 'react'; import type { Map as MbMap, LayerSpecification, StyleSpecification } from '@kbn/mapbox-gl'; import { type blendMode, type EmsSpriteSheet, TMSService } from '@elastic/ems-client'; import { i18n } from '@kbn/i18n'; import _ from 'lodash'; +import { EuiIcon } from '@elastic/eui'; // @ts-expect-error import { RGBAImage } from './image_utils'; -import { AbstractLayer } from '../layer'; +import { AbstractLayer, type LayerIcon } from '../layer'; import { AUTOSELECT_EMS_LOCALE, NO_EMS_LOCALE, @@ -486,6 +488,15 @@ export class EmsVectorTileLayer extends AbstractLayer { return 'grid'; } + getLayerIcon(): LayerIcon { + return { + icon: , + tooltipContent: i18n.translate('xpack.maps.emsVectorTileLayer.layerDescription', { + defaultMessage: `Reference map provided by Elastic Maps Service (EMS).`, + }), + }; + } + isBasemap(order: number) { return order === 0; } diff --git a/x-pack/plugins/maps/public/classes/sources/ems_tms_source/ems_tms_source.tsx b/x-pack/plugins/maps/public/classes/sources/ems_tms_source/ems_tms_source.tsx index 6874820d561f7..cc094bc6caeef 100644 --- a/x-pack/plugins/maps/public/classes/sources/ems_tms_source/ems_tms_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/ems_tms_source/ems_tms_source.tsx @@ -66,7 +66,7 @@ export class EMSTMSSource extends AbstractSource implements ITMSSource { } async getImmutableProperties() { - const displayName = await this.getDisplayName(); + const tileServiceName = await this._getTileServiceName(); const autoSelectMsg = i18n.translate('xpack.maps.source.emsTile.isAutoSelectLabel', { defaultMessage: 'autoselect based on Kibana theme', }); @@ -80,7 +80,9 @@ export class EMSTMSSource extends AbstractSource implements ITMSSource { label: i18n.translate('xpack.maps.source.emsTile.serviceId', { defaultMessage: `Tile service`, }), - value: this._descriptor.isAutoSelect ? `${displayName} - ${autoSelectMsg}` : displayName, + value: this._descriptor.isAutoSelect + ? `${tileServiceName} - ${autoSelectMsg}` + : tileServiceName, }, ]; @@ -114,6 +116,12 @@ export class EMSTMSSource extends AbstractSource implements ITMSSource { } async getDisplayName() { + return i18n.translate('xpack.maps.source.emsTile.basemapLabel', { + defaultMessage: 'Basemap', + }); + } + + async _getTileServiceName() { try { const emsTMSService = await this._getEMSTMSService(); return emsTMSService.getDisplayName(); diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx index c8143a5c283e4..0c8f1aec7d97d 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx @@ -94,7 +94,7 @@ export const ModelsList: FC = ({ } = useMlKibana(); const urlLocator = useMlLocator()!; - const startModelDeploymentDocUrl = docLinks.links.ml.startTrainedModelsDeploymentQueryParams; + const startModelDeploymentDocUrl = docLinks.links.ml.startTrainedModelsDeployment; useTimefilter({ timeRangeSelector: false, autoRefreshSelector: true }); diff --git a/x-pack/plugins/security/public/session/unauthorized_response_http_interceptor.test.ts b/x-pack/plugins/security/public/session/unauthorized_response_http_interceptor.test.ts index d82a041a4fe28..b77ceb6bf1882 100644 --- a/x-pack/plugins/security/public/session/unauthorized_response_http_interceptor.test.ts +++ b/x-pack/plugins/security/public/session/unauthorized_response_http_interceptor.test.ts @@ -8,8 +8,8 @@ // @ts-ignore import fetchMock from 'fetch-mock/es5/client'; +import { setup } from '@kbn/core-test-helpers-http-setup-browser'; import { applicationServiceMock } from '@kbn/core/public/mocks'; -import { setup } from '@kbn/core/test_helpers/http_test_setup'; import { SessionExpired } from './session_expired'; import { UnauthorizedResponseHttpInterceptor } from './unauthorized_response_http_interceptor'; diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts b/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts index 1b2c308c0bfa6..9b1024494f4f0 100644 --- a/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts +++ b/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts @@ -28,7 +28,7 @@ export const COLUMN_NODE = i18n.translate('xpack.securitySolution.kubernetes.col export const COLUMN_ENTRY_USER = i18n.translate( 'xpack.securitySolution.kubernetes.columnEntryUser', { - defaultMessage: 'Session entry users', + defaultMessage: 'Session entry user', } ); @@ -42,7 +42,7 @@ export const COLUMN_INTERACTIVE = i18n.translate( export const COLUMN_ENTRY_TYPE = i18n.translate( 'xpack.securitySolution.kubernetes.columnEntryType', { - defaultMessage: 'Entry mechanism', + defaultMessage: 'Entry type', } ); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.test.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.test.tsx index a06d6ae7c38b7..2701ebdb136b5 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.test.tsx @@ -10,7 +10,7 @@ import type { ConsoleTestSetup } from '../../mocks'; import { getConsoleTestSetup } from '../../mocks'; import type { ConsoleProps } from '../../types'; import { INPUT_DEFAULT_PLACEHOLDER_TEXT } from '../console_state/state_update_handlers/handle_input_area_state'; -import { waitFor } from '@testing-library/react'; +import { act, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; describe('When entering data into the Console input', () => { @@ -92,6 +92,30 @@ describe('When entering data into the Console input', () => { expect(getFooterText()).toEqual('Unknown command abc'); }); + it('should show the arrow button as not disabled if input has text entered', () => { + render(); + enterCommand('cm ', { inputOnly: true }); + + const arrowButton = renderResult.getByTestId('test-inputTextSubmitButton'); + expect(arrowButton).not.toBeDisabled(); + }); + + it('should show the arrow button as disabled if input area is blank', () => { + render(); + + const arrowButton = renderResult.getByTestId('test-inputTextSubmitButton'); + expect(arrowButton).toBeDisabled(); + }); + + it('should execute correct command if arrow button is clicked', () => { + render(); + enterCommand('isolate', { inputOnly: true }); + act(() => { + renderResult.getByTestId('test-inputTextSubmitButton').click(); + }); + expect(renderResult.getByTestId('test-userCommandText').textContent).toEqual('isolate'); + }); + // FIXME:PT uncomment once task OLM task #4384 is implemented it.skip('should display the input history popover when UP key is pressed', async () => { render(); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx index 89ba5f6561435..a4ff5b03b45e8 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx @@ -8,7 +8,7 @@ import type { MouseEventHandler } from 'react'; import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import type { CommonProps } from '@elastic/eui'; -import { EuiFlexGroup, EuiFlexItem, useResizeObserver } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, useResizeObserver, EuiButtonIcon } from '@elastic/eui'; import styled from 'styled-components'; import classNames from 'classnames'; import type { ConsoleDataState } from '../console_state/types'; @@ -110,6 +110,25 @@ export const CommandInput = memo(({ prompt = '', focusRef, .. }); }, [isKeyInputBeingCaptured]); + const disableArrowButton = useMemo( + () => textEntered.length === 0 && rightOfCursor.text.length === 0, + [rightOfCursor.text.length, textEntered.length] + ); + + const handleSubmitButton = useCallback( + (ev) => { + setCommandToExecute(textEntered + rightOfCursor.text); + dispatch({ + type: 'updateInputTextEnteredState', + payload: { + textEntered: '', + rightOfCursor: undefined, + }, + }); + }, + [dispatch, textEntered, rightOfCursor.text] + ); + const handleKeyCaptureOnStateChange = useCallback>( (isCapturing) => { setIsKeyInputBeingCaptured(isCapturing); @@ -285,6 +304,17 @@ export const CommandInput = memo(({ prompt = '', focusRef, .. + + + eui.euiSizeS}; + .euiTableHeaderCell { + .euiTableCellContent__text { + color: ${({ theme: { eui } }) => eui.euiTextColor}; + font-size: ${({ theme: { eui } }) => eui.euiFontSize}; + padding-bottom: ${({ theme: { eui } }) => eui.euiSizeS}; + padding-left: ${({ theme: { eui } }) => eui.euiSizeS}; + } + } +`; + +const StyledEuiCallOut = styled(EuiCallOut)` + margin: ${({ theme: { eui } }) => eui.euiSize}; + border-radius: ${({ theme: { eui } }) => eui.euiSizeXS}; +`; + +const StyledEuiFlexGroup = styled(EuiFlexGroup)` + padding-left: ${({ theme: { eui } }) => eui.euiSizeS}; +`; export interface CommandListProps { commands: CommandDefinition[]; + display?: 'default' | 'table'; } -export const CommandList = memo(({ commands }) => { +export const CommandList = memo(({ commands, display = 'default' }) => { const getTestId = useTestIdGenerator(useDataTestSubj()); + const dispatch = useConsoleStateDispatch(); const footerMessage = useMemo(() => { return ( @@ -41,26 +76,207 @@ export const CommandList = memo(({ commands }) => { ); }, []); + const otherCommandsGroupLabel = i18n.translate( + 'xpack.securitySolution.console.commandList.otherCommandsGroup.label', + { + defaultMessage: 'Other commands', + } + ); + + const updateInputText = useCallback( + (text) => () => { + dispatch({ + type: 'updateInputTextEnteredState', + payload: () => { + return { + textEntered: text, + }; + }, + }); + }, + [dispatch] + ); + + const commandsByGroups = useMemo(() => { + return Object.values(groupBy(commands, 'helpGroupLabel')).reduce( + (acc, current) => { + if (current[0].helpGroupPosition !== undefined) { + // If it already exists just move it to the end + if (acc[current[0].helpGroupPosition]) { + acc[acc.length] = acc[current[0].helpGroupPosition]; + } + + acc[current[0].helpGroupPosition] = sortBy(current, 'helpCommandPosition'); + } else if (current.length) { + acc.push(current); + } + return acc; + }, + [] + ); + }, [commands]); + + const getTableItems = useCallback( + ( + commandsByGroup: CommandDefinition[] + ): Array<{ + [key: string]: { name: string; about: React.ElementType | string }; + }> => { + if (commandsByGroup[0].helpGroupLabel === HELP_GROUPS.supporting.label) { + return [...COMMON_ARGS, ...commandsByGroup].map((command) => ({ + [commandsByGroup[0]?.helpGroupLabel ?? otherCommandsGroupLabel]: command, + })); + } + return commandsByGroup.map((command) => ({ + [commandsByGroup[0]?.helpGroupLabel ?? otherCommandsGroupLabel]: command, + })); + }, + [otherCommandsGroupLabel] + ); + + const getTableColumns = useCallback( + (commandsByGroup) => { + return [ + { + field: commandsByGroup[0]?.helpGroupLabel ?? otherCommandsGroupLabel, + name: commandsByGroup[0]?.helpGroupLabel ?? otherCommandsGroupLabel, + render: (command: CommandDefinition) => { + const commandNameWithArgs = getCommandNameWithArgs(command); + return ( + + + {commandNameWithArgs}, + description: ( + <> + + + {command.about} + + + ), + }, + ]} + data-test-subj={getTestId('commandList-command')} + /> + + {/* Show EuiButtonIcon if is a command */} + {command.RenderComponent && ( + + + + + + )} + + ); + }, + }, + ]; + }, + [getTestId, otherCommandsGroupLabel, updateInputText] + ); + + if (display === 'table') { + const calloutItems = [ + , + , + , + ]; + + const callout = ( + + } + > +
      + {calloutItems.map((item, index) => ( +
    1. + {item} +
    2. + ))} +
    + {/* //TODO: Add link to the read more page */} + + + +
    + ); + + return ( + <> + {commandsByGroups.map((commandsByGroup) => ( + + ))} + + {callout} + + ); + } + return ( <> - - {commands.map(({ name, about }) => { - return ( - - {name}, description: about }]} - data-test-subj={getTestId('commandList-command')} - /> - - ); - })} - - - - - {footerMessage} + {commandsByGroups.map((commandsByGroup) => { + const groupLabel = commandsByGroup[0].helpGroupLabel; + const groupedCommands = + groupLabel === HELP_GROUPS.supporting.label + ? [...commandsByGroup, ...COMMON_ARGS] + : commandsByGroup; + return ( + + {groupedCommands.map((command) => { + return ( + + {getCommandNameWithArgs(command)}, + description: <>{command.about}, + }, + ]} + data-test-subj={getTestId('commandList-command')} + /> + + ); + })} + + ); + })} + + + {footerMessage} ); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx index 058486e13f0ab..b26b53fd7c2ac 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx @@ -6,7 +6,8 @@ */ import React, { memo, useCallback } from 'react'; -import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { useConsoleStateDispatch } from '../hooks/state_selectors/use_console_state_dispatch'; import { useWithSidePanel } from '../hooks/state_selectors/use_with_side_panel'; @@ -40,17 +41,23 @@ export const ConsoleHeader = memo(({ TitleComponent }) => { {TitleComponent ? : ''} - - - + {!isHelpOpen && ( + + + + + + )} ); }); 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 2c7f30a83cd5c..2bb52f04109c9 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 @@ -34,7 +34,8 @@ describe('When a Console command is entered by the user', () => { await waitFor(() => { expect(renderResult.getAllByTestId('test-commandList-command')).toHaveLength( // `+2` to account for builtin commands - commands.length + 2 + // `+2` to account for builtin generic args + commands.length + 4 ); }); }); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx index fc086ce22be0e..82b9fdf5fb849 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx @@ -8,12 +8,17 @@ import type { ReactNode } from 'react'; import React, { memo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule } from '@elastic/eui'; +import styled from 'styled-components'; export interface SidePanelContentLayoutProps { children: ReactNode; headerContent?: ReactNode; } +const StyledEuiFlexItemNoPadding = styled(EuiFlexItem)` + padding: 0 !important; +`; + /** * A layout component for displaying content in the right-side panel of the console */ @@ -34,9 +39,9 @@ export const SidePanelContentLayout = memo( )} - +
    {children}
    -
    + ); } diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx index 376564ab896a7..7ba9cdedeea23 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx @@ -6,37 +6,82 @@ */ import type { ReactNode } from 'react'; -import React, { memo, useMemo } from 'react'; -import { EuiText } from '@elastic/eui'; +import React, { memo, useMemo, useCallback } from 'react'; +import styled from 'styled-components'; +import { + EuiText, + EuiIcon, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiButtonIcon, + EuiTitle, +} from '@elastic/eui'; + import { FormattedMessage } from '@kbn/i18n-react'; import { CommandList } from '../command_list'; import { useWithCommandList } from '../../hooks/state_selectors/use_with_command_list'; import { SidePanelContentLayout } from './side_panel_content_layout'; import { useWithSidePanel } from '../../hooks/state_selectors/use_with_side_panel'; +import { useConsoleStateDispatch } from '../../hooks/state_selectors/use_console_state_dispatch'; + +const StyledEuiTitle = styled(EuiTitle)` + color: ${({ theme: { eui } }) => eui.euiTextSubduedColor}; +`; export const SidePanelContentManager = memo(() => { + const dispatch = useConsoleStateDispatch(); const commands = useWithCommandList(); const show = useWithSidePanel().show; + const closeHelpPanel = useCallback(() => { + dispatch({ + type: 'showSidePanel', + payload: { show: null }, + }); + }, [dispatch]); + const panelHeader: ReactNode = useMemo(() => { if (show === 'help') { return ( - - + <> + + + +

    + +

    +
    +
    + + + +
    + + }} /> -
    -
    +
    + ); } return null; - }, [show]); + }, [show, closeHelpPanel]); const panelBody: ReactNode = useMemo(() => { if (show === 'help') { - return ; + return ; } return null; diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx index 20cca6401f633..f2c1cc2f3e192 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx @@ -6,10 +6,18 @@ */ import React, { memo } from 'react'; -import { EuiFlexItem } from '@elastic/eui'; +import styled from 'styled-components'; +import { EuiFlexItem, transparentize } from '@elastic/eui'; import { SidePanelContentManager } from './side_panel_content_manager'; import { useWithSidePanel } from '../../hooks/state_selectors/use_with_side_panel'; +const StyledEuiFlexItemWhite = styled(EuiFlexItem)` + background-color: ${({ theme: { eui } }) => eui.euiHeaderBackgroundColor} !important; + border-radius: ${({ theme: { eui } }) => `0 ${eui.euiSizeXS} ${eui.euiSizeXS} 0`}; + box-shadow: 0 ${({ theme: { eui } }) => eui.euiSizeXS} ${({ theme: { eui } }) => eui.euiSizeXS} + ${({ theme: { eui } }) => transparentize(eui.euiShadowColor, 0.04)}; +`; + export const SidePanelFlexItem = memo((props) => { const isPanelOpened = Boolean(useWithSidePanel().show); @@ -18,9 +26,9 @@ export const SidePanelFlexItem = memo((props) => { } return ( - + - + ); }); SidePanelFlexItem.displayName = 'SidePanelFlexItem'; diff --git a/x-pack/plugins/security_solution/public/management/components/console/console.tsx b/x-pack/plugins/security_solution/public/management/components/console/console.tsx index e8fa86ffda83a..37850e888b126 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/console.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/console.tsx @@ -40,7 +40,7 @@ const ConsoleWindow = styled.div` &-container { padding: ${({ theme: { eui } }) => eui.euiSizeL} ${({ theme: { eui } }) => eui.euiSizeL} - ${({ theme: { eui } }) => eui.euiSizeS} ${({ theme: { eui } }) => eui.euiSizeL}; + ${({ theme: { eui } }) => eui.euiSizeS} ${({ theme: { eui } }) => eui.euiSizeM}; } &-header { @@ -139,46 +139,53 @@ export const Console = memo( dataTestSubj={commonProps['data-test-subj']} > - - - - + + + + + + - - - + - -
    + - -
    -
    - - - - - + +
    + +
    +
    + + + + + + +
    - - {}
    + {}
    diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx b/x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx index 485b43115e19b..4906143ff2c36 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx @@ -10,6 +10,29 @@ import { ClearCommand } from '../components/builtin_commands/clear_command'; import { HelpCommand } from '../components/builtin_commands/help_command'; import type { CommandDefinition } from '../types'; +export const HELP_GROUPS = Object.freeze({ + supporting: { + label: i18n.translate('xpack.securitySolution.console.builtInCommands.groups.supporting', { + defaultMessage: 'Supporting commands & syntaxes', + }), + }, +}); + +export const COMMON_ARGS = Object.freeze([ + { + name: '--comment', + about: i18n.translate('xpack.securitySolution.console.commandList.commonArgs.comment', { + defaultMessage: 'Add comment to any action Ex: isolate --comment your comment', + }), + }, + { + name: '--help', + about: i18n.translate('xpack.securitySolution.console.commandList.commonArgs.help', { + defaultMessage: 'Command assistance Ex: isolate --help', + }), + }, +]); + export const getBuiltinCommands = (): CommandDefinition[] => { return [ { @@ -18,6 +41,7 @@ export const getBuiltinCommands = (): CommandDefinition[] => { defaultMessage: 'View list of available commands', }), RenderComponent: HelpCommand, + helpGroupLabel: HELP_GROUPS.supporting.label, }, { name: 'cls', @@ -25,6 +49,7 @@ export const getBuiltinCommands = (): CommandDefinition[] => { defaultMessage: 'Clear the console buffer', }), RenderComponent: ClearCommand, + helpGroupLabel: HELP_GROUPS.supporting.label, }, ]; }; diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/utils.ts b/x-pack/plugins/security_solution/public/management/components/console/service/utils.ts new file mode 100644 index 0000000000000..faf7d12d12f80 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/components/console/service/utils.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CommandArgs, CommandDefinition } from '../types'; + +export const getCommandNameWithArgs = (command: Partial) => { + if (!command.mustHaveArgs || !command.args) { + return command.name; + } + + let hasAnExclusiveOrArg = false; + const primaryArgs = Object.entries(command.args).reduce((acc, [key, value]) => { + if (value.required) { + acc[key] = value; + return acc; + } + if (value.exclusiveOr && !hasAnExclusiveOrArg) { + hasAnExclusiveOrArg = true; + acc[key] = value; + return acc; + } + return acc; + }, {}); + + return `${command.name} --${Object.keys(primaryArgs).join(' --')}`; +}; diff --git a/x-pack/plugins/security_solution/public/management/components/console/types.ts b/x-pack/plugins/security_solution/public/management/components/console/types.ts index dc3ff45f161e3..d929a8a4b4984 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/types.ts +++ b/x-pack/plugins/security_solution/public/management/components/console/types.ts @@ -35,11 +35,19 @@ export interface CommandArgs { export interface CommandDefinition { name: string; - about: string; + about: ComponentType | string; /** * The Component that will be used to render the Command */ RenderComponent: CommandExecutionComponent; + /** Will be used to sort the commands when building the output for the `help` command */ + helpCommandPosition?: number; + + /** A grouping label for the command */ + helpGroupLabel?: string; + + /** Used only when command help "grouping" is detected. Used to sort the groups of commands */ + helpGroupPosition?: number; /** * If defined, this command's use of `--help` will be displayed using this component instead of * the console's built in output. diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts index fec61d55c5e52..1a8476fb9c51c 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts @@ -23,6 +23,15 @@ const emptyArgumentValidator = (argData: ParsedArgData) => { } }; +const HELP_GROUPS = Object.freeze({ + responseActions: { + position: 0, + label: i18n.translate('xpack.securitySolution.endpointConsoleCommands.groups.responseActions', { + defaultMessage: 'Response actions', + }), + }, +}); + export const getEndpointResponseActionsConsoleCommands = ( endpointAgentId: string ): CommandDefinition[] => { @@ -48,6 +57,9 @@ export const getEndpointResponseActionsConsoleCommands = ( ), }, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 0, }, { name: 'release', @@ -70,6 +82,9 @@ export const getEndpointResponseActionsConsoleCommands = ( ), }, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 1, }, { name: 'kill-process', @@ -114,6 +129,9 @@ export const getEndpointResponseActionsConsoleCommands = ( validate: emptyArgumentValidator, }, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 4, }, { name: 'suspend-process', @@ -161,6 +179,9 @@ export const getEndpointResponseActionsConsoleCommands = ( validate: emptyArgumentValidator, }, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 5, }, { name: 'status', @@ -171,6 +192,9 @@ export const getEndpointResponseActionsConsoleCommands = ( meta: { endpointId: endpointAgentId, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 2, }, { name: 'processes', @@ -193,6 +217,9 @@ export const getEndpointResponseActionsConsoleCommands = ( ), }, }, + helpGroupLabel: HELP_GROUPS.responseActions.label, + helpGroupPosition: HELP_GROUPS.responseActions.position, + helpCommandPosition: 3, }, ]; }; diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.test.tsx b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.test.tsx index dbd604d4c2c54..a4ef569c0a0c5 100644 --- a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.test.tsx @@ -23,7 +23,8 @@ import { useGetEndpointDetails } from '../../hooks'; jest.mock('../../hooks/endpoint/use_get_endpoint_policy_response'); jest.mock('../../hooks/endpoint/use_get_endpoint_details'); -describe('when on the policy response', () => { +// FLAKY: https://github.com/elastic/kibana/issues/136272 +describe.skip('when on the policy response', () => { const docGenerator = new EndpointDocGenerator(); const createPolicyResponse = ( overallStatus: HostPolicyResponseActionStatus = HostPolicyResponseActionStatus.success, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts index 477153828417b..b62994d657c3e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts @@ -46,6 +46,7 @@ import { createIndicatorMatchAlertType, createMlAlertType, createQueryAlertType, + createSavedQueryAlertType, createThresholdAlertType, } from '../../rule_types'; import { createSecurityRuleTypeWrapper } from '../../rule_types/create_security_rule_type_wrapper'; @@ -292,6 +293,19 @@ export const previewRulesRoute = async ( { create: alertInstanceFactoryStub, done: () => ({ getRecoveredAlerts: () => [] }) } ); break; + case 'saved_query': + const savedQueryAlertType = previewRuleTypeWrapper( + createSavedQueryAlertType(ruleOptions) + ); + await runExecutors( + savedQueryAlertType.executor, + savedQueryAlertType.id, + savedQueryAlertType.name, + previewRuleParams, + () => true, + { create: alertInstanceFactoryStub, done: () => ({ getRecoveredAlerts: () => [] }) } + ); + break; case 'threshold': const thresholdAlertType = previewRuleTypeWrapper( createThresholdAlertType(ruleOptions) diff --git a/x-pack/plugins/stack_alerts/public/alert_types/es_query/rule_common_expressions/rule_common_expressions.tsx b/x-pack/plugins/stack_alerts/public/alert_types/es_query/rule_common_expressions/rule_common_expressions.tsx index 684b340170139..0f907597b6702 100644 --- a/x-pack/plugins/stack_alerts/public/alert_types/es_query/rule_common_expressions/rule_common_expressions.tsx +++ b/x-pack/plugins/stack_alerts/public/alert_types/es_query/rule_common_expressions/rule_common_expressions.tsx @@ -18,6 +18,7 @@ import { import { CommonAlertParams } from '../types'; import { DEFAULT_VALUES } from '../constants'; import { TestQueryRow, TestQueryRowProps } from '../test_query_row'; +import { QueryThresholdHelpPopover } from './threshold_help_popover'; export interface RuleCommonExpressionsProps { thresholdComparator?: CommonAlertParams['thresholdComparator']; @@ -57,12 +58,13 @@ export const RuleCommonExpressions: React.FC = ({ return ( <> -
    +

    -

    + defaultMessage="Set the threshold and time window" + />{' '} + +
    { + state: State = { + isPopoverOpen: false, + }; + + PopoverStyles = css` + max-width: 400px; + `; + + _togglePopover = () => { + this.setState((prevState) => ({ + isPopoverOpen: !prevState.isPopoverOpen, + })); + }; + + _closePopover = () => { + this.setState({ + isPopoverOpen: false, + }); + }; + + _renderContent() { + return ( +
    + +

    + +

    +

    + Check every, + }} + /> +

    +
    + + +
    + ); + } + + render() { + return ( + + } + isOpen={this.state.isPopoverOpen} + closePopover={this._closePopover} + repositionOnScroll + ownFocus + > + + + + {this._renderContent()} + + ); + } +} diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/pages/overview.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/pages/overview.test.tsx index b3aa4714fa664..30ea0e361580a 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/pages/overview.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/pages/overview.test.tsx @@ -9,7 +9,8 @@ import React from 'react'; import { OverviewPageComponent } from './overview'; import { render } from '../lib/helper/rtl_helpers'; -describe('MonitorPage', () => { +// FLAKY: https://github.com/elastic/kibana/issues/131346 +describe.skip('MonitorPage', () => { it('renders expected elements for valid props', async () => { const { findByText, findByPlaceholderText } = render(); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index e36d4abb75a1c..780ea4fe5f40c 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -10516,7 +10516,6 @@ "xpack.dataVisualizer.dataGrid.field.topValues.calculatedFromSampleDescription": "Calculé à partir d'un échantillon de {topValuesSamplerShardSize} documents par partition", "xpack.dataVisualizer.dataGrid.field.topValuesLabel": "Valeurs les plus élevées", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.falseCountLabel": "faux", - "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.summaryTableTitle": "Résumé", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.trueCountLabel": "vrai", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.choroplethMapTopValues.calculatedFromSampleDescription": "Calculé à partir d'un échantillon de {topValuesSamplerShardSize} documents par partition", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.documentStatsTable.countLabel": "compte", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index cc42d39638c58..5f076322b4917 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -10508,7 +10508,6 @@ "xpack.dataVisualizer.dataGrid.field.topValues.calculatedFromSampleDescription": "1 つのシャードにつき {topValuesSamplerShardSize} のドキュメントのサンプルで計算されています", "xpack.dataVisualizer.dataGrid.field.topValuesLabel": "トップの値", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.falseCountLabel": "false", - "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.summaryTableTitle": "まとめ", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.trueCountLabel": "true", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.choroplethMapTopValues.calculatedFromSampleDescription": "1 つのシャードにつき {topValuesSamplerShardSize} のドキュメントのサンプルで計算されています", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.documentStatsTable.countLabel": "カウント", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index a0848f0acf9ad..5f8dc58573275 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -10523,7 +10523,6 @@ "xpack.dataVisualizer.dataGrid.field.topValues.calculatedFromSampleDescription": "基于每个分片的 {topValuesSamplerShardSize} 文档样例计算", "xpack.dataVisualizer.dataGrid.field.topValuesLabel": "排名最前值", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.falseCountLabel": "false", - "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.summaryTableTitle": "摘要", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.booleanContent.trueCountLabel": "true", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.choroplethMapTopValues.calculatedFromSampleDescription": "基于每个分片的 {topValuesSamplerShardSize} 文档样例计算", "xpack.dataVisualizer.dataGrid.fieldExpandedRow.documentStatsTable.countLabel": "计数", diff --git a/x-pack/test/accessibility/apps/tags.ts b/x-pack/test/accessibility/apps/tags.ts index dd992b191e436..7f56257b285c2 100644 --- a/x-pack/test/accessibility/apps/tags.ts +++ b/x-pack/test/accessibility/apps/tags.ts @@ -15,10 +15,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); const toasts = getService('toasts'); + const kibanaServer = getService('kibanaServer'); - // FLAKY: https://github.com/elastic/kibana/issues/136033 + // Failing: See https://github.com/elastic/kibana/issues/135339 describe.skip('Kibana Tags Page Accessibility', () => { before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); await PageObjects.common.navigateToUrl('home', '/tutorial_directory/sampleData', { useActualUrl: true, }); @@ -34,6 +36,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.home.removeSampleDataSet('flights'); + await kibanaServer.savedObjects.cleanStandardList(); }); it('tags main page meets a11y validations', async () => { @@ -72,8 +75,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await a11y.testAppSnapshot(); }); - // https://github.com/elastic/kibana/issues/135985 inconsistent test failure - it.skip('tag assignment panel meets a11y requirements', async () => { + it('tag assignment panel meets a11y requirements', async () => { await testSubjects.click('euiCollapsedItemActionsButton'); const actionOnTag = 'assign'; await PageObjects.tagManagement.clickActionItem(actionOnTag); @@ -81,14 +83,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tag management page with connections column populated meets a11y requirements', async () => { - await testSubjects.click('euiCollapsedItemActionsButton'); - const actionOnTag = 'assign'; - await PageObjects.tagManagement.clickActionItem(actionOnTag); await testSubjects.click('assignFlyout-selectAllButton'); - await testSubjects.click('assignFlyoutConfirmButton'); await toasts.dismissAllToasts(); - await retry.try(async () => { await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/api_integration/apis/uptime/rest/index_status.ts b/x-pack/test/api_integration/apis/uptime/rest/index_status.ts index 620621274a078..6526278bb8a46 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/index_status.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/index_status.ts @@ -10,7 +10,8 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; import { expectFixtureEql } from './helper/expect_fixture_eql'; export default function ({ getService }: FtrProviderContext) { - describe('docCount query', () => { + // Failing ES Promotion: https://github.com/elastic/kibana/issues/136412 + describe.skip('docCount query', () => { const supertest = getService('supertest'); it(`will fetch the index's count`, async () => { diff --git a/x-pack/test/apm_api_integration/tests/services/sorted_and_filtered_services.spec.ts b/x-pack/test/apm_api_integration/tests/services/sorted_and_filtered_services.spec.ts index b0e29debb62af..fe29e3e795684 100644 --- a/x-pack/test/apm_api_integration/tests/services/sorted_and_filtered_services.spec.ts +++ b/x-pack/test/apm_api_integration/tests/services/sorted_and_filtered_services.spec.ts @@ -50,7 +50,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { type ServiceListItem = ValuesType>>; - registry.when( + // FLAKY: https://github.com/elastic/kibana/issues/127939 + registry.when.skip( 'Sorted and filtered services', { config: 'trial', archives: ['apm_mappings_only_8.0.0'] }, () => { diff --git a/x-pack/test/functional/apps/lens/group3/lens_reporting.ts b/x-pack/test/functional/apps/lens/group3/lens_reporting.ts index 2cbb55ae03d97..dd54475efff32 100644 --- a/x-pack/test/functional/apps/lens/group3/lens_reporting.ts +++ b/x-pack/test/functional/apps/lens/group3/lens_reporting.ts @@ -11,13 +11,15 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'dashboard', 'reporting', 'timePicker']); const es = getService('es'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const listingTable = getService('listingTable'); const security = getService('security'); describe('lens reporting', () => { before(async () => { - await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/lens/reporting'); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/lens/reporting' + ); await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await security.testUser.setRoles( [ @@ -30,7 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/lens/reporting'); + await kibanaServer.savedObjects.cleanStandardList(); await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); await es.deleteByQuery({ index: '.reporting-*', diff --git a/x-pack/test/functional/apps/maps/group1/sample_data.js b/x-pack/test/functional/apps/maps/group1/sample_data.js index a8ebc8ec6ba85..d9ef08ef712f1 100644 --- a/x-pack/test/functional/apps/maps/group1/sample_data.js +++ b/x-pack/test/functional/apps/maps/group1/sample_data.js @@ -68,7 +68,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) { describe('ecommerce', () => { before(async () => { await PageObjects.maps.loadSavedMap('[eCommerce] Orders by Country'); - await PageObjects.maps.toggleLayerVisibility('Road map - desaturated'); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await PageObjects.maps.toggleLayerVisibility('United Kingdom'); await PageObjects.maps.toggleLayerVisibility('France'); await PageObjects.maps.toggleLayerVisibility('United States'); @@ -96,7 +96,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) { describe('flights', () => { before(async () => { await PageObjects.maps.loadSavedMap('[Flights] Origin Time Delayed'); - await PageObjects.maps.toggleLayerVisibility('Road map - desaturated'); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); await PageObjects.maps.enterFullScreen(); await PageObjects.maps.closeLegend(); @@ -121,7 +121,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) { before(async () => { await PageObjects.maps.loadSavedMap('[Logs] Total Requests and Bytes'); await PageObjects.maps.toggleLayerVisibility('Total Requests by Destination'); - await PageObjects.maps.toggleLayerVisibility('Road map - desaturated'); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); await PageObjects.maps.enterFullScreen(); await PageObjects.maps.closeLegend(); diff --git a/x-pack/test/functional/es_archives/lens/reporting/data.json.gz b/x-pack/test/functional/es_archives/lens/reporting/data.json.gz deleted file mode 100644 index 3c06824f60646..0000000000000 Binary files a/x-pack/test/functional/es_archives/lens/reporting/data.json.gz and /dev/null differ diff --git a/x-pack/test/functional/es_archives/lens/reporting/mappings.json b/x-pack/test/functional/es_archives/lens/reporting/mappings.json deleted file mode 100644 index 907c5ee4fe70a..0000000000000 --- a/x-pack/test/functional/es_archives/lens/reporting/mappings.json +++ /dev/null @@ -1,1261 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": { - } - }, - "index": ".kibana_1", - "mappings": { - "_meta": { - "migrationMappingPropertyHashes": { - "apm-telemetry": "07ee1939fa4302c62ddc052ec03fed90", - "canvas-element": "7390014e1091044523666d97247392fc", - "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231", - "config": "87aca8fdb053154f11383fce3dbf3edf", - "dashboard": "d00f614b29a80360e1190193fd333bab", - "file-upload-telemetry": "0ed4d3e1983d1217a30982630897092e", - "graph-workspace": "cd7ba1330e6682e9cc00b78850874be1", - "index-pattern": "66eccb05066c5a89924f48a9e9736499", - "infrastructure-ui-source": "ddc0ecb18383f6b26101a2fadb2dab0c", - "inventory-view": "84b320fd67209906333ffce261128462", - "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", - "lens": "21c3ea0763beb1ecb0162529706b88c5", - "maps-telemetry": "a4229f8b16a6820c6d724b7e0c1f729d", - "metrics-explorer-view": "53c5365793677328df0ccb6138bf3cdd", - "migrationVersion": "4a1746014a75ade3a714e1db5763276f", - "ml-telemetry": "257fd1d4b4fdbb9cb4b8a3b27da201e9", - "namespace": "2f4316de49999235636386fe51dc06c1", - "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", - "references": "7997cf5a56cc02bdc9c93361bde732b0", - "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", - "search": "181661168bbadd1eff5902361e2a0d5c", - "server": "ec97f1c5da1a19609a60874e5af1100c", - "siem-ui-timeline": "1f6f0860ad7bc0dba3e42467ca40470d", - "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084", - "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29", - "space": "c5ca8acafa0beaa4d08d014a97b6bc6b", - "telemetry": "e1c8bc94e443aefd9458932cc0697a4d", - "type": "2f4316de49999235636386fe51dc06c1", - "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", - "updated_at": "00da57df13e94e9d98437d13ace4bfe0", - "upgrade-assistant-reindex-operation": "a53a20fe086b72c9a86da3cc12dad8a6", - "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b", - "url": "c7f66a0df8b1b52f17c28c4adb111105", - "visualization": "52d7a13ad68a150c4525b292d23e12cc" - } - }, - "dynamic": "strict", - "properties": { - "action": { - "properties": { - "actionTypeId": { - "type": "keyword" - }, - "config": { - "enabled": false, - "type": "object" - }, - "description": { - "type": "text" - }, - "secrets": { - "type": "binary" - } - } - }, - "action_task_params": { - "properties": { - "actionId": { - "type": "keyword" - }, - "apiKey": { - "type": "binary" - }, - "params": { - "enabled": false, - "type": "object" - } - } - }, - "alert": { - "properties": { - "actions": { - "properties": { - "actionRef": { - "type": "keyword" - }, - "group": { - "type": "keyword" - }, - "params": { - "enabled": false, - "type": "object" - } - }, - "type": "nested" - }, - "alertTypeId": { - "type": "keyword" - }, - "params": { - "enabled": false, - "type": "object" - }, - "apiKey": { - "type": "binary" - }, - "apiKeyOwner": { - "type": "keyword" - }, - "createdBy": { - "type": "keyword" - }, - "enabled": { - "type": "boolean" - }, - "interval": { - "type": "keyword" - }, - "scheduledTaskId": { - "type": "keyword" - }, - "updatedBy": { - "type": "keyword" - } - } - }, - "apm-telemetry": { - "properties": { - "has_any_services": { - "type": "boolean" - }, - "services_per_agent": { - "properties": { - "dotnet": { - "null_value": 0, - "type": "long" - }, - "go": { - "null_value": 0, - "type": "long" - }, - "java": { - "null_value": 0, - "type": "long" - }, - "js-base": { - "null_value": 0, - "type": "long" - }, - "nodejs": { - "null_value": 0, - "type": "long" - }, - "python": { - "null_value": 0, - "type": "long" - }, - "ruby": { - "null_value": 0, - "type": "long" - }, - "rum-js": { - "null_value": 0, - "type": "long" - } - } - } - } - }, - "canvas-element": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "content": { - "type": "text" - }, - "help": { - "type": "text" - }, - "image": { - "type": "text" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "canvas-workpad": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "config": { - "dynamic": "true", - "properties": { - "accessibility:disableAnimations": { - "type": "boolean" - }, - "buildNum": { - "type": "keyword" - }, - "dateFormat:tz": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "defaultIndex": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "file-upload-telemetry": { - "properties": { - "filesUploadedTotalCount": { - "type": "long" - } - } - }, - "gis-map": { - "properties": { - "bounds": { - "dynamic": false, - "properties": {} - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "typeMeta": { - "type": "keyword" - } - } - }, - "infrastructure-ui-source": { - "properties": { - "description": { - "type": "text" - }, - "fields": { - "properties": { - "container": { - "type": "keyword" - }, - "host": { - "type": "keyword" - }, - "pod": { - "type": "keyword" - }, - "tiebreaker": { - "type": "keyword" - }, - "timestamp": { - "type": "keyword" - } - } - }, - "logAlias": { - "type": "keyword" - }, - "logColumns": { - "properties": { - "fieldColumn": { - "properties": { - "field": { - "type": "keyword" - }, - "id": { - "type": "keyword" - } - } - }, - "messageColumn": { - "properties": { - "id": { - "type": "keyword" - } - } - }, - "timestampColumn": { - "properties": { - "id": { - "type": "keyword" - } - } - } - }, - "type": "nested" - }, - "metricAlias": { - "type": "keyword" - }, - "name": { - "type": "text" - } - } - }, - "inventory-view": { - "properties": { - "autoBounds": { - "type": "boolean" - }, - "autoReload": { - "type": "boolean" - }, - "boundsOverride": { - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - } - }, - "customOptions": { - "properties": { - "field": { - "type": "keyword" - }, - "text": { - "type": "keyword" - } - }, - "type": "nested" - }, - "filterQuery": { - "properties": { - "expression": { - "type": "keyword" - }, - "kind": { - "type": "keyword" - } - } - }, - "groupBy": { - "properties": { - "field": { - "type": "keyword" - }, - "label": { - "type": "keyword" - } - }, - "type": "nested" - }, - "metric": { - "properties": { - "type": { - "type": "keyword" - } - } - }, - "name": { - "type": "keyword" - }, - "nodeType": { - "type": "keyword" - }, - "time": { - "type": "integer" - }, - "view": { - "type": "keyword" - } - } - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "lens": { - "properties": { - "expression": { - "index": false, - "type": "keyword" - }, - "state": { - "type": "flattened" - }, - "title": { - "type": "text" - }, - "visualizationType": { - "type": "keyword" - } - } - }, - "map": { - "properties": { - "bounds": { - "dynamic": false, - "properties": {} - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "maps-telemetry": { - "properties": { - "attributesPerMap": { - "properties": { - "dataSourcesCount": { - "properties": { - "avg": { - "type": "long" - }, - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - }, - "emsVectorLayersCount": { - "dynamic": "true", - "type": "object" - }, - "layerTypesCount": { - "dynamic": "true", - "type": "object" - }, - "layersCount": { - "properties": { - "avg": { - "type": "long" - }, - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - } - } - }, - "mapsTotalCount": { - "type": "long" - }, - "timeCaptured": { - "type": "date" - } - } - }, - "metrics-explorer-view": { - "properties": { - "chartOptions": { - "properties": { - "stack": { - "type": "boolean" - }, - "type": { - "type": "keyword" - }, - "yAxisMode": { - "type": "keyword" - } - } - }, - "currentTimerange": { - "properties": { - "from": { - "type": "keyword" - }, - "interval": { - "type": "keyword" - }, - "to": { - "type": "keyword" - } - } - }, - "name": { - "type": "keyword" - }, - "options": { - "properties": { - "aggregation": { - "type": "keyword" - }, - "filterQuery": { - "type": "keyword" - }, - "groupBy": { - "type": "keyword" - }, - "limit": { - "type": "integer" - }, - "metrics": { - "properties": { - "aggregation": { - "type": "keyword" - }, - "color": { - "type": "keyword" - }, - "field": { - "type": "keyword" - }, - "label": { - "type": "keyword" - } - }, - "type": "nested" - } - } - } - } - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "dashboard": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "index-pattern": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "space": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "visualization": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "ml-telemetry": { - "properties": { - "file_data_visualizer": { - "properties": { - "index_creation_count": { - "type": "long" - } - } - } - } - }, - "namespace": { - "type": "keyword" - }, - "query": { - "properties": { - "description": { - "type": "text" - }, - "filters": { - "enabled": false, - "type": "object" - }, - "query": { - "properties": { - "language": { - "type": "keyword" - }, - "query": { - "index": false, - "type": "keyword" - } - } - }, - "timefilter": { - "enabled": false, - "type": "object" - }, - "title": { - "type": "text" - } - } - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "sample-data-telemetry": { - "properties": { - "installCount": { - "type": "long" - }, - "unInstallCount": { - "type": "long" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "siem-ui-timeline": { - "properties": { - "columns": { - "properties": { - "aggregatable": { - "type": "boolean" - }, - "category": { - "type": "keyword" - }, - "columnHeaderType": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "example": { - "type": "text" - }, - "id": { - "type": "keyword" - }, - "indexes": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "placeholder": { - "type": "text" - }, - "searchable": { - "type": "boolean" - }, - "type": { - "type": "keyword" - } - } - }, - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "dataProviders": { - "properties": { - "and": { - "properties": { - "enabled": { - "type": "boolean" - }, - "excluded": { - "type": "boolean" - }, - "id": { - "type": "keyword" - }, - "kqlQuery": { - "type": "text" - }, - "name": { - "type": "text" - }, - "queryMatch": { - "properties": { - "displayField": { - "type": "text" - }, - "displayValue": { - "type": "text" - }, - "field": { - "type": "text" - }, - "operator": { - "type": "text" - }, - "value": { - "type": "text" - } - } - } - } - }, - "enabled": { - "type": "boolean" - }, - "excluded": { - "type": "boolean" - }, - "id": { - "type": "keyword" - }, - "kqlQuery": { - "type": "text" - }, - "name": { - "type": "text" - }, - "queryMatch": { - "properties": { - "displayField": { - "type": "text" - }, - "displayValue": { - "type": "text" - }, - "field": { - "type": "text" - }, - "operator": { - "type": "text" - }, - "value": { - "type": "text" - } - } - } - } - }, - "dateRange": { - "properties": { - "end": { - "type": "date" - }, - "start": { - "type": "date" - } - } - }, - "description": { - "type": "text" - }, - "favorite": { - "properties": { - "favoriteDate": { - "type": "date" - }, - "fullName": { - "type": "text" - }, - "keySearch": { - "type": "text" - }, - "userName": { - "type": "text" - } - } - }, - "kqlMode": { - "type": "keyword" - }, - "kqlQuery": { - "properties": { - "filterQuery": { - "properties": { - "kuery": { - "properties": { - "expression": { - "type": "text" - }, - "kind": { - "type": "keyword" - } - } - }, - "serializedQuery": { - "type": "text" - } - } - } - } - }, - "sort": { - "properties": { - "columnId": { - "type": "keyword" - }, - "sortDirection": { - "type": "keyword" - } - } - }, - "title": { - "type": "text" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "siem-ui-timeline-note": { - "properties": { - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "eventId": { - "type": "keyword" - }, - "note": { - "type": "text" - }, - "timelineId": { - "type": "keyword" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "siem-ui-timeline-pinned-event": { - "properties": { - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "eventId": { - "type": "keyword" - }, - "timelineId": { - "type": "keyword" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "disabledFeatures": { - "type": "keyword" - }, - "imageUrl": { - "index": false, - "type": "text" - }, - "initials": { - "type": "keyword" - }, - "name": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "spaceId": { - "type": "keyword" - }, - "telemetry": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "type": { - "type": "keyword" - }, - "ui-metric": { - "properties": { - "count": { - "type": "integer" - } - } - }, - "updated_at": { - "type": "date" - }, - "upgrade-assistant-reindex-operation": { - "dynamic": "true", - "properties": { - "indexName": { - "type": "keyword" - }, - "status": { - "type": "integer" - } - } - }, - "upgrade-assistant-telemetry": { - "properties": { - "features": { - "properties": { - "deprecation_logging": { - "properties": { - "enabled": { - "null_value": true, - "type": "boolean" - } - } - } - } - }, - "ui_open": { - "properties": { - "cluster": { - "null_value": 0, - "type": "long" - }, - "indices": { - "null_value": 0, - "type": "long" - }, - "overview": { - "null_value": 0, - "type": "long" - } - } - }, - "ui_reindex": { - "properties": { - "close": { - "null_value": 0, - "type": "long" - }, - "open": { - "null_value": 0, - "type": "long" - }, - "start": { - "null_value": 0, - "type": "long" - }, - "stop": { - "null_value": 0, - "type": "long" - } - } - } - } - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchRefName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "auto_expand_replicas": "0-1", - "number_of_replicas": "0", - "number_of_shards": "1" - } - } - } -} diff --git a/x-pack/test/functional/fixtures/kbn_archiver/lens/reporting.json b/x-pack/test/functional/fixtures/kbn_archiver/lens/reporting.json new file mode 100644 index 0000000000000..5c9d8661a1154 --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/lens/reporting.json @@ -0,0 +1,491 @@ +{ + "attributes": { + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.4.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "8.0.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-12-21T00:43:07.096Z", + "version": "WzE2LDJd" +} + +{ + "attributes": { + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "bd23934e-5c70-4758-bd17-3390aab0e84c": { + "columnOrder": [ + "b6865367-27d4-449f-97ce-463a82f3a762", + "fd996842-70d7-4ad0-9a5a-3137a3d6b35a" + ], + "columns": { + "b6865367-27d4-449f-97ce-463a82f3a762": { + "dataType": "date", + "isBucketed": true, + "label": "Date histogram of @timestamp", + "operationType": "date_histogram", + "params": { + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "fd996842-70d7-4ad0-9a5a-3137a3d6b35a": { + "dataType": "number", + "isBucketed": false, + "label": "Count of documents", + "operationType": "count", + "scale": "ratio", + "sourceField": "___records___" + } + } + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "fd996842-70d7-4ad0-9a5a-3137a3d6b35a" + ], + "layerId": "bd23934e-5c70-4758-bd17-3390aab0e84c", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "xAccessor": "b6865367-27d4-449f-97ce-463a82f3a762" + } + ], + "legend": { + "isVisible": true, + "legendSize": "auto", + "position": "right" + }, + "preferredSeriesType": "bar_stacked" + } + }, + "title": "Barbar", + "visualizationType": "lnsXY" + }, + "coreMigrationVersion": "8.4.0", + "id": "74b0f140-e523-11e9-9af5-2b261e1eb063", + "migrationVersion": { + "lens": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "indexpattern-datasource-layer-bd23934e-5c70-4758-bd17-3390aab0e84c", + "type": "index-pattern" + } + ], + "type": "lens", + "updated_at": "2019-10-16T00:43:01.616Z", + "version": "WzI2LDJd" +} + +{ + "attributes": { + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "c61a8afb-a185-4fae-a064-fb3846f6c451": { + "columnOrder": [ + "2cd09808-3915-49f4-b3b0-82767eba23f7" + ], + "columns": { + "2cd09808-3915-49f4-b3b0-82767eba23f7": { + "dataType": "number", + "isBucketed": false, + "label": "Maximum of bytes", + "operationType": "max", + "scale": "ratio", + "sourceField": "bytes" + }, + "d3e62a7a-c259-4fff-a2fc-eebf20b7008a": { + "dataType": "number", + "isBucketed": false, + "label": "Minimum of bytes", + "operationType": "min", + "scale": "ratio", + "sourceField": "bytes" + }, + "d6e40cea-6299-43b4-9c9d-b4ee305a2ce8": { + "dataType": "date", + "isBucketed": true, + "label": "Date Histogram of @timestamp", + "operationType": "date_histogram", + "params": { + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + } + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "2cd09808-3915-49f4-b3b0-82767eba23f7", + "layerId": "c61a8afb-a185-4fae-a064-fb3846f6c451", + "layerType": "data", + "layers": [ + { + "accessors": [ + "d3e62a7a-c259-4fff-a2fc-eebf20b7008a", + "26ef70a9-c837-444c-886e-6bd905ee7335" + ], + "layerId": "c61a8afb-a185-4fae-a064-fb3846f6c451", + "layerType": "data", + "seriesType": "area", + "splitAccessor": "54cd64ed-2a44-4591-af84-b2624504569a", + "xAccessor": "d6e40cea-6299-43b4-9c9d-b4ee305a2ce8" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "area", + "size": "xl", + "textAlign": "center", + "titlePosition": "bottom" + } + }, + "title": "Artistpreviouslyknownaslens", + "visualizationType": "lnsMetric" + }, + "coreMigrationVersion": "8.4.0", + "id": "76fc4200-cf44-11e9-b933-fd84270f3ac1", + "migrationVersion": { + "lens": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "indexpattern-datasource-layer-c61a8afb-a185-4fae-a064-fb3846f6c451", + "type": "index-pattern" + } + ], + "type": "lens", + "updated_at": "2019-09-04T19:40:58.862Z", + "version": "WzI0LDJd" +} + +{ + "attributes": { + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "b0a1929e-e26a-444d-a6e9-f65baafcd025": { + "columnOrder": [ + "99513d8e-9102-43b1-bc04-e78629c1c749" + ], + "columns": { + "99513d8e-9102-43b1-bc04-e78629c1c749": { + "dataType": "number", + "isBucketed": false, + "label": "Average of bytes", + "operationType": "average", + "scale": "ratio", + "sourceField": "bytes" + } + } + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "99513d8e-9102-43b1-bc04-e78629c1c749", + "layerId": "b0a1929e-e26a-444d-a6e9-f65baafcd025", + "layerType": "data", + "size": "xl", + "textAlign": "center", + "titlePosition": "bottom" + } + }, + "title": "Numbytes", + "visualizationType": "lnsMetric" + }, + "coreMigrationVersion": "8.4.0", + "id": "84320f00-e523-11e9-9af5-2b261e1eb063", + "migrationVersion": { + "lens": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "indexpattern-datasource-layer-b0a1929e-e26a-444d-a6e9-f65baafcd025", + "type": "index-pattern" + } + ], + "type": "lens", + "updated_at": "2019-10-16T00:43:13.714Z", + "version": "WzI3LDJd" +} + +{ + "attributes": { + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "44fc2bcf-c8ce-4380-b060-1ef61c955818": { + "columnOrder": [ + "729e25e7-fa29-4a94-942b-41984c6d592c", + "0f744a83-1782-4494-9e98-ff0631fc6ef9" + ], + "columns": { + "0f744a83-1782-4494-9e98-ff0631fc6ef9": { + "dataType": "number", + "isBucketed": false, + "label": "Count of documents", + "operationType": "count", + "scale": "ratio", + "sourceField": "___records___" + }, + "729e25e7-fa29-4a94-942b-41984c6d592c": { + "dataType": "date", + "isBucketed": true, + "label": "Date histogram of @timestamp", + "operationType": "date_histogram", + "params": { + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + } + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "columns": [ + { + "columnId": "729e25e7-fa29-4a94-942b-41984c6d592c" + }, + { + "columnId": "0f744a83-1782-4494-9e98-ff0631fc6ef9" + }, + { + "columnId": "c4e89ccb-f85c-490c-ac01-aa73a0bcffc7" + } + ], + "layerId": "44fc2bcf-c8ce-4380-b060-1ef61c955818", + "layerType": "data", + "rowHeight": "single", + "rowHeightLines": 1 + } + }, + "title": "Tableytable", + "visualizationType": "lnsDatatable" + }, + "coreMigrationVersion": "8.4.0", + "id": "9325b9d0-e523-11e9-9af5-2b261e1eb063", + "migrationVersion": { + "lens": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "indexpattern-datasource-layer-44fc2bcf-c8ce-4380-b060-1ef61c955818", + "type": "index-pattern" + } + ], + "type": "lens", + "updated_at": "2019-10-16T00:43:27.907Z", + "version": "WzI4LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.0.0\",\"type\":\"lens\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"e5966143-f050-40eb-b4e7-f94469c1426c\"},\"panelIndex\":\"e5966143-f050-40eb-b4e7-f94469c1426c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e5966143-f050-40eb-b4e7-f94469c1426c\"},{\"version\":\"8.0.0\",\"type\":\"lens\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"f9ff2513-2de9-4944-a8d1-a9fead4b020d\"},\"panelIndex\":\"f9ff2513-2de9-4944-a8d1-a9fead4b020d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f9ff2513-2de9-4944-a8d1-a9fead4b020d\"},{\"version\":\"8.0.0\",\"type\":\"lens\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":15,\"i\":\"b62d7d36-83ca-415b-8971-34d891b09a1a\"},\"panelIndex\":\"b62d7d36-83ca-415b-8971-34d891b09a1a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b62d7d36-83ca-415b-8971-34d891b09a1a\"}]", + "timeRestore": false, + "title": "Lens reportz", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "c27849f0-e523-11e9-9af5-2b261e1eb063", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "74b0f140-e523-11e9-9af5-2b261e1eb063", + "name": "e5966143-f050-40eb-b4e7-f94469c1426c:panel_e5966143-f050-40eb-b4e7-f94469c1426c", + "type": "lens" + }, + { + "id": "84320f00-e523-11e9-9af5-2b261e1eb063", + "name": "f9ff2513-2de9-4944-a8d1-a9fead4b020d:panel_f9ff2513-2de9-4944-a8d1-a9fead4b020d", + "type": "lens" + }, + { + "id": "9325b9d0-e523-11e9-9af5-2b261e1eb063", + "name": "b62d7d36-83ca-415b-8971-34d891b09a1a:panel_b62d7d36-83ca-415b-8971-34d891b09a1a", + "type": "lens" + } + ], + "type": "dashboard", + "updated_at": "2019-10-02T14:48:56.079Z", + "version": "WzI1LDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "A Pie", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"A Pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}" + }, + "coreMigrationVersion": "8.4.0", + "id": "i-exist", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-01-22T19:32:31.206Z", + "version": "WzE5LDJd" +} + +{ + "attributes": { + "timeFieldName": "@timestamp", + "title": "logs*" + }, + "coreMigrationVersion": "7.17.2", + "id": "b15b1d40-a8bb-11e9-98cf-2bb06ef63e0b", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-12-21T00:43:07.096Z", + "version": "WzEwLDJd" +} + +{ + "attributes": { + "description": "Ok responses for jpg files", + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "c9035c4f-054f-47da-b8e6-78733a4573ce", + "key": "extension.raw", + "negate": false, + "params": { + "query": "jpg" + }, + "type": "phrase", + "value": "jpg" + }, + "query": { + "match": { + "extension.raw": { + "query": "jpg", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "response:200" + }, + "title": "OKJpgs" + }, + "coreMigrationVersion": "8.4.0", + "id": "okjpgs", + "migrationVersion": { + "query": "8.0.0" + }, + "references": [ + { + "id": "b15b1d40-a8bb-11e9-98cf-2bb06ef63e0b", + "name": "c9035c4f-054f-47da-b8e6-78733a4573ce", + "type": "index-pattern" + } + ], + "type": "query", + "updated_at": "2019-07-17T17:54:26.378Z", + "version": "WzIyLDJd" +} diff --git a/x-pack/test/functional/page_objects/gis_page.ts b/x-pack/test/functional/page_objects/gis_page.ts index e1b55d5eefe05..8e5e78a6154e7 100644 --- a/x-pack/test/functional/page_objects/gis_page.ts +++ b/x-pack/test/functional/page_objects/gis_page.ts @@ -302,6 +302,11 @@ export class GisPageObject extends FtrService { await this.testSubjects.click('layerVisibilityToggleButton'); } + // In 8.4, EMS basemap layers no longer use EMS tile service name, instead using "Basemap" + async toggleEmsBasemapLayerVisibility() { + await this.toggleLayerVisibility('Basemap'); + } + async openLegend() { const isOpen = await this.testSubjects.exists('mapLayerTOC'); if (isOpen === false) { diff --git a/x-pack/test/kubernetes_security/basic/tests/aggregate.ts b/x-pack/test/kubernetes_security/basic/tests/aggregate.ts index c1501c97e77e5..92d6da4655cf4 100644 --- a/x-pack/test/kubernetes_security/basic/tests/aggregate.ts +++ b/x-pack/test/kubernetes_security/basic/tests/aggregate.ts @@ -42,12 +42,13 @@ export default function aggregateTests({ getService }: FtrProviderContext) { groupBy: ORCHESTRATOR_NAMESPACE_PROPERTY, page: 0, index: MOCK_INDEX, + perPage: 10, }); expect(response.status).to.be(200); - expect(response.body.length).to.be(10); + expect(response.body.buckets.length).to.be(10); namespaces.forEach((namespace, i) => { - expect(response.body[i].key).to.be(namespace); + expect(response.body.buckets[i].key).to.be(namespace); }); }); @@ -62,8 +63,8 @@ export default function aggregateTests({ getService }: FtrProviderContext) { index: MOCK_INDEX, }); expect(response.status).to.be(200); - expect(response.body.length).to.be(1); - expect(response.body[0].key).to.be('namespace11'); + expect(response.body.buckets.length).to.be(1); + expect(response.body.buckets[0].key).to.be('namespace11'); }); it(`${AGGREGATE_ROUTE} return countBy value for each aggregation`, async () => { @@ -78,10 +79,10 @@ export default function aggregateTests({ getService }: FtrProviderContext) { index: MOCK_INDEX, }); expect(response.status).to.be(200); - expect(response.body.length).to.be(10); + expect(response.body.buckets.length).to.be(10); // when groupBy and countBy use the same field, count_by_aggs.value will always be 1 - response.body.forEach((agg: any) => { + response.body.buckets.forEach((agg: any) => { expect(agg.count_by_aggs.value).to.be(1); }); }); @@ -99,9 +100,9 @@ export default function aggregateTests({ getService }: FtrProviderContext) { sortByCount: 'desc', }); expect(response.status).to.be(200); - expect(response.body.length).to.be(10); - expect(response.body[0].count_by_aggs.value).to.be(2); - expect(response.body[1].count_by_aggs.value).to.be(1); + expect(response.body.buckets.length).to.be(10); + expect(response.body.buckets[0].count_by_aggs.value).to.be(2); + expect(response.body.buckets[1].count_by_aggs.value).to.be(1); }); it(`${AGGREGATE_ROUTE} allows a range query`, async () => { @@ -122,7 +123,7 @@ export default function aggregateTests({ getService }: FtrProviderContext) { index: MOCK_INDEX, }); expect(response.status).to.be(200); - expect(response.body.length).to.be(3); + expect(response.body.buckets.length).to.be(3); }); it(`${AGGREGATE_ROUTE} handles a bad request`, async () => { diff --git a/x-pack/test/screenshot_creation/apps/ml_docs/data_frame_analytics/regression.ts b/x-pack/test/screenshot_creation/apps/ml_docs/data_frame_analytics/regression.ts index ea59c68088363..de3dee3a47905 100644 --- a/x-pack/test/screenshot_creation/apps/ml_docs/data_frame_analytics/regression.ts +++ b/x-pack/test/screenshot_creation/apps/ml_docs/data_frame_analytics/regression.ts @@ -123,8 +123,14 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsResults.expandFeatureImportanceSection(false); await ml.dataFrameAnalyticsResults.expandScatterplotMatrixSection(false); await ml.dataFrameAnalyticsResults.scrollAnalysisIntoView(); + await ml.dataFrameAnalyticsResults.enableResultsTablePreviewHistogramCharts(true); await mlScreenshots.removeFocusFromElement(); - await mlScreenshots.takeScreenshot('flights-regression-results', screenshotDirectories); + await mlScreenshots.takeScreenshot( + 'flights-regression-results', + screenshotDirectories, + 1500, + 1300 + ); await ml.testExecution.logTestStep('expand feature importance section and take screenshot'); await ml.dataFrameAnalyticsResults.expandFeatureImportanceSection(true); diff --git a/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts b/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts index 334b4ce965905..db8e624ac4356 100644 --- a/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts +++ b/x-pack/test/upgrade/apps/maps/maps_smoke_tests.ts @@ -110,7 +110,7 @@ export default function ({ await PageObjects.home.launchSampleMap('ecommerce'); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.maps.waitForLayersToLoad(); - await mapsHelper.toggleLayerVisibilityRoadMap(); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await PageObjects.maps.toggleLayerVisibility('United Kingdom'); await PageObjects.maps.toggleLayerVisibility('France'); await PageObjects.maps.toggleLayerVisibility('United States'); @@ -138,7 +138,7 @@ export default function ({ await PageObjects.home.launchSampleMap('flights'); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.maps.waitForLayersToLoad(); - await mapsHelper.toggleLayerVisibilityRoadMap(); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); await PageObjects.maps.enterFullScreen(); await PageObjects.maps.closeLegend(); @@ -162,7 +162,7 @@ export default function ({ await PageObjects.home.launchSampleMap('logs'); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.maps.waitForLayersToLoad(); - await mapsHelper.toggleLayerVisibilityRoadMap(); + await PageObjects.maps.toggleEmsBasemapLayerVisibility(); await mapsHelper.toggleLayerVisibilityTotalRequests(); await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); await PageObjects.maps.enterFullScreen(); diff --git a/x-pack/test/upgrade/services/maps_upgrade_services.ts b/x-pack/test/upgrade/services/maps_upgrade_services.ts index 28eafafc8663a..97adb3ca9ea8a 100644 --- a/x-pack/test/upgrade/services/maps_upgrade_services.ts +++ b/x-pack/test/upgrade/services/maps_upgrade_services.ts @@ -25,27 +25,6 @@ export function MapsHelper({ getPageObjects, getService }: FtrProviderContext) { } }, - // In v8.0, the default base map switched from bright to desaturated. - // https://github.com/elastic/kibana/pull/116179 - // Maps created before this change will have a base map called "Road map" - // Maps created after this change will have a base map called "Road map - desaturated" - // toggleLayerVisibilityRoadMap will toggle layer visibility for either value - async toggleLayerVisibilityRoadMap() { - const isRoadMapDesaturated = await testSubjects.exists( - 'layerTocActionsPanelToggleButtonRoad_map_-_desaturated' - ); - const isRoadMap = await testSubjects.exists('layerTocActionsPanelToggleButtonRoad_map'); - if (!isRoadMapDesaturated && !isRoadMap) { - throw new Error('Layer road map not found'); - } - if (isRoadMapDesaturated) { - await this.toggleLayerVisibility('Road map - desaturated'); - } - if (isRoadMap) { - await this.toggleLayerVisibility('Road map'); - } - }, - // In v7.16, e-commerce sample data was re-worked so that geo.src field to match country code of geo.coordinates // https://github.com/elastic/kibana/pull/110885 // Maps created before this change will have a layer called "Total Requests by Country" diff --git a/yarn.lock b/yarn.lock index 7a09d8caa1dfb..83f4084c5dbc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3319,6 +3319,10 @@ version "0.0.0" uid "" +"@kbn/core-test-helpers-http-setup-browser@link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser": + version "0.0.0" + uid "" + "@kbn/core-theme-browser-internal@link:bazel-bin/packages/core/theme/core-theme-browser-internal": version "0.0.0" uid "" @@ -3331,6 +3335,22 @@ version "0.0.0" uid "" +"@kbn/core-ui-settings-browser-internal@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal": + version "0.0.0" + uid "" + +"@kbn/core-ui-settings-browser-mocks@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks": + version "0.0.0" + uid "" + +"@kbn/core-ui-settings-browser@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser": + version "0.0.0" + uid "" + +"@kbn/core-ui-settings-common@link:bazel-bin/packages/core/ui-settings/core-ui-settings-common": + version "0.0.0" + uid "" + "@kbn/crypto-browser@link:bazel-bin/packages/kbn-crypto-browser": version "0.0.0" uid "" @@ -4013,61 +4033,6 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@microsoft/api-documenter@7.13.68": - version "7.13.68" - resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.13.68.tgz#c1e144764cac0684adefe78fd848d78c3f374681" - integrity sha512-cRjwK1TDyGxFGgCsRG8G0Yi3Z4akvfWgw1pWAxKFbm7ajlQQGZcHPnb+n4lKlSeQ5g/cxc7hcdw54Mvisne9Bg== - dependencies: - "@microsoft/api-extractor-model" "7.13.16" - "@microsoft/tsdoc" "0.13.2" - "@rushstack/node-core-library" "3.43.2" - "@rushstack/ts-command-line" "4.10.4" - colors "~1.2.1" - js-yaml "~3.13.1" - resolve "~1.17.0" - -"@microsoft/api-extractor-model@7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.13.16.tgz#1d67541ebbcea32672c5fdd9392dc1579b2fc23a" - integrity sha512-ttdxVXsTWL5dd26W1YNLe3LgDsE0EE273aZlcLe58W0opymBybCYU1Mn+OHQM8BuErrdvdN8LdpWAAbkiOEN/Q== - dependencies: - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.43.2" - -"@microsoft/api-extractor@7.18.19": - version "7.18.19" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.18.19.tgz#f09afc1c210aa67e2f3f34b0a68281a12f144541" - integrity sha512-aY+/XR7PtQXtnqNPFRs3/+iVRlQJpo6uLTjO2g7PqmnMywl3GBU3bCgAlV/khZtAQbIs6Le57XxmSE6rOqbcfg== - dependencies: - "@microsoft/api-extractor-model" "7.13.16" - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.43.2" - "@rushstack/rig-package" "0.3.5" - "@rushstack/ts-command-line" "4.10.4" - colors "~1.2.1" - lodash "~4.17.15" - resolve "~1.17.0" - semver "~7.3.0" - source-map "~0.6.1" - typescript "~4.4.2" - -"@microsoft/tsdoc-config@~0.15.2": - version "0.15.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz#eb353c93f3b62ab74bdc9ab6f4a82bcf80140f14" - integrity sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA== - dependencies: - "@microsoft/tsdoc" "0.13.2" - ajv "~6.12.6" - jju "~1.4.0" - resolve "~1.19.0" - -"@microsoft/tsdoc@0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" - integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -4731,39 +4696,6 @@ redux-thunk "^2.3.0" reselect "^4.0.0" -"@rushstack/node-core-library@3.43.2": - version "3.43.2" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.43.2.tgz#f067371a94fd92ed8f9d9aa8201c5e9e17a19f0f" - integrity sha512-b7AEhSf6CvZgvuDcWMFDeKx2mQSn9AVnMQVyxNxFeHCtLz3gJicqCOlw2GOXM8HKh6PInLdil/NVCDcstwSrIw== - dependencies: - "@types/node" "12.20.24" - colors "~1.2.1" - fs-extra "~7.0.1" - import-lazy "~4.0.0" - jju "~1.4.0" - resolve "~1.17.0" - semver "~7.3.0" - timsort "~0.3.0" - z-schema "~3.18.3" - -"@rushstack/rig-package@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.5.tgz#7ddab0994647837bab8fdef26f990f1774d82e78" - integrity sha512-CvqWw+E81U5lRBN/lUj7Ngr/XQa/PPb2jAS5QcLP7WL+IMUl+3+Cc2qYrsDoB4zke81kz+usWGmBQpBzGMLmAA== - dependencies: - resolve "~1.17.0" - strip-json-comments "~3.1.1" - -"@rushstack/ts-command-line@4.10.4": - version "4.10.4" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.4.tgz#05142b74e5cb207d3dd9b935c82f80d7fcb68042" - integrity sha512-4T5ao4UgDb6LmiRj4GumvG3VT/p6RSMgl7TN7S58ifaAGN2GeTNBajFCDdJs9QQP0d/4tA5p0SFzT7Ps5Byirg== - dependencies: - "@types/argparse" "1.0.38" - argparse "~1.0.9" - colors "~1.2.1" - string-argv "~0.3.1" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -6039,11 +5971,6 @@ dependencies: "@types/glob" "*" -"@types/argparse@1.0.38": - version "1.0.38" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" - integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== - "@types/aria-query@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" @@ -7071,6 +6998,10 @@ version "0.0.0" uid "" +"@types/kbn__core-test-helpers-http-setup-browser@link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-theme-browser-internal@link:bazel-bin/packages/core/theme/core-theme-browser-internal/npm_module_types": version "0.0.0" uid "" @@ -7083,6 +7014,22 @@ version "0.0.0" uid "" +"@types/kbn__core-ui-settings-browser-internal@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-ui-settings-browser-mocks@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-ui-settings-browser@link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-ui-settings-common@link:bazel-bin/packages/core/ui-settings/core-ui-settings-common/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__crypto-browser@link:bazel-bin/packages/kbn-crypto-browser/npm_module_types": version "0.0.0" uid "" @@ -7615,12 +7562,12 @@ dependencies: moment ">=2.14.0" -"@types/moment-timezone@^0.5.12": - version "0.5.12" - resolved "https://registry.yarnpkg.com/@types/moment-timezone/-/moment-timezone-0.5.12.tgz#0fb680c03db194fe8ff4551eaeb1eec8d3d80e9f" - integrity sha512-hnHH2+Efg2vExr/dSz+IX860nSiyk9Sk4pJF2EmS11lRpMcNXeB4KBW5xcgw2QPsb9amTXdsVNEe5IoJXiT0uw== +"@types/moment-timezone@^0.5.30": + version "0.5.30" + resolved "https://registry.yarnpkg.com/@types/moment-timezone/-/moment-timezone-0.5.30.tgz#340ed45fe3e715f4a011f5cfceb7cb52aad46fc7" + integrity sha512-aDVfCsjYnAQaV/E9Qc24C5Njx1CoDjXsEgkxtp9NyXDpYu4CCbmclb6QhWloS9UTU/8YROUEEdEkWI0D7DxnKg== dependencies: - moment ">=2.14.0" + moment-timezone "*" "@types/mustache@^0.8.31": version "0.8.31" @@ -7663,7 +7610,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@16.11.41", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10", "@types/node@^14.14.31": +"@types/node@*", "@types/node@16.11.41", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10", "@types/node@^14.14.31": version "16.11.41" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== @@ -8959,7 +8906,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.11.0, ajv@^6.12.5, ajv@~6.12.6: +ajv@^6.11.0, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -9292,7 +9239,7 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.7, argparse@~1.0.9: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -9582,11 +9529,6 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= - ast-types@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" @@ -10868,14 +10810,6 @@ callsites@^3.1.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - camel-case@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" @@ -11211,7 +11145,7 @@ classnames@2.2.6, classnames@2.x, classnames@^2.2.5, classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@4.2.x, clean-css@^4.2.3: +clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -11555,11 +11489,6 @@ colors@1.4.0, colors@^1.3.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -colors@~1.2.1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" - integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== - colorspace@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" @@ -11600,11 +11529,6 @@ commander@2, commander@^2.19.0, commander@^2.20.0, commander@^2.7.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - commander@7, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -13709,20 +13633,20 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^4.0, domhandler@^4.2.2: +domhandler@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" + integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0, domhandler@^4.0, domhandler@^4.2.0, domhandler@^4.2.2: version "4.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== dependencies: domelementtype "^2.2.0" -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - domutils@1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" @@ -13746,7 +13670,7 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0, domutils@^2.8.0: +domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -14374,14 +14298,6 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -es6-templates@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= - dependencies: - recast "~0.11.12" - through "~2.3.6" - es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" @@ -14766,11 +14682,6 @@ esprima@~1.0.4: resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= -esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" @@ -15269,11 +15180,6 @@ fastest-stable-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= - fastq@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" @@ -15841,7 +15747,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^7.0.0, fs-extra@^7.0.1, fs-extra@~7.0.1: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -16992,7 +16898,7 @@ hdr-histogram-js@^1.2.0: base64-js "^1.2.0" pako "^1.0.3" -he@1.2.0, he@1.2.x, he@^1.2.0: +he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -17139,18 +17045,17 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-loader@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" - integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== +html-loader@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-1.3.2.tgz#5a72ebba420d337083497c9aba7866c9e1aee340" + integrity sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA== dependencies: - es6-templates "^0.2.3" - fastparse "^1.1.1" - html-minifier "^3.5.8" - loader-utils "^1.1.0" - object-assign "^4.1.1" + html-minifier-terser "^5.1.1" + htmlparser2 "^4.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -html-minifier-terser@^5.0.1: +html-minifier-terser@^5.0.1, html-minifier-terser@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== @@ -17163,19 +17068,6 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-minifier@^3.5.8: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - html-tags@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" @@ -17235,6 +17127,16 @@ htmlparser2@^3.10.0: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" @@ -17533,7 +17435,7 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -import-lazy@^4.0.0, import-lazy@~4.0.0: +import-lazy@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== @@ -17952,7 +17854,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.6.0, is-core-module@^2.8.1: +is-core-module@^2.2.0, is-core-module@^2.6.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -19286,11 +19188,6 @@ jimp@^0.14.0: "@jimp/types" "^0.14.0" regenerator-runtime "^0.13.3" -jju@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= - joi@*, joi@^17.3.0, joi@^17.4.0: version "17.4.0" resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" @@ -19398,14 +19295,6 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@~3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -20183,7 +20072,7 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.get@^4.0.0, lodash.get@^4.4.2: +lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -20303,7 +20192,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.10, lodash@~4.17.15: +lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -20425,11 +20314,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -21350,10 +21234,10 @@ moment-duration-format@^2.3.2: resolved "https://registry.yarnpkg.com/moment-duration-format/-/moment-duration-format-2.3.2.tgz#5fa2b19b941b8d277122ff3f87a12895ec0d6212" integrity sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ== -moment-timezone@^0.5.27: - version "0.5.27" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.27.tgz#73adec8139b6fe30452e78f210f27b1f346b8877" - integrity sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw== +moment-timezone@*, moment-timezone@^0.5.34: + version "0.5.34" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== dependencies: moment ">= 2.9.0" @@ -21661,13 +21545,6 @@ nise@^1.5.2: lolex "^5.0.1" path-to-regexp "^1.7.0" -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - no-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" @@ -22681,13 +22558,6 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - param-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" @@ -23903,7 +23773,7 @@ prismjs@^1.22.0, prismjs@~1.25.0, prismjs@~1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -private@^0.1.8, private@~0.1.5: +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -25314,16 +25184,6 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -25573,7 +25433,7 @@ rehype-stringify@^8.0.0: dependencies: hast-util-to-html "^7.1.1" -relateurl@0.2.x, relateurl@^0.2.7: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -26029,21 +25889,6 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@~1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@~1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -26513,7 +26358,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0, semver@~7.3.2: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.2: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -27064,7 +26909,7 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -27516,11 +27361,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -string-argv@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - string-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" @@ -27740,7 +27580,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -28354,7 +28194,7 @@ through2@^4.0.2: dependencies: readable-stream "3" -"through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.6: +"through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -28401,7 +28241,7 @@ timm@^1.6.1: resolved "https://registry.yarnpkg.com/timm/-/timm-1.6.1.tgz#5f8aafc932248c76caf2c6af60542a32d3c30701" integrity sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg== -timsort@^0.3.0, timsort@~0.3.0: +timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= @@ -28921,7 +28761,7 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@4.6.3, typescript@^3.3.3333, typescript@^3.5.3, typescript@^4.5.5, typescript@~4.4.2: +typescript@4.6.3, typescript@^3.3.3333, typescript@^3.5.3, typescript@^4.5.5: version "4.6.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== @@ -28936,7 +28776,7 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== -uglify-js@3.4.x, uglify-js@^3.1.4, uglify-js@^3.14.3: +uglify-js@^3.1.4, uglify-js@^3.14.3: version "3.14.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.4.tgz#68756f17d1b90b9d289341736cb9a567d6882f90" integrity sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA== @@ -29382,11 +29222,6 @@ update-notifier@^5.1.0: semver-diff "^3.1.1" xdg-basedir "^4.0.0" -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -29669,11 +29504,6 @@ validator@^13.6.0, validator@^13.7.0: resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== -validator@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" - integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== - value-equal@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" @@ -31208,17 +31038,6 @@ z-schema@^5.0.1: optionalDependencies: commander "^2.7.1" -z-schema@~3.18.3: - version "3.18.4" - resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" - integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== - dependencies: - lodash.get "^4.0.0" - lodash.isequal "^4.0.0" - validator "^8.0.0" - optionalDependencies: - commander "^2.7.1" - zip-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79"