[Fleet] Remove beats management plugin (#99789)

This commit is contained in:
Alejandro Fernández Gómez 2021-05-27 11:30:15 +02:00 committed by GitHub
parent 5da329a809
commit 83e5b6c689
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
207 changed files with 3247 additions and 19840 deletions

3
.github/CODEOWNERS vendored
View file

@ -94,9 +94,6 @@
/x-pack/plugins/apm/server/projections/rum_page_load_transactions.ts @elastic/uptime
/x-pack/test/apm_api_integration/tests/csm/ @elastic/uptime
# Beats
/x-pack/plugins/beats_management/ @elastic/beats
#CC# /x-pack/plugins/beats_management/ @elastic/beats
# Presentation
/src/plugins/dashboard/ @elastic/kibana-presentation

View file

@ -516,13 +516,15 @@
"label": "rule",
"description": [],
"signature": [
"Pick<Pick<",
{
"pluginId": "alerting",
"scope": "common",
"docId": "kibAlertingPluginApi",
"section": "def-common.SanitizedRuleConfig",
"text": "SanitizedRuleConfig"
}
"section": "def-common.Alert",
"text": "Alert"
},
"<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"muteAll\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
],
"source": {
"path": "x-pack/plugins/alerting/server/types.ts",
@ -840,7 +842,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/alerting/server/types.ts",
"lineNumber": 75
"lineNumber": 76
},
"deprecated": false
}
@ -1030,7 +1032,7 @@
],
"source": {
"path": "x-pack/plugins/alerting/server/types.ts",
"lineNumber": 107
"lineNumber": 109
},
"deprecated": false
}
@ -3913,7 +3915,15 @@
"label": "SanitizedRuleConfig",
"description": [],
"signature": [
"Pick<Pick<Alert<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"muteAll\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
"Pick<Pick<",
{
"pluginId": "alerting",
"scope": "common",
"docId": "kibAlertingPluginApi",
"section": "def-common.Alert",
"text": "Alert"
},
"<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"muteAll\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
],
"source": {
"path": "x-pack/plugins/alerting/common/alert.ts",

View file

@ -1,72 +0,0 @@
{
"id": "beatsManagement",
"client": {
"classes": [],
"functions": [],
"interfaces": [],
"enums": [],
"misc": [],
"objects": []
},
"server": {
"classes": [],
"functions": [],
"interfaces": [],
"enums": [],
"misc": [],
"objects": []
},
"common": {
"classes": [],
"functions": [],
"interfaces": [],
"enums": [],
"misc": [
{
"parentPluginId": "beatsManagement",
"id": "def-common.BeatsManagementConfigType",
"type": "Type",
"tags": [],
"label": "BeatsManagementConfigType",
"description": [],
"signature": [
"{ readonly enabled: boolean; readonly defaultUserRoles: string[]; readonly encryptionKey: string; readonly enrollmentTokensTtlInSeconds: number; }"
],
"source": {
"path": "x-pack/plugins/beats_management/common/index.ts",
"lineNumber": 23
},
"deprecated": false,
"initialIsOpen": false
}
],
"objects": [
{
"parentPluginId": "beatsManagement",
"id": "def-common.beatsManagementConfigSchema",
"type": "Object",
"tags": [],
"label": "beatsManagementConfigSchema",
"description": [],
"signature": [
"ObjectType",
"<{ enabled: ",
"Type",
"<boolean>; defaultUserRoles: ",
"Type",
"<string[]>; encryptionKey: ",
"Type",
"<string>; enrollmentTokensTtlInSeconds: ",
"Type",
"<number>; }>"
],
"source": {
"path": "x-pack/plugins/beats_management/common/index.ts",
"lineNumber": 12
},
"deprecated": false,
"initialIsOpen": false
}
]
}
}

View file

@ -1,21 +0,0 @@
---
id: kibBeatsManagementPluginApi
slug: /kibana-dev-docs/beatsManagementPluginApi
title: beatsManagement
image: https://source.unsplash.com/400x175/?github
summary: API docs for the beatsManagement plugin
date: 2020-11-16
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'beatsManagement']
warning: This 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 beatsManagementObj from './beats_management.json';
## Common
### Objects
<DocDefinitionList data={beatsManagementObj.common.objects}/>
### Consts, variables and types
<DocDefinitionList data={beatsManagementObj.common.misc}/>

View file

@ -1112,7 +1112,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 206
"lineNumber": 203
},
"deprecated": false,
"children": [
@ -1136,7 +1136,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 208
"lineNumber": 205
},
"deprecated": false
},
@ -1160,7 +1160,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 210
"lineNumber": 207
},
"deprecated": false
},
@ -1184,7 +1184,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 212
"lineNumber": 209
},
"deprecated": false
},
@ -1208,7 +1208,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 214
"lineNumber": 211
},
"deprecated": false
},
@ -1232,7 +1232,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 216
"lineNumber": 213
},
"deprecated": false
},
@ -1252,7 +1252,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 223
"lineNumber": 220
},
"deprecated": true,
"references": []
@ -1279,7 +1279,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 227
"lineNumber": 224
},
"deprecated": false,
"returnComment": [],
@ -1299,7 +1299,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 251
"lineNumber": 248
},
"deprecated": false,
"children": [
@ -1323,7 +1323,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 253
"lineNumber": 250
},
"deprecated": false
},
@ -1347,7 +1347,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 255
"lineNumber": 252
},
"deprecated": false
},
@ -1371,7 +1371,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 257
"lineNumber": 254
},
"deprecated": false
},
@ -1395,7 +1395,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 259
"lineNumber": 256
},
"deprecated": false
},
@ -1419,7 +1419,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 261
"lineNumber": 258
},
"deprecated": false
},
@ -1443,7 +1443,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 263
"lineNumber": 260
},
"deprecated": false
},
@ -1467,7 +1467,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 265
"lineNumber": 262
},
"deprecated": false
},
@ -1491,7 +1491,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 267
"lineNumber": 264
},
"deprecated": false
},
@ -1515,7 +1515,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 269
"lineNumber": 266
},
"deprecated": false
},
@ -1539,7 +1539,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 271
"lineNumber": 268
},
"deprecated": false
},
@ -1563,7 +1563,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 273
"lineNumber": 270
},
"deprecated": false
},
@ -1583,7 +1583,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 280
"lineNumber": 277
},
"deprecated": true,
"references": [
@ -7427,7 +7427,7 @@
],
"source": {
"path": "src/core/public/index.ts",
"lineNumber": 237
"lineNumber": 234
},
"deprecated": false,
"initialIsOpen": false
@ -8544,6 +8544,20 @@
"lineNumber": 182
}
},
{
"plugin": "monitoring",
"link": {
"path": "x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts",
"lineNumber": 107
}
},
{
"plugin": "monitoring",
"link": {
"path": "x-pack/plugins/monitoring/server/telemetry_collection/register_monitoring_telemetry_collection.ts",
"lineNumber": 148
}
},
{
"plugin": "securitySolution",
"link": {
@ -8565,27 +8579,6 @@
"lineNumber": 235
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
"lineNumber": 113
}
},
{
"plugin": "monitoring",
"link": {
"path": "x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts",
"lineNumber": 107
}
},
{
"plugin": "monitoring",
"link": {
"path": "x-pack/plugins/monitoring/server/telemetry_collection/register_monitoring_telemetry_collection.ts",
"lineNumber": 148
}
},
{
"plugin": "licensing",
"link": {
@ -9387,55 +9380,6 @@
"lineNumber": 67
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
"lineNumber": 31
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
"lineNumber": 35
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts",
"lineNumber": 34
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts",
"lineNumber": 52
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts",
"lineNumber": 60
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts",
"lineNumber": 41
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
"lineNumber": 111
}
},
{
"plugin": "canvas",
"link": {
@ -9821,6 +9765,20 @@
"lineNumber": 420
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
"lineNumber": 31
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
"lineNumber": 35
}
},
{
"plugin": "monitoring",
"link": {
@ -9842,6 +9800,34 @@
"lineNumber": 356
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts",
"lineNumber": 34
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts",
"lineNumber": 52
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts",
"lineNumber": 60
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts",
"lineNumber": 41
}
},
{
"plugin": "canvas",
"link": {
@ -12712,34 +12698,6 @@
"lineNumber": 117
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 125
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 218
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 235
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
"lineNumber": 31
}
},
{
"plugin": "indexManagement",
"link": {
@ -12768,6 +12726,27 @@
"lineNumber": 41
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 125
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 218
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 235
}
},
{
"plugin": "licensing",
"link": {
@ -15940,48 +15919,6 @@
"deprecated": true,
"removeBy": "7.16",
"references": [
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 9
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 27
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 31
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 10
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 447
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 466
}
},
{
"plugin": "canvas",
"link": {
@ -16269,6 +16206,48 @@
"lineNumber": 35
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 10
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 447
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
"lineNumber": 466
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 9
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 27
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
"lineNumber": 31
}
},
{
"plugin": "monitoring",
"link": {
@ -16458,6 +16437,27 @@
"lineNumber": 20
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
"lineNumber": 2
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
"lineNumber": 4
}
},
{
"plugin": "lists",
"link": {
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
"lineNumber": 5
}
},
{
"plugin": "monitoring",
"link": {
@ -19544,7 +19544,7 @@
"The os platform"
],
"signature": [
"\"linux\" | \"aix\" | \"android\" | \"darwin\" | \"freebsd\" | \"openbsd\" | \"sunos\" | \"win32\" | \"cygwin\" | \"netbsd\""
"\"linux\" | \"aix\" | \"android\" | \"darwin\" | \"freebsd\" | \"openbsd\" | \"sunos\" | \"win32\" | \"cygwin\""
],
"source": {
"path": "src/core/server/metrics/collectors/types.ts",
@ -23173,20 +23173,6 @@
"lineNumber": 180
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
"lineNumber": 8
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
"lineNumber": 28
}
},
{
"plugin": "licensing",
"link": {

View file

@ -886,7 +886,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 339
"lineNumber": 326
},
"deprecated": false
}
@ -930,26 +930,44 @@
},
{
"parentPluginId": "core",
"id": "def-public.App.meta",
"type": "Object",
"id": "def-public.App.keywords",
"type": "Array",
"tags": [],
"label": "meta",
"label": "keywords",
"description": [
"\nMeta data for an application that represent additional information for the app.\nSee {@link AppMeta}\n"
"Optional keywords to match with in deep links search. Omit if this part of the hierarchy does not have a page URL."
],
"signature": [
"string[] | undefined"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 215
},
"deprecated": false
},
{
"parentPluginId": "core",
"id": "def-public.App.deepLinks",
"type": "Array",
"tags": [],
"label": "deepLinks",
"description": [
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible.\n"
],
"signature": [
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppMeta",
"text": "AppMeta"
"section": "def-public.AppDeepLink",
"text": "AppDeepLink"
},
" | undefined"
"[] | undefined"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 244
"lineNumber": 254
},
"deprecated": false
}
@ -967,7 +985,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 565
"lineNumber": 552
},
"deprecated": false,
"children": [
@ -990,7 +1008,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 566
"lineNumber": 553
},
"deprecated": false
},
@ -1003,7 +1021,7 @@
"description": [],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 567
"lineNumber": 554
},
"deprecated": false
},
@ -1019,7 +1037,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 568
"lineNumber": 555
},
"deprecated": false
},
@ -1035,7 +1053,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 569
"lineNumber": 556
},
"deprecated": false
}
@ -1053,7 +1071,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 553
"lineNumber": 540
},
"deprecated": false,
"children": [
@ -1076,7 +1094,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 554
"lineNumber": 541
},
"deprecated": false
}
@ -1092,7 +1110,7 @@
"description": [],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 620
"lineNumber": 607
},
"deprecated": false,
"children": [
@ -1118,7 +1136,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 626
"lineNumber": 613
},
"deprecated": false,
"children": [
@ -1143,7 +1161,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 626
"lineNumber": 613
},
"deprecated": false,
"isRequired": true
@ -1175,7 +1193,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 655
"lineNumber": 642
},
"deprecated": false,
"children": [
@ -1200,7 +1218,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 655
"lineNumber": 642
},
"deprecated": false,
"isRequired": true
@ -1220,7 +1238,7 @@
"description": [],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 696
"lineNumber": 683
},
"deprecated": false,
"children": [
@ -1238,7 +1256,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 700
"lineNumber": 687
},
"deprecated": false
},
@ -1265,7 +1283,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 709
"lineNumber": 696
},
"deprecated": false
},
@ -1291,7 +1309,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 717
"lineNumber": 704
},
"deprecated": false,
"children": [
@ -1307,7 +1325,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 717
"lineNumber": 704
},
"deprecated": false,
"isRequired": true
@ -1333,7 +1351,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 717
"lineNumber": 704
},
"deprecated": false,
"isRequired": false
@ -1355,7 +1373,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 755
"lineNumber": 742
},
"deprecated": false,
"children": [
@ -1373,7 +1391,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 755
"lineNumber": 742
},
"deprecated": false,
"isRequired": true
@ -1395,7 +1413,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 769
"lineNumber": 756
},
"deprecated": false,
"children": [
@ -1411,7 +1429,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 769
"lineNumber": 756
},
"deprecated": false,
"isRequired": true
@ -1425,7 +1443,7 @@
"description": [],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 769
"lineNumber": 756
},
"deprecated": false,
"children": [
@ -1441,7 +1459,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 769
"lineNumber": 756
},
"deprecated": false
},
@ -1457,7 +1475,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 769
"lineNumber": 756
},
"deprecated": false
}
@ -1481,68 +1499,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 774
},
"deprecated": false
}
],
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.AppMeta",
"type": "Interface",
"tags": [],
"label": "AppMeta",
"description": [
"\nInput type for meta data for an application.\n\nMeta fields include `keywords` and `searchDeepLinks`\nKeywords is an array of string with which to associate the app, must include at least one unique string as an array.\n`searchDeepLinks` is an array of links that represent secondary in-app locations for the app."
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 255
},
"deprecated": false,
"children": [
{
"parentPluginId": "core",
"id": "def-public.AppMeta.keywords",
"type": "Array",
"tags": [],
"label": "keywords",
"description": [
"Keywords to represent this application"
],
"signature": [
"string[] | undefined"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 257
},
"deprecated": false
},
{
"parentPluginId": "core",
"id": "def-public.AppMeta.searchDeepLinks",
"type": "Array",
"tags": [],
"label": "searchDeepLinks",
"description": [
"Array of links that represent secondary in-app locations for the app."
],
"signature": [
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppSearchDeepLink",
"text": "AppSearchDeepLink"
},
"[] | undefined"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 259
"lineNumber": 761
},
"deprecated": false
}
@ -1568,7 +1525,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 349
"lineNumber": 336
},
"deprecated": false,
"children": [
@ -1586,7 +1543,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 353
"lineNumber": 340
},
"deprecated": false
},
@ -1611,7 +1568,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 399
"lineNumber": 386
},
"deprecated": false
},
@ -1628,7 +1585,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 449
"lineNumber": 436
},
"deprecated": true,
"references": [
@ -1721,7 +1678,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 484
"lineNumber": 471
},
"deprecated": true,
"references": [
@ -1746,20 +1703,6 @@
"lineNumber": 298
}
},
{
"plugin": "lens",
"link": {
"path": "x-pack/plugins/lens/public/app_plugin/types.ts",
"lineNumber": 71
}
},
{
"plugin": "lens",
"link": {
"path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx",
"lineNumber": 171
}
},
{
"plugin": "maps",
"link": {
@ -1781,6 +1724,20 @@
"lineNumber": 19
}
},
{
"plugin": "lens",
"link": {
"path": "x-pack/plugins/lens/public/app_plugin/types.ts",
"lineNumber": 71
}
},
{
"plugin": "lens",
"link": {
"path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx",
"lineNumber": 171
}
},
{
"plugin": "ml",
"link": {
@ -1882,7 +1839,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 484
"lineNumber": 471
},
"deprecated": false
}
@ -1910,7 +1867,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 515
"lineNumber": 502
},
"deprecated": false,
"returnComment": [],
@ -1934,7 +1891,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 515
"lineNumber": 502
},
"deprecated": false
}
@ -1954,7 +1911,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 674
"lineNumber": 661
},
"deprecated": false,
"children": [
@ -1972,7 +1929,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 679
"lineNumber": 666
},
"deprecated": false
},
@ -1990,7 +1947,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 683
"lineNumber": 670
},
"deprecated": false
},
@ -2008,7 +1965,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 687
"lineNumber": 674
},
"deprecated": false
},
@ -2026,7 +1983,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 692
"lineNumber": 679
},
"deprecated": false
}
@ -2046,7 +2003,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 540
"lineNumber": 527
},
"deprecated": false,
"initialIsOpen": false
@ -2085,6 +2042,57 @@
}
],
"misc": [
{
"parentPluginId": "core",
"id": "def-public.AppDeepLink",
"type": "Type",
"tags": [],
"label": "AppDeepLink",
"description": [
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible."
],
"signature": [
"({ id: string; title: string; keywords?: string[] | undefined; navLinkStatus?: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppNavLinkStatus",
"text": "AppNavLinkStatus"
},
" | undefined; } & { path: string; deepLinks?: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppDeepLink",
"text": "AppDeepLink"
},
"[] | undefined; }) | ({ id: string; title: string; keywords?: string[] | undefined; navLinkStatus?: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppNavLinkStatus",
"text": "AppNavLinkStatus"
},
" | undefined; } & { path?: string | undefined; deepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppDeepLink",
"text": "AppDeepLink"
},
"[]; })"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 279
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.AppLeaveAction",
@ -2113,7 +2121,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 579
"lineNumber": 566
},
"deprecated": false,
"initialIsOpen": false
@ -2143,7 +2151,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 530
"lineNumber": 517
},
"deprecated": true,
"references": [
@ -2251,42 +2259,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 338
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.AppSearchDeepLink",
"type": "Type",
"tags": [],
"label": "AppSearchDeepLink",
"description": [
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `searchDeepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible."
],
"signature": [
"({ id: string; title: string; } & { path: string; searchDeepLinks?: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppSearchDeepLink",
"text": "AppSearchDeepLink"
},
"[] | undefined; keywords?: string[] | undefined; }) | ({ id: string; title: string; } & { path?: string | undefined; searchDeepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppSearchDeepLink",
"text": "AppSearchDeepLink"
},
"[]; keywords?: string[] | undefined; })"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 293
"lineNumber": 325
},
"deprecated": false,
"initialIsOpen": false
@ -2305,7 +2278,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 346
"lineNumber": 333
},
"deprecated": false,
"initialIsOpen": false
@ -2328,15 +2301,15 @@
"section": "def-public.AppStatus",
"text": "AppStatus"
},
" | undefined; meta?: ",
" | undefined; deepLinks?: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppMeta",
"text": "AppMeta"
"section": "def-public.AppDeepLink",
"text": "AppDeepLink"
},
" | undefined; navLinkStatus?: ",
"[] | undefined; navLinkStatus?: ",
{
"pluginId": "core",
"scope": "public",
@ -2379,7 +2352,7 @@
"section": "def-public.App",
"text": "App"
},
"<unknown>, \"status\" | \"meta\" | \"navLinkStatus\" | \"defaultPath\" | \"tooltip\">> | undefined"
"<unknown>, \"status\" | \"deepLinks\" | \"navLinkStatus\" | \"defaultPath\" | \"tooltip\">> | undefined"
],
"source": {
"path": "src/core/public/application/types.ts",
@ -2388,6 +2361,49 @@
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.PublicAppDeepLinkInfo",
"type": "Type",
"tags": [],
"label": "PublicAppDeepLinkInfo",
"description": [
"\nPublic information about a registered app's {@link AppDeepLink | deepLinks}\n"
],
"signature": [
"Pick<",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppDeepLink",
"text": "AppDeepLink"
},
", \"title\" | \"id\" | \"path\"> & { deepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.PublicAppDeepLinkInfo",
"text": "PublicAppDeepLinkInfo"
},
"[]; keywords: string[]; navLinkStatus: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppNavLinkStatus",
"text": "AppNavLinkStatus"
},
"; }"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 262
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.PublicAppInfo",
@ -2422,89 +2438,19 @@
"section": "def-public.AppNavLinkStatus",
"text": "AppNavLinkStatus"
},
"; appRoute: string; meta: ",
"; appRoute: string; keywords: string[]; deepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.PublicAppMetaInfo",
"text": "PublicAppMetaInfo"
},
"; }"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 322
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.PublicAppMetaInfo",
"type": "Type",
"tags": [],
"label": "PublicAppMetaInfo",
"description": [
"\nPublic information about a registered app's {@link AppMeta | keywords }\n"
],
"signature": [
"Pick<",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppMeta",
"text": "AppMeta"
},
", never> & { keywords: string[]; searchDeepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.PublicAppSearchDeepLinkInfo",
"text": "PublicAppSearchDeepLinkInfo"
"section": "def-public.PublicAppDeepLinkInfo",
"text": "PublicAppDeepLinkInfo"
},
"[]; }"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 267
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.PublicAppSearchDeepLinkInfo",
"type": "Type",
"tags": [],
"label": "PublicAppSearchDeepLinkInfo",
"description": [
"\nPublic information about a registered app's {@link AppSearchDeepLink | searchDeepLinks}\n"
],
"signature": [
"Pick<",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppSearchDeepLink",
"text": "AppSearchDeepLink"
},
", \"title\" | \"id\" | \"path\"> & { searchDeepLinks: ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.PublicAppSearchDeepLinkInfo",
"text": "PublicAppSearchDeepLinkInfo"
},
"[]; keywords: string[]; }"
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 277
"lineNumber": 308
},
"deprecated": false,
"initialIsOpen": false

View file

@ -890,7 +890,7 @@
"description": [],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 15
"lineNumber": 14
},
"deprecated": false,
"children": [
@ -905,7 +905,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 19
"lineNumber": 18
},
"deprecated": false
},
@ -920,7 +920,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 24
"lineNumber": 23
},
"deprecated": false
},
@ -939,7 +939,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 29
"lineNumber": 28
},
"deprecated": false
},
@ -954,7 +954,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 34
"lineNumber": 33
},
"deprecated": false
},
@ -972,7 +972,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 40
"lineNumber": 39
},
"deprecated": false
},
@ -990,7 +990,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 45
"lineNumber": 44
},
"deprecated": false
},
@ -1008,7 +1008,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 50
"lineNumber": 49
},
"deprecated": false
},
@ -1026,7 +1026,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 56
"lineNumber": 55
},
"deprecated": false
},
@ -1044,7 +1044,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 62
"lineNumber": 61
},
"deprecated": false
},
@ -1059,7 +1059,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 67
"lineNumber": 66
},
"deprecated": false
},
@ -1077,7 +1077,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 76
"lineNumber": 75
},
"deprecated": false
},
@ -1095,7 +1095,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 81
"lineNumber": 80
},
"deprecated": false
}
@ -1297,103 +1297,6 @@
],
"returnComment": []
},
{
"parentPluginId": "core",
"id": "def-public.ChromeNavLinks.update",
"type": "Function",
"tags": [
"deprecated"
],
"label": "update",
"description": [
"\nUpdate the navlink for the given id with the updated attributes.\nReturns the updated navlink or `undefined` if it does not exist.\n"
],
"signature": [
"(id: string, values: Partial<Pick<",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreChromePluginApi",
"section": "def-public.ChromeNavLink",
"text": "ChromeNavLink"
},
", \"hidden\" | \"url\" | \"disabled\" | \"href\">>) => ",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreChromePluginApi",
"section": "def-public.ChromeNavLink",
"text": "ChromeNavLink"
},
" | undefined"
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
"lineNumber": 71
},
"deprecated": true,
"references": [
{
"plugin": "apm",
"link": {
"path": "x-pack/plugins/apm/public/toggleAppLinkInNav.ts",
"lineNumber": 13
}
},
{
"plugin": "graph",
"link": {
"path": "x-pack/plugins/graph/public/services/toggle_nav_link.ts",
"lineNumber": 26
}
}
],
"children": [
{
"parentPluginId": "core",
"id": "def-public.ChromeNavLinks.update.$1",
"type": "string",
"tags": [],
"label": "id",
"description": [],
"signature": [
"string"
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
"lineNumber": 71
},
"deprecated": false,
"isRequired": true
},
{
"parentPluginId": "core",
"id": "def-public.ChromeNavLinks.update.$2",
"type": "Object",
"tags": [],
"label": "values",
"description": [],
"signature": [
"Partial<Pick<",
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreChromePluginApi",
"section": "def-public.ChromeNavLink",
"text": "ChromeNavLink"
},
", \"hidden\" | \"url\" | \"disabled\" | \"href\">>"
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
"lineNumber": 71
},
"deprecated": false,
"isRequired": true
}
],
"returnComment": []
},
{
"parentPluginId": "core",
"id": "def-public.ChromeNavLinks.enableForcedAppSwitcherNavigation",
@ -1408,7 +1311,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
"lineNumber": 85
"lineNumber": 73
},
"deprecated": false,
"children": [],
@ -1430,7 +1333,7 @@
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
"lineNumber": 90
"lineNumber": 78
},
"deprecated": false,
"children": [],
@ -2678,23 +2581,6 @@
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.ChromeNavLinkUpdateableFields",
"type": "Type",
"tags": [],
"label": "ChromeNavLinkUpdateableFields",
"description": [],
"signature": [
"{ readonly hidden?: boolean | undefined; readonly url?: string | undefined; readonly disabled?: boolean | undefined; readonly href?: string | undefined; }"
],
"source": {
"path": "src/core/public/chrome/nav_links/nav_link.ts",
"lineNumber": 85
},
"deprecated": false,
"initialIsOpen": false
},
{
"parentPluginId": "core",
"id": "def-public.NavType",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2690,7 +2690,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 89
"lineNumber": 90
},
"deprecated": false,
"children": [
@ -2708,7 +2708,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 90
"lineNumber": 91
},
"deprecated": false,
"returnComment": [],
@ -2758,7 +2758,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 91
"lineNumber": 92
},
"deprecated": false,
"returnComment": [],
@ -2806,7 +2806,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 92
"lineNumber": 93
},
"deprecated": false,
"returnComment": [],
@ -2875,7 +2875,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 93
"lineNumber": 94
},
"deprecated": false,
"returnComment": [],
@ -2923,7 +2923,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 94
"lineNumber": 95
},
"deprecated": false,
"returnComment": [],
@ -2955,7 +2955,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 95
"lineNumber": 96
},
"deprecated": false,
"returnComment": [],
@ -2995,7 +2995,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 96
"lineNumber": 97
},
"deprecated": false,
"returnComment": [],
@ -3128,7 +3128,7 @@
"description": [],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 42
"lineNumber": 43
},
"deprecated": false,
"children": [
@ -3144,7 +3144,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 43
"lineNumber": 44
},
"deprecated": false
},
@ -3202,7 +3202,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 48
"lineNumber": 49
},
"deprecated": false,
"returnComment": [],
@ -3216,7 +3216,7 @@
"description": [],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 52
"lineNumber": 53
},
"deprecated": false
},
@ -3239,7 +3239,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 53
"lineNumber": 54
},
"deprecated": false
}
@ -3266,7 +3266,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 59
"lineNumber": 60
},
"deprecated": false
}
@ -3292,7 +3292,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 99
"lineNumber": 100
},
"deprecated": false,
"children": [
@ -3308,7 +3308,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 103
"lineNumber": 104
},
"deprecated": false
},
@ -3334,7 +3334,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 109
"lineNumber": 110
},
"deprecated": false,
"returnComment": [],
@ -3351,7 +3351,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 110
"lineNumber": 111
},
"deprecated": false
}
@ -3384,7 +3384,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 112
"lineNumber": 113
},
"deprecated": false,
"returnComment": [],
@ -3408,7 +3408,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 112
"lineNumber": 113
},
"deprecated": false
}
@ -3442,7 +3442,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 113
"lineNumber": 114
},
"deprecated": false
}
@ -3470,7 +3470,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 71
"lineNumber": 72
},
"deprecated": false,
"children": [
@ -3504,7 +3504,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 75
"lineNumber": 76
},
"deprecated": false,
"returnComment": [],
@ -3521,7 +3521,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 76
"lineNumber": 77
},
"deprecated": false
},
@ -3543,7 +3543,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 77
"lineNumber": 78
},
"deprecated": false
},
@ -3565,7 +3565,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 78
"lineNumber": 79
},
"deprecated": false
}
@ -3599,7 +3599,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 80
"lineNumber": 81
},
"deprecated": false
},
@ -3631,7 +3631,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 81
"lineNumber": 82
},
"deprecated": false
}
@ -4027,6 +4027,29 @@
"lineNumber": 39
},
"deprecated": false
},
{
"parentPluginId": "data",
"id": "def-server.SearchStrategyDependencies.request",
"type": "Object",
"tags": [],
"label": "request",
"description": [],
"signature": [
{
"pluginId": "core",
"scope": "server",
"docId": "kibCoreHttpPluginApi",
"section": "def-server.KibanaRequest",
"text": "KibanaRequest"
},
"<unknown, unknown, unknown, any>"
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 40
},
"deprecated": false
}
],
"initialIsOpen": false
@ -4122,7 +4145,7 @@
],
"source": {
"path": "src/plugins/data/server/search/types.ts",
"lineNumber": 118
"lineNumber": 119
},
"deprecated": false,
"initialIsOpen": false

View file

@ -42,15 +42,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
## beatsManagement
| Deprecated API | Reference location | Remove By |
| ---------------|-----------|-----------|
| <DocLink id="kibCorePluginApi" section="def-server.ILegacyClusterClient" text="ILegacyClusterClient"/> | [kibana_database_adapter.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts#L8) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.ILegacyClusterClient" text="ILegacyClusterClient"/> | [kibana_database_adapter.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts#L28) | 7.16 |
## canvas
| Deprecated API | Reference location | Remove By |
@ -783,7 +774,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
@ -830,7 +821,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
@ -923,7 +914,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
@ -944,6 +935,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L9) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L27) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L31) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L2) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L4](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L4) | 7.16 |
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L5](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L5) | 7.16 |
@ -1579,12 +1573,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| Deprecated API | Reference location | Remove By |
| ---------------|-----------|-----------|
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L66) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L100) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L8) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.ts#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L86) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L64) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L17) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122) | - |
@ -1618,9 +1612,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/details/types.ts#L41) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L34) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L32) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L38) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L40) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L55) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L60) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L28) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx#L15) | - |
@ -1633,13 +1627,30 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx#L44) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L33) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L15) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L66) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L10) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L23) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L3) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L25) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L55) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L3) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L40) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L10) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L25) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L35) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L53](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L53) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L16) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L39) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L49) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L52) | - |
@ -1658,11 +1669,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [use_field_value_autocomplete.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L30) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L24) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L49) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L368](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L368) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [model.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L8) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [model.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L30) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L33) | - |
@ -1709,10 +1715,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
@ -1721,10 +1723,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |
@ -1767,10 +1767,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
@ -1779,10 +1775,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |
@ -1791,12 +1785,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L242](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx#L242) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/autocomplete_field/index.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/autocomplete_field/index.tsx#L35) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L66) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L100) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L8) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.ts#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L86) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L64) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L17) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122) | - |
@ -1830,9 +1824,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/details/types.ts#L41) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L34) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L32) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L38) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L40) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L55) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L60) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L28) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx#L15) | - |
@ -1845,13 +1839,30 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx#L44) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L33) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L15) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L66) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L10) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L23) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L3) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L25) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L55) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L21) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L3) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L40) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L10) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L25) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L9) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L35) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L53](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L53) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L16) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L39) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L49) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L52) | - |
@ -1870,11 +1881,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [use_field_value_autocomplete.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L31) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L30) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L24) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L49) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L368](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L368) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [model.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L8) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [model.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L30) | - |
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L33) | - |
@ -1921,10 +1927,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
@ -1933,10 +1935,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |

View file

@ -1599,13 +1599,6 @@
"path": "x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts",
"lineNumber": 311
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/plugin.ts",
"lineNumber": 61
}
}
]
},
@ -3298,13 +3291,6 @@
"path": "x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts",
"lineNumber": 311
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/plugin.ts",
"lineNumber": 61
}
}
]
},

View file

@ -8837,7 +8837,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 113
"lineNumber": 114
},
"deprecated": false,
"children": [
@ -8855,7 +8855,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 117
"lineNumber": 118
},
"deprecated": false
},
@ -8870,7 +8870,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 121
"lineNumber": 122
},
"deprecated": false
},
@ -8885,7 +8885,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 125
"lineNumber": 126
},
"deprecated": false
},
@ -8900,7 +8900,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 129
"lineNumber": 130
},
"deprecated": false
},
@ -8918,7 +8918,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 133
"lineNumber": 134
},
"deprecated": false
},
@ -8933,7 +8933,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 139
"lineNumber": 140
},
"deprecated": false
}
@ -9085,7 +9085,7 @@
"label": "agent",
"description": [],
"signature": [
"{ monitoring: { use_output?: string | undefined; enabled: boolean; metrics: boolean; logs: boolean; }; } | undefined"
"{ monitoring: { namespace?: string | undefined; use_output?: string | undefined; enabled: boolean; metrics: boolean; logs: boolean; }; } | undefined"
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
@ -9326,7 +9326,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 102
"lineNumber": 103
},
"deprecated": false,
"children": [
@ -9342,7 +9342,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 103
"lineNumber": 104
},
"deprecated": false
},
@ -9355,7 +9355,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 104
"lineNumber": 105
},
"deprecated": false
},
@ -9371,7 +9371,7 @@
],
"source": {
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
"lineNumber": 105
"lineNumber": 106
},
"deprecated": false
}

View file

@ -953,13 +953,6 @@
},
"deprecated": true,
"references": [
{
"plugin": "cloud",
"link": {
"path": "x-pack/plugins/cloud/public/plugin.ts",
"lineNumber": 66
}
},
{
"plugin": "ml",
"link": {
@ -973,6 +966,13 @@
"path": "x-pack/plugins/apm/public/plugin.ts",
"lineNumber": 82
}
},
{
"plugin": "cloud",
"link": {
"path": "x-pack/plugins/cloud/public/plugin.ts",
"lineNumber": 66
}
}
]
}

View file

@ -3799,7 +3799,7 @@
"description": [],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 717
"lineNumber": 704
},
"deprecated": false
},
@ -3822,7 +3822,7 @@
],
"source": {
"path": "src/core/public/application/types.ts",
"lineNumber": 717
"lineNumber": 704
},
"deprecated": false
}

View file

@ -553,90 +553,6 @@
},
"deprecated": true,
"references": [
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 22
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 23
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 24
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 159
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 161
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 42
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 43
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 44
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 54
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 55
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 47
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 48
}
},
{
"plugin": "apm",
"link": {
@ -741,6 +657,90 @@
"path": "x-pack/plugins/security/common/licensing/license_service.test.ts",
"lineNumber": 219
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 22
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 23
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 24
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 47
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 48
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 42
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 43
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 44
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 54
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 55
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 159
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 161
}
}
]
}
@ -941,41 +941,6 @@
},
"deprecated": true,
"references": [
{
"plugin": "security",
"link": {
"path": "x-pack/plugins/security/public/plugin.tsx",
"lineNumber": 82
}
},
{
"plugin": "licenseManagement",
"link": {
"path": "x-pack/plugins/license_management/public/plugin.ts",
"lineNumber": 61
}
},
{
"plugin": "ml",
"link": {
"path": "x-pack/plugins/ml/public/application/license/check_license.tsx",
"lineNumber": 26
}
},
{
"plugin": "ml",
"link": {
"path": "x-pack/plugins/ml/public/plugin.ts",
"lineNumber": 136
}
},
{
"plugin": "fleet",
"link": {
"path": "x-pack/plugins/fleet/public/plugin.ts",
"lineNumber": 97
}
},
{
"plugin": "reporting",
"link": {
@ -1011,6 +976,34 @@
"lineNumber": 61
}
},
{
"plugin": "licenseManagement",
"link": {
"path": "x-pack/plugins/license_management/public/plugin.ts",
"lineNumber": 61
}
},
{
"plugin": "security",
"link": {
"path": "x-pack/plugins/security/public/plugin.tsx",
"lineNumber": 82
}
},
{
"plugin": "ml",
"link": {
"path": "x-pack/plugins/ml/public/application/license/check_license.tsx",
"lineNumber": 26
}
},
{
"plugin": "ml",
"link": {
"path": "x-pack/plugins/ml/public/plugin.ts",
"lineNumber": 136
}
},
{
"plugin": "apm",
"link": {
@ -1018,13 +1011,6 @@
"lineNumber": 19
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/public/lib/adapters/framework/kibana_framework_adapter.ts",
"lineNumber": 65
}
},
{
"plugin": "crossClusterReplication",
"link": {
@ -1032,6 +1018,13 @@
"lineNumber": 75
}
},
{
"plugin": "fleet",
"link": {
"path": "x-pack/plugins/fleet/public/plugin.ts",
"lineNumber": 97
}
},
{
"plugin": "logstash",
"link": {
@ -2649,90 +2642,6 @@
},
"deprecated": true,
"references": [
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 22
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 23
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 24
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 159
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 161
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 42
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 43
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 44
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 54
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 55
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 47
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 48
}
},
{
"plugin": "apm",
"link": {
@ -2837,6 +2746,90 @@
"path": "x-pack/plugins/security/common/licensing/license_service.test.ts",
"lineNumber": 219
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 22
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 23
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
"lineNumber": 24
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 47
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
"lineNumber": 48
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 42
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 43
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
"lineNumber": 44
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 54
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
"lineNumber": 55
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 159
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
"lineNumber": 161
}
}
]
}
@ -3060,7 +3053,7 @@
"plugin": "spaces",
"link": {
"path": "x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts",
"lineNumber": 442
"lineNumber": 431
}
},
{
@ -3126,13 +3119,6 @@
"lineNumber": 139
}
},
{
"plugin": "fleet",
"link": {
"path": "x-pack/plugins/fleet/server/plugin.ts",
"lineNumber": 213
}
},
{
"plugin": "indexManagement",
"link": {
@ -3147,6 +3133,13 @@
"lineNumber": 73
}
},
{
"plugin": "fleet",
"link": {
"path": "x-pack/plugins/fleet/server/plugin.ts",
"lineNumber": 213
}
},
{
"plugin": "graph",
"link": {

File diff suppressed because one or more lines are too long

View file

@ -22,15 +22,9 @@ import listsObj from './lists.json';
### Objects
<DocDefinitionList data={listsObj.client.objects}/>
### Functions
<DocDefinitionList data={listsObj.client.functions}/>
### Classes
<DocDefinitionList data={listsObj.client.classes}/>
### Interfaces
<DocDefinitionList data={listsObj.client.interfaces}/>
## Server
### Classes
@ -39,11 +33,3 @@ import listsObj from './lists.json';
### Interfaces
<DocDefinitionList data={listsObj.server.interfaces}/>
## Common
### Functions
<DocDefinitionList data={listsObj.common.functions}/>
### Consts, variables and types
<DocDefinitionList data={listsObj.common.misc}/>

View file

@ -22,7 +22,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 19
"lineNumber": 18
},
"deprecated": false,
"children": [
@ -50,7 +50,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 20
"lineNumber": 19
},
"deprecated": false,
"returnComment": [],
@ -88,29 +88,23 @@
"description": [],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 21
"lineNumber": 20
},
"deprecated": false
},
{
"parentPluginId": "management",
"id": "def-public.ManagementApp.meta",
"type": "Object",
"id": "def-public.ManagementApp.keywords",
"type": "Array",
"tags": [],
"label": "meta",
"label": "keywords",
"description": [],
"signature": [
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppMeta",
"text": "AppMeta"
}
"string[]"
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 22
"lineNumber": 21
},
"deprecated": false
},
@ -126,7 +120,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 24
"lineNumber": 23
},
"deprecated": false,
"children": [
@ -148,7 +142,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 24
"lineNumber": 23
},
"deprecated": false,
"isRequired": true
@ -260,7 +254,7 @@
"section": "def-public.RegisterManagementAppArgs",
"text": "RegisterManagementAppArgs"
},
", \"title\" | \"id\" | \"meta\" | \"order\" | \"mount\" | \"euiIconType\" | \"icon\" | \"tip\">) => ",
", \"title\" | \"id\" | \"order\" | \"mount\" | \"keywords\" | \"euiIconType\" | \"icon\" | \"tip\">) => ",
{
"pluginId": "management",
"scope": "public",
@ -291,7 +285,7 @@
"section": "def-public.RegisterManagementAppArgs",
"text": "RegisterManagementAppArgs"
},
", \"title\" | \"id\" | \"meta\" | \"order\" | \"mount\" | \"euiIconType\" | \"icon\" | \"tip\">"
", \"title\" | \"id\" | \"order\" | \"mount\" | \"keywords\" | \"euiIconType\" | \"icon\" | \"tip\">"
],
"source": {
"path": "src/plugins/management/public/utils/management_section.ts",
@ -653,7 +647,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 13
"lineNumber": 12
},
"deprecated": false,
"children": [
@ -681,7 +675,7 @@
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 14
"lineNumber": 13
},
"deprecated": false,
"returnComment": [],
@ -719,30 +713,23 @@
"description": [],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 15
"lineNumber": 14
},
"deprecated": false
},
{
"parentPluginId": "management",
"id": "def-public.RegisterManagementAppArgs.meta",
"type": "Object",
"id": "def-public.RegisterManagementAppArgs.keywords",
"type": "Array",
"tags": [],
"label": "meta",
"label": "keywords",
"description": [],
"signature": [
{
"pluginId": "core",
"scope": "public",
"docId": "kibCoreApplicationPluginApi",
"section": "def-public.AppMeta",
"text": "AppMeta"
},
" | undefined"
"string[] | undefined"
],
"source": {
"path": "src/plugins/management/public/utils/management_app.ts",
"lineNumber": 16
"lineNumber": 15
},
"deprecated": false
}

View file

@ -1320,7 +1320,7 @@
},
" extends Pick<",
"UseDataGridReturnType",
", \"status\" | \"errorMessage\" | \"baseline\" | \"pagination\" | \"chartsVisible\" | \"chartsButtonVisible\" | \"ccsWarning\" | \"columnsWithCharts\" | \"invalidSortingColumnns\" | \"noDataMessage\" | \"onChangeItemsPerPage\" | \"onChangePage\" | \"onSort\" | \"setPagination\" | \"setVisibleColumns\" | \"rowCount\" | \"rowCountRelation\" | \"sortingColumns\" | \"tableItems\" | \"toggleChartVisibility\" | \"visibleColumns\" | \"predictionFieldName\" | \"resultsField\">"
", \"status\" | \"errorMessage\" | \"baseline\" | \"chartsVisible\" | \"chartsButtonVisible\" | \"ccsWarning\" | \"columnsWithCharts\" | \"invalidSortingColumnns\" | \"noDataMessage\" | \"onChangeItemsPerPage\" | \"onChangePage\" | \"onSort\" | \"pagination\" | \"setPagination\" | \"setVisibleColumns\" | \"rowCount\" | \"rowCountRelation\" | \"sortingColumns\" | \"tableItems\" | \"toggleChartVisibility\" | \"visibleColumns\" | \"predictionFieldName\" | \"resultsField\">"
],
"source": {
"path": "x-pack/plugins/ml/public/application/components/data_grid/types.ts",

View file

@ -680,20 +680,6 @@
},
"deprecated": true,
"references": [
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
"lineNumber": 16
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
"lineNumber": 35
}
},
{
"plugin": "discover",
"link": {
@ -722,6 +708,20 @@
"lineNumber": 88
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
"lineNumber": 16
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
"lineNumber": 35
}
},
{
"plugin": "visualizations",
"link": {
@ -2568,20 +2568,6 @@
"lineNumber": 14
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/types.ts",
"lineNumber": 9
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/types.ts",
"lineNumber": 41
}
},
{
"plugin": "discover",
"link": {
@ -2596,6 +2582,20 @@
"lineNumber": 61
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/types.ts",
"lineNumber": 9
}
},
{
"plugin": "visualizations",
"link": {
"path": "src/plugins/visualizations/public/types.ts",
"lineNumber": 41
}
},
{
"plugin": "visualizations",
"link": {

View file

@ -1306,13 +1306,6 @@
"lineNumber": 444
}
},
{
"plugin": "cases",
"link": {
"path": "x-pack/plugins/cases/server/plugin.ts",
"lineNumber": 89
}
},
{
"plugin": "ml",
"link": {
@ -1321,31 +1314,10 @@
}
},
{
"plugin": "securitySolution",
"plugin": "cases",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts",
"lineNumber": 48
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts",
"lineNumber": 45
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts",
"lineNumber": 45
}
},
{
"plugin": "beatsManagement",
"link": {
"path": "x-pack/plugins/beats_management/server/lib/adapters/framework/kibana_framework_adapter.ts",
"lineNumber": 44
"path": "x-pack/plugins/cases/server/plugin.ts",
"lineNumber": 89
}
},
{
@ -1369,6 +1341,27 @@
"lineNumber": 41
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts",
"lineNumber": 48
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts",
"lineNumber": 45
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts",
"lineNumber": 45
}
},
{
"plugin": "securitySolution",
"link": {

View file

@ -1213,13 +1213,6 @@
"lineNumber": 271
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/plugin.ts",
"lineNumber": 194
}
},
{
"plugin": "apm",
"link": {
@ -1248,6 +1241,13 @@
"lineNumber": 153
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/plugin.ts",
"lineNumber": 194
}
},
{
"plugin": "security",
"link": {
@ -2047,13 +2047,6 @@
"lineNumber": 303
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/plugin.ts",
"lineNumber": 194
}
},
{
"plugin": "apm",
"link": {
@ -2088,6 +2081,13 @@
"path": "x-pack/plugins/infra/server/plugin.ts",
"lineNumber": 153
}
},
{
"plugin": "securitySolution",
"link": {
"path": "x-pack/plugins/security_solution/server/plugin.ts",
"lineNumber": 194
}
}
]
},

View file

@ -332,11 +332,6 @@ which will load the visualization's editor.
|Allow to add a header banner that will be displayed on every page of the Kibana application
|{kib-repo}blob/{branch}/x-pack/plugins/beats_management/readme.md[beatsManagement]
|Notes:
Failure to have auth enabled in Kibana will make for a broken UI. UI-based errors not yet in place
|{kib-repo}blob/{branch}/x-pack/plugins/canvas/README.md[canvas]
|"Never look back. The past is done. The future is a blank canvas." ― Suzy Kassem, Rise Up and Salute the Sun

View file

@ -1,108 +0,0 @@
[[managing-beats]]
[role="xpack"]
== {beats} Central Management
include::{asciidoc-dir}/../../shared/discontinued.asciidoc[tag=cm-discontinued]
To use {beats} Central Management, open the main menu, click *Stack Management >
{beats} Central Management*, then define and
manage configurations in a central location in {kib} and quickly deploy
configuration changes to all {beats} running across your enterprise. For more
about central management, see the related {beats} documentation:
* {filebeat-ref}/configuration-central-management.html[{filebeat} documentation]
* {metricbeat-ref}/configuration-central-management.html[{metricbeat} documentation]
[NOTE]
====
This feature requires an Elastic license that includes {beats} central
management.
Don't have a license? You can start a 30-day trial. Open the main menu, then
click *Stack Management > License Management*. At the end of the trial
period, you can purchase a subscription to keep using central management. For
more information, see https://www.elastic.co/subscriptions and
<<managing-licenses>>.
====
{kib} makes it easy for you to use central management by walking you through the
enrollment and configuration process step by step the first time you use the
Central Management UI.
[float]
=== Required permissions
You must have the `beats_admin` role assigned to use **{beats} Central Management**
To assign the role, open the menu, then click *Stack Management > Users*.
[float]
=== Enroll {beats}
You need to enroll {beats} to register them in central management and establish
trust. Enrolled {beats} will have the credentials needed to retrieve
configurations from {kib}.
[float]
=== Create configuration tags
A _configuration tag_ is a group of configuration blocks that you can apply to
one or more {beats}. For example, you can create a tag called `development` to
group configurations for {beats} running in your development environment.
The first time you walk through the enrollment process, you'll create a
configuration tag that's applied to the {beats} instance you're enrolling.
After that, under *Configuration tags*, you can create additional tags and
apply them to any enrolled {beats}, and the {beats} will use the configurations
defined in the tag.
[float]
=== Add configuration blocks
Add one or more configuration blocks to the tag. A tag can have configuration
blocks for different types of {beats}. When the enrolled {beats} run, they will
use the configuration blocks that are valid for their type.
Central management supports configuration settings for:
* {filebeat} modules
* {metricbeat} modules
* {filebeat} inputs
* {filebeat} and {metricbeat} outputs
NOTE: Central management supports the following outputs only: {es}, {ls}, Kafka,
and Redis. Other output types are not supported for {beats} that are enrolled in
central management.
Use the Central Management UI to define and manage settings for supported
configuration blocks. You cannot define those settings in local {beats}
configuration files. For configuration blocks that are not supported by central
management, configure the settings in the local configuration file after
enrolling the Beat in central management.
[float]
=== Manage enrolled {beats}
Under *Enrolled {beats}*, you can view the list of enrolled {beats} to see
details, including the type, applied tags, configuration status, and the last
configuration update. Click the *Beat name* or *Type* column heading to sort the
list. To filter the list, enter a search string. If there are errors in a
configuration, youll see an Error status in the Central Management UI and need
to look at {beats} logs to troubleshoot the problem.
You can add or remove tags, and the configuration changes are automatically
deployed to all {beats} that have the tag. Avoid applying tags with conflicting
configurations. Because the configurations for all assigned tags are merged,
conflicting configurations result in errors.
You can unenroll {beats} to remove them from central management.
[float]
=== Manage tags
Under *Configuration tags*, you can select tags and delete them, or you can
drill down into a tag to add, modify, or remove configuration blocks from the
tag. When you change the configuration blocks or remove tags, the configuration
changes are automatically deployed to all {beats} that have the tag.

View file

@ -24,10 +24,6 @@ and enrichments on your data.
| {logstash-ref}/logstash-centralized-pipeline-management.html[Logstash Pipelines]
| Create, edit, and delete your Logstash pipeline configurations.
| <<managing-beats, Beats Central Management>>
| Manage your Beats configurations in a central location and
quickly deploy configuration changes to all Beats running across your enterprise.
|===
@ -182,8 +178,6 @@ next major version of {es}, and then reindex, if needed.
include::{kib-repo-dir}/management/advanced-options.asciidoc[]
include::{kib-repo-dir}/management/managing-beats.asciidoc[]
include::{kib-repo-dir}/management/action-types.asciidoc[]
include::{kib-repo-dir}/management/managing-licenses.asciidoc[]

View file

@ -3,7 +3,6 @@ pageLoadAssetSize:
alerting: 106936
apm: 64385
apmOss: 18996
beatsManagement: 188135
bfetch: 41874
canvas: 1066647
charts: 195358

View file

@ -73,7 +73,6 @@
{ "path": "./x-pack/plugins/actions/tsconfig.json" },
{ "path": "./x-pack/plugins/alerting/tsconfig.json" },
{ "path": "./x-pack/plugins/apm/tsconfig.json" },
{ "path": "./x-pack/plugins/beats_management/tsconfig.json" },
{ "path": "./x-pack/plugins/canvas/tsconfig.json" },
{ "path": "./x-pack/plugins/cases/tsconfig.json" },
{ "path": "./x-pack/plugins/cloud/tsconfig.json" },

View file

@ -58,7 +58,6 @@
{ "path": "./x-pack/plugins/actions/tsconfig.json" },
{ "path": "./x-pack/plugins/alerting/tsconfig.json" },
{ "path": "./x-pack/plugins/apm/tsconfig.json" },
{ "path": "./x-pack/plugins/beats_management/tsconfig.json" },
{ "path": "./x-pack/plugins/canvas/tsconfig.json" },
{ "path": "./x-pack/plugins/cases/tsconfig.json" },
{ "path": "./x-pack/plugins/cloud/tsconfig.json" },

View file

@ -7,7 +7,6 @@
"xpack.eventLog": "plugins/event_log",
"xpack.stackAlerts": "plugins/stack_alerts",
"xpack.apm": "plugins/apm",
"xpack.beatsManagement": "plugins/beats_management",
"xpack.canvas": "plugins/canvas",
"xpack.cases": "plugins/cases",
"xpack.cloud": "plugins/cloud",

View file

@ -1,384 +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.
*/
// Note: importing this is a temp thing. This file will be replaced with JSON from Beats/ES at some point
import { ConfigBlockSchema } from './domain_types';
export const configBlockSchemas: ConfigBlockSchema[] = [
{
id: 'filebeat.inputs',
name: 'Filebeat Input',
version: 6.7,
allowOtherConfigs: true,
configs: [
{
id: 'paths',
ui: {
label: 'Paths',
labelId: 'filebeatInputConfig.paths.ui.label',
type: 'multi-input',
helpText: 'filebeatInputConfig.paths.ui.helpText',
helpTextId: 'filebeatInputConfig.paths.ui.helpText',
placeholder: `first/path/to/file.json second/path/to/otherfile.json`,
},
validation: 'isPaths',
error: 'filebeatInputConfig.paths.error',
errorId: 'filebeatInputConfig.paths.error',
required: true,
},
],
},
{
id: 'filebeat.modules',
name: 'Filebeat Modules',
version: 6.7,
allowOtherConfigs: true,
configs: [
{
id: '_sub_type',
ui: {
label: 'filebeatModuleConfig.module.ui.label',
labelId: 'filebeatModuleConfig.module.ui.label',
type: 'select',
},
options: [
{
value: 'apache2',
text: 'apache2',
},
{
value: 'auditd',
text: 'auditd',
},
{
value: 'elasticsearch',
text: 'elasticsearch',
},
{
value: 'haproxy',
text: 'haproxy',
},
{
value: 'icinga',
text: 'icinga',
},
{
value: 'iis',
text: 'iis',
},
{
value: 'kafka',
text: 'kafka',
},
{
value: 'kibana',
text: 'kibana',
},
{
value: 'logstash',
text: 'logstash',
},
{
value: 'mongodb',
text: 'mongodb',
},
{
value: 'mysql',
text: 'mysql',
},
{
value: 'nginx',
text: 'nginx',
},
{
value: 'osquery',
text: 'osquery',
},
{
value: 'postgresql',
text: 'postgresql',
},
{
value: 'redis',
text: 'redis',
},
{
value: 'system',
text: 'system',
},
{
value: 'traefik',
text: 'traefik',
},
],
error: 'filebeatModuleConfig.module.error',
errorId: 'filebeatModuleConfig.module.error',
required: true,
},
],
},
{
id: 'metricbeat.modules',
name: 'Metricbeat Modules',
version: 6.7,
allowOtherConfigs: true,
configs: [
{
id: '_sub_type',
ui: {
label: 'metricbeatModuleConfig.module.ui.label',
labelId: 'metricbeatModuleConfig.module.ui.label',
type: 'select',
},
options: [
{
value: 'aerospike',
text: 'aerospike',
},
{
value: 'apache',
text: 'apache',
},
{
value: 'ceph',
text: 'ceph',
},
{
value: 'couchbase',
text: 'couchbase',
},
{
value: 'docker',
text: 'docker',
},
{
value: 'dropwizard',
text: 'dropwizard',
},
{
value: 'elasticsearch',
text: 'elasticsearch',
},
{
value: 'envoyproxy',
text: 'envoyproxy',
},
{
value: 'etcd',
text: 'etcd',
},
{
value: 'golang',
text: 'golang',
},
{
value: 'graphite',
text: 'graphite',
},
{
value: 'haproxy',
text: 'haproxy',
},
{
value: 'http',
text: 'http',
},
{
value: 'jolokia',
text: 'jolokia',
},
{
value: 'kafka',
text: 'kafka',
},
{
value: 'kibana',
text: 'kibana',
},
{
value: 'kubernetes',
text: 'kubernetes',
},
{
value: 'kvm',
text: 'kvm',
},
{
value: 'logstash',
text: 'logstash',
},
{
value: 'memcached',
text: 'memcached',
},
{
value: 'mongodb',
text: 'mongodb',
},
{
value: 'munin',
text: 'munin',
},
{
value: 'mysql',
text: 'mysql',
},
{
value: 'nginx',
text: 'nginx',
},
{
value: 'php_fpm',
text: 'php_fpm',
},
{
value: 'postgresql',
text: 'postgresql',
},
{
value: 'prometheus',
text: 'prometheus',
},
{
value: 'rabbitmq',
text: 'rabbitmq',
},
{
value: 'redis',
text: 'redis',
},
{
value: 'system',
text: 'system',
},
{
value: 'traefik',
text: 'traefik',
},
{
value: 'uwsgi',
text: 'uwsgi',
},
{
value: 'vsphere',
text: 'vsphere',
},
{
value: 'windows',
text: 'windows',
},
{
value: 'zookeeper',
text: 'zookeeper',
},
],
error: 'metricbeatModuleConfig.module.error',
errorId: 'metricbeatModuleConfig.module.error',
required: true,
},
{
id: 'hosts',
ui: {
label: 'metricbeatModuleConfig.hosts.ui.label',
labelId: 'metricbeatModuleConfig.hosts.ui.label',
type: 'multi-input',
helpText: 'metricbeatModuleConfig.hosts.ui.helpText',
helpTextId: 'metricbeatModuleConfig.hosts.ui.helpText',
placeholder: `somehost.local otherhost.local`,
},
validation: 'isHosts',
error: 'metricbeatModuleConfig.hosts.error',
errorId: 'metricbeatModuleConfig.hosts.error',
required: false,
},
{
id: 'period',
ui: {
label: 'metricbeatModuleConfig.period.ui.label',
labelId: 'metricbeatModuleConfig.period.ui.label',
type: 'input',
},
defaultValue: '10s',
validation: 'isPeriod',
error: 'metricbeatModuleConfig.period.error',
errorId: 'metricbeatModuleConfig.period.error',
required: true,
},
],
},
{
id: 'output',
name: 'Outputs',
allowOtherConfigs: true,
version: 6.7,
configs: [
{
id: '_sub_type',
ui: {
label: 'outputConfig.output.ui.label',
labelId: 'outputConfig.output.ui.label',
type: 'select',
},
options: [
{
value: 'elasticsearch',
text: 'Elasticsearch',
},
{
value: 'logstash',
text: 'Logstash',
},
{
value: 'kafka',
text: 'Kafka',
},
{
value: 'redis',
text: 'Redis',
},
],
error: 'outputConfig.output.error',
errorId: 'outputConfig.output.error',
required: true,
},
{
id: 'hosts',
ui: {
label: 'outputConfig.hosts.ui.label',
labelId: 'outputConfig.hosts.ui.label',
type: 'multi-input',
},
validation: 'isHosts',
error: 'outputConfig.hosts.error',
errorId: 'outputConfig.hosts.error',
parseValidResult: (v) => v.split('\n'),
},
{
id: 'username',
ui: {
label: 'outputConfig.username.ui.label',
labelId: 'outputConfig.username.ui.label',
type: 'input',
},
validation: 'isString',
error: 'outputConfig.username.error',
errorId: 'outputConfig.username.error',
},
{
id: 'password',
ui: {
label: 'outputConfig.password.ui.label',
labelId: 'outputConfig.password.ui.label',
type: 'password',
},
validation: 'isString',
error: 'outputConfig.password.error',
errorId: 'outputConfig.password.error',
},
],
},
];

View file

@ -1,243 +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 { i18n } from '@kbn/i18n';
import { ConfigBlockSchema } from './domain_types';
const supportedConfigLabelsMap = new Map<string, string>([
[
'filebeatInputConfig.paths.ui.label',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsLabel', {
defaultMessage: 'Paths',
}),
],
[
'filebeatInputConfig.paths.ui.helpText',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsDescription', {
defaultMessage: 'Put each of the paths on a separate line',
}),
],
[
'filebeatInputConfig.paths.error',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsErrorMessage', {
defaultMessage: 'One file path per line',
}),
],
[
'filebeatInputConfig.other.ui.label',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigLabel', {
defaultMessage: 'Other Config',
}),
],
[
'filebeatInputConfig.other.ui.helpText',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigDescription', {
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Input',
}),
],
[
'filebeatInputConfig.other.error',
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigErrorMessage', {
defaultMessage: 'Use valid YAML format',
}),
],
[
'filebeatModuleConfig.module.ui.label',
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleLabel', {
defaultMessage: 'Module',
}),
],
[
'filebeatModuleConfig.module.error',
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleErrorMessage', {
defaultMessage: 'Please select a module',
}),
],
[
'filebeatModuleConfig.other.ui.label',
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.otherConfigLabel', {
defaultMessage: 'Other Config',
}),
],
[
'filebeatModuleConfig.other.ui.helpText',
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleDescription', {
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Module',
}),
],
[
'filebeatModuleConfig.other.error',
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.otherConfigErrorMessage', {
defaultMessage: 'Use valid YAML format',
}),
],
[
'metricbeatModuleConfig.module.ui.label',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.moduleLabel', {
defaultMessage: 'Module',
}),
],
[
'metricbeatModuleConfig.module.error',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.moduleErrorMessage', {
defaultMessage: 'Please select a module',
}),
],
[
'metricbeatModuleConfig.hosts.ui.label',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsLabel', {
defaultMessage: 'Hosts',
}),
],
[
'metricbeatModuleConfig.hosts.ui.helpText',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsDescription', {
defaultMessage: 'Put each of the paths on a seperate line',
}),
],
[
'metricbeatModuleConfig.hosts.error',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsErrorMessage', {
defaultMessage: 'One file host per line',
}),
],
[
'metricbeatModuleConfig.period.ui.label',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.periodLabel', {
defaultMessage: 'Period',
}),
],
[
'metricbeatModuleConfig.period.error',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.periodErrorMessage', {
defaultMessage: 'Invalid Period, must be formatted as `10s` for 10 seconds',
}),
],
[
'metricbeatModuleConfig.other.ui.label',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigLabel', {
defaultMessage: 'Other Config',
}),
],
[
'metricbeatModuleConfig.other.ui.helpText',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigDescription', {
defaultMessage: 'Use YAML format to specify other settings for the Metricbeat Module',
}),
],
[
'metricbeatModuleConfig.other.error',
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigErrorMessage', {
defaultMessage: 'Use valid YAML format',
}),
],
[
'outputConfig.output.ui.label',
i18n.translate('xpack.beatsManagement.outputConfig.outputTypeLabel', {
defaultMessage: 'Output Type',
}),
],
[
'outputConfig.output.error',
i18n.translate('xpack.beatsManagement.outputConfig.outputTypeErrorMessage', {
defaultMessage: 'Please select an output type',
}),
],
[
'outputConfig.hosts.ui.label',
i18n.translate('xpack.beatsManagement.outputConfig.hostsLabel', {
defaultMessage: 'Hosts',
}),
],
[
'outputConfig.hosts.error',
i18n.translate('xpack.beatsManagement.outputConfig.hostsErrorMessage', {
defaultMessage: 'One file host per line',
}),
],
[
'outputConfig.username.ui.label',
i18n.translate('xpack.beatsManagement.outputConfig.usernameLabel', {
defaultMessage: 'Username',
}),
],
[
'outputConfig.username.error',
i18n.translate('xpack.beatsManagement.outputConfig.usernameErrorMessage', {
defaultMessage: 'Unprocessable username',
}),
],
[
'outputConfig.password.ui.label',
i18n.translate('xpack.beatsManagement.outputConfig.passwordLabel', {
defaultMessage: 'Password',
}),
],
[
'outputConfig.password.error',
i18n.translate('xpack.beatsManagement.outputConfig.passwordErrorMessage', {
defaultMessage: 'Unprocessable password',
}),
],
[
'supportedConfigs.filebeat.input.text',
i18n.translate('xpack.beatsManagement.tagConfig.filebeatInputLabel', {
defaultMessage: 'Filebeat Input',
}),
],
[
'supportedConfigs.filebeat.modules.text',
i18n.translate('xpack.beatsManagement.tagConfig.filebeatModuleLabel', {
defaultMessage: 'Filebeat Module',
}),
],
[
'supportedConfigs.metricbeatModule.text',
i18n.translate('xpack.beatsManagement.tagConfig.metricbeatModuleLabel', {
defaultMessage: 'Metricbeat Module',
}),
],
[
'supportedConfigs.output.text',
i18n.translate('xpack.beatsManagement.tagConfig.outputLabel', {
defaultMessage: 'Output',
}),
],
]);
export let translatedConfigs: ConfigBlockSchema[];
export const translateConfigSchema = (schemas: ConfigBlockSchema[]) => {
if (translatedConfigs) {
return translatedConfigs;
}
translatedConfigs = schemas.map((schema) => {
schema.name = supportedConfigLabelsMap.get(`supportedConfigs.${schema.id}.text`) || schema.name;
schema.configs = schema.configs.map((configBlock) => {
if (configBlock.ui.label) {
configBlock.ui.label =
supportedConfigLabelsMap.get(configBlock.ui.labelId || '') || configBlock.ui.label;
}
if (configBlock.ui.helpText) {
configBlock.ui.helpText =
supportedConfigLabelsMap.get(configBlock.ui.helpTextId || '') || configBlock.ui.helpText;
}
if (configBlock.error) {
configBlock.error =
supportedConfigLabelsMap.get(configBlock.errorId || '') || configBlock.error;
}
return configBlock;
});
return schema;
});
return translatedConfigs;
};

View file

@ -1,8 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const UNIQUENESS_ENFORCING_TYPES = ['output'];

View file

@ -1,13 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { UNIQUENESS_ENFORCING_TYPES } from './configuration_blocks';
export { INDEX_NAMES } from './index_names';
export { PLUGIN, MANAGEMENT_SECTION } from './plugin';
export { LICENSES, REQUIRED_LICENSES, REQUIRED_ROLES } from './security';
export { TABLE_CONFIG } from './table';
export const BASE_PATH = '/management/ingest/beats_management';

View file

@ -1,16 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const INDEX_NAMES = {
BEATS: '.management-beats',
EVENTS: '.management-beats-events-*',
EVENTS_ALIAS: '.management-beats-events',
};
export const POLICY_NAMES = {
EVENTS: '.beats-management-events-retention',
};

View file

@ -1,12 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const PLUGIN = {
ID: 'beats_management',
};
export const CONFIG_PREFIX = 'xpack.beats';
export const MANAGEMENT_SECTION = 'beats_management';

View file

@ -1,18 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const REQUIRED_ROLES = ['beats_admin'];
export const REQUIRED_LICENSES = ['standard', 'gold', 'trial', 'platinum', 'enterprise'];
export const LICENSES = ['oss', 'basic', 'standard', 'gold', 'trial', 'platinum', 'enterprise'];
export type LicenseType =
| 'oss'
| 'basic'
| 'trial'
| 'standard'
| 'gold'
| 'platinum'
| 'enterprise';

View file

@ -1,13 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const TABLE_CONFIG = {
INITIAL_ROW_SIZE: 5,
PAGE_SIZE_OPTIONS: [3, 5, 10, 20],
TRUNCATE_TAG_LENGTH: 33,
TRUNCATE_TAG_LENGTH_SMALL: 20,
};

View file

@ -1,136 +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 * as t from 'io-ts';
import { configBlockSchemas } from './config_schemas';
import { DateFromString } from './io_ts_types';
// Here we create the runtime check for a generic, unknown beat config type.
// We can also pass in optional params to create spacific runtime checks that
// can be used to validate blocs on the API and UI
export const createConfigurationBlockInterface = (
configType: t.LiteralType<string> | t.KeyofC<Record<string, null>> = t.keyof(
Object.fromEntries(configBlockSchemas.map((s) => [s.id, null])) as Record<string, null>
),
beatConfigInterface: t.Mixed = t.Dictionary
) =>
t.interface(
{
id: t.union([t.undefined, t.string]),
type: configType,
description: t.union([t.undefined, t.string]),
tag: t.string,
config: beatConfigInterface,
last_updated: t.union([t.undefined, t.number]),
},
'ConfigBlock'
);
const BaseConfigurationBlock = createConfigurationBlockInterface();
export interface ConfigurationBlock
extends Pick<
t.TypeOf<typeof BaseConfigurationBlock>,
Exclude<keyof t.TypeOf<typeof BaseConfigurationBlock>, 'id'>
> {
id: string;
}
export interface CMBeat {
id: string;
status?: BeatEvent;
enrollment_token: string;
active: boolean;
access_token?: string;
verified_on?: string;
type: string;
version?: string;
host_ip: string;
host_name: string;
ephemeral_id?: string;
last_checkin?: Date;
event_rate?: string;
local_configuration_yml?: string;
tags: string[];
central_configuration_yml?: string;
metadata?: {};
name?: string;
last_updated: number;
}
export interface ConfigBlockSchema {
id: string;
name: string;
version: number;
allowOtherConfigs?: boolean;
configs: BeatConfigSchema[];
}
export interface BeatConfigSchema {
id: string;
ui: {
label: string;
labelId?: string;
type: 'input' | 'multi-input' | 'select' | 'code' | 'password';
helpText?: string;
helpTextId?: string;
placeholder?: string;
};
options?: Array<{ value: string; text: string }>;
validation?: 'isHosts' | 'isString' | 'isPeriod' | 'isPath' | 'isPaths' | 'isYaml';
error: string;
errorId: string;
defaultValue?: string;
required?: boolean;
parseValidResult?: (value: any) => any;
}
export const RuntimeBeatTag = t.interface(
{
id: t.union([t.undefined, t.string]),
name: t.string,
color: t.string,
hasConfigurationBlocksTypes: t.array(t.string),
},
'CMBeat'
);
export interface BeatTag
extends Pick<
t.TypeOf<typeof RuntimeBeatTag>,
Exclude<keyof t.TypeOf<typeof RuntimeBeatTag>, 'id'>
> {
id: string;
// Used by the UI and api when a tag exists but is an invalid option
disabled?: boolean;
}
export const RuntimeBeatEvent = t.interface(
{
type: t.union([t.literal('STATE'), t.literal('ERROR')]),
beat: t.union([t.undefined, t.string]),
timestamp: DateFromString,
event: t.type({
type: t.union([
t.literal('RUNNING'),
t.literal('STARTING'),
t.literal('IN_PROGRESS'),
t.literal('CONFIG'),
t.literal('FAILED'),
t.literal('STOPPED'),
]),
message: t.string,
uuid: t.union([t.undefined, t.string]),
}),
},
'BeatEvent'
);
export interface BeatEvent
extends Pick<
t.TypeOf<typeof RuntimeBeatEvent>,
Exclude<keyof t.TypeOf<typeof RuntimeBeatEvent>, 'timestamp'>
> {
beat: string;
timestamp: Date;
}

View file

@ -1,23 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { schema, TypeOf } from '@kbn/config-schema';
const DEFAULT_ENROLLMENT_TOKENS_TTL_S = 10 * 60; // 10 minutes
export const beatsManagementConfigSchema = schema.object({
enabled: schema.boolean({ defaultValue: true }),
defaultUserRoles: schema.arrayOf(schema.string(), { defaultValue: ['superuser'] }),
encryptionKey: schema.string({ defaultValue: 'xpack_beats_default_encryptionKey' }),
enrollmentTokensTtlInSeconds: schema.number({
min: 1,
max: 10 * 60 * 14, // No more then 2 weeks for security reasons,
defaultValue: DEFAULT_ENROLLMENT_TOKENS_TTL_S,
}),
});
export type BeatsManagementConfigType = TypeOf<typeof beatsManagementConfigSchema>;

View file

@ -1,34 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import * as t from 'io-ts';
import { isRight } from 'fp-ts/lib/Either';
class DateFromStringType extends t.Type<Date, string, t.mixed> {
public readonly _tag: 'DateFromISOStringType' = 'DateFromISOStringType';
constructor() {
super(
'DateFromString',
(u): u is Date => u instanceof Date,
(u, c) => {
const validation = t.string.validate(u, c);
if (!isRight(validation)) {
return validation as any;
} else {
const s = validation.right;
const d = new Date(s);
return isNaN(d.getTime()) ? t.failure(s, c) : t.success(d);
}
},
(a) => a.toISOString()
);
}
}
// eslint-disable-next-line
export interface DateFromString extends DateFromStringType {}
export const DateFromString: DateFromString = new DateFromStringType();

View file

@ -1,106 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export interface BaseReturnType {
error?: {
message: string;
code?: number;
};
success: boolean;
}
export interface ReturnTypeCreate<T> extends BaseReturnType {
item: T;
action: 'created';
}
export interface ReturnTypeUpdate<T> extends BaseReturnType {
item: T;
action: 'updated';
}
export interface ReturnTypeBulkCreate<T> extends BaseReturnType {
results: Array<{
item: T;
success: boolean;
action: 'created';
error?: {
message: string;
code?: number;
};
}>;
}
export interface ReturnTypeBulkDelete extends BaseReturnType {
results: Array<{
success: boolean;
action: 'deleted';
error?: {
message: string;
code?: number;
};
}>;
}
// upsert
export interface ReturnTypeUpsert<T> extends BaseReturnType {
item: T;
action: 'created' | 'updated';
}
// upsert bulk
export interface ReturnTypeBulkUpsert extends BaseReturnType {
results: Array<{
success: boolean;
action: 'created' | 'updated';
error?: {
message: string;
code?: number;
};
}>;
}
// list
export interface ReturnTypeList<T> extends BaseReturnType {
list: T[];
page: number;
total: number;
}
// get
export interface ReturnTypeGet<T> extends BaseReturnType {
item: T;
}
export interface ReturnTypeBulkGet<T> extends BaseReturnType {
items: T[];
}
// e.g.
// {
// result: {
// username: { valid: true },
// password: { valid: false, error: 'something' },
// hosts: [
// { valid: false }, { valid: true },
// ]
// }
// }
// bulk action -- e.g. assign tags to beats
export interface ReturnTypeBulkAction extends BaseReturnType {
results?: Array<{
success: boolean;
result?: {
[key: string]: any;
};
error?: {
message: string;
code?: number;
};
}>;
}

View file

@ -1,12 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
module.exports = {
preset: '@kbn/test',
rootDir: '../../..',
roots: ['<rootDir>/x-pack/plugins/beats_management'],
};

View file

@ -1,16 +0,0 @@
{
"id": "beatsManagement",
"configPath": ["xpack", "beats_management"],
"ui": true,
"server": true,
"version": "kibana",
"requiredPlugins": [
"data",
"licensing",
"management",
"features"
],
"optionalPlugins": [
"security"
]
}

View file

@ -1,89 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import * as euiVars from '@elastic/eui/dist/eui_theme_light.json';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
import React from 'react';
import ReactDOM from 'react-dom';
import { Router } from 'react-router-dom';
import { ThemeProvider } from 'styled-components';
import { Provider as UnstatedProvider, Subscribe } from 'unstated';
import { EuiCallOut, EuiLink, EuiSpacer } from '@elastic/eui';
import { Background } from './components/layouts/background';
import { BreadcrumbProvider } from './components/navigation/breadcrumb';
import { Breadcrumb } from './components/navigation/breadcrumb/breadcrumb';
import { BeatsContainer } from './containers/beats';
import { TagsContainer } from './containers/tags';
import { FrontendLibs } from './lib/types';
import { AppRouter } from './router';
import { services } from './kbn_services';
import { ManagementAppMountParams } from '../../../../src/plugins/management/public';
export const renderApp = ({ element, history }: ManagementAppMountParams, libs: FrontendLibs) => {
ReactDOM.render(
<ThemeProvider theme={{ eui: euiVars }}>
<services.I18nContext>
<Router history={history}>
<UnstatedProvider inject={[new BeatsContainer(libs), new TagsContainer(libs)]}>
<BreadcrumbProvider useGlobalBreadcrumbs={libs.framework.versionGreaterThen('6.7.0')}>
<Subscribe to={[BeatsContainer, TagsContainer]}>
{(beats: BeatsContainer, tags: TagsContainer) => (
<Background>
<Breadcrumb
title={i18n.translate('xpack.beatsManagement.management.breadcrumb', {
defaultMessage: 'Management',
})}
/>
<EuiCallOut
title={i18n.translate('xpack.beatsManagement.management.deprecationTitle', {
defaultMessage: 'Beats central management has been deprecated',
})}
color="warning"
iconType="help"
>
<p>
<FormattedMessage
id="xpack.beatsManagement.management.deprecationMessage"
defaultMessage="We have ceased development on Beats central management and are working on a
comprehensive solution to replace it. Thank you for participating in the
beta and providing feedback. If you have any questions or concerns, please
reach out to us on the {forumLink}."
values={{
forumLink: (
<EuiLink
href="https://discuss.elastic.co/c/beats"
external
target="_blank"
>
<FormattedMessage
id="xpack.beatsManagement.management.forumLink"
defaultMessage="Discuss forum"
/>
</EuiLink>
),
}}
/>
</p>
</EuiCallOut>
<EuiSpacer />
<AppRouter libs={libs} beatsContainer={beats} tagsContainer={tags} />
</Background>
)}
</Subscribe>
</BreadcrumbProvider>
</UnstatedProvider>
</Router>
</services.I18nContext>
</ThemeProvider>,
element
);
return () => {
ReactDOM.unmountComponentAtNode(element);
};
};

View file

@ -1,69 +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 { FrontendLibs } from './lib/types';
import { compose } from './lib/compose/kibana';
import { setServices } from './kbn_services';
import { ManagementSetup } from '../../../../src/plugins/management/public';
import { SecurityPluginSetup } from '../../security/public';
import { CoreSetup } from '../../../../src/core/public';
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
import { LicensingPluginSetup } from '../../licensing/public';
import { BeatsManagementConfigType } from '../common';
import { MANAGEMENT_SECTION } from '../common/constants';
async function startApp(libs: FrontendLibs, core: CoreSetup<StartDeps>) {
const startServices = await core.getStartServices();
if (startServices[0].http.anonymousPaths.isAnonymous(window.location.pathname)) {
return;
}
// Can't run until the `start` lifecycle, so we wait for start services to resolve above before calling this.
await libs.framework.waitUntilFrameworkReady();
const capabilities = startServices[0].application.capabilities;
const hasBeatsCapability = capabilities.management.ingest?.[MANAGEMENT_SECTION] ?? false;
if (libs.framework.licenseIsAtLeast('standard') && hasBeatsCapability) {
const mount = async (params: any) => {
const [coreStart, pluginsStart] = await core.getStartServices();
setServices(coreStart, pluginsStart, params);
const { renderApp } = await import('./application');
return renderApp(params, libs);
};
libs.framework.registerManagementUI(mount);
}
}
interface SetupDeps {
management: ManagementSetup;
licensing: LicensingPluginSetup;
security?: SecurityPluginSetup;
}
interface StartDeps {
data: DataPublicPluginStart;
}
export const bootstrap = (
core: CoreSetup<StartDeps>,
plugins: SetupDeps,
config: BeatsManagementConfigType,
version: string
) => {
startApp(
compose({
core,
config,
version,
...plugins,
}),
core
);
};

View file

@ -1,290 +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 {
EuiFieldSearch,
EuiFieldSearchProps,
EuiOutsideClickDetector,
EuiPanel,
} from '@elastic/eui';
import React from 'react';
import styled from 'styled-components';
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
import { composeStateUpdaters } from '../../utils/typed_react';
import { SuggestionItem } from './suggestion_item';
interface AutocompleteFieldProps {
isLoadingSuggestions: boolean;
isValid: boolean;
loadSuggestions: (value: string, cursorPosition: number, maxCount?: number) => void;
onSubmit?: (value: string) => void;
onChange?: (value: string) => void;
placeholder?: string;
suggestions: QuerySuggestion[];
value: string;
}
interface AutocompleteFieldState {
areSuggestionsVisible: boolean;
selectedIndex: number | null;
}
export class AutocompleteField extends React.Component<
AutocompleteFieldProps,
AutocompleteFieldState
> {
public readonly state: AutocompleteFieldState = {
areSuggestionsVisible: false,
selectedIndex: null,
};
private inputElement: HTMLInputElement | null = null;
public render() {
const { suggestions, isLoadingSuggestions, isValid, placeholder, value } = this.props;
const { areSuggestionsVisible, selectedIndex } = this.state;
return (
<EuiOutsideClickDetector onOutsideClick={this.hideSuggestions}>
<AutocompleteContainer>
<FixedEuiFieldSearch
fullWidth
inputRef={this.handleChangeInputRef}
isLoading={isLoadingSuggestions}
isInvalid={!isValid}
onChange={this.handleChange}
onFocus={this.showSuggestions}
onKeyDown={this.handleKeyDown}
onKeyUp={this.handleKeyUp}
onSearch={this.submit}
placeholder={placeholder}
value={value}
/>
{areSuggestionsVisible && !isLoadingSuggestions && suggestions.length > 0 ? (
<SuggestionsPanel>
{suggestions.map((suggestion, suggestionIndex) => (
<SuggestionItem
key={suggestion.text}
suggestion={suggestion}
isSelected={suggestionIndex === selectedIndex}
onMouseEnter={this.selectSuggestionAt(suggestionIndex)}
onClick={this.applySuggestionAt(suggestionIndex)}
/>
))}
</SuggestionsPanel>
) : null}
</AutocompleteContainer>
</EuiOutsideClickDetector>
);
}
public componentDidUpdate(prevProps: AutocompleteFieldProps, prevState: AutocompleteFieldState) {
const hasNewSuggestions = prevProps.suggestions !== this.props.suggestions;
const hasNewValue = prevProps.value !== this.props.value;
if (hasNewValue) {
this.updateSuggestions();
}
if (hasNewSuggestions) {
this.showSuggestions();
}
}
private handleChangeInputRef = (element: HTMLInputElement | null) => {
this.inputElement = element;
};
private handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {
this.changeValue(evt.currentTarget.value);
};
private handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {
const { suggestions } = this.props;
switch (evt.key) {
case 'ArrowUp':
evt.preventDefault();
if (suggestions.length > 0) {
this.setState(
composeStateUpdaters(withSuggestionsVisible, withPreviousSuggestionSelected)
);
}
break;
case 'ArrowDown':
evt.preventDefault();
if (suggestions.length > 0) {
this.setState(composeStateUpdaters(withSuggestionsVisible, withNextSuggestionSelected));
} else {
this.updateSuggestions();
}
break;
case 'Enter':
evt.preventDefault();
if (this.state.selectedIndex !== null) {
this.applySelectedSuggestion();
} else {
this.submit();
}
break;
case 'Escape':
evt.preventDefault();
this.setState(withSuggestionsHidden);
break;
}
};
private handleKeyUp = (evt: React.KeyboardEvent<HTMLInputElement>) => {
switch (evt.key) {
case 'ArrowLeft':
case 'ArrowRight':
case 'Home':
case 'End':
this.updateSuggestions();
break;
}
};
private selectSuggestionAt = (index: number) => () => {
this.setState(withSuggestionAtIndexSelected(index));
};
private applySelectedSuggestion = () => {
if (this.state.selectedIndex !== null) {
this.applySuggestionAt(this.state.selectedIndex)();
}
};
private applySuggestionAt = (index: number) => () => {
const { value, suggestions } = this.props;
const selectedSuggestion = suggestions[index];
if (!selectedSuggestion) {
return;
}
const newValue =
value.substr(0, selectedSuggestion.start) +
selectedSuggestion.text +
value.substr(selectedSuggestion.end);
this.setState(withSuggestionsHidden);
this.changeValue(newValue);
this.focusInputElement();
};
private changeValue = (value: string) => {
const { onChange } = this.props;
if (onChange) {
onChange(value);
}
};
private focusInputElement = () => {
if (this.inputElement) {
this.inputElement.focus();
}
};
private showSuggestions = () => {
this.setState(withSuggestionsVisible);
};
private hideSuggestions = () => {
this.setState(withSuggestionsHidden);
};
private submit = () => {
const { isValid, onSubmit, value } = this.props;
if (isValid && onSubmit) {
onSubmit(value);
}
this.setState(withSuggestionsHidden);
};
private updateSuggestions = (value?: string) => {
const inputCursorPosition = this.inputElement ? this.inputElement.selectionStart || 0 : 0;
this.props.loadSuggestions(value || this.props.value, inputCursorPosition, 10);
};
}
const withPreviousSuggestionSelected = (
state: AutocompleteFieldState,
props: AutocompleteFieldProps
): AutocompleteFieldState => ({
...state,
selectedIndex:
props.suggestions.length === 0
? null
: state.selectedIndex !== null
? (state.selectedIndex + props.suggestions.length - 1) % props.suggestions.length
: Math.max(props.suggestions.length - 1, 0),
});
const withNextSuggestionSelected = (
state: AutocompleteFieldState,
props: AutocompleteFieldProps
): AutocompleteFieldState => ({
...state,
selectedIndex:
props.suggestions.length === 0
? null
: state.selectedIndex !== null
? (state.selectedIndex + 1) % props.suggestions.length
: 0,
});
const withSuggestionAtIndexSelected = (suggestionIndex: number) => (
state: AutocompleteFieldState,
props: AutocompleteFieldProps
): AutocompleteFieldState => ({
...state,
selectedIndex:
props.suggestions.length === 0
? null
: suggestionIndex >= 0 && suggestionIndex < props.suggestions.length
? suggestionIndex
: 0,
});
const withSuggestionsVisible = (state: AutocompleteFieldState) => ({
...state,
areSuggestionsVisible: true,
});
const withSuggestionsHidden = (state: AutocompleteFieldState) => ({
...state,
areSuggestionsVisible: false,
selectedIndex: null,
});
const FixedEuiFieldSearch: React.FC<
React.InputHTMLAttributes<HTMLInputElement> &
EuiFieldSearchProps & {
inputRef?: (element: HTMLInputElement | null) => void;
onSearch: (value: string) => void;
}
> = EuiFieldSearch as any;
const AutocompleteContainer = styled.div`
position: relative;
`;
const SuggestionsPanel = styled(EuiPanel).attrs(() => ({
paddingSize: 'none',
hasShadow: true,
}))`
position: absolute;
width: 100%;
margin-top: 2px;
overflow: hidden;
z-index: 1000;
`;

View file

@ -1,119 +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 { EuiIcon } from '@elastic/eui';
import { tint } from 'polished';
import React from 'react';
import styled from 'styled-components';
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
interface SuggestionItemProps {
isSelected?: boolean;
onClick?: React.MouseEventHandler<HTMLDivElement>;
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
suggestion: QuerySuggestion;
}
export const SuggestionItem: React.FC<SuggestionItemProps> = (props) => {
const { isSelected, onClick, onMouseEnter, suggestion } = props;
return (
<SuggestionItemContainer isSelected={isSelected} onClick={onClick} onMouseEnter={onMouseEnter}>
<SuggestionItemIconField suggestionType={suggestion.type}>
<EuiIcon type={getEuiIconType(suggestion.type)} />
</SuggestionItemIconField>
<SuggestionItemTextField>{suggestion.text}</SuggestionItemTextField>
<SuggestionItemDescriptionField>{suggestion.description}</SuggestionItemDescriptionField>
</SuggestionItemContainer>
);
};
SuggestionItem.defaultProps = {
isSelected: false,
};
const SuggestionItemContainer = styled.div<{
isSelected?: boolean;
}>`
display: flex;
flex-direction: row;
font-size: ${(props) => props.theme.eui.default.euiFontSizeS};
height: ${(props) => props.theme.eui.default.euiSizeXl};
white-space: nowrap;
background-color: ${(props) =>
props.isSelected ? props.theme.eui.default.euiColorLightestShade : 'transparent'};
`;
const SuggestionItemField = styled.div`
align-items: center;
cursor: pointer;
display: flex;
flex-direction: row;
height: ${(props) => props.theme.eui.default.euiSizeXl};
padding: ${(props) => props.theme.eui.default.euiSizeXs};
`;
const SuggestionItemIconField = styled(SuggestionItemField)<{ suggestionType: string }>`
background-color: ${(props) => {
return tint(0.1, getEuiIconColor(props.theme, props.suggestionType));
}};
color: ${(props) => {
return getEuiIconColor(props.theme, props.suggestionType);
}};
flex: 0 0 auto;
justify-content: center;
width: ${(props) => props.theme.eui.default.euiSizeXl};
`;
const SuggestionItemTextField = styled(SuggestionItemField)`
flex: 2 0 0;
font-family: ${(props) => props.theme.eui.default.euiCodeFontFamily};
`;
const SuggestionItemDescriptionField = styled(SuggestionItemField)`
flex: 3 0 0;
p {
display: inline;
span {
font-family: ${(props) => props.theme.eui.default.euiCodeFontFamily};
}
}
`;
const getEuiIconType = (suggestionType: string) => {
switch (suggestionType) {
case 'field':
return 'kqlField';
case 'value':
return 'kqlValue';
case 'recentSearch':
return 'search';
case 'conjunction':
return 'kqlSelector';
case 'operator':
return 'kqlOperand';
default:
return 'empty';
}
};
const getEuiIconColor = (theme: any, suggestionType: string): string => {
switch (suggestionType) {
case 'field':
return theme.eui.default.euiColorVis7;
case 'value':
return theme.eui.default.euiColorVis0;
case 'operator':
return theme.eui.default.euiColorVis1;
case 'conjunction':
return theme.eui.default.euiColorVis2;
case 'recentSearch':
default:
return theme.eui.default.euiColorMediumShade;
}
};

View file

@ -1,117 +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.
*/
// @ts-ignore
import { EuiBasicTable, EuiLink } from '@elastic/eui';
import { InjectedIntl, injectI18n } from '@kbn/i18n/react';
import React from 'react';
import { configBlockSchemas } from '../../common/config_schemas';
import { translateConfigSchema } from '../../common/config_schemas_translations_map';
import { ConfigurationBlock } from '../../common/domain_types';
interface ComponentProps {
configs: {
error?: string | undefined;
list: ConfigurationBlock[];
page: number;
total: number;
};
onConfigClick: (action: 'edit' | 'delete', config: ConfigurationBlock) => any;
onTableChange: (index: number, size: number) => void;
intl: InjectedIntl;
}
const pagination = {
pageSize: 5,
hidePerPageOptions: true,
};
const ConfigListUi: React.FC<ComponentProps> = (props) => (
<EuiBasicTable
items={props.configs.list || []}
itemId="id"
pagination={{
...pagination,
totalItemCount: props.configs.total,
pageIndex: props.configs.page,
}}
onChange={(
table: { page: { index: number; size: number } } = { page: { index: 0, size: 5 } }
) => {
if (props.onTableChange) {
props.onTableChange(table.page.index, table.page.size);
}
}}
columns={[
{
field: 'type',
name: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.typeColumnName',
defaultMessage: 'Type',
}),
truncateText: false,
render: (type: string, config: ConfigurationBlock) => {
const translatedConfig = translateConfigSchema(configBlockSchemas).find(
(sc) => sc.id === type
);
return (
<EuiLink onClick={() => props.onConfigClick('edit', config)}>
{translatedConfig ? translatedConfig.name : type}
</EuiLink>
);
},
},
{
field: 'module',
name: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.moduleColumnName',
defaultMessage: 'Module',
}),
truncateText: false,
render: (value: string, config: ConfigurationBlock) => {
return (
config.config._sub_type ||
props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.moduleColumn.notAvailibaleLabel',
defaultMessage: 'N/A',
})
);
},
},
{
field: 'description',
name: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.descriptionColumnName',
defaultMessage: 'Description',
}),
},
{
name: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.actionsColumnName',
defaultMessage: 'Actions',
}),
actions: [
{
name: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.actions.removeButtonAriaLabel',
defaultMessage: 'Remove',
}),
description: props.intl.formatMessage({
id: 'xpack.beatsManagement.tagTable.actions.removeTooltip',
defaultMessage: 'Remove this config from tag',
}),
type: 'icon',
icon: 'trash',
onClick: (item: ConfigurationBlock) => props.onConfigClick('delete', item),
},
],
},
]}
/>
);
export const ConfigList = injectI18n(ConfigListUi);

View file

@ -1,292 +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 {
EuiBasicTable,
EuiButton,
EuiCodeBlock,
EuiCopy,
EuiFlexGroup,
EuiFlexItem,
EuiLoadingSpinner,
EuiModalBody,
// @ts-ignore
EuiSelect,
EuiSpacer,
EuiTitle,
} from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n/react';
import { upperFirst } from 'lodash';
import React from 'react';
import { CMBeat } from '../../common/domain_types';
interface ComponentProps {
/** Such as kibanas basePath, for use to generate command */
frameworkBasePath?: string;
enrollmentToken?: string;
getBeatWithToken(token: string): Promise<CMBeat | null>;
createEnrollmentToken(): Promise<void>;
onBeatEnrolled(enrolledBeat: CMBeat): void;
}
interface ComponentState {
enrolledBeat: CMBeat | null;
hasPolledForBeat: boolean;
command: string;
beatType: string;
}
export class EnrollBeat extends React.Component<ComponentProps, ComponentState> {
private pinging = false;
constructor(props: ComponentProps) {
super(props);
this.state = {
enrolledBeat: null,
hasPolledForBeat: false,
command: 'sudo {{beatType}}',
beatType: 'filebeat',
};
}
public pingForBeatWithToken = async (token: string): Promise<CMBeat | void> => {
try {
const beats = await this.props.getBeatWithToken(token);
if (!beats) {
throw new Error('no beats');
}
return beats;
} catch (err) {
if (this.pinging) {
const timeout = (ms: number) => new Promise((res) => setTimeout(res, ms));
await timeout(5000);
return await this.pingForBeatWithToken(token);
}
}
};
public async componentDidMount() {
if (!this.props.enrollmentToken) {
await this.props.createEnrollmentToken();
}
}
public waitForTokenToEnrollBeat = async () => {
if (this.pinging || !this.props.enrollmentToken) {
return;
}
this.pinging = true;
const enrolledBeat = (await this.pingForBeatWithToken(this.props.enrollmentToken)) as CMBeat;
this.setState({
enrolledBeat,
});
this.props.onBeatEnrolled(enrolledBeat);
this.pinging = false;
};
public render() {
if (!this.props.enrollmentToken && !this.state.enrolledBeat) {
return null;
}
if (this.props.enrollmentToken && !this.state.enrolledBeat) {
this.waitForTokenToEnrollBeat();
}
const cmdText = `${this.state.command
.replace('{{beatType}}', this.state.beatType)
.replace('{{beatTypeInCaps}}', upperFirst(this.state.beatType))} enroll ${
window.location.protocol
}//${window.location.host}${this.props.frameworkBasePath} ${this.props.enrollmentToken}`;
return (
<React.Fragment>
{!this.state.enrolledBeat && (
<React.Fragment>
<EuiFlexGroup>
<EuiFlexItem>
<EuiFlexGroup gutterSize="s" alignItems="center">
<EuiFlexItem grow={false}>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.beatTypeTitle"
defaultMessage="Beat type:"
/>
</h3>
</EuiTitle>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSelect
value={this.state.beatType}
options={[
{
value: 'filebeat',
text: 'Filebeat',
},
{
value: 'metricbeat',
text: 'Metricbeat',
},
]}
onChange={(e: any) => this.setState({ beatType: e.target.value })}
fullWidth={true}
/>
</EuiFlexItem>
</EuiFlexGroup>
<br />
<br />
<EuiFlexGroup>
<EuiFlexItem>
<EuiFlexGroup gutterSize="s" alignItems="center">
<EuiFlexItem grow={false}>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.platformTitle"
defaultMessage="Platform:"
/>
</h3>
</EuiTitle>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSelect
value={this.state.command}
options={[
{
value: `sudo {{beatType}}`,
text: 'DEB / RPM',
},
{
value: `PS C:\\Program Files\\{{beatTypeInCaps}}> {{beatType}}.exe`,
text: 'Windows',
},
{
value: `./{{beatType}}`,
text: 'MacOS',
},
]}
onChange={(e: any) => this.setState({ command: e.target.value })}
fullWidth={true}
/>
</EuiFlexItem>
</EuiFlexGroup>
<br />
<br />
{this.state.command && (
<EuiFlexGroup>
<EuiFlexItem>
<EuiFlexGroup justifyContent="spaceBetween" alignItems="flexEnd">
<EuiFlexItem grow={false}>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.yourBeatTypeHostTitle"
defaultMessage="On the host where your {beatType} is installed, run:"
values={{
beatType: upperFirst(this.state.beatType),
}}
/>
</h3>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem className="homTutorial__instruction" grow={false}>
<EuiCopy textToCopy={cmdText}>
{(copy: any) => (
<EuiButton size="s" onClick={copy}>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.copyButtonLabel"
defaultMessage="Copy command"
/>
</EuiButton>
)}
</EuiCopy>
</EuiFlexItem>
</EuiFlexGroup>
<div className="eui-textBreakAll">
<EuiSpacer size="m" />
<EuiCodeBlock language="sh">{`$ ${cmdText}`}</EuiCodeBlock>
</div>
<EuiSpacer size="m" />
<EuiFlexGroup>
<EuiFlexItem>
<EuiFlexGroup gutterSize="s" alignItems="center">
<EuiFlexItem grow={false}>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.waitingBeatTypeToEnrollTitle"
defaultMessage="Waiting for {beatType} to enroll…"
values={{
beatType: upperFirst(this.state.beatType),
}}
/>
</h3>
</EuiTitle>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
</EuiFlexGroup>
<br />
<EuiLoadingSpinner size="l" />
</EuiFlexItem>
</EuiFlexGroup>
)}
</React.Fragment>
)}
{this.state.enrolledBeat && (
<EuiModalBody>
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.beatEnrolledTitle"
defaultMessage="The Beat is now enrolled in central management:"
/>
<br />
<br />
<br />
<EuiBasicTable
items={[this.state.enrolledBeat]}
columns={[
{
field: 'type',
name: (
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.beatTypeColumnName"
defaultMessage="Beat Type"
/>
),
sortable: false,
},
{
field: 'version',
name: (
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.versionColumnName"
defaultMessage="Version"
/>
),
sortable: false,
},
{
field: 'host_name',
name: (
<FormattedMessage
id="xpack.beatsManagement.enrollBeat.hostnameColumnName"
defaultMessage="Hostname"
/>
),
sortable: false,
},
]}
/>
<br />
<br />
</EuiModalBody>
)}
</React.Fragment>
);
}
}

View file

@ -1,114 +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.
*/
// @ts-ignore
import { CommonProps, EuiCodeEditor, EuiCodeEditorProps, EuiFormRow } from '@elastic/eui';
// @ts-ignore
import { FormsyInputProps, withFormsy } from 'formsy-react';
import React, { Component, InputHTMLAttributes } from 'react';
interface ComponentProps extends FormsyInputProps, CommonProps, EuiCodeEditorProps {
instantValidation: boolean;
label: string;
isReadOnly: boolean;
mode: 'javascript' | 'yaml';
errorText: string;
fullWidth: boolean;
helpText: React.ReactElement<any>;
compressed: boolean;
onChange(value: string): void;
onBlur(): void;
}
interface ComponentState {
allowError: boolean;
}
class CodeEditor extends Component<
InputHTMLAttributes<HTMLTextAreaElement> & ComponentProps,
ComponentState
> {
public static defaultProps = {
passRequiredToField: true,
};
public state = { allowError: false };
public componentDidMount() {
const { defaultValue, setValue } = this.props;
setValue(defaultValue || '');
}
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
if (nextProps.isFormSubmitted()) {
this.showError();
}
}
public handleChange = (value: string) => {
this.props.setValue(value);
if (this.props.onChange) {
this.props.onChange(value);
}
if (this.props.instantValidation) {
this.showError();
}
};
public handleBlur = () => {
this.showError();
if (this.props.onBlur) {
this.props.onBlur();
}
};
public showError = () => this.setState({ allowError: true });
public render() {
const {
name,
id,
label,
isReadOnly,
isValid,
getValue,
isPristine,
getErrorMessage,
mode,
fullWidth,
className,
helpText,
} = this.props;
const { allowError } = this.state;
const error = !isPristine() && !isValid() && allowError;
return (
<EuiFormRow
id={id}
label={label}
helpText={helpText}
isInvalid={error}
error={error ? getErrorMessage() : []}
>
<EuiCodeEditor
name={name}
mode={mode}
theme="github"
value={getValue() || ''}
isReadOnly={isReadOnly || false}
onChange={this.handleChange}
onBlur={this.handleBlur}
width={fullWidth ? '100%' : undefined}
className={className}
/>
</EuiFormRow>
);
}
}
export const FormsyEuiCodeEditor = withFormsy(CodeEditor);

View file

@ -1,12 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { FormsyEuiCodeEditor } from './code_editor';
export { FormsyEuiFieldText } from './input';
export { FormsyEuiPasswordText } from './password_input';
export { FormsyEuiMultiFieldText } from './multi_input';
export { FormsyEuiSelect } from './select';

View file

@ -1,120 +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 { EuiFieldText, EuiFormRow } from '@elastic/eui';
import { CommonProps } from '@elastic/eui/src/components/common';
import { FormsyInputProps, withFormsy } from 'formsy-react';
import React, { Component, InputHTMLAttributes } from 'react';
interface ComponentProps
extends FormsyInputProps,
CommonProps,
Omit<React.ComponentProps<typeof EuiFieldText>, 'onChange' | 'onBlur'> {
instantValidation?: boolean;
label: string;
errorText: string;
fullWidth: boolean;
helpText: React.ReactElement<any>;
compressed: boolean;
onChange?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
onBlur?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
}
interface ComponentState {
allowError: boolean;
}
class FieldText extends Component<
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
ComponentState
> {
public static defaultProps = {
passRequiredToField: true,
};
public state = { allowError: false };
public componentDidMount() {
const { defaultValue, setValue } = this.props;
if (defaultValue) {
setValue(defaultValue);
}
}
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
if (nextProps.isFormSubmitted()) {
this.showError();
}
}
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const { value } = e.currentTarget;
this.props.setValue(value);
if (this.props.onChange) {
this.props.onChange(e, e.currentTarget.value);
}
if (this.props.instantValidation) {
this.showError();
}
};
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
this.showError();
if (this.props.onBlur) {
this.props.onBlur(e, e.currentTarget.value);
}
};
public showError = () => this.setState({ allowError: true });
public render() {
const {
name,
id,
required,
label,
getValue,
isValid,
isPristine,
getErrorMessage,
fullWidth,
className,
disabled,
helpText,
placeholder,
} = this.props;
const { allowError } = this.state;
const error = !isPristine() && !isValid() && allowError;
return (
<EuiFormRow
id={id}
label={label}
helpText={helpText}
isInvalid={!disabled && error}
error={!disabled && error ? getErrorMessage() : []}
>
<EuiFieldText
id={id}
name={name}
placeholder={placeholder}
value={getValue() || ''}
isInvalid={!disabled && error}
onChange={this.handleChange}
onBlur={this.handleBlur}
fullWidth={fullWidth}
disabled={disabled}
required={required}
className={className}
/>
</EuiFormRow>
);
}
}
export const FormsyEuiFieldText = withFormsy(FieldText);

View file

@ -1,122 +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 { EuiFormRow, EuiTextArea, EuiTextAreaProps } from '@elastic/eui';
import { CommonProps } from '@elastic/eui/src/components/common';
// @ts-ignore
import { FormsyInputProps, withFormsy } from 'formsy-react';
import React, { Component, InputHTMLAttributes } from 'react';
interface ComponentProps
extends FormsyInputProps,
CommonProps,
Omit<EuiTextAreaProps, 'onChange' | 'onBlur'> {
instantValidation: boolean;
label: string;
errorText: string;
fullWidth: boolean;
helpText: React.ReactElement<any>;
compressed: boolean;
onChange(e: React.ChangeEvent<HTMLTextAreaElement>, value: any): void;
onBlur(e: React.ChangeEvent<HTMLTextAreaElement>, value: any): void;
}
interface ComponentState {
allowError: boolean;
}
class MultiFieldText extends Component<
InputHTMLAttributes<HTMLTextAreaElement> & ComponentProps,
ComponentState
> {
public static defaultProps = {
passRequiredToField: true,
};
public state = { allowError: false };
public componentDidMount() {
const { defaultValue, setValue } = this.props;
if (defaultValue) {
setValue(defaultValue);
}
}
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
if (nextProps.isFormSubmitted()) {
this.showError();
}
}
public handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
const value = e.currentTarget.value.split('\n');
this.props.setValue(value);
if (this.props.onChange) {
this.props.onChange(e, value);
}
if (this.props.instantValidation) {
this.showError();
}
};
public handleBlur = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
this.showError();
if (this.props.onBlur) {
this.props.onBlur(e, e.currentTarget.value);
}
};
public showError = () => this.setState({ allowError: true });
public render() {
const {
name,
id,
required,
label,
getValue,
isValid,
isPristine,
getErrorMessage,
fullWidth,
className,
disabled,
helpText,
placeholder,
} = this.props;
const { allowError } = this.state;
const error = !isPristine() && !isValid() && allowError;
return (
<EuiFormRow
id={id}
label={label}
helpText={helpText}
isInvalid={!disabled && error}
error={!disabled && error ? getErrorMessage() : []}
>
<EuiTextArea
id={id}
name={name}
value={getValue() ? getValue().join('\n') : ''}
isInvalid={!disabled && error}
placeholder={placeholder}
onChange={this.handleChange}
onBlur={this.handleBlur}
fullWidth={fullWidth}
disabled={disabled}
required={required}
className={className}
/>
</EuiFormRow>
);
}
}
export const FormsyEuiMultiFieldText = withFormsy(MultiFieldText);

View file

@ -1,114 +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 { CommonProps, EuiFieldPassword, EuiFieldPasswordProps, EuiFormRow } from '@elastic/eui';
import { FormsyInputProps, withFormsy } from 'formsy-react';
import React, { Component, InputHTMLAttributes } from 'react';
interface ComponentProps
extends FormsyInputProps,
CommonProps,
Omit<EuiFieldPasswordProps, 'onChange' | 'onBlur'> {
instantValidation?: boolean;
label: string;
errorText: string;
fullWidth: boolean;
helpText: React.ReactElement<any>;
compressed: boolean;
onChange?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
onBlur?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
}
interface ComponentState {
allowError: boolean;
}
class FieldPassword extends Component<
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
ComponentState
> {
constructor(props: any) {
super(props);
this.state = {
allowError: false,
};
}
public componentDidMount() {
const { defaultValue, setValue } = this.props;
if (defaultValue) {
setValue(defaultValue);
}
}
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const { value } = e.currentTarget;
this.props.setValue(value);
if (this.props.onChange) {
this.props.onChange(e, value);
}
if (this.props.instantValidation) {
this.showError();
}
};
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
this.showError();
if (this.props.onBlur) {
this.props.onBlur(e, e.currentTarget.value);
}
};
public showError = () => this.setState({ allowError: true });
public render() {
const {
name,
id,
required,
label,
getValue,
isValid,
isPristine,
getErrorMessage,
fullWidth,
className,
disabled,
helpText,
onBlur,
} = this.props;
const { allowError } = this.state;
const error = !isPristine() && !isValid() && allowError;
return (
<EuiFormRow
id={id}
label={label}
helpText={helpText}
isInvalid={!disabled && error}
error={!disabled && error ? getErrorMessage() : []}
>
<EuiFieldPassword
id={id}
name={name}
value={getValue() || ''}
isInvalid={!disabled && error}
onChange={this.handleChange}
onBlur={onBlur}
fullWidth={fullWidth}
disabled={disabled}
required={required}
className={className}
/>
</EuiFormRow>
);
}
}
export const FormsyEuiPasswordText = withFormsy(FieldPassword);

View file

@ -1,125 +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 {
EuiFormRow,
// @ts-ignore
EuiSelect,
} from '@elastic/eui';
import { CommonProps } from '@elastic/eui/src/components/common';
// @ts-ignore
import { FormsyInputProps, withFormsy } from 'formsy-react';
import React, { Component, InputHTMLAttributes } from 'react';
const FixedSelect = EuiSelect as React.FC<any>;
interface ComponentProps extends FormsyInputProps, CommonProps {
instantValidation: boolean;
options: Array<{ value: string; text: string }>;
label: string;
errorText: string;
fullWidth: boolean;
helpText: React.ReactElement<any>;
compressed: boolean;
onChange(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
onBlur(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
}
interface ComponentState {
allowError: boolean;
}
class FieldSelect extends Component<
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
ComponentState
> {
public static defaultProps = {
passRequiredToField: true,
};
public state = { allowError: false };
public componentDidMount() {
const { defaultValue, setValue } = this.props;
if (defaultValue) {
setValue(defaultValue);
}
}
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
if (nextProps.isFormSubmitted()) {
this.showError();
}
}
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const { value } = e.currentTarget;
this.props.setValue(value);
if (this.props.onChange) {
this.props.onChange(e, e.currentTarget.value);
}
if (this.props.instantValidation) {
this.showError();
}
};
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
this.showError();
if (this.props.onBlur) {
this.props.onBlur(e, e.currentTarget.value);
}
};
public showError = () => this.setState({ allowError: true });
public render() {
const {
id,
required,
label,
options,
getValue,
isValid,
isPristine,
getErrorMessage,
fullWidth,
className,
disabled,
helpText,
} = this.props;
const { allowError } = this.state;
const error = !isPristine() && !isValid() && allowError;
return (
<EuiFormRow
id={id}
label={label}
helpText={helpText}
isInvalid={!disabled && error}
error={!disabled && error ? getErrorMessage() : []}
>
<FixedSelect
id={id}
name={name}
value={getValue() || ''}
options={options}
isInvalid={!disabled && error}
onChange={this.handleChange}
onBlur={this.handleBlur}
fullWidth={fullWidth}
disabled={disabled}
required={required}
className={className}
/>
</EuiFormRow>
);
}
}
export const FormsyEuiSelect = withFormsy(FieldSelect);

View file

@ -1,12 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import styled from 'styled-components';
export const Background = styled.div`
flex-grow: 1;
`;

View file

@ -1,31 +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 { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiPageContent } from '@elastic/eui';
import React from 'react';
import { withRouter, RouteComponentProps } from 'react-router-dom';
interface LayoutProps extends RouteComponentProps {
children: React.ReactNode;
title: string | React.ReactNode;
actionSection?: React.ReactNode;
}
export const NoDataLayout = withRouter(({ actionSection, title, children }: LayoutProps) => (
<EuiFlexGroup justifyContent="spaceAround">
<EuiFlexItem grow={false}>
<EuiPageContent>
<EuiEmptyPrompt
iconType="logoBeats"
title={<h2>{title}</h2>}
body={children}
actions={actionSection}
/>
</EuiPageContent>
</EuiFlexItem>
</EuiFlexGroup>
));

View file

@ -1,84 +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 {
EuiHeader,
EuiHeaderBreadcrumbs,
EuiHeaderSection,
EuiPage,
EuiPageBody,
EuiPageContent,
EuiPageContentBody,
EuiPageHeader,
EuiPageHeaderSection,
EuiTitle,
} from '@elastic/eui';
import React, { Component, ReactNode } from 'react';
import styled from 'styled-components';
import { BreadcrumbConsumer } from '../navigation/breadcrumb';
type RenderCallback = (component: () => JSX.Element) => void;
interface PrimaryLayoutProps {
title: string | React.ReactNode;
actionSection?: React.ReactNode;
hideBreadcrumbs?: boolean;
}
export class PrimaryLayout extends Component<PrimaryLayoutProps> {
private actionSection: (() => JSX.Element) | null = null;
constructor(props: PrimaryLayoutProps) {
super(props);
}
public render() {
const children: (callback: RenderCallback) => void | ReactNode = this.props.children as any;
return (
<React.Fragment>
{!this.props.hideBreadcrumbs && (
<BreadcrumbConsumer>
{({ breadcrumbs }) => (
<HeaderWrapper>
<EuiHeaderSection>
<EuiHeaderBreadcrumbs breadcrumbs={breadcrumbs} />
</EuiHeaderSection>
</HeaderWrapper>
)}
</BreadcrumbConsumer>
)}
<EuiPage>
<EuiPageBody>
<EuiPageHeader>
<EuiPageHeaderSection>
<EuiTitle>
<h1>{this.props.title}</h1>
</EuiTitle>
</EuiPageHeaderSection>
<EuiPageHeaderSection>
{(this.actionSection && this.actionSection()) || this.props.actionSection}
</EuiPageHeaderSection>
</EuiPageHeader>
<EuiPageContent>
<EuiPageContentBody>
{(children && typeof children === 'function'
? children(this.renderAction)
: children) || <span />}
</EuiPageContentBody>
</EuiPageContent>
</EuiPageBody>
</EuiPage>
</React.Fragment>
);
}
private renderAction = (component: () => JSX.Element) => {
this.actionSection = component;
this.forceUpdate();
};
}
const HeaderWrapper = styled(EuiHeader)`
height: 29px;
`;

View file

@ -1,49 +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 { EuiPageContent, EuiPageContentBody, EuiStepsHorizontal, EuiTitle } from '@elastic/eui';
interface LayoutProps {
title: string;
goTo: (path: string) => any;
walkthroughSteps: Array<{
id: string;
name: string;
}>;
activePath: string;
}
export const WalkthroughLayout: React.FC<LayoutProps> = ({
walkthroughSteps,
title,
activePath,
goTo,
children,
}) => {
const indexOfCurrent = walkthroughSteps.findIndex((step) => activePath === step.id);
return (
<EuiPageContent>
<EuiTitle>
<h1 style={{ textAlign: 'center' }}>{title}</h1>
</EuiTitle>
<br />
<br />
<EuiStepsHorizontal
steps={walkthroughSteps.map((step, i) => ({
title: step.name,
isComplete: i <= indexOfCurrent,
onClick: () => goTo(step.id),
}))}
/>
<br />
<br />
<EuiPageContentBody>{children}</EuiPageContentBody>
</EuiPageContent>
);
};

View file

@ -1,17 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui';
import * as React from 'react';
export const Loading: React.FC<{}> = () => (
<EuiFlexGroup justifyContent="spaceAround">
<EuiFlexItem grow={false}>
<EuiLoadingSpinner size="xl" />
</EuiFlexItem>
</EuiFlexGroup>
);

View file

@ -1,64 +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, { Component } from 'react';
import { RouteProps } from 'react-router-dom';
import { BASE_PATH } from '../../../../common/constants';
import { BreadcrumbConsumer } from './consumer';
import { Breadcrumb as BreadcrumbData, BreadcrumbContext } from './types';
interface BreadcrumbManagerProps extends RouteProps {
text: string;
href?: string;
parents?: BreadcrumbData[];
context: BreadcrumbContext;
}
class BreadcrumbManager extends Component<BreadcrumbManagerProps, {}, BreadcrumbContext> {
public componentWillUnmount() {
const { text, href, context } = this.props;
context.removeCrumb({
text,
href,
});
}
public componentDidMount() {
const { text, href, parents, context } = this.props;
context.addCrumb(
{
text,
href,
},
parents
);
}
public render() {
return <span />;
}
}
interface BreadcrumbProps extends RouteProps {
title: string;
path?: string;
parentBreadcrumbs?: BreadcrumbData[];
}
export const Breadcrumb: React.FC<BreadcrumbProps> = ({ title, path, parentBreadcrumbs }) => (
<BreadcrumbConsumer>
{(context) => (
<BreadcrumbManager
text={title}
href={path ? `#${BASE_PATH}${path}` : `#${BASE_PATH}`}
parents={parentBreadcrumbs}
context={context}
/>
)}
</BreadcrumbConsumer>
);

View file

@ -1,8 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { Consumer as BreadcrumbConsumer } from './context';

View file

@ -1,19 +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 { Breadcrumb, BreadcrumbContext } from './types';
/* istanbul ignore next */
const defaultContext: BreadcrumbContext = {
breadcrumbs: [],
addCrumb: (crumb: Breadcrumb) => null,
removeCrumb: (crumb: Breadcrumb) => null,
};
export const { Provider, Consumer } = React.createContext(defaultContext);

View file

@ -1,10 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { BreadcrumbProvider } from './provider';
export { BreadcrumbConsumer } from './consumer';
export { Breadcrumb } from './breadcrumb';

View file

@ -1,73 +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, { Component, ReactElement } from 'react';
import { Provider } from './context';
import { Breadcrumb } from './types';
import { services } from '../../../kbn_services';
interface ComponentProps {
useGlobalBreadcrumbs: boolean;
children: ReactElement<any> | Array<ReactElement<any>>;
}
interface ComponentState {
breadcrumbs: Array<{
href?: string;
breadcrumb: Breadcrumb;
parents?: Breadcrumb[];
}>;
}
export class BreadcrumbProvider extends Component<ComponentProps, ComponentState> {
public state = {
breadcrumbs: [] as ComponentState['breadcrumbs'],
};
public addCrumb = (breadcrumb: Breadcrumb, parents?: Breadcrumb[]) => {
this.setState(({ breadcrumbs: prevCrumbs }) => ({
breadcrumbs: [
...prevCrumbs,
{
href: breadcrumb.href,
breadcrumb,
parents,
},
],
}));
};
public removeCrumb = (crumbToRemove: Breadcrumb) => {
this.setState(({ breadcrumbs: prevCrumbs }) => {
const breadcrumbs = prevCrumbs.filter((prevCrumb) => {
const { href } = prevCrumb;
return !(crumbToRemove.href === href);
});
return { breadcrumbs };
});
};
public render() {
const { breadcrumbs } = this.state;
const context = {
breadcrumbs: breadcrumbs.reduce((crumbs, crumbStorageItem) => {
if (crumbStorageItem.parents) {
crumbs = crumbs.concat(crumbStorageItem.parents);
}
crumbs.push(crumbStorageItem.breadcrumb);
return crumbs;
}, [] as Breadcrumb[]),
addCrumb: this.addCrumb,
removeCrumb: this.removeCrumb,
};
if (this.props.useGlobalBreadcrumbs) {
services.setBreadcrumbs(context.breadcrumbs);
}
return <Provider value={context}>{this.props.children}</Provider>;
}
}

View file

@ -1,16 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export interface BreadcrumbContext {
breadcrumbs: Breadcrumb[];
addCrumb: (crumb: Breadcrumb, parents?: Breadcrumb[]) => void;
removeCrumb: (crumb: Breadcrumb) => void;
}
export interface Breadcrumb {
text: string;
href?: string;
}

View file

@ -1,40 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React, { FC } from 'react';
import { Route, Switch } from 'react-router-dom';
export interface RouteConfig {
path: string;
component: React.ComponentType<any>;
routes?: RouteConfig[];
}
export const ChildRoutes: FC<{
routes?: RouteConfig[];
useSwitch?: boolean;
[other: string]: any;
}> = ({ routes, useSwitch = true, ...rest }) => {
if (!routes) {
return null;
}
const Parent = useSwitch ? Switch : React.Fragment;
return (
<Parent>
{routes.map((route) => (
<Route
key={route.path}
path={route.path}
render={(routeProps) => {
const Component = route.component;
return <Component {...routeProps} routes={route.routes} {...rest} />;
}}
/>
))}
</Parent>
);
};

View file

@ -1,46 +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 { get } from 'lodash';
import React from 'react';
import { EuiLink } from '@elastic/eui';
import { Link, withRouter, RouteComponentProps } from 'react-router-dom';
interface ConnectedLinkComponent extends RouteComponentProps {
location: any;
path: string;
disabled: boolean;
query: any;
[key: string]: any;
}
export const ConnectedLinkComponent = ({
location,
path,
query,
disabled,
children,
...props
}: ConnectedLinkComponent) => {
if (disabled) {
return <EuiLink aria-disabled="true" {...props} />;
}
// Shorthand for pathname
const pathname = path || get(props.to, 'pathname') || location.pathname;
return (
<Link
children={children}
to={{ ...location, ...props.to, pathname, query }}
className={`euiLink euiLink--primary ${props.className || ''}`}
/>
);
};
export const ConnectedLink = withRouter(ConnectedLinkComponent);

View file

@ -1,101 +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 { i18n } from '@kbn/i18n';
import { AssignmentActionType } from './table';
export enum ActionComponentType {
Action,
Popover,
SelectionCount,
TagBadgeList,
}
export interface ControlSchema {
id?: number;
name: string;
danger?: boolean;
type: ActionComponentType;
action?: AssignmentActionType;
actionDataKey?: string;
showWarning?: boolean;
warningHeading?: string;
warningMessage?: string;
lazyLoad?: boolean;
grow?: boolean;
}
export const beatsListActions: ControlSchema[] = [
{
grow: false,
name: i18n.translate('xpack.beatsManagement.beatsListAssignmentOptions.unenrollButtonLabel', {
defaultMessage: 'Unenroll selected',
}),
showWarning: true,
type: ActionComponentType.Action,
warningHeading: i18n.translate(
'xpack.beatsManagement.beatsListAssignmentOptions.unenrollBeatsWarninigTitle',
{ defaultMessage: 'Unenroll selected beats?' }
),
warningMessage: i18n.translate(
'xpack.beatsManagement.beatsListAssignmentOptions.unenrollBeatsWarninigMessage',
{ defaultMessage: 'The selected Beats will no longer use central management' }
),
action: AssignmentActionType.Delete,
danger: true,
},
{
name: i18n.translate('xpack.beatsManagement.beatsListAssignmentOptions.setTagsButtonLabel', {
defaultMessage: 'Set tags',
}),
grow: false,
type: ActionComponentType.TagBadgeList,
actionDataKey: 'tags',
lazyLoad: true,
},
];
export const tagListActions: ControlSchema[] = [
{
danger: true,
grow: false,
name: i18n.translate('xpack.beatsManagement.tagListAssignmentOptions.removeTagsButtonLabel', {
defaultMessage: 'Remove selected',
}),
type: ActionComponentType.Action,
showWarning: true,
warningHeading: i18n.translate(
'xpack.beatsManagement.tagListAssignmentOptions.removeTagsWarninigTitle',
{ defaultMessage: 'Remove tag(s)' }
),
warningMessage: i18n.translate(
'xpack.beatsManagement.tagListAssignmentOptions.removeTagWarninigMessage',
{ defaultMessage: 'Remove the tag?' }
),
action: AssignmentActionType.Delete,
},
];
export const tagConfigActions: ControlSchema[] = [
{
danger: true,
grow: false,
name: i18n.translate('xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsButtonLabel', {
defaultMessage: 'Remove tag(s)',
}),
type: ActionComponentType.Action,
showWarning: true,
warningHeading: i18n.translate(
'xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsWarninigTitle',
{ defaultMessage: 'Remove tag(s)' }
),
warningMessage: i18n.translate(
'xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsWarninigMessage',
{ defaultMessage: 'Remove the tag from the selected beat(s)?' }
),
action: AssignmentActionType.Delete,
},
];

View file

@ -1,97 +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 { EuiButton, EuiConfirmModal } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n/react';
import React from 'react';
import { AssignmentActionType } from '../table';
interface ActionControlProps {
action: AssignmentActionType;
disabled: boolean;
danger?: boolean;
name: string;
showWarning?: boolean;
warningHeading?: string;
warningMessage?: string;
actionHandler(action: AssignmentActionType, payload?: any): void;
}
interface ActionControlState {
showModal: boolean;
}
export class ActionControl extends React.PureComponent<ActionControlProps, ActionControlState> {
constructor(props: ActionControlProps) {
super(props);
this.state = {
showModal: false,
};
}
public render() {
const {
action,
actionHandler,
danger,
name,
showWarning,
warningHeading,
warningMessage,
} = this.props;
return (
<div>
<EuiButton
size="s"
color={danger ? 'danger' : 'primary'}
disabled={this.props.disabled}
onClick={
showWarning ? () => this.setState({ showModal: true }) : () => actionHandler(action)
}
>
{name}
</EuiButton>
{this.state.showModal && (
<EuiConfirmModal
buttonColor={danger ? 'danger' : 'primary'}
cancelButtonText={
<FormattedMessage
id="xpack.beatsManagement.confirmModal.cancelButtonLabel"
defaultMessage="Cancel"
/>
}
confirmButtonText={
<FormattedMessage
id="xpack.beatsManagement.confirmModal.confirmButtonLabel"
defaultMessage="Confirm"
/>
}
onConfirm={() => {
actionHandler(action);
this.setState({ showModal: false });
}}
onCancel={() => this.setState({ showModal: false })}
title={
warningHeading ? (
warningHeading
) : (
<FormattedMessage
id="xpack.beatsManagement.confirmModal.confirmWarningTitle"
defaultMessage="Confirm"
/>
)
}
>
{warningMessage}
</EuiConfirmModal>
)}
</div>
);
}
}

View file

@ -1,8 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { OptionControl } from './option_control';

View file

@ -1,58 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React from 'react';
import { ActionComponentType, ControlSchema } from '../action_schema';
import { AssignmentActionType } from '../table';
import { ActionControl } from './action_control';
import { TagBadgeList } from './tag_badge_list';
interface ComponentProps extends ControlSchema {
actionData?: {
[key: string]: any;
};
disabled: boolean;
actionHandler(action: AssignmentActionType, payload?: any): void;
}
export const OptionControl: React.FC<ComponentProps> = (props: ComponentProps) => {
switch (props.type) {
case ActionComponentType.Action:
if (!props.action) {
throw Error('Action cannot be undefined');
}
return (
<ActionControl
actionHandler={props.actionHandler}
action={props.action}
danger={props.danger}
name={props.name}
showWarning={props.showWarning}
warningHeading={props.warningHeading}
warningMessage={props.warningMessage}
disabled={props.disabled}
/>
);
case ActionComponentType.TagBadgeList:
if (!props.actionDataKey) {
throw Error('actionDataKey cannot be undefined');
}
if (!props.actionData) {
throw Error('actionData cannot be undefined');
}
return (
<TagBadgeList
actionHandler={props.actionHandler}
action={props.action}
name={props.name}
items={props.actionData[props.actionDataKey]}
disabled={props.disabled}
/>
);
}
return <div>Invalid config</div>;
};

View file

@ -1,110 +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 {
EuiButton,
EuiContextMenuPanel,
EuiFlexGroup,
EuiFlexItem,
EuiLoadingSpinner,
EuiPopover,
} from '@elastic/eui';
import React from 'react';
import { TABLE_CONFIG } from '../../../../common/constants/table';
import { TagBadge } from '../../tag/tag_badge';
import { AssignmentActionType } from '../index';
interface TagBadgeListProps {
items: object[];
disabled: boolean;
name: string;
action?: AssignmentActionType;
actionHandler(action: AssignmentActionType, payload?: any): void;
}
interface ComponentState {
isPopoverOpen: boolean;
items: object[];
}
export class TagBadgeList extends React.Component<TagBadgeListProps, ComponentState> {
constructor(props: TagBadgeListProps) {
super(props);
this.state = {
isPopoverOpen: false,
items: [],
};
}
public render() {
const button = (
<EuiButton
size="s"
iconType="arrowDown"
iconSide="right"
onClick={this.onButtonClick}
disabled={this.props.disabled}
>
{this.props.name}
</EuiButton>
);
return (
<EuiPopover
id="contentPanel"
button={button}
isOpen={this.state.isPopoverOpen}
closePopover={this.closePopover}
panelPaddingSize="none"
anchorPosition="downLeft"
>
<EuiContextMenuPanel>
<EuiFlexGroup direction="column" gutterSize="xs" style={{ margin: 10 }}>
{!this.props.items && <EuiLoadingSpinner size="l" />}
{this.props.items && this.props.items.length === 0 && (
<EuiFlexItem>
<EuiFlexGroup gutterSize="xs">
<EuiFlexItem>No options avaliable</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
)}
{this.props.items &&
this.props.items.map((tag: any) => (
<EuiFlexItem key={`${tag.id}`}>
<EuiFlexGroup gutterSize="xs">
<EuiFlexItem>
<TagBadge
maxIdRenderSize={TABLE_CONFIG.TRUNCATE_TAG_LENGTH_SMALL}
onClick={() =>
this.props.actionHandler(AssignmentActionType.Assign, tag.id)
}
onClickAriaLabel={tag.id}
tag={tag}
/>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
))}
</EuiFlexGroup>
</EuiContextMenuPanel>
</EuiPopover>
);
}
private onButtonClick = async () => {
this.props.actionHandler(AssignmentActionType.Reload);
this.setState((prevState) => ({
isPopoverOpen: !prevState.isPopoverOpen,
}));
};
private closePopover = () => {
this.setState({
isPopoverOpen: false,
});
};
}

View file

@ -1,16 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { beatsListActions, tagConfigActions } from './action_schema';
export { AssignmentActionType, KueryBarProps, Table } from './table';
export {
ActionDefinition,
BeatDetailTagsTable,
BeatsTableType,
FilterDefinition,
TagsTableType,
} from './table_type_configs';

View file

@ -1,160 +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 { EuiBasicTable, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import styled from 'styled-components';
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
import { TABLE_CONFIG } from '../../../common/constants';
import { AutocompleteField } from '../autocomplete_field/index';
import { ControlSchema } from './action_schema';
import { OptionControl } from './controls/option_control';
import { TableType } from './table_type_configs';
export enum AssignmentActionType {
Add,
Assign,
Delete,
Edit,
Reload,
Search,
}
export interface KueryBarProps {
filterQueryDraft: string;
isLoadingSuggestions: boolean;
isValid: boolean;
loadSuggestions: (value: string, cursorPosition: number, maxCount?: number) => void;
onChange?: (value: string) => void;
onSubmit?: (value: string) => void;
suggestions: QuerySuggestion[];
value: string;
}
interface TableProps {
actions?: ControlSchema[];
actionData?: {
[key: string]: any;
};
hideTableControls?: boolean;
kueryBarProps?: KueryBarProps;
items: any[];
onTableChange?: (index: number, size: number) => void;
type: TableType;
actionHandler?(action: AssignmentActionType, payload?: any): void;
}
interface TableState {
selection: any[];
pageIndex: number;
}
const TableContainer = styled.div`
padding: 16px;
`;
export class Table extends React.Component<TableProps, TableState> {
constructor(props: any) {
super(props);
this.state = {
selection: [],
pageIndex: 0,
};
}
public resetSelection = () => {
this.setSelection([]);
};
public setSelection = (selection: any[]) => {
this.setState({
selection,
});
};
public actionHandler = (action: AssignmentActionType, payload?: any): void => {
if (this.props.actionHandler) {
this.props.actionHandler(action, payload);
}
};
public render() {
const { actionData, actions, hideTableControls, items, kueryBarProps, type } = this.props;
const pagination = {
pageIndex: this.state.pageIndex,
pageSize: TABLE_CONFIG.INITIAL_ROW_SIZE,
pageSizeOptions: TABLE_CONFIG.PAGE_SIZE_OPTIONS,
};
const selectionOptions = hideTableControls
? undefined
: {
onSelectionChange: this.setSelection,
selectable: () => true,
selectableMessage: () =>
i18n.translate('xpack.beatsManagement.table.selectThisBeatTooltip', {
defaultMessage: 'Select this beat',
}),
selection: this.state.selection,
};
return (
<TableContainer>
<EuiFlexGroup alignItems="center" justifyContent="spaceBetween">
{actions &&
actions.map((action) => (
<EuiFlexItem grow={false} key={action.name}>
<OptionControl
{...action}
actionData={actionData}
actionHandler={this.actionHandler}
disabled={this.state.selection.length === 0}
/>
</EuiFlexItem>
))}
{kueryBarProps && (
<EuiFlexItem>
<AutocompleteField
{...kueryBarProps}
placeholder={i18n.translate(
'xpack.beatsManagement.table.filterResultsPlaceholder',
{
defaultMessage: 'Filter results',
}
)}
/>
</EuiFlexItem>
)}
</EuiFlexGroup>
<EuiSpacer size="m" />
<EuiBasicTable
items={items}
itemId="id"
isSelectable={true}
selection={selectionOptions}
columns={type.columnDefinitions}
pagination={{ ...pagination, totalItemCount: items.length }}
onChange={this.onTableChange}
/>
</TableContainer>
);
}
private onTableChange = ({ page }: { page: { index: number; size: number } }) => {
if (this.props.onTableChange) {
this.props.onTableChange(page.index, page.size);
}
this.setState({
pageIndex: page.index,
});
};
}

View file

@ -1,345 +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 { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiToolTip, IconColor } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { sortBy, uniqBy } from 'lodash';
import moment from 'moment';
import React from 'react';
import { BeatTag, CMBeat } from '../../../common/domain_types';
import { ConnectedLink } from '../navigation/connected_link';
import { TagBadge } from '../tag';
export interface ColumnDefinition {
align?: 'left' | 'right' | 'center' | undefined;
field: string;
name: string;
sortable?: boolean;
width?: string;
render?(value: any, object?: any): any;
}
export interface ActionDefinition {
action: string;
danger?: boolean;
icon?: any;
name: string;
}
interface FilterOption {
value: string;
}
export interface FilterDefinition {
field: string;
name: string;
options?: FilterOption[];
type: string;
}
export interface ControlDefinitions {
actions: ActionDefinition[];
filters: FilterDefinition[];
primaryActions?: ActionDefinition[];
}
export interface TableType {
itemType: 'Beats' | 'Tags';
columnDefinitions: ColumnDefinition[];
controlDefinitions(items: any[]): ControlDefinitions;
}
const dynamicStatuses = {
STARTING: {
color: 'success',
status: i18n.translate('xpack.beatsManagement.beatsTable.startingStatusLabel', {
defaultMessage: 'Starting',
}),
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.startingTooltip', {
defaultMessage: 'This Beat is starting.',
}),
},
IN_PROGRESS: {
color: 'warning',
status: i18n.translate('xpack.beatsManagement.beatsTable.updatingStatusLabel', {
defaultMessage: 'Updating',
}),
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.progressTooltip', {
defaultMessage: 'This Beat is currently reloading config from CM.',
}),
},
RUNNING: {
color: 'success',
status: i18n.translate('xpack.beatsManagement.beatsTable.runningStatusLabel', {
defaultMessage: 'Running',
}),
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.runningTooltip', {
defaultMessage: 'This Beat is running without issues.',
}),
},
CONFIG: {
color: 'danger',
status: i18n.translate('xpack.beatsManagement.beatsTable.configErrorStatusLabel', {
defaultMessage: 'Config error',
}),
},
FAILED: {
color: 'danger',
status: i18n.translate('xpack.beatsManagement.beatsTable.failedStatusLabel', {
defaultMessage: 'Error',
}),
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.errorTooltip', {
defaultMessage: 'There is an error on this beat, please check the logs for this host.',
}),
},
STOPPED: {
color: 'danger',
status: i18n.translate('xpack.beatsManagement.beatsTable.stoppedStatusLabel', {
defaultMessage: 'stopped',
}),
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.errorTooltip', {
defaultMessage: 'There is an error on this beat, please check the logs for this host.',
}),
},
};
export const BeatsTableType: TableType = {
itemType: 'Beats',
columnDefinitions: [
{
field: 'name',
name: i18n.translate('xpack.beatsManagement.beatsTable.beatNameTitle', {
defaultMessage: 'Beat name',
}),
render: (name: string, beat: CMBeat) => (
<ConnectedLink path={`/beat/${beat.id}/details`}>{name}</ConnectedLink>
),
sortable: true,
},
{
field: 'type',
name: i18n.translate('xpack.beatsManagement.beatsTable.typeTitle', {
defaultMessage: 'Type',
}),
sortable: true,
},
{
field: 'full_tags',
name: i18n.translate('xpack.beatsManagement.beatsTable.tagsTitle', {
defaultMessage: 'Tags',
}),
render: (value: string, beat: CMBeat & { tags: BeatTag[] }) => (
<EuiFlexGroup wrap responsive={true} gutterSize="xs">
{(sortBy(beat.tags, 'id') || []).map((tag) => (
<EuiFlexItem key={tag.id} grow={false}>
<ConnectedLink path={`/tag/edit/${tag.id}`}>
<TagBadge tag={tag} />
</ConnectedLink>
</EuiFlexItem>
))}
</EuiFlexGroup>
),
sortable: false,
},
{
field: 'config_status',
name: i18n.translate('xpack.beatsManagement.beatsTable.configStatusTitle', {
defaultMessage: 'Config Status',
}),
render: (value: string, beat: CMBeat) => {
let color: IconColor = 'success';
let statusText = i18n.translate('xpack.beatsManagement.beatsTable.configStatus.okLabel', {
defaultMessage: 'OK',
});
let tooltipText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.okTooltip',
{
defaultMessage: 'Beat successfully applied latest config',
}
);
if (beat.status && moment().diff(beat.last_checkin, 'minutes') < 10) {
color = dynamicStatuses[beat.status.event.type].color;
statusText = dynamicStatuses[beat.status.event.type].status;
tooltipText =
(dynamicStatuses[beat.status.event.type] as any).details || beat.status.event.message;
} else if (!beat.status && moment().diff(beat.last_checkin, 'minutes') >= 10) {
color = 'danger';
statusText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.offlineLabel',
{
defaultMessage: 'Offline',
}
);
tooltipText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.noConnectionTooltip',
{
defaultMessage: 'This Beat has not connected to kibana in over 10min',
}
);
} else if (beat.status && moment().diff(beat.last_checkin, 'minutes') >= 10) {
color = 'subdued';
tooltipText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.notStartedTooltip',
{
defaultMessage: 'This Beat has not yet been started.',
}
);
statusText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.notStartedLabel',
{
defaultMessage: 'Not started',
}
);
} else {
color = 'subdued';
statusText = i18n.translate(
'xpack.beatsManagement.beatsTable.configStatus.offlineLabel',
{
defaultMessage: 'Offline',
}
);
}
return (
<EuiFlexGroup wrap responsive={true} gutterSize="xs">
<EuiToolTip content={tooltipText}>
<EuiHealth color={color}>{statusText}</EuiHealth>
</EuiToolTip>
</EuiFlexGroup>
);
},
sortable: false,
},
// {
// field: 'full_tags',
// name: i18n.translate('xpack.beatsManagement.beatsTable.lastConfigUpdateTitle', {
// defaultMessage: 'Last config update',
// }),
// render: (tags?: BeatTag[]) =>
// tags && tags.length ? (
// <span>
// {moment(first(orderBy(tags, ['last_updated'], ['desc'])).last_updated).fromNow()}
// </span>
// ) : null,
// sortable: true,
// },
],
controlDefinitions: (data: any[]) => ({
actions: [
{
name: i18n.translate('xpack.beatsManagement.beatsTable.disenrollSelectedLabel', {
defaultMessage: 'Unenroll Selected',
}),
action: 'delete',
danger: true,
},
],
filters: [
{
type: 'field_value_selection',
field: 'type',
name: i18n.translate('xpack.beatsManagement.beatsTable.typeLabel', {
defaultMessage: 'Type',
}),
options: uniqBy(
data.map(({ type }: { type: any }) => ({ value: type })),
'value'
),
},
],
}),
};
export const TagsTableType: TableType = {
itemType: 'Tags',
columnDefinitions: [
{
field: 'id',
name: i18n.translate('xpack.beatsManagement.tagsTable.tagNameTitle', {
defaultMessage: 'Tag name',
}),
render: (id: string, tag: BeatTag) => (
<ConnectedLink path={`/tag/edit/${tag.id}`}>
<TagBadge tag={tag} />
</ConnectedLink>
),
sortable: true,
width: '45%',
},
{
align: 'right',
field: 'last_updated',
name: i18n.translate('xpack.beatsManagement.tagsTable.lastUpdateTitle', {
defaultMessage: 'Last update',
}),
render: (lastUpdate: Date) => <div>{moment(lastUpdate).fromNow()}</div>,
sortable: true,
},
],
controlDefinitions: (data: any) => ({
actions: [
{
name: i18n.translate('xpack.beatsManagement.tagsTable.removeSelectedLabel', {
defaultMessage: 'Remove Selected',
}),
action: 'delete',
danger: true,
},
],
filters: [],
}),
};
export const BeatDetailTagsTable: TableType = {
itemType: 'Tags',
columnDefinitions: [
{
field: 'id',
name: i18n.translate('xpack.beatsManagement.beatTagsTable.tagNameTitle', {
defaultMessage: 'Tag name',
}),
render: (id: string, tag: BeatTag) => (
<ConnectedLink path={`/tag/edit/${tag.id}`}>
<TagBadge tag={tag} />
</ConnectedLink>
),
sortable: true,
width: '55%',
},
{
align: 'right',
field: 'last_updated',
name: i18n.translate('xpack.beatsManagement.beatTagsTable.lastUpdateTitle', {
defaultMessage: 'Last update',
}),
render: (lastUpdate: string) => <span>{moment(lastUpdate).fromNow()}</span>,
sortable: true,
},
],
controlDefinitions: (data: any) => ({
actions: [],
filters: [],
primaryActions: [
{
name: i18n.translate('xpack.beatsManagement.beatTagsTable.addTagLabel', {
defaultMessage: 'Add Tag',
}),
action: 'add',
danger: false,
},
{
name: i18n.translate('xpack.beatsManagement.beatTagsTable.removeSelectedLabel', {
defaultMessage: 'Remove Selected',
}),
action: 'remove',
danger: true,
},
],
}),
};

View file

@ -1,216 +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.
*/
// @ts-ignore
import { i18n } from '@kbn/i18n';
import Formsy from 'formsy-react';
import { get } from 'lodash';
import React from 'react';
import { ConfigBlockSchema, ConfigurationBlock } from '../../../../common/domain_types';
import {
FormsyEuiCodeEditor,
FormsyEuiFieldText,
FormsyEuiMultiFieldText,
FormsyEuiPasswordText,
FormsyEuiSelect,
} from '../../inputs';
interface ComponentProps {
values: ConfigurationBlock;
schema: ConfigBlockSchema;
id: string;
onSubmit?: (modal: any) => any;
canSubmit(canIt: boolean): any;
}
interface ComponentState {
canSubmit: boolean;
}
class ConfigFormUi extends React.Component<ComponentProps, ComponentState> {
private form = React.createRef<HTMLButtonElement>();
constructor(props: ComponentProps) {
super(props);
this.state = {
canSubmit: false,
};
}
public enableButton = () => {
this.setState({
canSubmit: true,
});
this.props.canSubmit(true);
};
public disableButton = () => {
this.setState({
canSubmit: false,
});
this.props.canSubmit(false);
};
public submit = () => {
if (this.form.current && this.props.onSubmit) {
this.form.current.click();
}
};
public onValidSubmit = <ModelType extends any>(model: ModelType) => {
if (!this.props.onSubmit) {
return;
}
this.props.onSubmit(model);
};
public render() {
return (
<div>
<br />
<Formsy
onValidSubmit={this.onValidSubmit}
onValid={this.enableButton}
onInvalid={this.disableButton}
>
{this.props.schema.configs.map((schema) => {
switch (schema.ui.type) {
case 'input':
return (
<FormsyEuiFieldText
key={schema.id}
id={schema.id}
defaultValue={get(
this.props,
`values.config.${schema.id}`,
schema.defaultValue
)}
name={schema.id}
disabled={!this.props.onSubmit}
helpText={schema.ui.helpText}
placeholder={schema.ui.placeholder}
label={schema.ui.label}
validationError={schema.error}
required={schema.required || false}
/>
);
case 'password':
return (
<FormsyEuiPasswordText
key={schema.id}
id={schema.id}
disabled={!this.props.onSubmit}
defaultValue={get(
this.props,
`values.config.${schema.id}`,
schema.defaultValue
)}
name={schema.id}
placeholder={schema.ui.placeholder}
helpText={schema.ui.helpText}
label={schema.ui.label}
validationError={schema.error}
required={schema.required || false}
/>
);
case 'multi-input':
return (
<FormsyEuiMultiFieldText
key={schema.id}
id={schema.id}
disabled={!this.props.onSubmit}
defaultValue={get(
this.props,
`values.config.${schema.id}`,
schema.defaultValue
)}
name={schema.id}
placeholder={schema.ui.placeholder}
helpText={schema.ui.helpText}
label={schema.ui.label}
validationError={schema.error}
required={schema.required}
/>
);
case 'select':
return (
<FormsyEuiSelect
key={schema.id}
id={schema.id}
name={schema.id}
disabled={!this.props.onSubmit}
defaultValue={get(
this.props,
`values.config.${schema.id}`,
schema.defaultValue
)}
helpText={schema.ui.helpText}
label={schema.ui.label}
options={[
{
value: '',
text: i18n.translate('xpack.beatsManagement.table.selectOptionLabel', {
defaultMessage: 'Please Select An Option',
}),
},
].concat(schema.options || [])}
validationError={schema.error}
required={schema.required}
/>
);
case 'code':
return (
<FormsyEuiCodeEditor
key={`${schema.id}-${this.props.id}`}
mode="yaml"
disabled={!this.props.onSubmit}
id={schema.id}
defaultValue={get(
this.props,
`values.config.${schema.id}`,
schema.defaultValue
)}
name={schema.id}
helpText={schema.ui.helpText}
label={schema.ui.label}
options={schema.options ? schema.options : []}
validationError={schema.error}
required={schema.required}
/>
);
}
})}
{this.props.schema && (
<FormsyEuiCodeEditor
mode="yaml"
disabled={!this.props.onSubmit}
id={'other'}
defaultValue={get(this.props, `values.config.other`, '')}
name={'other'}
helpText={i18n.translate('xpack.beatsManagement.config.otherConfigDescription', {
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Input',
})}
label={i18n.translate('xpack.beatsManagement.config.otherConfigLabel', {
defaultMessage: 'Other Config',
})}
validationError={i18n.translate('xpack.beatsManagement.config.other.error', {
defaultMessage: 'Use valid YAML format',
})}
required={false}
/>
)}
{this.props.onSubmit && (
<button
type="submit"
style={{ display: 'none' }}
disabled={!this.state.canSubmit}
ref={this.form}
/>
)}
</Formsy>
</div>
);
}
}
export const ConfigForm = ConfigFormUi;

View file

@ -1,189 +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 {
EuiButton,
EuiButtonEmpty,
EuiFieldText,
EuiFlexGroup,
EuiFlexItem,
EuiFlyout,
EuiFlyoutBody,
EuiFlyoutFooter,
EuiFlyoutHeader,
EuiFormRow,
EuiHorizontalRule,
EuiSelect,
EuiSpacer,
EuiTitle,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { configBlockSchemas } from '../../../../common/config_schemas';
import { translateConfigSchema } from '../../../../common/config_schemas_translations_map';
import { ConfigurationBlock } from '../../../../common/domain_types';
import { ConfigForm } from './config_form';
interface ComponentProps {
configBlock?: ConfigurationBlock;
onClose(): any;
onSave?(config: ConfigurationBlock): any;
}
interface ComponentState {
valid: boolean;
configBlock: ConfigurationBlock;
}
class ConfigViewUi extends React.Component<ComponentProps, ComponentState> {
private form = React.createRef<any>();
private editMode: boolean;
private schema = translateConfigSchema(configBlockSchemas);
constructor(props: any) {
super(props);
this.editMode = props.configBlock !== undefined;
this.state = {
valid: false,
configBlock: props.configBlock || {
type: this.schema[0].id,
},
};
}
public onValueChange = (field: string) => (e: any) => {
const value = e.currentTarget ? e.currentTarget.value : e;
this.setState((state: any) => ({
configBlock: {
...state.configBlock,
[field]: value,
},
}));
};
public render() {
const thisConfigSchema = this.schema.find((s) => this.state.configBlock.type === s.id);
if (!thisConfigSchema) {
return i18n.translate('xpack.beatsManagement.tagConfig.invalidSchema', {
defaultMessage:
'Error: This config is invalid, it is not supported by Beats and should be removed',
});
}
return (
<EuiFlyout onClose={this.props.onClose}>
<EuiFlyoutHeader hasBorder>
<EuiTitle size="m">
<h2>
{this.editMode
? this.props.onSave
? i18n.translate('xpack.beatsManagement.tagConfig.editConfigurationTitle', {
defaultMessage: 'Edit configuration block',
})
: i18n.translate('xpack.beatsManagement.tagConfig.viewConfigurationTitle"', {
defaultMessage: 'View configuration block',
})
: i18n.translate('xpack.beatsManagement.tagConfig.addConfigurationTitle"', {
defaultMessage: 'Add configuration block',
})}
</h2>
</EuiTitle>
</EuiFlyoutHeader>
<EuiFlyoutBody>
<EuiFormRow
label={i18n.translate('xpack.beatsManagement.tagConfig.typeLabel', {
defaultMessage: 'Type',
})}
>
<EuiSelect
options={this.schema.map((s) => ({ value: s.id, text: s.name }))}
value={this.state.configBlock.type}
disabled={this.editMode}
onChange={this.onValueChange('type')}
/>
</EuiFormRow>
<EuiFormRow
label={i18n.translate('xpack.beatsManagement.tagConfig.descriptionLabel', {
defaultMessage: 'Description',
})}
>
<EuiFieldText
value={this.state.configBlock.description}
disabled={!this.props.onSave}
onChange={this.onValueChange('description')}
placeholder={i18n.translate(
'xpack.beatsManagement.tagConfig.descriptionPlaceholder',
{
defaultMessage: 'Description (optional)',
}
)}
/>
</EuiFormRow>
<EuiSpacer />
<h3>
{i18n.translate('xpack.beatsManagement.tagConfig.configurationTypeText', {
defaultMessage: '{configType} configuration',
values: {
configType: thisConfigSchema ? thisConfigSchema.name : 'Unknown',
},
})}
</h3>
<EuiHorizontalRule />
<ConfigForm
onSubmit={
this.props.onSave
? (data) => {
if (this.props.onSave) {
this.props.onSave({
...this.state.configBlock,
config: data,
});
}
this.props.onClose();
}
: undefined
}
canSubmit={(canIt) => this.setState({ valid: canIt })}
ref={this.form}
values={this.state.configBlock}
id={thisConfigSchema ? thisConfigSchema.name : 'Undefined'}
schema={thisConfigSchema}
/>
</EuiFlyoutBody>
<EuiFlyoutFooter>
<EuiFlexGroup justifyContent="spaceBetween">
<EuiFlexItem grow={false}>
<EuiButtonEmpty iconType="cross" onClick={this.props.onClose}>
{i18n.translate('xpack.beatsManagement.tagConfig.closeButtonLabel', {
defaultMessage: 'Close',
})}
</EuiButtonEmpty>
</EuiFlexItem>
{this.props.onSave && (
<EuiFlexItem grow={false}>
<EuiButton
disabled={!this.state.valid}
fill
onClick={() => {
if (this.form.current) {
this.form.current.submit();
}
}}
>
{i18n.translate('xpack.beatsManagement.tagConfig.saveButtonLabel', {
defaultMessage: 'Save',
})}
</EuiButton>
</EuiFlexItem>
)}
</EuiFlexGroup>
</EuiFlyoutFooter>
</EuiFlyout>
);
}
}
export const ConfigView = ConfigViewUi;

View file

@ -1,9 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export { TagBadge } from './tag_badge';
export { TagEdit } from './tag_edit';

View file

@ -1,48 +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 { EuiBadge, EuiBadgeProps } from '@elastic/eui';
import React from 'react';
import { TABLE_CONFIG } from '../../../common/constants';
type TagBadgeProps = EuiBadgeProps & {
maxIdRenderSize?: number;
tag: { name: string; color: string; disabled?: boolean; id: string };
};
export const TagBadge = (props: TagBadgeProps) => {
const { iconType, onClick, onClickAriaLabel, tag } = props;
const maxIdRenderSize = props.maxIdRenderSize || TABLE_CONFIG.TRUNCATE_TAG_LENGTH;
const idToRender = `${tag.name.substring(0, maxIdRenderSize)}${
tag.name.length > maxIdRenderSize ? '...' : ''
}`;
if (tag.disabled) {
return (
<EuiBadge color="default" iconType="cross">
{idToRender}
</EuiBadge>
);
} else if (onClick && onClickAriaLabel) {
return (
<EuiBadge
color={tag.color || 'primary'}
iconType={iconType}
onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}
onClickAriaLabel={onClickAriaLabel}
>
{idToRender}
</EuiBadge>
);
} else {
return (
<EuiBadge color={tag.color || 'primary'} iconType={iconType}>
{idToRender}
</EuiBadge>
);
}
};

View file

@ -1,238 +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 {
EuiButton,
// @ts-ignore
EuiColorPicker,
EuiFieldText,
EuiFlexGroup,
EuiFlexItem,
// @ts-ignore
EuiForm,
EuiFormRow,
EuiHorizontalRule,
EuiSpacer,
EuiText,
EuiTitle,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
import 'brace/mode/yaml';
import 'brace/theme/github';
import React from 'react';
import { BeatTag, CMBeat, ConfigurationBlock } from '../../../common/domain_types';
import { ConfigList } from '../config_list';
import { AssignmentActionType, BeatsTableType, Table, tagConfigActions } from '../table';
import { ConfigView } from './config_view';
import { TagBadge } from './tag_badge';
interface TagEditProps {
tag: BeatTag;
configuration_blocks: {
error?: string | undefined;
list: ConfigurationBlock[];
page: number;
total: number;
};
onConfigListChange: (index: number, size: number) => void;
onDetachBeat?: (beatIds: string[]) => void;
onTagChange: (field: keyof BeatTag, value: string) => any;
onConfigAddOrEdit: (block: ConfigurationBlock) => any;
onConfigRemoved: (block: ConfigurationBlock) => any;
attachedBeats?: CMBeat[];
}
interface TagEditState {
showFlyout: boolean;
tableRef: any;
selectedConfig?: ConfigurationBlock;
}
export class TagEdit extends React.PureComponent<TagEditProps, TagEditState> {
constructor(props: TagEditProps) {
super(props);
this.state = {
showFlyout: false,
tableRef: React.createRef(),
};
}
public render() {
// eslint-disable-next-line @typescript-eslint/naming-convention
const { tag, attachedBeats, configuration_blocks } = this.props;
return (
<div>
<EuiFlexGroup>
<EuiFlexItem>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.tag.tagDetailsTitle"
defaultMessage="Tag details"
/>
</h3>
</EuiTitle>
<EuiText color="subdued">
<p>
<FormattedMessage
id="xpack.beatsManagement.tag.tagDetailsDescription"
defaultMessage="A tag is a group of configuration blocks that you can apply to one or more Beats."
/>
</p>
</EuiText>
<div>
<TagBadge tag={tag} />
</div>
</EuiFlexItem>
<EuiFlexItem>
<EuiForm>
<EuiFormRow
label={
<FormattedMessage
id="xpack.beatsManagement.tag.tagNameLabel"
defaultMessage="Tag Name"
/>
}
isInvalid={!!this.getNameError(tag.name)}
error={this.getNameError(tag.name) || undefined}
>
<EuiFieldText
name="name"
isInvalid={!!this.getNameError(tag.name)}
onChange={this.updateTag('name')}
value={tag.name}
placeholder={i18n.translate('xpack.beatsManagement.tag.tagNamePlaceholder', {
defaultMessage: 'Tag name (required)',
})}
/>
</EuiFormRow>
<EuiFormRow
label={i18n.translate('xpack.beatsManagement.tag.tagColorLabel', {
defaultMessage: 'Tag Color',
})}
>
<EuiColorPicker color={tag.color} onChange={this.updateTag('color')} />
</EuiFormRow>
</EuiForm>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer />
<EuiHorizontalRule />
<EuiFlexGroup alignItems="stretch">
<EuiFlexItem>
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.tag.tagConfigurationsTitle"
defaultMessage="Configuration blocks"
/>
</h3>
</EuiTitle>
<EuiText color="subdued">
<p>
<FormattedMessage
id="xpack.beatsManagement.tag.tagConfigurationsDescription"
defaultMessage="A tag can have configuration blocks for different types of Beats. For example, a tag
can have two Metricbeat configuration blocks and one Filebeat input configuration block."
/>
</p>
</EuiText>
</EuiFlexItem>
<EuiFlexItem>
<div>
<ConfigList
onTableChange={this.props.onConfigListChange}
configs={configuration_blocks}
onConfigClick={(action: string, block: ConfigurationBlock) => {
if (action === 'delete') {
this.props.onConfigRemoved(block);
} else {
this.setState({
showFlyout: true,
selectedConfig: block,
});
}
}}
/>
<br />
<EuiButton
onClick={() => {
this.setState({ showFlyout: true });
}}
>
<FormattedMessage
id="xpack.beatsManagement.tag.addConfigurationButtonLabel"
defaultMessage="Add configuration block"
/>
</EuiButton>
</div>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer />
{attachedBeats && (
<div>
<EuiHorizontalRule />
<EuiTitle size="xs">
<h3>
<FormattedMessage
id="xpack.beatsManagement.tag.beatsAssignedToTagTitle"
defaultMessage="Beats with this tag"
/>
</h3>
</EuiTitle>
<Table
actions={tagConfigActions}
actionHandler={this.handleAssignmentActions}
items={attachedBeats}
ref={this.state.tableRef}
type={BeatsTableType}
/>
</div>
)}
{this.state.showFlyout && (
<ConfigView
configBlock={this.state.selectedConfig}
onClose={() => this.setState({ showFlyout: false, selectedConfig: undefined })}
onSave={(config: ConfigurationBlock) => {
this.setState({ showFlyout: false, selectedConfig: undefined });
this.props.onConfigAddOrEdit(config);
}}
/>
)}
</div>
);
}
private getNameError = (name: string) => {
if (name && name !== '' && name.search(/^[a-zA-Z0-9-]+$/) === -1) {
return i18n.translate('xpack.beatsManagement.tag.tagName.validationErrorMessage', {
defaultMessage: 'Tag name must consist of letters, numbers, and dashes only',
});
} else {
return false;
}
};
private handleAssignmentActions = (action: AssignmentActionType) => {
switch (action) {
case AssignmentActionType.Delete:
const { selection } = this.state.tableRef.current.state;
if (this.props.onDetachBeat) {
this.props.onDetachBeat(selection.map((beat: any) => beat.id));
}
}
};
private updateTag = (key: keyof BeatTag, value?: any) =>
value !== undefined
? this.props.onTagChange(key, value)
: (e: any) => this.props.onTagChange(key, e.target ? e.target.value : e);
}

View file

@ -1,104 +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 { Container } from 'unstated';
import { CMBeat } from '../../common/domain_types';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import type { BeatsTagAssignment } from '../../server/lib/adapters/beats/adapter_types';
import { FrontendLibs } from './../lib/types';
interface ContainerState {
list: CMBeat[];
}
export class BeatsContainer extends Container<ContainerState> {
private query?: string;
constructor(private readonly libs: FrontendLibs) {
super();
this.state = {
list: [],
};
}
public getBeatWithToken = async (token: string) => {
const beat = await this.libs.beats.getBeatWithToken(token);
if (beat) {
this.setState({
list: [beat as CMBeat, ...this.state.list],
});
return beat as CMBeat;
}
return null;
};
public reload = async (kuery?: string) => {
if (kuery) {
this.query = kuery;
} else {
this.query = undefined;
}
const beats = await this.libs.beats.getAll(this.query);
this.setState({
list: beats,
});
};
public deactivate = async (beats: CMBeat[]) => {
for (const beat of beats) {
await this.libs.beats.update(beat.id, { active: false });
}
// because the compile code above has a very minor race condition, we wait,
// the max race condition time is really 10ms but doing 100 to be safe
setTimeout(async () => {
await this.reload(this.query);
}, 100);
};
public toggleTagAssignment = async (tagId: string, beats: CMBeat[]) => {
if (beats.some((beat) => beat.tags !== undefined && beat.tags.some((id) => id === tagId))) {
await this.removeTagsFromBeats(beats, tagId);
return 'removed';
}
await this.assignTagsToBeats(beats, tagId);
return 'added';
};
public removeTagsFromBeats = async (beats: CMBeat[] | string[], tagId: string) => {
if (!beats.length) {
return false;
}
const assignments = createBeatTagAssignments(beats, tagId);
await this.libs.beats.removeTagsFromBeats(assignments);
// ES responds incorrectly when we call too soon
setTimeout(async () => {
await this.reload(this.query);
}, 150);
};
public assignTagsToBeats = async (beats: CMBeat[] | string[], tagId: string) => {
if (!beats.length) {
return false;
}
const assignments = createBeatTagAssignments(beats, tagId);
await this.libs.beats.assignTagsToBeats(assignments);
// ES responds incorrectly when we call too soon
setTimeout(async () => {
await this.reload(this.query);
}, 150);
};
}
function createBeatTagAssignments(beats: CMBeat[] | string[], tagId: string): BeatsTagAssignment[] {
if (typeof beats[0] === 'string') {
return (beats as string[]).map((id) => ({ beatId: id, tag: tagId }));
} else {
return (beats as CMBeat[]).map(({ id }) => ({ beatId: id, tag: tagId }));
}
}

View file

@ -1,54 +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 { Container } from 'unstated';
import { BeatTag } from '../../common/domain_types';
import { FrontendLibs } from '../lib/types';
interface ContainerState {
list: BeatTag[];
}
export class TagsContainer extends Container<ContainerState> {
private query?: string;
constructor(private readonly libs: FrontendLibs) {
super();
this.state = {
list: [],
};
}
public reload = async (kuery?: string) => {
if (kuery) {
this.query = kuery;
} else {
this.query = undefined;
}
const tags = await this.libs.tags.getAll(this.query);
this.setState({
list: tags,
});
};
public delete = async (tags: BeatTag[]) => {
const tagIds = tags.map((tag: BeatTag) => tag.id);
const success = await this.libs.tags.delete(tagIds);
if (success) {
this.setState({
list: this.state.list.filter((tag) => tagIds.includes(tag.id)),
});
}
return success;
};
public upsertTag = async (tag: BeatTag) => {
const beatTag = await this.libs.tags.upsertTag(tag);
await this.reload();
return beatTag !== null;
};
}

View file

@ -1,89 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React from 'react';
import { QuerySuggestion } from '../../../../../src/plugins/data/public';
import { FrontendLibs } from '../lib/types';
import { RendererFunction } from '../utils/typed_react';
interface WithKueryAutocompletionLifecycleProps {
libs: FrontendLibs;
fieldPrefix?: string;
children: RendererFunction<{
isLoadingSuggestions: boolean;
loadSuggestions: (expression: string, cursorPosition: number, maxSuggestions?: number) => void;
suggestions: QuerySuggestion[];
}>;
}
interface WithKueryAutocompletionLifecycleState {
// lacking cancellation support in the autocompletion api,
// this is used to keep older, slower requests from clobbering newer ones
currentRequest: {
expression: string;
cursorPosition: number;
} | null;
suggestions: QuerySuggestion[];
}
export class WithKueryAutocompletion extends React.Component<
WithKueryAutocompletionLifecycleProps,
WithKueryAutocompletionLifecycleState
> {
public readonly state: WithKueryAutocompletionLifecycleState = {
currentRequest: null,
suggestions: [],
};
public render() {
const { currentRequest, suggestions } = this.state;
return this.props.children({
isLoadingSuggestions: currentRequest !== null,
loadSuggestions: this.loadSuggestions,
suggestions,
});
}
private loadSuggestions = async (
expression: string,
cursorPosition: number,
maxSuggestions?: number
) => {
this.setState({
currentRequest: {
expression,
cursorPosition,
},
suggestions: [],
});
let suggestions: any[] = [];
try {
suggestions = await this.props.libs.elasticsearch.getSuggestions(
expression,
cursorPosition,
this.props.fieldPrefix
);
} catch (e) {
suggestions = [];
}
this.setState((state) =>
state.currentRequest &&
state.currentRequest.expression !== expression &&
state.currentRequest.cursorPosition !== cursorPosition
? state // ignore this result, since a newer request is in flight
: {
...state,
currentRequest: null,
suggestions: maxSuggestions ? suggestions.slice(0, maxSuggestions) : suggestions,
}
);
};
}

View file

@ -1,101 +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 { parse, stringify } from 'query-string';
import React from 'react';
import { withRouter, RouteComponentProps } from 'react-router-dom';
import { FlatObject } from '../frontend_types';
import { RendererFunction } from '../utils/typed_react';
type StateCallback<T> = (previousState: T) => T;
export interface URLStateProps<URLState = object> {
goTo: (path: string) => void;
setUrlState: (
newState:
| Partial<FlatObject<URLState>>
| StateCallback<URLState>
| Promise<StateCallback<URLState>>
) => void;
urlState: URLState;
}
interface ComponentProps<URLState extends object> extends RouteComponentProps {
children: RendererFunction<URLStateProps<URLState>>;
}
export class WithURLStateComponent<URLState extends object> extends React.Component<
ComponentProps<URLState>
> {
private get URLState(): URLState {
// slice because parse does not account for the initial ? in the search string
return parse(decodeURIComponent(this.props.history.location.search).substring(1), {
sort: false,
}) as URLState;
}
private historyListener: (() => void) | null = null;
public componentWillUnmount() {
if (this.historyListener) {
this.historyListener();
}
}
public render() {
return this.props.children({
goTo: this.goTo,
setUrlState: this.setURLState,
urlState: this.URLState || {},
});
}
private setURLState = async (
state:
| Partial<FlatObject<URLState>>
| StateCallback<URLState>
| Promise<StateCallback<URLState>>
) => {
let newState;
const pastState = this.URLState;
if (typeof state === 'function') {
newState = await state(pastState);
} else {
newState = state;
}
const search: string = stringify(
{
...pastState,
...newState,
},
{ sort: false }
);
const newLocation = {
...this.props.history.location,
search,
};
this.props.history.replace(newLocation);
this.forceUpdate();
};
private goTo = (path: string) => {
this.props.history.push({
pathname: path,
search: this.props.history.location.search,
});
};
}
export const WithURLState = withRouter(WithURLStateComponent);
export function withUrlState<OP>(UnwrappedComponent: React.ComponentType<OP & URLStateProps>) {
return (origProps: OP) => (
<WithURLState>
{(URLProps: URLStateProps) => <UnwrappedComponent {...URLProps} {...origProps} />}
</WithURLState>
);
}

View file

@ -1,36 +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 { RouteComponentProps } from 'react-router-dom';
import { BeatsContainer } from './containers/beats';
import { TagsContainer } from './containers/tags';
import { URLStateProps } from './containers/with_url_state';
import { FrontendLibs } from './lib/types';
export type FlatObject<T> = { [Key in keyof T]: string };
export interface AppURLState {
beatsKBar?: string;
tagsKBar?: string;
enrollmentToken?: string;
createdTag?: string;
}
export interface RouteConfig {
path: string;
component: React.ComponentType<any>;
routes?: RouteConfig[];
}
export interface AppPageProps extends URLStateProps<AppURLState>, RouteComponentProps<any> {
libs: FrontendLibs;
containers: {
beats: BeatsContainer;
tags: TagsContainer;
};
routes?: RouteConfig[];
}

View file

@ -1,40 +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 { CoreSetup, Plugin, PluginInitializerContext } from '../../../../src/core/public';
import { ManagementSetup } from '../../../../src/plugins/management/public';
import { SecurityPluginSetup } from '../../security/public';
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
import { LicensingPluginSetup } from '../../licensing/public';
import { bootstrap } from './bootstrap';
import { BeatsManagementConfigType } from '../common';
interface SetupDeps {
management: ManagementSetup;
licensing: LicensingPluginSetup;
security?: SecurityPluginSetup;
}
interface StartDeps {
data: DataPublicPluginStart;
}
class BeatsManagementPlugin implements Plugin<void, void, SetupDeps, StartDeps> {
constructor(private readonly initContext: PluginInitializerContext<BeatsManagementConfigType>) {}
public setup(core: CoreSetup<StartDeps>, plugins: SetupDeps) {
const config = this.initContext.config.get();
bootstrap(core, plugins, config, this.initContext.env.packageInfo.version);
}
public start() {}
public stop() {}
}
export const plugin = (init: PluginInitializerContext) => new BeatsManagementPlugin(init);

View file

@ -1,26 +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 { CoreStart } from '../../../../src/core/public';
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
import { ManagementAppMountParams } from '../../../../src/plugins/management/public';
export const services = {
I18nContext: (null as any) as CoreStart['i18n']['Context'],
setBreadcrumbs: (null as any) as ManagementAppMountParams['setBreadcrumbs'],
dataStart: (null as any) as DataPublicPluginStart,
};
export const setServices = (
core: CoreStart,
plugins: { data: DataPublicPluginStart },
params: ManagementAppMountParams
) => {
services.I18nContext = core.i18n.Context;
services.setBreadcrumbs = params.setBreadcrumbs;
services.dataStart = plugins.data;
};

View file

@ -1,38 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { CMBeat } from '../../../../common/domain_types';
import { ReturnTypeBulkAction } from '../../../../common/return_types';
export interface CMBeatsAdapter {
get(id: string): Promise<CMBeat | null>;
update(id: string, beatData: Partial<CMBeat>): Promise<boolean>;
getBeatsWithTag(tagId: string): Promise<CMBeat[]>;
getAll(ESQuery?: any): Promise<CMBeat[]>;
removeTagsFromBeats(removals: BeatsTagAssignment[]): Promise<ReturnTypeBulkAction['results']>;
assignTagsToBeats(assignments: BeatsTagAssignment[]): Promise<ReturnTypeBulkAction['results']>;
getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null>;
}
export interface BeatsTagAssignment {
beatId: string;
tag: string;
idxInRequest?: number;
}
interface BeatsReturnedTagAssignment {
status: number | null;
result?: string;
}
export interface CMAssignmentReturn {
assignments: BeatsReturnedTagAssignment[];
}
export interface BeatsRemovalReturn {
removals: BeatsReturnedTagAssignment[];
}

View file

@ -1,109 +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 { omit } from 'lodash';
import { CMBeat } from '../../../../common/domain_types';
import { ReturnTypeBulkAction } from '../../../../common/return_types';
import { BeatsTagAssignment, CMBeatsAdapter } from './adapter_types';
export class MemoryBeatsAdapter implements CMBeatsAdapter {
private beatsDB: CMBeat[];
constructor(beatsDB: CMBeat[]) {
this.beatsDB = beatsDB;
}
public async get(id: string) {
return this.beatsDB.find((beat) => beat.id === id) || null;
}
public async update(id: string, beatData: Partial<CMBeat>): Promise<boolean> {
const index = this.beatsDB.findIndex((beat) => beat.id === id);
if (index === -1) {
return false;
}
this.beatsDB[index] = { ...this.beatsDB[index], ...beatData };
return true;
}
public async getAll() {
return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[];
}
public async getBeatsWithTag(tagId: string): Promise<CMBeat[]> {
return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[];
}
public async getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null> {
return this.beatsDB.map((beat: any) => omit(beat, ['access_token']))[0] as CMBeat | null;
}
public async removeTagsFromBeats(
removals: BeatsTagAssignment[]
): Promise<ReturnTypeBulkAction['results']> {
const beatIds = removals.map((r) => r.beatId);
const response = this.beatsDB
.filter((beat) => beatIds.includes(beat.id))
.map((beat) => {
const tagData = removals.find((r) => r.beatId === beat.id);
if (tagData) {
if (beat.tags) {
beat.tags = beat.tags.filter((tag) => tag !== tagData.tag);
}
}
const removalsForBeat = removals.filter((r) => r.beatId === beat.id);
if (removalsForBeat.length) {
removalsForBeat.forEach((assignment: BeatsTagAssignment) => {
if (beat.tags) {
beat.tags = beat.tags.filter((tag) => tag !== assignment.tag);
}
});
}
return beat;
});
return response.map((item: CMBeat, resultIdx: number) => ({
idxInRequest: removals[resultIdx].idxInRequest,
result: 'updated',
status: 200,
})) as any;
}
public async assignTagsToBeats(
assignments: BeatsTagAssignment[]
): Promise<ReturnTypeBulkAction['results']> {
const beatIds = assignments.map((r) => r.beatId);
this.beatsDB
.filter((beat) => beatIds.includes(beat.id))
.map((beat) => {
// get tags that need to be assigned to this beat
const tags = assignments
.filter((a) => a.beatId === beat.id)
.map((t: BeatsTagAssignment) => t.tag);
if (tags.length > 0) {
if (!beat.tags) {
beat.tags = [];
}
const nonExistingTags = tags.filter((t: string) => beat.tags && !beat.tags.includes(t));
if (nonExistingTags.length > 0) {
beat.tags = beat.tags.concat(nonExistingTags);
}
}
return beat;
});
return assignments.map<any>((item: BeatsTagAssignment, resultIdx: number) => ({
idxInRequest: assignments[resultIdx].idxInRequest,
result: 'updated',
status: 200,
}));
}
}

View file

@ -1,80 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { CMBeat } from '../../../../common/domain_types';
import {
ReturnTypeBulkAction,
ReturnTypeGet,
ReturnTypeList,
ReturnTypeUpdate,
} from '../../../../common/return_types';
import { RestAPIAdapter } from '../rest_api/adapter_types';
import { BeatsTagAssignment, CMBeatsAdapter } from './adapter_types';
export class RestBeatsAdapter implements CMBeatsAdapter {
constructor(private readonly REST: RestAPIAdapter) {}
public async get(id: string): Promise<CMBeat | null> {
try {
return (await this.REST.get<ReturnTypeGet<CMBeat>>(`/api/beats/agent/${id}`)).item;
} catch (e) {
return null;
}
}
public async getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null> {
try {
return (
await this.REST.get<ReturnTypeGet<CMBeat>>(`/api/beats/agent/unknown/${enrollmentToken}`)
).item;
} catch (e) {
return null;
}
}
public async getAll(ESQuery?: string): Promise<CMBeat[]> {
try {
return (await this.REST.get<ReturnTypeList<CMBeat>>('/api/beats/agents/all', { ESQuery }))
.list;
} catch (e) {
return [];
}
}
public async getBeatsWithTag(tagId: string): Promise<CMBeat[]> {
try {
return (await this.REST.get<ReturnTypeList<CMBeat>>(`/api/beats/agents/tag/${tagId}`)).list;
} catch (e) {
return [];
}
}
public async update(id: string, beatData: Partial<CMBeat>): Promise<boolean> {
await this.REST.put<ReturnTypeUpdate<CMBeat>>(`/api/beats/agent/${id}`, beatData);
return true;
}
public async removeTagsFromBeats(
removals: BeatsTagAssignment[]
): Promise<ReturnTypeBulkAction['results']> {
return (
await this.REST.post<ReturnTypeBulkAction>(`/api/beats/agents_tags/removals`, {
removals,
})
).results;
}
public async assignTagsToBeats(
assignments: BeatsTagAssignment[]
): Promise<ReturnTypeBulkAction['results']> {
return (
await this.REST.post<ReturnTypeBulkAction>(`/api/beats/agents_tags/assignments`, {
assignments,
})
).results;
}
}

View file

@ -1,15 +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 { ConfigurationBlock } from '../../../../common/domain_types';
import { ReturnTypeBulkUpsert, ReturnTypeList } from '../../../../common/return_types';
export interface FrontendConfigBlocksAdapter {
upsert(blocks: ConfigurationBlock[]): Promise<ReturnTypeBulkUpsert>;
getForTags(tagIds: string[], page: number): Promise<ReturnTypeList<ConfigurationBlock>>;
delete(id: string): Promise<boolean>;
}

View file

@ -1,42 +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 { ConfigurationBlock } from '../../../../common/domain_types';
import { ReturnTypeBulkUpsert, ReturnTypeList } from '../../../../common/return_types';
import { FrontendConfigBlocksAdapter } from './adapter_types';
export class MemoryConfigBlocksAdapter implements FrontendConfigBlocksAdapter {
constructor(private db: ConfigurationBlock[]) {}
public async upsert(blocks: ConfigurationBlock[]): Promise<ReturnTypeBulkUpsert> {
this.db = this.db.concat(blocks);
return {
success: true,
results: blocks.map(() => ({
success: true,
action: 'created',
})),
} as ReturnTypeBulkUpsert;
}
public async getForTags(tagIds: string[]): Promise<ReturnTypeList<ConfigurationBlock>> {
return {
success: true,
list: this.db.filter((block) => tagIds.includes(block.tag)),
page: 0,
total: this.db.filter((block) => tagIds.includes(block.tag)).length,
};
}
public async delete(id: string): Promise<boolean> {
this.db = this.db.reduce((newDB: ConfigurationBlock[], block) => {
if (block.id !== id) {
newDB.push(block);
}
return newDB;
}, []);
return !!this.db.find((block) => block.id === id);
}
}

View file

@ -1,36 +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 { ConfigurationBlock } from '../../../../common/domain_types';
import {
ReturnTypeBulkDelete,
ReturnTypeBulkUpsert,
ReturnTypeList,
} from '../../../../common/return_types';
import { RestAPIAdapter } from '../rest_api/adapter_types';
import { FrontendConfigBlocksAdapter } from './adapter_types';
export class RestConfigBlocksAdapter implements FrontendConfigBlocksAdapter {
constructor(private readonly REST: RestAPIAdapter) {}
public async upsert(blocks: ConfigurationBlock[]) {
const result = await this.REST.put<ReturnTypeBulkUpsert>(`/api/beats/configurations`, blocks);
return result;
}
public async getForTags(
tagIds: string[],
page: number
): Promise<ReturnTypeList<ConfigurationBlock>> {
return await this.REST.get<ReturnTypeList<ConfigurationBlock>>(
`/api/beats/configurations/${tagIds.join(',')}/${page}`
);
}
public async delete(id: string): Promise<boolean> {
return (await this.REST.delete<ReturnTypeBulkDelete>(`/api/beats/configurations/${id}`))
.success;
}
}

View file

@ -1,14 +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 { QuerySuggestion } from '../../../../../../../src/plugins/data/public';
export interface ElasticsearchAdapter {
convertKueryToEsQuery: (kuery: string) => Promise<string>;
getSuggestions: (kuery: string, selectionStart: any) => Promise<QuerySuggestion[]>;
isKueryValid(kuery: string): boolean;
}

View file

@ -1,27 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { QuerySuggestion } from '../../../../../../../src/plugins/data/public';
import { ElasticsearchAdapter } from './adapter_types';
export class MemoryElasticsearchAdapter implements ElasticsearchAdapter {
constructor(
private readonly mockIsKueryValid: (kuery: string) => boolean,
private readonly mockKueryToEsQuery: (kuery: string) => string,
private readonly suggestions: QuerySuggestion[]
) {}
public isKueryValid(kuery: string): boolean {
return this.mockIsKueryValid(kuery);
}
public async convertKueryToEsQuery(kuery: string): Promise<string> {
return this.mockKueryToEsQuery(kuery);
}
public async getSuggestions(kuery: string, selectionStart: any): Promise<QuerySuggestion[]> {
return this.suggestions;
}
}

View file

@ -1,66 +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 { isEmpty } from 'lodash';
import { ElasticsearchAdapter } from './adapter_types';
import { QuerySuggestion, esKuery } from '../../../../../../../src/plugins/data/public';
import { services } from '../../../kbn_services';
export class RestElasticsearchAdapter implements ElasticsearchAdapter {
private cachedIndexPattern: any = null;
constructor(private readonly indexPatternName: string) {}
public isKueryValid(kuery: string): boolean {
try {
esKuery.fromKueryExpression(kuery);
} catch (err) {
return false;
}
return true;
}
public async convertKueryToEsQuery(kuery: string): Promise<string> {
if (!this.isKueryValid(kuery)) {
return '';
}
const ast = esKuery.fromKueryExpression(kuery);
const indexPattern = await this.getIndexPattern();
return JSON.stringify(esKuery.toElasticsearchQuery(ast, indexPattern));
}
public async getSuggestions(kuery: string, selectionStart: any): Promise<QuerySuggestion[]> {
const indexPattern = await this.getIndexPattern();
return (
(await services.dataStart.autocomplete.getQuerySuggestions({
language: 'kuery',
indexPatterns: [indexPattern],
boolFilter: [],
query: kuery || '',
selectionStart,
selectionEnd: selectionStart,
})) || []
);
}
private async getIndexPattern() {
if (this.cachedIndexPattern) {
return this.cachedIndexPattern;
}
const res = await services.dataStart.indexPatterns.getFieldsForWildcard({
pattern: this.indexPatternName,
});
if (isEmpty(res.fields)) {
return;
}
this.cachedIndexPattern = {
fields: res.fields,
title: `${this.indexPatternName}`,
};
return this.cachedIndexPattern;
}
}

View file

@ -1,54 +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.
*/
/* eslint-disable @typescript-eslint/no-empty-interface */
import * as t from 'io-ts';
import { LICENSES } from '../../../../common/constants/security';
import { RegisterManagementAppArgs } from '../../../../../../../src/plugins/management/public';
export interface FrameworkAdapter {
// Instance vars
info: FrameworkInfo;
version: string;
currentUser: FrameworkUser;
// Methods
waitUntilFrameworkReady(): Promise<void>;
registerManagementUI(mount: RegisterManagementAppArgs['mount']): void;
}
export const RuntimeFrameworkInfo = t.type({
basePath: t.string,
license: t.type({
type: t.keyof(Object.fromEntries(LICENSES.map((s) => [s, null])) as Record<string, null>),
expired: t.boolean,
expiry_date_in_millis: t.number,
}),
security: t.type({
enabled: t.boolean,
available: t.boolean,
}),
settings: t.type({
encryptionKey: t.string,
enrollmentTokensTtlInSeconds: t.number,
defaultUserRoles: t.array(t.string),
}),
});
export interface FrameworkInfo extends t.TypeOf<typeof RuntimeFrameworkInfo> {}
export const RuntimeFrameworkUser = t.interface(
{
username: t.string,
roles: t.readonlyArray(t.string),
full_name: t.union([t.null, t.string]),
email: t.union([t.null, t.string]),
enabled: t.boolean,
},
'FrameworkUser'
);
export interface FrameworkUser extends t.TypeOf<typeof RuntimeFrameworkUser> {}

View file

@ -1,160 +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.
*/
/* eslint-disable max-classes-per-file */
import { IScope } from 'angular';
import { PathReporter } from 'io-ts/lib/PathReporter';
import { isLeft } from 'fp-ts/lib/Either';
import { first } from 'rxjs/operators';
import { i18n } from '@kbn/i18n';
import { MANAGEMENT_SECTION } from '../../../../common/constants';
import { SecurityPluginSetup } from '../../../../../security/public';
import { BufferedKibanaServiceCall, KibanaAdapterServiceRefs, KibanaUIConfig } from '../../types';
import {
FrameworkAdapter,
FrameworkInfo,
FrameworkUser,
RuntimeFrameworkInfo,
RuntimeFrameworkUser,
} from './adapter_types';
import {
ManagementSetup,
RegisterManagementAppArgs,
} from '../../../../../../../src/plugins/management/public';
import { LicensingPluginSetup } from '../../../../../licensing/public';
import { BeatsManagementConfigType } from '../../../../common';
export class KibanaFrameworkAdapter implements FrameworkAdapter {
public get info() {
if (this.xpackInfo) {
return this.xpackInfo;
} else {
throw new Error('framework adapter must have init called before anything else');
}
}
public get currentUser() {
return this.shieldUser!;
}
private xpackInfo: FrameworkInfo | null = null;
private adapterService: KibanaAdapterServiceProvider;
private shieldUser: FrameworkUser | null = null;
constructor(
private readonly PLUGIN_ID: string,
private readonly management: ManagementSetup,
private readonly getBasePath: () => string,
private readonly licensing: LicensingPluginSetup,
private readonly securitySetup: SecurityPluginSetup | undefined,
private readonly config: BeatsManagementConfigType,
public readonly version: string
) {
this.adapterService = new KibanaAdapterServiceProvider();
}
public setUISettings = (key: string, value: any) => {
this.adapterService.callOrBuffer(({ config }) => {
config.set(key, value);
});
};
public async waitUntilFrameworkReady(): Promise<void> {
const license = await this.licensing.license$.pipe(first()).toPromise();
let xpackInfoUnpacked: FrameworkInfo;
try {
xpackInfoUnpacked = {
basePath: this.getBasePath(),
license: {
type: license.type ?? 'oss',
expired: !license.isActive,
expiry_date_in_millis: license.expiryDateInMillis ?? -1,
},
security: {
enabled: license.getFeature('security').isEnabled,
available: license.getFeature('security').isAvailable,
},
settings: this.config,
};
} catch (e) {
throw new Error(`Unexpected data structure from xpackInfoService, ${JSON.stringify(e)}`);
}
const assertData = RuntimeFrameworkInfo.decode(xpackInfoUnpacked);
if (isLeft(assertData)) {
throw new Error(
`Error parsing xpack info in ${this.PLUGIN_ID}, ${PathReporter.report(assertData)[0]}`
);
}
this.xpackInfo = xpackInfoUnpacked;
try {
this.shieldUser = (await this.securitySetup?.authc.getCurrentUser()) || null;
const assertUser = RuntimeFrameworkUser.decode(this.shieldUser);
if (isLeft(assertUser)) {
throw new Error(
`Error parsing user info in ${this.PLUGIN_ID}, ${PathReporter.report(assertUser)[0]}`
);
}
} catch (e) {
this.shieldUser = null;
}
}
public registerManagementUI(mount: RegisterManagementAppArgs['mount']) {
const section = this.management.sections.section.ingest;
section.registerApp({
id: MANAGEMENT_SECTION,
title: i18n.translate('xpack.beatsManagement.centralManagementLinkLabel', {
defaultMessage: 'Beats Central Management',
}),
order: 2,
mount,
});
}
}
class KibanaAdapterServiceProvider {
public serviceRefs: KibanaAdapterServiceRefs | null = null;
public bufferedCalls: Array<BufferedKibanaServiceCall<KibanaAdapterServiceRefs>> = [];
public $get($rootScope: IScope, config: KibanaUIConfig) {
this.serviceRefs = {
config,
rootScope: $rootScope,
};
this.applyBufferedCalls(this.bufferedCalls);
return this;
}
public callOrBuffer(serviceCall: (serviceRefs: KibanaAdapterServiceRefs) => void) {
if (this.serviceRefs !== null) {
this.applyBufferedCalls([serviceCall]);
} else {
this.bufferedCalls.push(serviceCall);
}
}
public applyBufferedCalls(
bufferedCalls: Array<BufferedKibanaServiceCall<KibanaAdapterServiceRefs>>
) {
if (!this.serviceRefs) {
return;
}
this.serviceRefs.rootScope.$apply(() => {
bufferedCalls.forEach((serviceCall) => {
if (!this.serviceRefs) {
return;
}
return serviceCall(this.serviceRefs);
});
});
}
}

Some files were not shown because too many files have changed in this diff Show more