diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 5be4696f40b3e..ae48f0931f67e 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -12,7 +12,7 @@ import advancedSettingsObj from './advanced_settings.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/alerting.json b/api_docs/alerting.json index 147fecd20dff8..2f45b57616f32 100644 --- a/api_docs/alerting.json +++ b/api_docs/alerting.json @@ -289,7 +289,7 @@ "description": [], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 76 + "lineNumber": 78 }, "deprecated": false, "children": [ @@ -305,7 +305,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 86 + "lineNumber": 88 }, "deprecated": false, "children": [ @@ -314,14 +314,14 @@ "id": "def-server.AlertingAuthorization.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n ruleTypeRegistry,\n request,\n authorization,\n features,\n auditLogger,\n getSpace,\n exemptConsumerIds,\n }", + "label": "{\n ruleTypeRegistry,\n request,\n authorization,\n features,\n auditLogger,\n getSpace,\n getSpaceId,\n exemptConsumerIds,\n }", "description": [], "signature": [ "ConstructorOptions" ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 86 + "lineNumber": 88 }, "deprecated": false, "isRequired": true @@ -337,11 +337,11 @@ "label": "getSpaceId", "description": [], "signature": [ - "() => Promise" + "() => string | undefined" ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 144 + "lineNumber": 147 }, "deprecated": false, "children": [], @@ -385,7 +385,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 152 + "lineNumber": 155 }, "deprecated": false, "children": [ @@ -401,7 +401,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 153 + "lineNumber": 156 }, "deprecated": false, "isRequired": true @@ -434,7 +434,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 154 + "lineNumber": 157 }, "deprecated": false, "isRequired": true @@ -457,7 +457,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 155 + "lineNumber": 158 }, "deprecated": false, "isRequired": true @@ -479,7 +479,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 169 + "lineNumber": 172 }, "deprecated": false, "children": [ @@ -495,7 +495,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 169 + "lineNumber": 172 }, "deprecated": false, "isRequired": true @@ -529,7 +529,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 274 + "lineNumber": 277 }, "deprecated": false, "children": [ @@ -551,7 +551,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 275 + "lineNumber": 278 }, "deprecated": false, "isRequired": true @@ -568,7 +568,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 276 + "lineNumber": 279 }, "deprecated": false, "isRequired": true @@ -616,7 +616,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 354 + "lineNumber": 359 }, "deprecated": false, "children": [ @@ -634,7 +634,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 355 + "lineNumber": 360 }, "deprecated": false, "isRequired": true @@ -667,7 +667,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 356 + "lineNumber": 361 }, "deprecated": false, "isRequired": true @@ -690,7 +690,7 @@ ], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 357 + "lineNumber": 362 }, "deprecated": false, "isRequired": true @@ -2006,7 +2006,7 @@ "description": [], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 24 + "lineNumber": 25 }, "deprecated": false, "initialIsOpen": false @@ -2034,7 +2034,7 @@ "description": [], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 29 + "lineNumber": 30 }, "deprecated": false, "initialIsOpen": false @@ -2048,7 +2048,7 @@ "description": [], "source": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false, "initialIsOpen": false diff --git a/api_docs/apm.json b/api_docs/apm.json index 6dfd3dc0f42fd..daf6170ffefa9 100644 --- a/api_docs/apm.json +++ b/api_docs/apm.json @@ -2207,7 +2207,11 @@ "Type", "; end: ", "Type", - "; }>]>; }>, ", + "; }>, ", + "PartialC", + "<{ offset: ", + "StringC", + "; }>]>; }>, ", { "pluginId": "apm", "scope": "server", @@ -2215,9 +2219,21 @@ "section": "def-server.APMRouteHandlerResources", "text": "APMRouteHandlerResources" }, - ", { serviceDependencies: ", - "ServiceDependencyItem", - "[]; }, ", + ", { serviceDependencies: { currentStats: { latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }) | null; location: ", + "Node", + "; }[]; }, ", "APMRouteCreateOptions", ">; } & { \"GET /api/apm/services/{serviceName}/profiling/timeline\": ", "ServerRoute", @@ -3753,6 +3769,118 @@ }, "; }, ", "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/backends/top_backends\": ", + "ServerRoute", + "<\"GET /api/apm/backends/top_backends\", ", + "IntersectionC", + "<[", + "TypeC", + "<{ query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "TypeC", + "<{ numBuckets: ", + "Type", + "; }>]>; }>, ", + "PartialC", + "<{ query: ", + "IntersectionC", + "<[", + "PartialC", + "<{ environment: ", + "StringC", + "; }>, ", + "PartialC", + "<{ offset: ", + "StringC", + "; }>]>; }>]>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { backends: { currentStats: { latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }) | null; location: ", + "Node", + "; }[]; }, ", + "APMRouteCreateOptions", + ">; } & { \"GET /api/apm/backends/{backendName}/upstream_services\": ", + "ServerRoute", + "<\"GET /api/apm/backends/{backendName}/upstream_services\", ", + "IntersectionC", + "<[", + "TypeC", + "<{ path: ", + "TypeC", + "<{ backendName: ", + "StringC", + "; }>; query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "TypeC", + "<{ numBuckets: ", + "Type", + "; }>]>; }>, ", + "PartialC", + "<{ query: ", + "IntersectionC", + "<[", + "PartialC", + "<{ environment: ", + "StringC", + "; }>, ", + "PartialC", + "<{ offset: ", + "StringC", + "; }>]>; }>]>, ", + { + "pluginId": "apm", + "scope": "server", + "docId": "kibApmPluginApi", + "section": "def-server.APMRouteHandlerResources", + "text": "APMRouteHandlerResources" + }, + ", { services: { currentStats: { latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }; previousStats: ({ latency: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; throughput: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; errorRate: { value: number | null; timeseries: ", + "Coordinate", + "[]; }; } & { impact: number; }) | null; location: ", + "Node", + "; }[]; }, ", + "APMRouteCreateOptions", ">; } & { \"GET /api/apm/backends/{backendName}/metadata\": ", "ServerRoute", "<\"GET /api/apm/backends/{backendName}/metadata\", ", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index f59432fcfd1c2..b2aabfd4b4214 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -12,7 +12,7 @@ import apmObj from './apm.json'; - +Contact APM UI for questions regarding this plugin. **Code health stats** diff --git a/api_docs/apm_oss.mdx b/api_docs/apm_oss.mdx index 21ea33f8e0a80..76ae19ec8f2cf 100644 --- a/api_docs/apm_oss.mdx +++ b/api_docs/apm_oss.mdx @@ -12,7 +12,7 @@ import apmOssObj from './apm_oss.json'; - +Contact APM UI for questions regarding this plugin. **Code health stats** diff --git a/api_docs/cases.json b/api_docs/cases.json index c5b74586e8442..9fde1aebaa8f4 100644 --- a/api_docs/cases.json +++ b/api_docs/cases.json @@ -673,7 +673,7 @@ ], "source": { "path": "x-pack/plugins/cases/public/components/configure_cases/index.tsx", - "lineNumber": 51 + "lineNumber": 52 }, "deprecated": false, "children": [ @@ -686,7 +686,7 @@ "description": [], "source": { "path": "x-pack/plugins/cases/public/components/configure_cases/index.tsx", - "lineNumber": 52 + "lineNumber": 53 }, "deprecated": false } @@ -1836,6 +1836,52 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.getAllConnectorsUrl", + "type": "Function", + "tags": [], + "label": "getAllConnectorsUrl", + "description": [ + "\n" + ], + "signature": [ + "() => string" + ], + "source": { + "path": "x-pack/plugins/cases/common/utils/connectors_api.ts", + "lineNumber": 38 + }, + "deprecated": false, + "children": [], + "returnComment": [ + "All connectors endpoint" + ], + "initialIsOpen": false + }, + { + "parentPluginId": "cases", + "id": "def-common.getAllConnectorTypesUrl", + "type": "Function", + "tags": [], + "label": "getAllConnectorTypesUrl", + "description": [ + "\n" + ], + "signature": [ + "() => string" + ], + "source": { + "path": "x-pack/plugins/cases/common/utils/connectors_api.ts", + "lineNumber": 18 + }, + "deprecated": false, + "children": [], + "returnComment": [ + "Connector types endpoint" + ], + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.getCaseCommentDetailsUrl", @@ -2129,6 +2175,70 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.getCreateConnectorUrl", + "type": "Function", + "tags": [], + "label": "getCreateConnectorUrl", + "description": [ + "\n" + ], + "signature": [ + "() => string" + ], + "source": { + "path": "x-pack/plugins/cases/common/utils/connectors_api.ts", + "lineNumber": 32 + }, + "deprecated": false, + "children": [], + "returnComment": [ + "Create connector endpoint" + ], + "initialIsOpen": false + }, + { + "parentPluginId": "cases", + "id": "def-common.getExecuteConnectorUrl", + "type": "Function", + "tags": [], + "label": "getExecuteConnectorUrl", + "description": [ + "\n" + ], + "signature": [ + "(connectorId: string) => string" + ], + "source": { + "path": "x-pack/plugins/cases/common/utils/connectors_api.ts", + "lineNumber": 25 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "cases", + "id": "def-common.getExecuteConnectorUrl.$1", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "signature": [ + "string" + ], + "source": { + "path": "x-pack/plugins/cases/common/utils/connectors_api.ts", + "lineNumber": 25 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "Execute connector endpoint" + ], + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.getSubCaseDetailsUrl", @@ -4748,9 +4858,6 @@ "tags": [], "label": "ACTION_TYPES_URL", "description": [], - "signature": [ - "\"/api/actions/connector_types\"" - ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", "lineNumber": 63 @@ -7891,6 +7998,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.CONNECTORS_URL", + "type": "string", + "tags": [], + "label": "CONNECTORS_URL", + "description": [], + "source": { + "path": "x-pack/plugins/cases/common/constants.ts", + "lineNumber": 64 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.ConnectorServiceNowITSMTypeFields", @@ -8103,7 +8224,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 89 + "lineNumber": 91 }, "deprecated": false, "initialIsOpen": false @@ -8515,7 +8636,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 75 + "lineNumber": 77 }, "deprecated": false, "initialIsOpen": false @@ -8532,7 +8653,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 96 + "lineNumber": 98 }, "deprecated": false, "initialIsOpen": false @@ -8549,7 +8670,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 95 + "lineNumber": 97 }, "deprecated": false, "initialIsOpen": false @@ -8566,7 +8687,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 76 + "lineNumber": 78 }, "deprecated": false, "initialIsOpen": false @@ -8585,7 +8706,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 102 + "lineNumber": 104 }, "deprecated": false, "initialIsOpen": false @@ -8676,7 +8797,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 84 + "lineNumber": 86 }, "deprecated": false, "initialIsOpen": false @@ -9177,7 +9298,7 @@ ], "source": { "path": "x-pack/plugins/cases/common/constants.ts", - "lineNumber": 64 + "lineNumber": 66 }, "deprecated": false, "initialIsOpen": false @@ -25001,4 +25122,4 @@ } ] } -} +} \ No newline at end of file diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 3e024102fd629..4358b94d4bf6f 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -18,7 +18,7 @@ Contact [Security Solution Threat Hunting](https://github.com/orgs/elastic/teams | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 445 | 0 | 407 | 14 | +| 451 | 0 | 409 | 14 | ## Client diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 16f129214ca95..5a8c7838f7d9a 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -12,7 +12,7 @@ import chartsObj from './charts.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/core.json b/api_docs/core.json index 7a8ea01d393d1..8e3dd5bc30728 100644 --- a/api_docs/core.json +++ b/api_docs/core.json @@ -1794,7 +1794,7 @@ "description": [], "source": { "path": "src/core/public/doc_links/doc_links_service.ts", - "lineNumber": 443 + "lineNumber": 444 }, "deprecated": false, "children": [ @@ -1807,7 +1807,7 @@ "description": [], "source": { "path": "src/core/public/doc_links/doc_links_service.ts", - "lineNumber": 444 + "lineNumber": 445 }, "deprecated": false }, @@ -1820,7 +1820,7 @@ "description": [], "source": { "path": "src/core/public/doc_links/doc_links_service.ts", - "lineNumber": 445 + "lineNumber": 446 }, "deprecated": false }, @@ -1832,11 +1832,11 @@ "label": "links", "description": [], "signature": [ - "{ readonly settings: string; readonly canvas: { readonly guide: string; }; readonly dashboard: { readonly guide: string; readonly drilldowns: string; readonly drilldownsTriggerPicker: string; readonly urlDrilldownTemplateSyntax: string; readonly urlDrilldownVariables: string; }; readonly discover: Record; readonly filebeat: { readonly base: string; readonly installation: string; readonly configuration: string; readonly elasticsearchOutput: string; readonly elasticsearchModule: string; readonly startup: string; readonly exportedFields: string; readonly suricataModule: string; readonly zeekModule: string; }; readonly auditbeat: { readonly base: string; readonly auditdModule: string; readonly systemModule: string; }; readonly metricbeat: { readonly base: string; readonly configure: string; readonly httpEndpoint: string; readonly install: string; readonly start: string; }; readonly enterpriseSearch: { readonly base: string; readonly appSearchBase: string; readonly workplaceSearchBase: string; }; readonly heartbeat: { readonly base: string; }; readonly libbeat: { readonly getStarted: string; }; readonly logstash: { readonly base: string; }; readonly functionbeat: { readonly base: string; }; readonly winlogbeat: { readonly base: string; }; readonly aggs: { readonly composite: string; readonly composite_missing_bucket: string; readonly date_histogram: string; readonly date_range: string; readonly date_format_pattern: string; readonly filter: string; readonly filters: string; readonly geohash_grid: string; readonly histogram: string; readonly ip_range: string; readonly range: string; readonly significant_terms: string; readonly terms: string; readonly avg: string; readonly avg_bucket: string; readonly max_bucket: string; readonly min_bucket: string; readonly sum_bucket: string; readonly cardinality: string; readonly count: string; readonly cumulative_sum: string; readonly derivative: string; readonly geo_bounds: string; readonly geo_centroid: string; readonly max: string; readonly median: string; readonly min: string; readonly moving_avg: string; readonly percentile_ranks: string; readonly serial_diff: string; readonly std_dev: string; readonly sum: string; readonly top_hits: string; }; readonly runtimeFields: { readonly overview: string; readonly mapping: string; }; readonly scriptedFields: { readonly scriptFields: string; readonly scriptAggs: string; readonly painless: string; readonly painlessApi: string; readonly painlessLangSpec: string; readonly painlessSyntax: string; readonly painlessWalkthrough: string; readonly luceneExpressions: string; }; readonly search: { readonly sessions: string; readonly sessionLimits: string; }; readonly indexPatterns: { readonly introduction: string; readonly fieldFormattersNumber: string; readonly fieldFormattersString: string; readonly runtimeFields: string; }; readonly addData: string; readonly kibana: string; readonly upgradeAssistant: string; readonly rollupJobs: string; readonly elasticsearch: Record; readonly siem: { readonly guide: string; readonly gettingStarted: string; readonly ml: string; readonly ruleChangeLog: string; readonly detectionsReq: string; readonly networkMap: string; }; readonly query: { readonly eql: string; readonly kueryQuerySyntax: string; readonly luceneQuerySyntax: string; readonly percolate: string; readonly queryDsl: string; }; readonly date: { readonly dateMath: string; readonly dateMathIndexNames: string; }; readonly management: Record; readonly ml: Record; readonly transforms: Record; readonly visualize: Record; readonly apis: Readonly<{ bulkIndexAlias: string; byteSizeUnits: string; createAutoFollowPattern: string; createFollower: string; createIndex: string; createSnapshotLifecyclePolicy: string; createRoleMapping: string; createRoleMappingTemplates: string; createRollupJobsRequest: string; createApiKey: string; createPipeline: string; createTransformRequest: string; cronExpressions: string; executeWatchActionModes: string; indexExists: string; openIndex: string; putComponentTemplate: string; painlessExecute: string; painlessExecuteAPIContexts: string; putComponentTemplateMetadata: string; putSnapshotLifecyclePolicy: string; putIndexTemplateV1: string; putWatch: string; simulatePipeline: string; timeUnits: string; updateTransform: string; }>; readonly observability: Record; readonly alerting: Record; readonly maps: Record; readonly monitoring: Record; readonly security: Readonly<{ apiKeyServiceSettings: string; clusterPrivileges: string; elasticsearchSettings: string; elasticsearchEnableSecurity: string; indicesPrivileges: string; kibanaTLS: string; kibanaPrivileges: string; mappingRoles: string; mappingRolesFieldRules: string; runAsPrivilege: string; }>; readonly watcher: Record; readonly ccs: Record; readonly plugins: Record; readonly snapshotRestore: Record; readonly ingest: Record; readonly fleet: Readonly<{ guide: string; fleetServer: string; fleetServerAddFleetServer: string; settings: string; settingsFleetServerHostSettings: string; troubleshooting: string; elasticAgent: string; datastreams: string; datastreamsNamingScheme: string; upgradeElasticAgent: string; upgradeElasticAgent712lower: string; }>; readonly ecs: { readonly guide: string; }; }" + "{ readonly settings: string; readonly canvas: { readonly guide: string; }; readonly dashboard: { readonly guide: string; readonly drilldowns: string; readonly drilldownsTriggerPicker: string; readonly urlDrilldownTemplateSyntax: string; readonly urlDrilldownVariables: string; }; readonly discover: Record; readonly filebeat: { readonly base: string; readonly installation: string; readonly configuration: string; readonly elasticsearchOutput: string; readonly elasticsearchModule: string; readonly startup: string; readonly exportedFields: string; readonly suricataModule: string; readonly zeekModule: string; }; readonly auditbeat: { readonly base: string; readonly auditdModule: string; readonly systemModule: string; }; readonly metricbeat: { readonly base: string; readonly configure: string; readonly httpEndpoint: string; readonly install: string; readonly start: string; }; readonly enterpriseSearch: { readonly base: string; readonly appSearchBase: string; readonly workplaceSearchBase: string; }; readonly heartbeat: { readonly base: string; }; readonly libbeat: { readonly getStarted: string; }; readonly logstash: { readonly base: string; }; readonly functionbeat: { readonly base: string; }; readonly winlogbeat: { readonly base: string; }; readonly aggs: { readonly composite: string; readonly composite_missing_bucket: string; readonly date_histogram: string; readonly date_range: string; readonly date_format_pattern: string; readonly filter: string; readonly filters: string; readonly geohash_grid: string; readonly histogram: string; readonly ip_range: string; readonly range: string; readonly significant_terms: string; readonly terms: string; readonly avg: string; readonly avg_bucket: string; readonly max_bucket: string; readonly min_bucket: string; readonly sum_bucket: string; readonly cardinality: string; readonly count: string; readonly cumulative_sum: string; readonly derivative: string; readonly geo_bounds: string; readonly geo_centroid: string; readonly max: string; readonly median: string; readonly min: string; readonly moving_avg: string; readonly percentile_ranks: string; readonly serial_diff: string; readonly std_dev: string; readonly sum: string; readonly top_hits: string; }; readonly runtimeFields: { readonly overview: string; readonly mapping: string; }; readonly scriptedFields: { readonly scriptFields: string; readonly scriptAggs: string; readonly painless: string; readonly painlessApi: string; readonly painlessLangSpec: string; readonly painlessSyntax: string; readonly painlessWalkthrough: string; readonly luceneExpressions: string; }; readonly search: { readonly sessions: string; readonly sessionLimits: string; }; readonly indexPatterns: { readonly introduction: string; readonly fieldFormattersNumber: string; readonly fieldFormattersString: string; readonly runtimeFields: string; }; readonly addData: string; readonly kibana: string; readonly upgradeAssistant: string; readonly rollupJobs: string; readonly elasticsearch: Record; readonly siem: { readonly guide: string; readonly gettingStarted: string; readonly ml: string; readonly ruleChangeLog: string; readonly detectionsReq: string; readonly networkMap: string; }; readonly query: { readonly eql: string; readonly kueryQuerySyntax: string; readonly luceneQuerySyntax: string; readonly percolate: string; readonly queryDsl: string; readonly autocompleteChanges: string; }; readonly date: { readonly dateMath: string; readonly dateMathIndexNames: string; }; readonly management: Record; readonly ml: Record; readonly transforms: Record; readonly visualize: Record; readonly apis: Readonly<{ bulkIndexAlias: string; byteSizeUnits: string; createAutoFollowPattern: string; createFollower: string; createIndex: string; createSnapshotLifecyclePolicy: string; createRoleMapping: string; createRoleMappingTemplates: string; createRollupJobsRequest: string; createApiKey: string; createPipeline: string; createTransformRequest: string; cronExpressions: string; executeWatchActionModes: string; indexExists: string; openIndex: string; putComponentTemplate: string; painlessExecute: string; painlessExecuteAPIContexts: string; putComponentTemplateMetadata: string; putSnapshotLifecyclePolicy: string; putIndexTemplateV1: string; putWatch: string; simulatePipeline: string; timeUnits: string; updateTransform: string; }>; readonly observability: Record; readonly alerting: Record; readonly maps: Record; readonly monitoring: Record; readonly security: Readonly<{ apiKeyServiceSettings: string; clusterPrivileges: string; elasticsearchSettings: string; elasticsearchEnableSecurity: string; indicesPrivileges: string; kibanaTLS: string; kibanaPrivileges: string; mappingRoles: string; mappingRolesFieldRules: string; runAsPrivilege: string; }>; readonly watcher: Record; readonly ccs: Record; readonly plugins: Record; readonly snapshotRestore: Record; readonly ingest: Record; readonly fleet: Readonly<{ guide: string; fleetServer: string; fleetServerAddFleetServer: string; settings: string; settingsFleetServerHostSettings: string; troubleshooting: string; elasticAgent: string; datastreams: string; datastreamsNamingScheme: string; upgradeElasticAgent: string; upgradeElasticAgent712lower: string; }>; readonly ecs: { readonly guide: string; }; }" ], "source": { "path": "src/core/public/doc_links/doc_links_service.ts", - "lineNumber": 446 + "lineNumber": 447 }, "deprecated": false } @@ -5386,7 +5386,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 162 + "lineNumber": 163 }, "deprecated": false, "children": [ @@ -5404,7 +5404,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 164 + "lineNumber": 165 }, "deprecated": false } @@ -5463,7 +5463,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 78 + "lineNumber": 79 }, "deprecated": false, "children": [ @@ -5479,7 +5479,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 79 + "lineNumber": 80 }, "deprecated": false }, @@ -5495,7 +5495,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 80 + "lineNumber": 81 }, "deprecated": false }, @@ -5511,7 +5511,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 81 + "lineNumber": 82 }, "deprecated": false }, @@ -5527,7 +5527,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 82 + "lineNumber": 83 }, "deprecated": false }, @@ -5543,7 +5543,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 83 + "lineNumber": 84 }, "deprecated": false }, @@ -5561,7 +5561,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 89 + "lineNumber": 90 }, "deprecated": false }, @@ -5579,7 +5579,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 91 + "lineNumber": 92 }, "deprecated": false }, @@ -5597,7 +5597,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 93 + "lineNumber": 94 }, "deprecated": false }, @@ -5615,7 +5615,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 97 + "lineNumber": 98 }, "deprecated": false }, @@ -5633,7 +5633,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 102 + "lineNumber": 103 }, "deprecated": false }, @@ -5666,7 +5666,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 108 + "lineNumber": 109 }, "deprecated": false }, @@ -5684,7 +5684,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 112 + "lineNumber": 113 }, "deprecated": false }, @@ -5702,7 +5702,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 117 + "lineNumber": 118 }, "deprecated": false }, @@ -5718,7 +5718,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 118 + "lineNumber": 119 }, "deprecated": false }, @@ -5740,7 +5740,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 140 + "lineNumber": 141 }, "deprecated": false }, @@ -5756,7 +5756,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 141 + "lineNumber": 142 }, "deprecated": false }, @@ -5774,7 +5774,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 149 + "lineNumber": 150 }, "deprecated": false }, @@ -5792,7 +5792,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 151 + "lineNumber": 152 }, "deprecated": false }, @@ -5817,7 +5817,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 155 + "lineNumber": 156 }, "deprecated": false } @@ -5833,7 +5833,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 61 + "lineNumber": 62 }, "deprecated": false, "children": [ @@ -5846,7 +5846,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 62 + "lineNumber": 63 }, "deprecated": false }, @@ -5859,7 +5859,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 63 + "lineNumber": 64 }, "deprecated": false } @@ -7717,7 +7717,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 249 + "lineNumber": 250 }, "deprecated": false, "initialIsOpen": false @@ -10823,7 +10823,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 484 + "lineNumber": 485 }, "deprecated": false, "children": [ @@ -10847,7 +10847,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 486 + "lineNumber": 487 }, "deprecated": false }, @@ -10871,7 +10871,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 488 + "lineNumber": 489 }, "deprecated": false }, @@ -10895,7 +10895,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 490 + "lineNumber": 491 }, "deprecated": false } @@ -10923,7 +10923,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 502 + "lineNumber": 503 }, "deprecated": false, "children": [ @@ -10947,7 +10947,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 504 + "lineNumber": 505 }, "deprecated": false }, @@ -10971,7 +10971,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 506 + "lineNumber": 507 }, "deprecated": false }, @@ -10995,7 +10995,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 508 + "lineNumber": 509 }, "deprecated": false }, @@ -11019,7 +11019,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 510 + "lineNumber": 511 }, "deprecated": false }, @@ -11052,7 +11052,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 512 + "lineNumber": 513 }, "deprecated": false }, @@ -11076,7 +11076,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 517 + "lineNumber": 518 }, "deprecated": false }, @@ -11100,7 +11100,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 519 + "lineNumber": 520 }, "deprecated": false }, @@ -11124,7 +11124,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 521 + "lineNumber": 522 }, "deprecated": false }, @@ -11148,7 +11148,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 523 + "lineNumber": 524 }, "deprecated": false }, @@ -11172,7 +11172,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 525 + "lineNumber": 526 }, "deprecated": false }, @@ -11196,7 +11196,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 527 + "lineNumber": 528 }, "deprecated": false }, @@ -11220,7 +11220,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 529 + "lineNumber": 530 }, "deprecated": false }, @@ -11246,7 +11246,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 531 + "lineNumber": 532 }, "deprecated": false, "returnComment": [], @@ -11266,7 +11266,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 552 + "lineNumber": 553 }, "deprecated": false, "children": [ @@ -11290,7 +11290,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 554 + "lineNumber": 555 }, "deprecated": false }, @@ -11314,7 +11314,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 556 + "lineNumber": 557 }, "deprecated": false }, @@ -11338,7 +11338,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 558 + "lineNumber": 559 }, "deprecated": false }, @@ -11362,7 +11362,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 560 + "lineNumber": 561 }, "deprecated": false }, @@ -11386,7 +11386,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 562 + "lineNumber": 563 }, "deprecated": false }, @@ -11410,7 +11410,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 564 + "lineNumber": 565 }, "deprecated": false }, @@ -11434,7 +11434,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 566 + "lineNumber": 567 }, "deprecated": false } @@ -14364,7 +14364,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -15628,7 +15628,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -15656,7 +15656,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -20539,7 +20539,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 456 + "lineNumber": 457 }, "deprecated": false, "children": [ @@ -20643,7 +20643,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 457 + "lineNumber": 458 }, "deprecated": false } @@ -22434,7 +22434,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -23778,7 +23778,7 @@ ], "source": { "path": "src/core/server/index.ts", - "lineNumber": 542 + "lineNumber": 543 }, "deprecated": false, "initialIsOpen": false diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 92c0a868ff9be..7dbeb6f4c05c1 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -18,7 +18,7 @@ import coreObj from './core.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2360 | 148 | 1081 | 31 | +| 2363 | 148 | 1081 | 31 | ## Client diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 8f7213615707b..9ce48ced2d738 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -18,7 +18,7 @@ import coreApplicationObj from './core_application.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2360 | 148 | 1081 | 31 | +| 2363 | 148 | 1081 | 31 | ## Client diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index fefb81a103829..d8c9cb76483c5 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -18,7 +18,7 @@ import coreChromeObj from './core_chrome.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2360 | 148 | 1081 | 31 | +| 2363 | 148 | 1081 | 31 | ## Client diff --git a/api_docs/core_http.json b/api_docs/core_http.json index 797c0565e7324..654d0fabdd076 100644 --- a/api_docs/core_http.json +++ b/api_docs/core_http.json @@ -3973,7 +3973,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ") => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -3989,7 +3989,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ", requestSpecificBasePath: string) => void; prepend: (path: string) => string; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "source": { "path": "src/core/server/http/types.ts", @@ -5002,7 +5002,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ") => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -5018,7 +5018,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ", requestSpecificBasePath: string) => void; prepend: (path: string) => string; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "source": { "path": "src/core/server/http/types.ts", @@ -5448,7 +5448,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ") => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -5464,7 +5464,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ", requestSpecificBasePath: string) => void; prepend: (path: string) => string; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "source": { "path": "src/core/server/http/types.ts", @@ -10658,7 +10658,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ") => string; set: (request: ", + ") => string; prepend: (path: string) => string; set: (request: ", { "pluginId": "core", "scope": "server", @@ -10674,7 +10674,7 @@ "section": "def-server.LegacyRequest", "text": "LegacyRequest" }, - ", requestSpecificBasePath: string) => void; prepend: (path: string) => string; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" + ", requestSpecificBasePath: string) => void; readonly serverBasePath: string; readonly publicBaseUrl?: string | undefined; }" ], "source": { "path": "src/core/server/http/base_path_service.ts", diff --git a/api_docs/core_http.mdx b/api_docs/core_http.mdx index 0d6e164c5aac8..99f0cdfbd708e 100644 --- a/api_docs/core_http.mdx +++ b/api_docs/core_http.mdx @@ -18,7 +18,7 @@ import coreHttpObj from './core_http.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2360 | 148 | 1081 | 31 | +| 2363 | 148 | 1081 | 31 | ## Client diff --git a/api_docs/core_saved_objects.json b/api_docs/core_saved_objects.json index fbdb90400c3ca..55bf6649d28ba 100644 --- a/api_docs/core_saved_objects.json +++ b/api_docs/core_saved_objects.json @@ -13,7 +13,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 170 + "lineNumber": 169 }, "deprecated": false, "children": [ @@ -47,7 +47,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 225 + "lineNumber": 224 }, "deprecated": false, "children": [ @@ -63,7 +63,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 226 + "lineNumber": 225 }, "deprecated": false, "isRequired": true @@ -80,7 +80,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 227 + "lineNumber": 226 }, "deprecated": false, "isRequired": true @@ -103,7 +103,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 228 + "lineNumber": 227 }, "deprecated": false, "isRequired": true @@ -151,7 +151,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 260 + "lineNumber": 259 }, "deprecated": false, "children": [ @@ -176,7 +176,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 261 + "lineNumber": 260 }, "deprecated": false, "isRequired": true @@ -199,7 +199,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 262 + "lineNumber": 261 }, "deprecated": false, "isRequired": true @@ -225,7 +225,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 288 + "lineNumber": 287 }, "deprecated": false, "children": [ @@ -241,7 +241,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 289 + "lineNumber": 288 }, "deprecated": false, "isRequired": true @@ -258,7 +258,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 290 + "lineNumber": 289 }, "deprecated": false, "isRequired": true @@ -276,7 +276,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 291 + "lineNumber": 290 }, "deprecated": false, "isRequired": false @@ -322,7 +322,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 318 + "lineNumber": 317 }, "deprecated": false, "children": [ @@ -346,7 +346,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 319 + "lineNumber": 318 }, "deprecated": false, "isRequired": true @@ -378,7 +378,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 385 + "lineNumber": 384 }, "deprecated": false, "children": [ @@ -394,7 +394,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 385 + "lineNumber": 384 }, "deprecated": false, "isRequired": true @@ -411,7 +411,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 385 + "lineNumber": 384 }, "deprecated": false, "isRequired": true @@ -443,7 +443,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 408 + "lineNumber": 407 }, "deprecated": false, "children": [ @@ -461,7 +461,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 408 + "lineNumber": 407 }, "deprecated": false, "isRequired": true @@ -493,7 +493,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 435 + "lineNumber": 434 }, "deprecated": false, "children": [ @@ -509,7 +509,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 436 + "lineNumber": 435 }, "deprecated": false, "isRequired": true @@ -526,7 +526,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 437 + "lineNumber": 436 }, "deprecated": false, "isRequired": true @@ -569,7 +569,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 462 + "lineNumber": 461 }, "deprecated": false, "children": [ @@ -585,7 +585,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 463 + "lineNumber": 462 }, "deprecated": false, "isRequired": true @@ -602,7 +602,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 464 + "lineNumber": 463 }, "deprecated": false, "isRequired": true @@ -619,7 +619,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 465 + "lineNumber": 464 }, "deprecated": false, "isRequired": true @@ -643,7 +643,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 466 + "lineNumber": 465 }, "deprecated": false, "isRequired": true @@ -681,7 +681,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 494 + "lineNumber": 493 }, "deprecated": false, "children": [ @@ -706,7 +706,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 494 + "lineNumber": 493 }, "deprecated": false, "isRequired": true @@ -1232,7 +1232,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 91 + "lineNumber": 90 }, "deprecated": false, "children": [ @@ -1255,7 +1255,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 92 + "lineNumber": 91 }, "deprecated": false } @@ -1288,7 +1288,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 58 + "lineNumber": 57 }, "deprecated": false, "children": [ @@ -1301,7 +1301,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 59 + "lineNumber": 58 }, "deprecated": false }, @@ -1317,7 +1317,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 60 + "lineNumber": 59 }, "deprecated": false } @@ -1333,7 +1333,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 64 + "lineNumber": 63 }, "deprecated": false, "children": [ @@ -1351,7 +1351,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 66 + "lineNumber": 65 }, "deprecated": false } @@ -1377,7 +1377,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 70 + "lineNumber": 69 }, "deprecated": false, "children": [ @@ -1390,7 +1390,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 71 + "lineNumber": 70 }, "deprecated": false }, @@ -1403,7 +1403,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 72 + "lineNumber": 71 }, "deprecated": false }, @@ -1419,7 +1419,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 73 + "lineNumber": 72 }, "deprecated": false }, @@ -1435,7 +1435,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 74 + "lineNumber": 73 }, "deprecated": false }, @@ -1452,7 +1452,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 75 + "lineNumber": 74 }, "deprecated": false } @@ -1468,7 +1468,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 79 + "lineNumber": 78 }, "deprecated": false, "children": [ @@ -1484,7 +1484,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 80 + "lineNumber": 79 }, "deprecated": false } @@ -1500,7 +1500,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 38 + "lineNumber": 37 }, "deprecated": false, "children": [ @@ -1518,7 +1518,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 42 + "lineNumber": 41 }, "deprecated": false }, @@ -1536,7 +1536,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 44 + "lineNumber": 43 }, "deprecated": false }, @@ -1555,7 +1555,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 46 + "lineNumber": 45 }, "deprecated": false }, @@ -1573,7 +1573,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 48 + "lineNumber": 47 }, "deprecated": false }, @@ -1590,7 +1590,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 49 + "lineNumber": 48 }, "deprecated": false } @@ -1626,7 +1626,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 109 + "lineNumber": 108 }, "deprecated": false, "children": [ @@ -1642,7 +1642,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 111 + "lineNumber": 110 }, "deprecated": false }, @@ -1655,7 +1655,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 112 + "lineNumber": 111 }, "deprecated": false }, @@ -1668,7 +1668,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 113 + "lineNumber": 112 }, "deprecated": false }, @@ -1681,7 +1681,7 @@ "description": [], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 114 + "lineNumber": 113 }, "deprecated": false } @@ -1855,7 +1855,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 84 + "lineNumber": 83 }, "deprecated": false, "children": [ @@ -1871,7 +1871,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 85 + "lineNumber": 84 }, "deprecated": false }, @@ -1887,7 +1887,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 86 + "lineNumber": 85 }, "deprecated": false }, @@ -1904,7 +1904,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 87 + "lineNumber": 86 }, "deprecated": false } @@ -2042,7 +2042,7 @@ ], "source": { "path": "src/core/public/saved_objects/saved_objects_client.ts", - "lineNumber": 143 + "lineNumber": 142 }, "deprecated": false, "initialIsOpen": false @@ -10487,6 +10487,21 @@ "lineNumber": 67 }, "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectMigrationContext.isSingleNamespaceType", + "type": "boolean", + "tags": [], + "label": "isSingleNamespaceType", + "description": [ + "\nWhether this is a single-namespace type or not" + ], + "source": { + "path": "src/core/server/saved_objects/migrations/types.ts", + "lineNumber": 71 + }, + "deprecated": false } ], "initialIsOpen": false @@ -10502,7 +10517,7 @@ ], "source": { "path": "src/core/server/saved_objects/migrations/types.ts", - "lineNumber": 87 + "lineNumber": 91 }, "deprecated": false, "children": [ @@ -10518,7 +10533,7 @@ ], "source": { "path": "src/core/server/saved_objects/migrations/types.ts", - "lineNumber": 88 + "lineNumber": 92 }, "deprecated": false } @@ -10656,7 +10671,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 162 + "lineNumber": 163 }, "deprecated": false, "children": [ @@ -10674,7 +10689,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 164 + "lineNumber": 165 }, "deprecated": false } @@ -12711,7 +12726,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 78 + "lineNumber": 79 }, "deprecated": false, "children": [ @@ -12727,7 +12742,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 79 + "lineNumber": 80 }, "deprecated": false }, @@ -12743,7 +12758,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 80 + "lineNumber": 81 }, "deprecated": false }, @@ -12759,7 +12774,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 81 + "lineNumber": 82 }, "deprecated": false }, @@ -12775,7 +12790,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 82 + "lineNumber": 83 }, "deprecated": false }, @@ -12791,7 +12806,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 83 + "lineNumber": 84 }, "deprecated": false }, @@ -12809,7 +12824,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 89 + "lineNumber": 90 }, "deprecated": false }, @@ -12827,7 +12842,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 91 + "lineNumber": 92 }, "deprecated": false }, @@ -12845,7 +12860,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 93 + "lineNumber": 94 }, "deprecated": false }, @@ -12863,7 +12878,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 97 + "lineNumber": 98 }, "deprecated": false }, @@ -12881,7 +12896,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 102 + "lineNumber": 103 }, "deprecated": false }, @@ -12914,7 +12929,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 108 + "lineNumber": 109 }, "deprecated": false }, @@ -12932,7 +12947,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 112 + "lineNumber": 113 }, "deprecated": false }, @@ -12950,7 +12965,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 117 + "lineNumber": 118 }, "deprecated": false }, @@ -12966,7 +12981,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 118 + "lineNumber": 119 }, "deprecated": false }, @@ -12988,7 +13003,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 140 + "lineNumber": 141 }, "deprecated": false }, @@ -13004,7 +13019,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 141 + "lineNumber": 142 }, "deprecated": false }, @@ -13022,7 +13037,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 149 + "lineNumber": 150 }, "deprecated": false }, @@ -13040,7 +13055,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 151 + "lineNumber": 152 }, "deprecated": false }, @@ -13065,7 +13080,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 155 + "lineNumber": 156 }, "deprecated": false } @@ -13081,7 +13096,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 61 + "lineNumber": 62 }, "deprecated": false, "children": [ @@ -13094,7 +13109,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 62 + "lineNumber": 63 }, "deprecated": false }, @@ -13107,7 +13122,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 63 + "lineNumber": 64 }, "deprecated": false } @@ -14848,7 +14863,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 69 + "lineNumber": 70 }, "deprecated": false, "children": [ @@ -14861,7 +14876,7 @@ "description": [], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 70 + "lineNumber": 71 }, "deprecated": false }, @@ -14877,7 +14892,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 71 + "lineNumber": 72 }, "deprecated": false } @@ -16647,7 +16662,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 50 + "lineNumber": 51 }, "deprecated": false, "children": [ @@ -16663,7 +16678,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 51 + "lineNumber": 52 }, "deprecated": false } @@ -16689,7 +16704,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 256 + "lineNumber": 257 }, "deprecated": false, "children": [ @@ -16704,7 +16719,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 260 + "lineNumber": 261 }, "deprecated": false }, @@ -16719,7 +16734,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 267 + "lineNumber": 268 }, "deprecated": false }, @@ -16737,7 +16752,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 271 + "lineNumber": 272 }, "deprecated": false }, @@ -16755,7 +16770,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 275 + "lineNumber": 276 }, "deprecated": false }, @@ -16773,7 +16788,32 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 279 + "lineNumber": 280 + }, + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsType.excludeOnUpgrade", + "type": "Function", + "tags": [], + "label": "excludeOnUpgrade", + "description": [ + "\nIf defined, allows a type to exclude unneeded documents from the migration process and effectively be deleted.\nSee {@link SavedObjectTypeExcludeFromUpgradeFilterHook} for more details." + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectTypeExcludeFromUpgradeFilterHook", + "text": "SavedObjectTypeExcludeFromUpgradeFilterHook" + }, + " | undefined" + ], + "source": { + "path": "src/core/server/saved_objects/types.ts", + "lineNumber": 285 }, "deprecated": false }, @@ -16797,7 +16837,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 283 + "lineNumber": 289 }, "deprecated": false }, @@ -16830,7 +16870,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 287 + "lineNumber": 293 }, "deprecated": false }, @@ -16848,7 +16888,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 336 + "lineNumber": 342 }, "deprecated": false }, @@ -16873,7 +16913,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 340 + "lineNumber": 346 }, "deprecated": false } @@ -16901,7 +16941,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 348 + "lineNumber": 354 }, "deprecated": false, "children": [ @@ -16919,7 +16959,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 352 + "lineNumber": 358 }, "deprecated": false }, @@ -16937,7 +16977,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 356 + "lineNumber": 362 }, "deprecated": false }, @@ -16955,7 +16995,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 361 + "lineNumber": 367 }, "deprecated": false }, @@ -16975,7 +17015,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 366 + "lineNumber": 372 }, "deprecated": false }, @@ -16995,7 +17035,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 371 + "lineNumber": 377 }, "deprecated": false }, @@ -17015,7 +17055,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 380 + "lineNumber": 386 }, "deprecated": false }, @@ -17040,7 +17080,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 398 + "lineNumber": 404 }, "deprecated": false }, @@ -17065,7 +17105,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 441 + "lineNumber": 447 }, "deprecated": false }, @@ -17084,7 +17124,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 481 + "lineNumber": 487 }, "deprecated": false } @@ -18040,7 +18080,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 171 + "lineNumber": 172 }, "deprecated": false, "initialIsOpen": false @@ -18421,7 +18461,7 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 235 + "lineNumber": 236 }, "deprecated": false, "initialIsOpen": false @@ -18794,7 +18834,40 @@ ], "source": { "path": "src/core/server/saved_objects/types.ts", - "lineNumber": 249 + "lineNumber": 250 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectTypeExcludeFromUpgradeFilterHook", + "type": "Type", + "tags": [ + "alpha" + ], + "label": "SavedObjectTypeExcludeFromUpgradeFilterHook", + "description": [ + "\nIf defined, allows a type to run a search query and return a query filter that may match any documents which may\nbe excluded from the next migration upgrade process. Useful for cleaning up large numbers of old documents which\nare no longer needed and may slow the migration process.\n\nIf this hook fails, the migration will proceed without these documents having been filtered out, so this\nshould not be used as a guarantee that these documents have been deleted.\n" + ], + "signature": [ + "(toolkit: { readonlyEsClient: Pick<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ", \"search\">; }) => ", + "QueryDslQueryContainer", + " | Promise<", + "QueryDslQueryContainer", + ">" + ], + "source": { + "path": "src/core/server/saved_objects/types.ts", + "lineNumber": 508 }, "deprecated": false, "initialIsOpen": false diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index 095da64b2b7b9..bed2039941ed9 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -18,7 +18,7 @@ import coreSavedObjectsObj from './core_saved_objects.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2360 | 148 | 1081 | 31 | +| 2363 | 148 | 1081 | 31 | ## Client diff --git a/api_docs/dashboard.json b/api_docs/dashboard.json index 4cf4500ec163d..156f9146cf83f 100644 --- a/api_docs/dashboard.json +++ b/api_docs/dashboard.json @@ -1378,8 +1378,7 @@ "\nOptionally apply filers. NOTE: if given and used in conjunction with `dashboardId`, and the\nsaved dashboard has filters saved with it, this will _replace_ those filters." ], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/dashboard/public/locator.ts", @@ -1390,15 +1389,14 @@ { "parentPluginId": "dashboard", "id": "def-public.DashboardAppLocatorParams.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\nOptionally set a query. NOTE: if given and used in conjunction with `dashboardId`, and the\nsaved dashboard has a query saved with it, this will _replace_ that query." ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/dashboard/public/locator.ts", @@ -1747,8 +1745,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/dashboard/public/types.ts", @@ -1772,12 +1769,12 @@ { "parentPluginId": "dashboard", "id": "def-public.DashboardContainerInput.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [], "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" + "any" ], "source": { "path": "src/plugins/dashboard/public/types.ts", @@ -2231,8 +2228,7 @@ "label": "getQuery", "description": [], "signature": [ - "() => ", - "Query" + "() => any" ], "source": { "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts", @@ -2250,9 +2246,7 @@ "label": "getFilters", "description": [], "signature": [ - "() => ", - "Filter", - "[]" + "() => any[]" ], "source": { "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts", @@ -2394,8 +2388,7 @@ "\nOptionally apply filers. NOTE: if given and used in conjunction with `dashboardId`, and the\nsaved dashboard has filters saved with it, this will _replace_ those filters." ], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/dashboard/public/url_generator.ts", @@ -2406,15 +2399,14 @@ { "parentPluginId": "dashboard", "id": "def-public.DashboardUrlGeneratorState.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\nOptionally set a query. NOTE: if given and used in conjunction with `dashboardId`, and the\nsaved dashboard has a query saved with it, this will _replace_ that query." ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/dashboard/public/url_generator.ts", diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 2adae80a02061..1ada2f7a695bd 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -18,7 +18,7 @@ import dashboardObj from './dashboard.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 160 | 1 | 137 | 9 | +| 160 | 4 | 137 | 9 | ## Client diff --git a/api_docs/data.json b/api_docs/data.json index 3fe060d094224..90e3ded072b82 100644 --- a/api_docs/data.json +++ b/api_docs/data.json @@ -2276,9 +2276,7 @@ "label": "getSearchSourceTimeFilter", "description": [], "signature": [ - "(forceNow?: Date | undefined) => ", - "RangeFilter", - "[] | { meta: { index: string | undefined; params: {}; alias: string; disabled: boolean; negate: boolean; }; query: { bool: { should: { bool: { filter: { range: { [x: string]: { gte: string; lte: string; }; }; }[]; }; }[]; minimum_should_match: number; }; }; }[]" + "(forceNow?: Date | undefined) => any[]" ], "source": { "path": "src/plugins/data/common/search/aggs/agg_configs.ts", @@ -2764,7 +2762,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 54 + "lineNumber": 55 }, "deprecated": false, "children": [ @@ -2780,7 +2778,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 70 + "lineNumber": 71 }, "deprecated": false, "children": [ @@ -2799,19 +2797,11 @@ "section": "def-public.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { enabled: boolean; timeout: moment.Duration; method: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ValueSuggestionsMethod", - "text": "ValueSuggestionsMethod" - }, - "; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" + "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { enabled: boolean; timeout: moment.Duration; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 70 + "lineNumber": 71 }, "deprecated": false, "isRequired": true @@ -2858,7 +2848,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 79 + "lineNumber": 81 }, "deprecated": false, "children": [ @@ -2891,7 +2881,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 80 + "lineNumber": 82 }, "deprecated": false, "isRequired": true @@ -2908,7 +2898,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 81 + "lineNumber": 83 }, "deprecated": false, "isRequired": true @@ -2945,7 +2935,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 127 + "lineNumber": 136 }, "deprecated": false, "children": [ @@ -2967,7 +2957,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 127 + "lineNumber": 136 }, "deprecated": false, "isRequired": true @@ -2984,7 +2974,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 127 + "lineNumber": 136 }, "deprecated": false, "isRequired": true @@ -3004,7 +2994,7 @@ ], "source": { "path": "src/plugins/data/public/plugin.ts", - "lineNumber": 209 + "lineNumber": 218 }, "deprecated": false, "children": [], @@ -3104,6 +3094,24 @@ }, "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-public.FieldFormat.hidden", + "type": "boolean", + "tags": [ + "property", + "static" + ], + "label": "hidden", + "description": [ + "\nHidden field formats can only be accessed directly by id,\nThey won't appear in field format editor UI,\nBut they can be accessed and used from code internally.\n" + ], + "source": { + "path": "src/plugins/data/common/field_formats/field_format.ts", + "lineNumber": 43 + }, + "deprecated": false + }, { "parentPluginId": "data", "id": "def-public.FieldFormat.title", @@ -3116,7 +3124,7 @@ "description": [], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 38 + "lineNumber": 50 }, "deprecated": false }, @@ -3135,7 +3143,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 44 + "lineNumber": 56 }, "deprecated": false }, @@ -3155,7 +3163,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 52 + "lineNumber": 64 }, "deprecated": false }, @@ -3175,7 +3183,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 60 + "lineNumber": 72 }, "deprecated": false }, @@ -3195,7 +3203,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 68 + "lineNumber": 80 }, "deprecated": false }, @@ -3214,7 +3222,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 74 + "lineNumber": 86 }, "deprecated": false }, @@ -3230,7 +3238,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 75 + "lineNumber": 87 }, "deprecated": false }, @@ -3246,7 +3254,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 77 + "lineNumber": 89 }, "deprecated": false }, @@ -3269,7 +3277,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 78 + "lineNumber": 90 }, "deprecated": false }, @@ -3285,7 +3293,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "children": [ @@ -3301,7 +3309,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "isRequired": true @@ -3325,7 +3333,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "isRequired": false @@ -3359,7 +3367,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 98 + "lineNumber": 110 }, "deprecated": false, "children": [ @@ -3375,7 +3383,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 99 + "lineNumber": 111 }, "deprecated": false, "isRequired": true @@ -3400,7 +3408,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 100 + "lineNumber": 112 }, "deprecated": false, "isRequired": true @@ -3419,7 +3427,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 101 + "lineNumber": 113 }, "deprecated": false, "isRequired": false @@ -3454,7 +3462,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 118 + "lineNumber": 130 }, "deprecated": false, "children": [ @@ -3476,7 +3484,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 119 + "lineNumber": 131 }, "deprecated": false, "isRequired": true @@ -3502,7 +3510,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 133 + "lineNumber": 145 }, "deprecated": false, "children": [], @@ -3526,7 +3534,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 144 + "lineNumber": 156 }, "deprecated": false, "children": [ @@ -3544,7 +3552,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 144 + "lineNumber": 156 }, "deprecated": false, "isRequired": true @@ -3568,7 +3576,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 161 + "lineNumber": 173 }, "deprecated": false, "children": [], @@ -3590,7 +3598,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 172 + "lineNumber": 184 }, "deprecated": false, "children": [], @@ -3611,7 +3619,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 193 + "lineNumber": 205 }, "deprecated": false, "children": [ @@ -3627,7 +3635,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 193 + "lineNumber": 205 }, "deprecated": false, "isRequired": true @@ -3648,7 +3656,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 197 + "lineNumber": 209 }, "deprecated": false, "children": [], @@ -3673,7 +3681,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 204 + "lineNumber": 216 }, "deprecated": false, "children": [ @@ -3689,7 +3697,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 204 + "lineNumber": 216 }, "deprecated": false, "isRequired": true @@ -8347,47 +8355,66 @@ "id": "def-public.castEsToKbnFieldTypeName", "type": "Function", "tags": [ - "return" + "deprecated" ], "label": "castEsToKbnFieldTypeName", - "description": [ - "\n Get the KbnFieldType name for an esType string\n" - ], + "description": [], "signature": [ "(esType: string) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 22 }, - "deprecated": false, + "deprecated": true, + "removeBy": "8.0", + "references": [ + { + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 22 + } + }, + { + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 83 + } + }, + { + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 11 + } + }, + { + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 94 + } + } + ], + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-public.castEsToKbnFieldTypeName.$1", + "id": "def-public.esType", "type": "string", "tags": [], "label": "esType", "description": [], - "signature": [ - "string" - ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", + "lineNumber": 22 }, - "deprecated": false, - "isRequired": true + "deprecated": false } ], - "returnComment": [], "initialIsOpen": false }, { @@ -8527,27 +8554,65 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.getEsQueryConfig", + "type": "Function", + "tags": [], + "label": "getEsQueryConfig", + "description": [], + "signature": [ + "(config: KibanaConfig) => ", + "EsQueryConfig" + ], + "source": { + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.getEsQueryConfig.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "KibanaConfig" + ], + "source": { + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.getKbnTypeNames", "type": "Function", "tags": [ - "return" + "deprecated" ], "label": "getKbnTypeNames", - "description": [ - "\n Get the esTypes known by all kbnFieldTypes\n" - ], + "description": [], "signature": [ "() => string[]" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 30 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 40 }, - "deprecated": false, - "children": [], + "deprecated": true, + "removeBy": "8.0", + "references": [], "returnComment": [], + "children": [], "initialIsOpen": false }, { @@ -8689,9 +8754,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", - "RangeFilter", - " | undefined" + ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => any" ], "source": { "path": "src/plugins/data/common/query/timefilter/get_time.ts", @@ -8994,12 +9057,11 @@ "label": "isFilter", "description": [], "signature": [ - "(x: unknown) => x is ", - "Filter" + "(x: unknown) => x is any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 69 + "lineNumber": 77 }, "deprecated": true, "references": [], @@ -9016,8 +9078,8 @@ "unknown" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 47 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 46 }, "deprecated": false } @@ -9034,13 +9096,11 @@ "label": "isFilters", "description": [], "signature": [ - "(x: unknown) => x is ", - "Filter", - "[]" + "(x: unknown) => x is any[]" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 130 + "lineNumber": 138 }, "deprecated": true, "references": [ @@ -9072,8 +9132,8 @@ "unknown" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 48 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 47 }, "deprecated": false } @@ -9142,8 +9202,7 @@ "label": "isQuery", "description": [], "signature": [ - "(x: unknown) => x is ", - "Query" + "(x: unknown) => x is any" ], "source": { "path": "src/plugins/data/common/query/is_query.ts", @@ -9273,7 +9332,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 196 + "lineNumber": 195 }, "deprecated": false, "children": [ @@ -9302,7 +9361,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"filter\">, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", + ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, \"filter\" | \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, never>, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -9326,7 +9449,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 197 + "lineNumber": 196 }, "deprecated": false }, @@ -9355,60 +9478,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: string | undefined; }, \"filters\"> & Pick<{ filters?: string | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", - "AggExpressionType", - ", ", + ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" }, - "<", + "<\"kibana_query_filter\", ", { - "pluginId": "inspector", + "pluginId": "data", "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" }, - ", ", - "SerializableState", - ">>" - ], - "source": { - "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 198 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.AggFunctionsMapping.aggSignificantTerms", - "type": "Object", - "tags": [], - "label": "aggSignificantTerms", - "description": [], - "signature": [ + ">[] | undefined; }, \"filters\"> & Pick<{ filters?: ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" }, - "<\"aggSignificantTerms\", any, ", - "AggExpressionFunctionArgs", - "<", + "<\"kibana_query_filter\", ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.BUCKET_TYPES", - "text": "BUCKET_TYPES" + "section": "def-common.QueryFilter", + "text": "QueryFilter" }, - ".SIGNIFICANT_TERMS>, ", + ">[] | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -9432,7 +9534,60 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 199 + "lineNumber": 197 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.AggFunctionsMapping.aggSignificantTerms", + "type": "Object", + "tags": [], + "label": "aggSignificantTerms", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"aggSignificantTerms\", any, ", + "AggExpressionFunctionArgs", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.BUCKET_TYPES", + "text": "BUCKET_TYPES" + }, + ".SIGNIFICANT_TERMS>, ", + "AggExpressionType", + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/types.ts", + "lineNumber": 198 }, "deprecated": false }, @@ -9461,7 +9616,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", + ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -9485,7 +9704,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 200 + "lineNumber": 199 }, "deprecated": false }, @@ -9514,7 +9733,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", + ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", "AggExpressionType", ", ", { @@ -9538,7 +9789,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 201 + "lineNumber": 200 }, "deprecated": false }, @@ -9567,7 +9818,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", + ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"numerical_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"numerical_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -9591,7 +9874,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 202 + "lineNumber": 201 }, "deprecated": false }, @@ -9644,7 +9927,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 203 + "lineNumber": 202 }, "deprecated": false }, @@ -9673,7 +9956,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".GEOHASH_GRID>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: string | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", + ".GEOHASH_GRID>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", "AggExpressionType", ", ", { @@ -9697,7 +10044,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 204 + "lineNumber": 203 }, "deprecated": false }, @@ -9726,7 +10073,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", + ".HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", "AggExpressionType", ", ", { @@ -9750,7 +10129,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 205 + "lineNumber": 204 }, "deprecated": false }, @@ -9779,7 +10158,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", + ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", "AggExpressionType", ", ", { @@ -9803,7 +10246,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 206 + "lineNumber": 205 }, "deprecated": false }, @@ -9860,7 +10303,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 207 + "lineNumber": 206 }, "deprecated": false }, @@ -9913,7 +10356,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 208 + "lineNumber": 207 }, "deprecated": false }, @@ -9974,7 +10417,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 209 + "lineNumber": 208 }, "deprecated": false }, @@ -10035,7 +10478,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 210 + "lineNumber": 209 }, "deprecated": false }, @@ -10096,7 +10539,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 211 + "lineNumber": 210 }, "deprecated": false }, @@ -10157,7 +10600,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 212 + "lineNumber": 211 }, "deprecated": false }, @@ -10218,7 +10661,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 213 + "lineNumber": 212 }, "deprecated": false }, @@ -10271,7 +10714,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 214 + "lineNumber": 213 }, "deprecated": false }, @@ -10324,7 +10767,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 215 + "lineNumber": 214 }, "deprecated": false }, @@ -10381,7 +10824,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 216 + "lineNumber": 215 }, "deprecated": false }, @@ -10438,7 +10881,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 217 + "lineNumber": 216 }, "deprecated": false }, @@ -10491,7 +10934,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 218 + "lineNumber": 217 }, "deprecated": false }, @@ -10544,7 +10987,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 219 + "lineNumber": 218 }, "deprecated": false }, @@ -10597,7 +11040,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 220 + "lineNumber": 219 }, "deprecated": false }, @@ -10650,7 +11093,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 221 + "lineNumber": 220 }, "deprecated": false }, @@ -10703,7 +11146,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 222 + "lineNumber": 221 }, "deprecated": false }, @@ -10756,7 +11199,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 223 + "lineNumber": 222 }, "deprecated": false }, @@ -10813,7 +11256,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 224 + "lineNumber": 223 }, "deprecated": false }, @@ -10866,7 +11309,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 225 + "lineNumber": 224 }, "deprecated": false }, @@ -10919,7 +11362,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 226 + "lineNumber": 225 }, "deprecated": false }, @@ -10976,7 +11419,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 227 + "lineNumber": 226 }, "deprecated": false }, @@ -11029,7 +11472,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 228 + "lineNumber": 227 }, "deprecated": false }, @@ -11082,7 +11525,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 229 + "lineNumber": 228 }, "deprecated": false }, @@ -11135,7 +11578,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 230 + "lineNumber": 229 }, "deprecated": false } @@ -11255,8 +11698,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/actions/apply_filter_action.ts", @@ -11340,9 +11782,7 @@ "signature": [ "({ data, negate, }: ", "ValueClickDataContext", - ") => Promise<", - "Filter", - "[]>" + ") => Promise" ], "source": { "path": "src/plugins/data/public/types.ts", @@ -11379,9 +11819,7 @@ "signature": [ "(event: ", "RangeSelectDataContext", - ") => Promise<", - "Filter", - "[]>" + ") => Promise" ], "source": { "path": "src/plugins/data/public/types.ts", @@ -13546,41 +13984,6 @@ "lineNumber": 30 } }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts", - "lineNumber": 22 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts", - "lineNumber": 96 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 14 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 50 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 72 - } - }, { "plugin": "savedObjectsManagement", "link": { @@ -13725,21 +14128,21 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/helpers.tsx", - "lineNumber": 149 + "lineNumber": 148 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 31 + "lineNumber": 29 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 122 + "lineNumber": 120 } }, { @@ -14229,7 +14632,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx", - "lineNumber": 55 + "lineNumber": 56 } }, { @@ -14243,7 +14646,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 79 + "lineNumber": 80 } }, { @@ -14421,20 +14824,6 @@ "lineNumber": 54 } }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 8 - } - }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 28 - } - }, { "plugin": "timelines", "link": { @@ -15135,20 +15524,6 @@ "lineNumber": 405 } }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/state/reducers/index_pattern.ts", - "lineNumber": 10 - } - }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/state/reducers/index_pattern.ts", - "lineNumber": 13 - } - }, { "plugin": "ml", "link": { @@ -16724,7 +17099,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 26 + "lineNumber": 25 }, "deprecated": false, "children": [ @@ -16758,7 +17133,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 31 + "lineNumber": 30 }, "deprecated": false, "returnComment": [], @@ -16782,7 +17157,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 31 + "lineNumber": 30 }, "deprecated": false } @@ -16810,7 +17185,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 35 + "lineNumber": 34 }, "deprecated": false, "returnComment": [], @@ -17073,7 +17448,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 70 + "lineNumber": 69 }, "deprecated": false, "children": [ @@ -17089,51 +17464,43 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 71 + "lineNumber": 70 }, "deprecated": false }, { "parentPluginId": "data", "id": "def-public.SearchSourceFields.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\n{@link Query}" ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 75 + "lineNumber": 74 }, "deprecated": false }, { "parentPluginId": "data", "id": "def-public.SearchSourceFields.filter", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filter", "description": [ "\n{@link Filter}" ], "signature": [ - "Filter", - " | ", - "Filter", - "[] | (() => ", - "Filter", - " | ", - "Filter", - "[] | undefined) | undefined" + "any" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 79 + "lineNumber": 78 }, "deprecated": false }, @@ -17199,7 +17566,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 83 + "lineNumber": 82 }, "deprecated": false }, @@ -17215,7 +17582,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 84 + "lineNumber": 83 }, "deprecated": false }, @@ -17231,7 +17598,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 85 + "lineNumber": 84 }, "deprecated": false }, @@ -17247,7 +17614,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 86 + "lineNumber": 85 }, "deprecated": false }, @@ -17273,7 +17640,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 90 + "lineNumber": 89 }, "deprecated": false }, @@ -17289,7 +17656,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 91 + "lineNumber": 90 }, "deprecated": false }, @@ -17305,7 +17672,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 92 + "lineNumber": 91 }, "deprecated": false }, @@ -17321,7 +17688,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 93 + "lineNumber": 92 }, "deprecated": false }, @@ -17337,7 +17704,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 94 + "lineNumber": 93 }, "deprecated": false }, @@ -17362,7 +17729,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 98 + "lineNumber": 97 }, "deprecated": false }, @@ -17378,11 +17745,11 @@ "\nRetreive fields directly from _source (legacy behavior)\n" ], "signature": [ - "string | boolean | string[] | undefined" + "string | string[] | undefined" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 104 + "lineNumber": 103 }, "deprecated": true, "references": [ @@ -17423,7 +17790,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 108 + "lineNumber": 107 }, "deprecated": false }, @@ -17446,7 +17813,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 109 + "lineNumber": 108 }, "deprecated": false }, @@ -17462,7 +17829,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 110 + "lineNumber": 109 }, "deprecated": false }, @@ -17478,7 +17845,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 111 + "lineNumber": 110 }, "deprecated": false }, @@ -17501,7 +17868,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 113 + "lineNumber": 112 }, "deprecated": false } @@ -17579,9 +17946,12 @@ "tags": [], "label": "ES_FIELD_TYPES", "description": [], + "signature": [ + "ES_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 18 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 9 }, "deprecated": false, "initialIsOpen": false @@ -17607,9 +17977,12 @@ "tags": [], "label": "KBN_FIELD_TYPES", "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 65 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 47 }, "deprecated": false, "initialIsOpen": false @@ -17637,7 +18010,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 40 + "lineNumber": 39 }, "deprecated": false, "initialIsOpen": false @@ -17852,7 +18225,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 129 + "lineNumber": 128 }, "deprecated": false, "initialIsOpen": false @@ -17884,12 +18257,11 @@ "label": "CustomFilter", "description": [], "signature": [ - "Filter", - " & { query: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 270 + "lineNumber": 318 }, "deprecated": true, "references": [], @@ -18010,7 +18382,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 305 + "lineNumber": 353 }, "deprecated": true, "references": [ @@ -18081,7 +18453,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 55 + "lineNumber": 54 }, "deprecated": false, "initialIsOpen": false @@ -18134,13 +18506,7 @@ "label": "ExecutionContextSearch", "description": [], "signature": [ - "{ filters?: ", - "Filter", - "[] | undefined; query?: ", - "Query", - " | ", - "Query", - "[] | undefined; timeRange?: ", + "{ filters?: any[] | undefined; query?: any; timeRange?: ", { "pluginId": "data", "scope": "common", @@ -18167,16 +18533,11 @@ "label": "ExistsFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "FilterMeta", - "; exists?: ", - "FilterExistsProperty", - " | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 245 + "lineNumber": 293 }, "deprecated": true, "references": [ @@ -18433,15 +18794,11 @@ "label": "Filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 230 + "lineNumber": 278 }, "deprecated": true, "references": [ @@ -19023,35 +19380,35 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/store/t_grid/model.ts", - "lineNumber": 52 + "lineNumber": 54 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 30 + "lineNumber": 28 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 116 + "lineNumber": 114 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 28 + "lineNumber": 27 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 109 + "lineNumber": 108 } }, { @@ -19733,41 +20090,6 @@ "lineNumber": 183 } }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 8 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 14 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 50 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 11 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 21 - } - }, { "plugin": "securitySolution", "link": { @@ -19936,6 +20258,41 @@ "lineNumber": 36 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 8 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 14 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 50 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 11 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 21 + } + }, { "plugin": "securitySolution", "link": { @@ -20093,29 +20450,29 @@ { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", "lineNumber": 22 } }, { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", - "lineNumber": 63 + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", + "lineNumber": 62 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 15 + "lineNumber": 14 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 23 + "lineNumber": 22 } }, { @@ -20129,7 +20486,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx", - "lineNumber": 54 + "lineNumber": 55 } }, { @@ -20143,7 +20500,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 30 + "lineNumber": 31 } }, { @@ -20223,6 +20580,20 @@ "lineNumber": 114 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 23 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 30 + } + }, { "plugin": "securitySolution", "link": { @@ -21611,21 +21982,9 @@ "[]) => void; deserialize: ", "FormatFactory", "; getDefaultConfig: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", { "pluginId": "data", @@ -21639,71 +21998,23 @@ " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", "FieldFormatInstanceType", " | undefined; getDefaultType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", "FieldFormatInstanceType", " | undefined; getTypeNameByEsTypes: (esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", " | undefined; getDefaultTypeName: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "; getInstance: ((formatId: string, params?: Record) => ", { "pluginId": "data", @@ -21713,21 +22024,9 @@ "text": "FieldFormat" }, ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -21737,47 +22036,17 @@ "text": "FieldFormat" }, "; getDefaultInstanceCacheResolver: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]) => string; getByFieldType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ") => ", "FieldFormatInstanceType", "[]; getDefaultInstance: ((fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -21786,7 +22055,7 @@ "section": "def-common.FieldFormat", "text": "FieldFormat" }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; }" + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" ], "source": { "path": "src/plugins/data/common/field_formats/index.ts", @@ -21832,7 +22101,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 300 + "lineNumber": 348 }, "deprecated": true, "references": [ @@ -22378,7 +22647,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 20 + "lineNumber": 19 }, "deprecated": false, "initialIsOpen": false @@ -22421,7 +22690,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 290 + "lineNumber": 338 }, "deprecated": true, "references": [ @@ -22446,39 +22715,18 @@ "lineNumber": 97 } }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 11 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 39 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 41 - } - }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 22 + "lineNumber": 23 } }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 278 + "lineNumber": 281 } }, { @@ -22548,28 +22796,28 @@ "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 36 + "lineNumber": 35 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 49 + "lineNumber": 48 } }, { @@ -22991,14 +23239,11 @@ "label": "MatchAllFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "MatchAllFilterMeta", - "; match_all: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 265 + "lineNumber": 313 }, "deprecated": true, "references": [ @@ -23048,14 +23293,11 @@ "label": "PhraseFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 260 + "lineNumber": 308 }, "deprecated": true, "references": [], @@ -23071,36 +23313,16 @@ "label": "PhrasesFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhrasesFilterMeta", - "; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 255 + "lineNumber": 303 }, "deprecated": true, "references": [], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/types.d.ts", - "lineNumber": 48 - }, - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.RangeFilter", @@ -23111,18 +23333,11 @@ "label": "RangeFilter", "description": [], "signature": [ - "Filter", - " & ", - "EsRangeFilter", - " & { meta: ", - "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: any; }; } | undefined; match_all?: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 280 + "lineNumber": 328 }, "deprecated": true, "references": [ @@ -23153,14 +23368,11 @@ "label": "RangeFilterMeta", "description": [], "signature": [ - "FilterMeta", - " & { params: ", - "RangeFilterParams", - "; field?: any; formattedValue?: string | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 235 + "lineNumber": 283 }, "deprecated": true, "references": [], @@ -23176,11 +23388,11 @@ "label": "RangeFilterParams", "description": [], "signature": [ - "RangeFilterParams" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 240 + "lineNumber": 288 }, "deprecated": true, "references": [], @@ -23281,429 +23493,830 @@ "parentPluginId": "data", "id": "def-public.esFilters", "type": "Object", - "tags": [], + "tags": [ + "deprecated" + ], "label": "esFilters", - "description": [], + "description": [ + "\nFilter helpers namespace:" + ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 67 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 93 }, - "deprecated": false, - "children": [ + "deprecated": true, + "references": [ { - "parentPluginId": "data", - "id": "def-public.esFilters.FilterLabel", - "type": "Function", - "tags": [], - "label": "FilterLabel", - "description": [], - "signature": [ - "(props: ", - "FilterLabelProps", - ") => JSX.Element" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 68 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.props", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "FilterLabelProps" - ], - "source": { - "path": "src/plugins/data/public/ui/filter_bar/index.tsx", - "lineNumber": 15 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/url_generator.ts", + "lineNumber": 11 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.FilterItem", - "type": "Function", - "tags": [], - "label": "FilterItem", - "description": [], - "signature": [ - "(props: ", - "FilterItemProps", - ") => JSX.Element" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 69 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.props", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "FilterItemProps" - ], - "source": { - "path": "src/plugins/data/public/ui/filter_bar/index.tsx", - "lineNumber": 24 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/url_generator.ts", + "lineNumber": 121 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.FILTERS", - "type": "Object", - "tags": [], - "label": "FILTERS", - "description": [], - "signature": [ - "typeof ", - "FILTERS" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 71 - }, - "deprecated": false + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/url_generator.ts", + "lineNumber": 130 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.FilterStateStore", - "type": "Object", - "tags": [], - "label": "FilterStateStore", - "description": [], - "signature": [ - "typeof ", - "FilterStateStore" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 72 - }, - "deprecated": false + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/locator.ts", + "lineNumber": 12 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.buildEmptyFilter", - "type": "Function", - "tags": [], - "label": "buildEmptyFilter", - "description": [], - "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 74 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.isPinned", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.index", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/locator.ts", + "lineNumber": 120 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhrasesFilter", - "type": "Function", - "tags": [], - "label": "buildPhrasesFilter", - "description": [], - "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: any[], indexPattern: ", - "IndexPatternBase", - ") => ", - "PhrasesFilter" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 75 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.params", - "type": "Array", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "any[]" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/locator.ts", + "lineNumber": 129 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.buildExistsFilter", - "type": "Function", - "tags": [], - "label": "buildExistsFilter", - "description": [], - "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", indexPattern: ", - "IndexPatternBase", - ") => ", - "ExistsFilter" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 76 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/helpers/get_context_url.tsx", + "lineNumber": 12 + } }, { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhraseFilter", - "type": "Function", - "tags": [], - "label": "buildPhraseFilter", - "description": [], - "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", value: any, indexPattern: ", - "IndexPatternBase", - ") => ", - "PhraseFilter" - ], - "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 77 - }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.value", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - } - ] + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/helpers/get_context_url.tsx", + "lineNumber": 35 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/services/discover_state.ts", + "lineNumber": 25 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/services/discover_state.ts", + "lineNumber": 264 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/services/discover_state.ts", + "lineNumber": 309 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/services/discover_state.ts", + "lineNumber": 309 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/angular/context_state.ts", + "lineNumber": 19 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/angular/context_state.ts", + "lineNumber": 233 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/angular/context_state.ts", + "lineNumber": 233 + } }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/angular/context_state.ts", + "lineNumber": 250 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/angular/context_state.ts", + "lineNumber": 250 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx", + "lineNumber": 19 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx", + "lineNumber": 265 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx", + "lineNumber": 275 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx", + "lineNumber": 313 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/components/context_app/context_app.tsx", + "lineNumber": 15 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/components/context_app/context_app.tsx", + "lineNumber": 101 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx", + "lineNumber": 29 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx", + "lineNumber": 168 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/plugin.tsx", + "lineNumber": 32 + } + }, + { + "plugin": "discover", + "link": { + "path": "src/plugins/discover/public/plugin.tsx", + "lineNumber": 296 + } + }, + { + "plugin": "visualizations", + "link": { + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", + "lineNumber": 17 + } + }, + { + "plugin": "visualizations", + "link": { + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", + "lineNumber": 236 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/save_dashboard.ts", + "lineNumber": 19 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/save_dashboard.ts", + "lineNumber": 82 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts", + "lineNumber": 11 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts", + "lineNumber": 101 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts", + "lineNumber": 103 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts", + "lineNumber": 104 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts", + "lineNumber": 14 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts", + "lineNumber": 98 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts", + "lineNumber": 101 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/plugin.tsx", + "lineNumber": 37 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/plugin.tsx", + "lineNumber": 257 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/url_generator.ts", + "lineNumber": 13 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/url_generator.ts", + "lineNumber": 144 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/url_generator.ts", + "lineNumber": 157 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/locator.ts", + "lineNumber": 13 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/locator.ts", + "lineNumber": 130 + } + }, + { + "plugin": "dashboard", + "link": { + "path": "src/plugins/dashboard/public/locator.ts", + "lineNumber": 143 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx", + "lineNumber": 19 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx", + "lineNumber": 355 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", + "lineNumber": 11 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", + "lineNumber": 62 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", + "lineNumber": 70 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts", + "lineNumber": 78 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx", + "lineNumber": 10 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx", + "lineNumber": 30 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx", + "lineNumber": 31 + } + }, + { + "plugin": "observability", + "link": { + "path": "x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx", + "lineNumber": 64 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts", + "lineNumber": 12 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts", + "lineNumber": 86 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts", + "lineNumber": 90 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx", + "lineNumber": 38 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx", + "lineNumber": 245 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts", + "lineNumber": 9 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts", + "lineNumber": 42 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx", + "lineNumber": 32 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx", + "lineNumber": 439 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "lineNumber": 25 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "lineNumber": 250 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/locators.ts", + "lineNumber": 18 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/locators.ts", + "lineNumber": 91 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/locators.ts", + "lineNumber": 94 + } + }, + { + "plugin": "canvas", + "link": { + "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts", + "lineNumber": 11 + } + }, + { + "plugin": "canvas", + "link": { + "path": "x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts", + "lineNumber": 35 + } + }, + { + "plugin": "dashboardEnhanced", + "link": { + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", + "lineNumber": 13 + } + }, + { + "plugin": "dashboardEnhanced", + "link": { + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", + "lineNumber": 73 + } + }, + { + "plugin": "dashboardEnhanced", + "link": { + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", + "lineNumber": 79 + } + }, + { + "plugin": "discoverEnhanced", + "link": { + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts", + "lineNumber": 15 + } + }, + { + "plugin": "discoverEnhanced", + "link": { + "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts", + "lineNumber": 57 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/locators.test.ts", + "lineNumber": 9 + } + }, + { + "plugin": "maps", + "link": { + "path": "x-pack/plugins/maps/public/locators.test.ts", + "lineNumber": 103 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx", + "lineNumber": 19 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx", + "lineNumber": 312 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts", + "lineNumber": 13 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts", + "lineNumber": 246 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 34 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 382 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 383 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 384 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 385 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 398 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 403 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 406 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 409 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 414 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts", + "lineNumber": 417 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx", + "lineNumber": 31 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx", + "lineNumber": 85 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx", + "lineNumber": 87 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx", + "lineNumber": 17 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx", + "lineNumber": 151 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/mocks.tsx", + "lineNumber": 24 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/mocks.tsx", + "lineNumber": 249 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts", + "lineNumber": 18 + } + }, + { + "plugin": "lens", + "link": { + "path": "x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts", + "lineNumber": 62 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts", + "lineNumber": 9 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts", + "lineNumber": 570 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts", + "lineNumber": 8 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts", + "lineNumber": 106 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts", + "lineNumber": 118 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts", + "lineNumber": 8 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts", + "lineNumber": 23 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/__mocks__/mock.ts", + "lineNumber": 97 + } + } + ], + "children": [ { "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter", + "id": "def-public.esFilters.FilterLabel", "type": "Function", "tags": [], - "label": "buildQueryFilter", + "label": "FilterLabel", "description": [], "signature": [ - "(query: any, index: string, alias: string) => ", - "QueryStringFilter" + "(props: ", + "FilterLabelProps", + ") => JSX.Element" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 78 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 94 }, "deprecated": false, "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-public.query", - "type": "Any", + "id": "def-public.props", + "type": "Object", "tags": [], - "label": "query", + "label": "props", "description": [], "signature": [ - "any" + "FilterLabelProps" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.index", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.alias", - "type": "string", - "tags": [], - "label": "alias", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 15 }, "deprecated": false } @@ -23711,345 +24324,282 @@ }, { "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter", + "id": "def-public.esFilters.FilterItem", "type": "Function", "tags": [], - "label": "buildRangeFilter", + "label": "FilterItem", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern: ", - "IndexPatternBase", - ", formattedValue?: string | undefined) => ", - "RangeFilter" + "(props: ", + "FilterItemProps", + ") => JSX.Element" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 79 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 95 }, "deprecated": false, "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-public.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPattern", + "id": "def-public.props", "type": "Object", "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.formattedValue", - "type": "string", - "tags": [], - "label": "formattedValue", + "label": "props", "description": [], "signature": [ - "string | undefined" + "FilterItemProps" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 24 }, "deprecated": false } ] }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.FILTERS", + "type": "Object", + "tags": [], + "label": "FILTERS", + "description": [], + "signature": [ + "typeof ", + "FILTERS" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 97 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.FilterStateStore", + "type": "Object", + "tags": [], + "label": "FilterStateStore", + "description": [], + "signature": [ + "typeof ", + "FilterStateStore" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 98 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildEmptyFilter", + "type": "Any", + "tags": [], + "label": "buildEmptyFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 100 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildPhrasesFilter", + "type": "Any", + "tags": [], + "label": "buildPhrasesFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 101 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildExistsFilter", + "type": "Any", + "tags": [], + "label": "buildExistsFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 102 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildPhraseFilter", + "type": "Any", + "tags": [], + "label": "buildPhraseFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 103 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildQueryFilter", + "type": "Any", + "tags": [], + "label": "buildQueryFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 104 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.esFilters.buildRangeFilter", + "type": "Any", + "tags": [], + "label": "buildRangeFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 105 + }, + "deprecated": false + }, { "parentPluginId": "data", "id": "def-public.esFilters.isPhraseFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isPhraseFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "PhraseFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 81 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 107 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 22 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isExistsFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isExistsFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "ExistsFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 82 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 108 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 11 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isPhrasesFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isPhrasesFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "PhrasesFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 83 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 109 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 10 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isRangeFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isRangeFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "RangeFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 84 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 110 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 34 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isMatchAllFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isMatchAllFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "MatchAllFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 85 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 111 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/match_all_filter.d.ts", - "lineNumber": 10 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isMissingFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isMissingFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "MissingFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 86 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 112 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/missing_filter.d.ts", - "lineNumber": 7 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.isQueryStringFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "isQueryStringFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "QueryStringFilter" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 87 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 113 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 11 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", @@ -24059,13 +24609,11 @@ "label": "isFilterPinned", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => boolean | undefined" + "(filter: any) => boolean | undefined" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 88 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 114 }, "deprecated": false, "returnComment": [], @@ -24073,20 +24621,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 3 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 2 }, "deprecated": false } @@ -24100,15 +24644,11 @@ "label": "toggleFilterNegated", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: ", - "FilterState", - " | undefined; query?: any; }" + "(filter: any) => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: any; query?: any; }" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 90 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 116 }, "deprecated": false, "returnComment": [], @@ -24116,20 +24656,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 20 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 19 }, "deprecated": false } @@ -24143,14 +24679,11 @@ "label": "disableFilter", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" + "(filter: any) => any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 91 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 117 }, "deprecated": false, "returnComment": [], @@ -24158,20 +24691,16 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 44 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 43 }, "deprecated": false } @@ -24180,82 +24709,34 @@ { "parentPluginId": "data", "id": "def-public.esFilters.getPhraseFilterField", - "type": "Function", + "type": "Any", "tags": [], "label": "getPhraseFilterField", "description": [], "signature": [ - "(filter: ", - "PhraseFilter", - ") => string" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 92 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 118 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 24 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-public.esFilters.getPhraseFilterValue", - "type": "Function", + "type": "Any", "tags": [], "label": "getPhraseFilterValue", "description": [], "signature": [ - "(filter: ", - "PhraseFilter", - ") => PhraseFilterValue" + "any" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 93 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 119 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.filter", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 25 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", @@ -24265,9 +24746,7 @@ "label": "getDisplayValueFromFilter", "description": [], "signature": [ - "(filter: ", - "Filter", - ", indexPatterns: ", + "(filter: any, indexPatterns: ", { "pluginId": "data", "scope": "common", @@ -24278,8 +24757,8 @@ "[]) => string" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 94 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 120 }, "deprecated": false, "returnComment": [], @@ -24287,16 +24766,12 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", @@ -24337,27 +24812,13 @@ "label": "compareFilters", "description": [], "signature": [ - "(first: ", - "Filter", - " | ", - "Filter", - "[], second: ", - "Filter", - " | ", - "Filter", - "[], comparatorOptions?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - }, - ") => boolean" + "(first: any, second: any, comparatorOptions?: ", + "FilterCompareOptions", + " | undefined) => boolean" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 96 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 122 }, "deprecated": false, "returnComment": [], @@ -24365,38 +24826,32 @@ { "parentPluginId": "data", "id": "def-public.first", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "first", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 65 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 }, "deprecated": false }, { "parentPluginId": "data", "id": "def-public.second", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "second", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 66 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 }, "deprecated": false }, @@ -24408,17 +24863,12 @@ "label": "comparatorOptions", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - } + "FilterCompareOptions", + " | undefined" ], "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 67 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 }, "deprecated": false } @@ -24432,17 +24882,11 @@ "label": "COMPARE_ALL_OPTIONS", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - } + "FilterCompareOptions" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 97 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 123 }, "deprecated": false }, @@ -24470,13 +24914,11 @@ "section": "def-common.IFieldType", "text": "IFieldType" }, - ", values: any, operation: string, index: string) => ", - "Filter", - "[]" + ", values: any, operation: string, index: string) => any[]" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 98 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 124 }, "deprecated": false, "returnComment": [], @@ -24578,15 +25020,11 @@ "label": "onlyDisabledFiltersChanged", "description": [], "signature": [ - "(newFilters?: ", - "Filter", - "[] | undefined, oldFilters?: ", - "Filter", - "[] | undefined) => boolean" + "(newFilters?: any[] | undefined, oldFilters?: any[] | undefined) => boolean" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 99 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 125 }, "deprecated": false, "returnComment": [], @@ -24599,12 +25037,11 @@ "label": "newFilters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { - "path": "src/plugins/data/public/query/filter_manager/lib/only_disabled.ts", - "lineNumber": 19 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/only_disabled.d.ts", + "lineNumber": 7 }, "deprecated": false }, @@ -24616,12 +25053,11 @@ "label": "oldFilters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { - "path": "src/plugins/data/public/query/filter_manager/lib/only_disabled.ts", - "lineNumber": 19 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/only_disabled.d.ts", + "lineNumber": 7 }, "deprecated": false } @@ -24637,13 +25073,11 @@ "signature": [ "(timeFilter: Pick<", "Timefilter", - ", \"isTimeRangeSelectorEnabled\" | \"isAutoRefreshSelectorEnabled\" | \"isTimeTouched\" | \"getEnabledUpdated$\" | \"getTimeUpdate$\" | \"getRefreshIntervalUpdate$\" | \"getAutoRefreshFetch$\" | \"getFetch$\" | \"getTime\" | \"getAbsoluteTime\" | \"setTime\" | \"getRefreshInterval\" | \"setRefreshInterval\" | \"createFilter\" | \"getBounds\" | \"calculateBounds\" | \"getActiveBounds\" | \"enableTimeRangeSelector\" | \"disableTimeRangeSelector\" | \"enableAutoRefreshSelector\" | \"disableAutoRefreshSelector\" | \"getTimeDefaults\" | \"getRefreshIntervalDefaults\">, filter: ", - "RangeFilter", - ") => void" + ", \"isTimeRangeSelectorEnabled\" | \"isAutoRefreshSelectorEnabled\" | \"isTimeTouched\" | \"getEnabledUpdated$\" | \"getTimeUpdate$\" | \"getRefreshIntervalUpdate$\" | \"getAutoRefreshFetch$\" | \"getFetch$\" | \"getTime\" | \"getAbsoluteTime\" | \"setTime\" | \"getRefreshInterval\" | \"setRefreshInterval\" | \"createFilter\" | \"getBounds\" | \"calculateBounds\" | \"getActiveBounds\" | \"enableTimeRangeSelector\" | \"disableTimeRangeSelector\" | \"enableAutoRefreshSelector\" | \"disableAutoRefreshSelector\" | \"getTimeDefaults\" | \"getRefreshIntervalDefaults\">, filter: any) => void" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 101 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 127 }, "deprecated": false, "returnComment": [], @@ -24730,9 +25164,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => ", - "RangeFilter", - " | undefined; getBounds: () => ", + " | undefined) => any; getBounds: () => ", { "pluginId": "data", "scope": "common", @@ -24791,19 +25223,12 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "Filter", - " & ", - "EsRangeFilter", - " & { meta: ", - "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: any; }; } | undefined; match_all?: any; }" + "any" ], "source": { "path": "src/plugins/data/public/query/timefilter/lib/change_time_filter.ts", @@ -24821,9 +25246,7 @@ "label": "convertRangeFilterToTimeRangeString", "description": [], "signature": [ - "(filter: ", - "RangeFilter", - ") => ", + "(filter: any) => ", { "pluginId": "data", "scope": "common", @@ -24833,8 +25256,8 @@ } ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 102 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 128 }, "deprecated": false, "returnComment": [], @@ -24842,19 +25265,12 @@ { "parentPluginId": "data", "id": "def-public.filter", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "Filter", - " & ", - "EsRangeFilter", - " & { meta: ", - "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: any; }; } | undefined; match_all?: any; }" + "any" ], "source": { "path": "src/plugins/data/public/query/timefilter/lib/change_time_filter.ts", @@ -24872,15 +25288,11 @@ "label": "mapAndFlattenFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - "[]) => ", - "Filter", - "[]" + "(filters: any[]) => any[]" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 103 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 129 }, "deprecated": false, "returnComment": [], @@ -24893,8 +25305,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/lib/map_and_flatten_filters.ts", @@ -24912,17 +25323,11 @@ "label": "extractTimeFilter", "description": [], "signature": [ - "(timeFieldName: string, filters: ", - "Filter", - "[]) => { restOfFilters: ", - "Filter", - "[]; timeRangeFilter: ", - "RangeFilter", - " | undefined; }" + "(timeFieldName: string, filters: any[]) => { restOfFilters: any[]; timeRangeFilter: any; }" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 104 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 130 }, "deprecated": false, "returnComment": [], @@ -24948,8 +25353,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts", @@ -24967,11 +25371,7 @@ "label": "extractTimeRange", "description": [], "signature": [ - "(filters: ", - "Filter", - "[], timeFieldName?: string | undefined) => { restOfFilters: ", - "Filter", - "[]; timeRange?: ", + "(filters: any[], timeFieldName?: string | undefined) => { restOfFilters: any[]; timeRange?: ", { "pluginId": "data", "scope": "common", @@ -24982,8 +25382,8 @@ " | undefined; }" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 105 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 131 }, "deprecated": false, "returnComment": [], @@ -24996,8 +25396,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts", @@ -25036,8 +25435,8 @@ "label": "esKuery", "description": [], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 129 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 156 }, "deprecated": true, "references": [ @@ -25087,14 +25486,14 @@ "plugin": "lens", "link": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 63 + "lineNumber": 64 } }, { "plugin": "lens", "link": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 63 + "lineNumber": 64 } }, { @@ -25472,14 +25871,14 @@ "plugin": "uptime", "link": { "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 41 + "lineNumber": 42 } }, { "plugin": "uptime", "link": { "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 43 + "lineNumber": 44 } }, { @@ -25523,8 +25922,8 @@ "NodeTypes" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 130 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 157 }, "deprecated": false }, @@ -25542,8 +25941,8 @@ "KueryNode" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 131 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 158 }, "deprecated": false, "returnComment": [], @@ -25600,8 +25999,8 @@ "JsonObject" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 132 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 159 }, "deprecated": false, "returnComment": [], @@ -25686,8 +26085,8 @@ "label": "esQuery", "description": [], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 138 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 165 }, "deprecated": true, "references": [ @@ -25716,7 +26115,7 @@ "plugin": "lens", "link": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 65 + "lineNumber": 66 } }, { @@ -25800,28 +26199,28 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 29 + "lineNumber": 27 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 203 + "lineNumber": 201 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 27 + "lineNumber": 26 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 179 + "lineNumber": 178 } }, { @@ -26072,22 +26471,22 @@ { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", "lineNumber": 22 } }, { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", - "lineNumber": 255 + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", + "lineNumber": 208 } }, { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", - "lineNumber": 260 + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", + "lineNumber": 213 } }, { @@ -26101,7 +26500,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 118 + "lineNumber": 119 } }, { @@ -26118,6 +26517,20 @@ "lineNumber": 117 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 23 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 48 + } + }, { "plugin": "securitySolution", "link": { @@ -26382,27 +26795,15 @@ "signature": [ "(indexPattern: ", "IndexPatternBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", + " | undefined, queries: any, filters: any, config?: ", "EsQueryConfig", " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" + "[]; filter: any[]; should: never[]; must_not: any[]; }; }" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 139 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 166 }, "deprecated": false, "returnComment": [], @@ -26427,15 +26828,12 @@ { "parentPluginId": "data", "id": "def-public.queries", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "queries", "description": [], "signature": [ - "Query", - " | ", - "Query", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -26446,15 +26844,12 @@ { "parentPluginId": "data", "id": "def-public.filters", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filters", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -26493,8 +26888,8 @@ "EsQueryConfig" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 140 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 167 }, "deprecated": false, "returnComment": [], @@ -26525,19 +26920,13 @@ "label": "buildQueryFromFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", + "(filters: any[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: any[]; should: never[]; must_not: any[]; }" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 141 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 168 }, "deprecated": false, "returnComment": [], @@ -26550,8 +26939,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", @@ -26606,8 +26994,8 @@ "DslQuery" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 142 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 169 }, "deprecated": false, "returnComment": [], @@ -26644,8 +27032,8 @@ "DslQuery" ], "source": { - "path": "src/plugins/data/public/index.ts", - "lineNumber": 143 + "path": "src/plugins/data/public/deprecated.ts", + "lineNumber": 170 }, "deprecated": false, "returnComment": [], @@ -26720,7 +27108,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 220 + "lineNumber": 100 }, "deprecated": false, "children": [ @@ -26744,7 +27132,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 221 + "lineNumber": 101 }, "deprecated": false, "returnComment": [], @@ -26798,7 +27186,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 222 + "lineNumber": 102 }, "deprecated": false }, @@ -26814,7 +27202,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 223 + "lineNumber": 103 }, "deprecated": false, "returnComment": [], @@ -26854,7 +27242,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 224 + "lineNumber": 104 }, "deprecated": false, "returnComment": [], @@ -26912,7 +27300,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 177 + "lineNumber": 57 }, "deprecated": false, "children": [ @@ -26935,7 +27323,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 178 + "lineNumber": 58 }, "deprecated": false }, @@ -26958,7 +27346,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 179 + "lineNumber": 59 }, "deprecated": false }, @@ -26974,7 +27362,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 181 + "lineNumber": 61 }, "deprecated": false }, @@ -26990,7 +27378,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 182 + "lineNumber": 62 }, "deprecated": false }, @@ -27006,7 +27394,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 183 + "lineNumber": 63 }, "deprecated": false }, @@ -27029,7 +27417,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 184 + "lineNumber": 64 }, "deprecated": false }, @@ -27052,7 +27440,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 186 + "lineNumber": 66 }, "deprecated": false }, @@ -27075,7 +27463,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 187 + "lineNumber": 67 }, "deprecated": false }, @@ -27098,7 +27486,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 188 + "lineNumber": 68 }, "deprecated": false }, @@ -27115,7 +27503,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 189 + "lineNumber": 69 }, "deprecated": false }, @@ -27132,7 +27520,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 190 + "lineNumber": 70 }, "deprecated": false }, @@ -27155,7 +27543,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 191 + "lineNumber": 71 }, "deprecated": false }, @@ -27178,7 +27566,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 192 + "lineNumber": 72 }, "deprecated": false }, @@ -27201,7 +27589,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 193 + "lineNumber": 73 }, "deprecated": false }, @@ -27224,7 +27612,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 194 + "lineNumber": 74 }, "deprecated": false }, @@ -27247,7 +27635,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 195 + "lineNumber": 75 }, "deprecated": false }, @@ -27270,7 +27658,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 196 + "lineNumber": 76 }, "deprecated": false }, @@ -27293,7 +27681,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 197 + "lineNumber": 77 }, "deprecated": false }, @@ -27316,7 +27704,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 198 + "lineNumber": 78 }, "deprecated": false }, @@ -27339,7 +27727,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 199 + "lineNumber": 79 }, "deprecated": false }, @@ -27362,7 +27750,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 200 + "lineNumber": 80 }, "deprecated": false }, @@ -27385,7 +27773,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 201 + "lineNumber": 81 }, "deprecated": false } @@ -27401,7 +27789,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 247 + "lineNumber": 127 }, "deprecated": false, "children": [ @@ -27414,7 +27802,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 248 + "lineNumber": 128 }, "deprecated": false }, @@ -27427,7 +27815,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 249 + "lineNumber": 129 }, "deprecated": false }, @@ -27443,7 +27831,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 250 + "lineNumber": 130 }, "deprecated": false }, @@ -27459,7 +27847,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 251 + "lineNumber": 131 }, "deprecated": false }, @@ -27483,7 +27871,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 252 + "lineNumber": 132 }, "deprecated": false, "returnComment": [], @@ -27532,7 +27920,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 253 + "lineNumber": 133 }, "deprecated": false, "returnComment": [], @@ -27581,7 +27969,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 254 + "lineNumber": 134 }, "deprecated": false, "returnComment": [], @@ -27622,7 +28010,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 255 + "lineNumber": 135 }, "deprecated": false, "returnComment": [], @@ -27662,7 +28050,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 256 + "lineNumber": 136 }, "deprecated": false, "returnComment": [], @@ -27743,7 +28131,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 257 + "lineNumber": 137 }, "deprecated": false, "returnComment": [], @@ -27800,7 +28188,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 418 + "lineNumber": 298 }, "deprecated": false, "children": [ @@ -27813,7 +28201,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 419 + "lineNumber": 299 }, "deprecated": false, "children": [ @@ -27836,7 +28224,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 420 + "lineNumber": 300 }, "deprecated": false }, @@ -27852,7 +28240,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 421 + "lineNumber": 301 }, "deprecated": false, "returnComment": [], @@ -27892,7 +28280,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 422 + "lineNumber": 302 }, "deprecated": false }, @@ -27915,7 +28303,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 423 + "lineNumber": 303 }, "deprecated": false }, @@ -27938,7 +28326,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 424 + "lineNumber": 304 }, "deprecated": false }, @@ -27961,7 +28349,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 425 + "lineNumber": 305 }, "deprecated": false }, @@ -27984,7 +28372,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 426 + "lineNumber": 306 }, "deprecated": false, "returnComment": [], @@ -28027,7 +28415,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 427 + "lineNumber": 307 }, "deprecated": false, "returnComment": [], @@ -28076,7 +28464,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 428 + "lineNumber": 308 }, "deprecated": false, "returnComment": [], @@ -28125,7 +28513,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 429 + "lineNumber": 309 }, "deprecated": false, "returnComment": [], @@ -28160,7 +28548,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 430 + "lineNumber": 310 }, "deprecated": false, "returnComment": [], @@ -28192,7 +28580,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 431 + "lineNumber": 311 }, "deprecated": false, "returnComment": [], @@ -28237,7 +28625,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 432 + "lineNumber": 312 }, "deprecated": false }, @@ -28255,7 +28643,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 433 + "lineNumber": 313 }, "deprecated": false, "returnComment": [], @@ -28287,7 +28675,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 434 + "lineNumber": 314 }, "deprecated": false, "returnComment": [], @@ -28319,7 +28707,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 435 + "lineNumber": 315 }, "deprecated": false, "returnComment": [], @@ -28351,7 +28739,7 @@ "description": [], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 436 + "lineNumber": 316 }, "deprecated": false }, @@ -28367,7 +28755,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 437 + "lineNumber": 317 }, "deprecated": false }, @@ -28391,7 +28779,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 438 + "lineNumber": 318 }, "deprecated": false, "returnComment": [], @@ -28426,7 +28814,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 439 + "lineNumber": 319 }, "deprecated": false }, @@ -28450,7 +28838,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 440 + "lineNumber": 320 }, "deprecated": false, "returnComment": [], @@ -28507,7 +28895,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 441 + "lineNumber": 321 }, "deprecated": false, "returnComment": [], @@ -28567,7 +28955,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 443 + "lineNumber": 323 }, "deprecated": false, "returnComment": [], @@ -28644,7 +29032,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 444 + "lineNumber": 324 }, "deprecated": false, "returnComment": [], @@ -28729,7 +29117,7 @@ ], "source": { "path": "src/plugins/data/public/index.ts", - "lineNumber": 445 + "lineNumber": 325 }, "deprecated": false, "returnComment": [], @@ -28783,7 +29171,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "source": { "path": "src/plugins/data/common/constants.ts", @@ -28864,7 +29252,7 @@ "signature": [ "{ register: (fieldFormats: ", "FieldFormatInstanceType", - "[]) => void; }" + "[]) => void; has: (id: string) => boolean; }" ], "source": { "path": "src/plugins/data/public/types.ts", @@ -29217,7 +29605,7 @@ "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, - ", \"init\" | \"register\" | \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\"> & { deserialize: ", + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\"> & { deserialize: ", "FormatFactory", "; }" ], @@ -29237,9 +29625,7 @@ "\nquery service\n{@link QueryStart}" ], "signature": [ - "{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + "{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -29295,11 +29681,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; }" + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; }" ], "source": { "path": "src/plugins/data/public/types.ts", @@ -29577,15 +29959,7 @@ "section": "def-server.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { enabled: boolean; timeout: moment.Duration; method: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ValueSuggestionsMethod", - "text": "ValueSuggestionsMethod" - }, - "; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" + "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { enabled: boolean; timeout: moment.Duration; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" ], "source": { "path": "src/plugins/data/server/plugin.ts", @@ -34015,46 +34389,177 @@ } ], "functions": [ + { + "parentPluginId": "data", + "id": "def-server.buildQueryFromFilters", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "buildQueryFromFilters", + "description": [], + "signature": [ + "(filters: any[] | undefined, indexPattern: ", + "IndexPatternBase", + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: any[]; should: never[]; must_not: any[]; }" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 105 + }, + "deprecated": true, + "references": [], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "any[] | undefined" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", + "lineNumber": 3 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.indexPattern", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + "IndexPatternBase", + " | undefined" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", + "lineNumber": 3 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.ignoreFilterIfFieldNotInIndex", + "type": "CompoundType", + "tags": [], + "label": "ignoreFilterIfFieldNotInIndex", + "description": [], + "signature": [ + "boolean | undefined" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", + "lineNumber": 3 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-server.castEsToKbnFieldTypeName", "type": "Function", "tags": [ - "return" + "deprecated" ], "label": "castEsToKbnFieldTypeName", - "description": [ - "\n Get the KbnFieldType name for an esType string\n" - ], + "description": [], "signature": [ "(esType: string) => ", + "KBN_FIELD_TYPES" + ], + "source": { + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 22 + }, + "deprecated": true, + "removeBy": "8.0", + "references": [ { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 22 + } + }, + { + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 83 + } + }, + { + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 11 + } + }, + { + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 94 + } } ], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.esType", + "type": "string", + "tags": [], + "label": "esType", + "description": [], + "source": { + "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", + "lineNumber": 22 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.getEsQueryConfig", + "type": "Function", + "tags": [], + "label": "getEsQueryConfig", + "description": [], + "signature": [ + "(config: KibanaConfig) => ", + "EsQueryConfig" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-server.castEsToKbnFieldTypeName.$1", - "type": "string", + "id": "def-server.getEsQueryConfig.$1", + "type": "Object", "tags": [], - "label": "esType", + "label": "config", "description": [], "signature": [ - "string" + "KibanaConfig" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 }, "deprecated": false, "isRequired": true @@ -34087,9 +34592,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", - "RangeFilter", - " | undefined" + ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => any" ], "source": { "path": "src/plugins/data/common/query/timefilter/get_time.ts", @@ -34245,7 +34748,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 196 + "lineNumber": 195 }, "deprecated": false, "children": [ @@ -34274,7 +34777,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"filter\">, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", + ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, \"filter\" | \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, never>, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -34298,7 +34865,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 197 + "lineNumber": 196 }, "deprecated": false }, @@ -34327,7 +34894,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: string | undefined; }, \"filters\"> & Pick<{ filters?: string | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", + ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">[] | undefined; }, \"filters\"> & Pick<{ filters?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">[] | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -34351,7 +34950,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 198 + "lineNumber": 197 }, "deprecated": false }, @@ -34404,7 +35003,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 199 + "lineNumber": 198 }, "deprecated": false }, @@ -34433,7 +35032,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", + ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -34457,7 +35120,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 200 + "lineNumber": 199 }, "deprecated": false }, @@ -34486,7 +35149,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", + ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", "AggExpressionType", ", ", { @@ -34510,7 +35205,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 201 + "lineNumber": 200 }, "deprecated": false }, @@ -34539,7 +35234,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", + ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"numerical_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"numerical_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -34563,7 +35290,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 202 + "lineNumber": 201 }, "deprecated": false }, @@ -34616,7 +35343,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 203 + "lineNumber": 202 }, "deprecated": false }, @@ -34645,7 +35372,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".GEOHASH_GRID>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: string | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", + ".GEOHASH_GRID>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", "AggExpressionType", ", ", { @@ -34669,7 +35460,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 204 + "lineNumber": 203 }, "deprecated": false }, @@ -34698,7 +35489,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", + ".HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", "AggExpressionType", ", ", { @@ -34722,7 +35545,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 205 + "lineNumber": 204 }, "deprecated": false }, @@ -34751,7 +35574,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", + ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", "AggExpressionType", ", ", { @@ -34775,7 +35662,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 206 + "lineNumber": 205 }, "deprecated": false }, @@ -34832,7 +35719,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 207 + "lineNumber": 206 }, "deprecated": false }, @@ -34885,7 +35772,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 208 + "lineNumber": 207 }, "deprecated": false }, @@ -34946,7 +35833,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 209 + "lineNumber": 208 }, "deprecated": false }, @@ -35007,7 +35894,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 210 + "lineNumber": 209 }, "deprecated": false }, @@ -35068,7 +35955,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 211 + "lineNumber": 210 }, "deprecated": false }, @@ -35129,7 +36016,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 212 + "lineNumber": 211 }, "deprecated": false }, @@ -35190,7 +36077,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 213 + "lineNumber": 212 }, "deprecated": false }, @@ -35243,7 +36130,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 214 + "lineNumber": 213 }, "deprecated": false }, @@ -35296,7 +36183,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 215 + "lineNumber": 214 }, "deprecated": false }, @@ -35353,7 +36240,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 216 + "lineNumber": 215 }, "deprecated": false }, @@ -35410,7 +36297,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 217 + "lineNumber": 216 }, "deprecated": false }, @@ -35463,7 +36350,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 218 + "lineNumber": 217 }, "deprecated": false }, @@ -35516,7 +36403,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 219 + "lineNumber": 218 }, "deprecated": false }, @@ -35569,7 +36456,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 220 + "lineNumber": 219 }, "deprecated": false }, @@ -35622,7 +36509,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 221 + "lineNumber": 220 }, "deprecated": false }, @@ -35675,7 +36562,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 222 + "lineNumber": 221 }, "deprecated": false }, @@ -35728,7 +36615,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 223 + "lineNumber": 222 }, "deprecated": false }, @@ -35785,7 +36672,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 224 + "lineNumber": 223 }, "deprecated": false }, @@ -35838,7 +36725,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 225 + "lineNumber": 224 }, "deprecated": false }, @@ -35891,7 +36778,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 226 + "lineNumber": 225 }, "deprecated": false }, @@ -35948,7 +36835,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 227 + "lineNumber": 226 }, "deprecated": false }, @@ -36001,7 +36888,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 228 + "lineNumber": 227 }, "deprecated": false }, @@ -36054,7 +36941,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 229 + "lineNumber": 228 }, "deprecated": false }, @@ -36107,7 +36994,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 230 + "lineNumber": 229 }, "deprecated": false } @@ -38521,9 +39408,12 @@ "tags": [], "label": "ES_FIELD_TYPES", "description": [], + "signature": [ + "ES_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 18 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 9 }, "deprecated": false, "initialIsOpen": false @@ -38535,9 +39425,12 @@ "tags": [], "label": "KBN_FIELD_TYPES", "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 65 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 47 }, "deprecated": false, "initialIsOpen": false @@ -38707,7 +39600,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 305 + "lineNumber": 353 }, "deprecated": true, "references": [ @@ -38750,13 +39643,7 @@ "label": "ExecutionContextSearch", "description": [], "signature": [ - "{ filters?: ", - "Filter", - "[] | undefined; query?: ", - "Query", - " | ", - "Query", - "[] | undefined; timeRange?: ", + "{ filters?: any[] | undefined; query?: any; timeRange?: ", { "pluginId": "data", "scope": "common", @@ -38952,15 +39839,11 @@ "label": "Filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 230 + "lineNumber": 278 }, "deprecated": true, "references": [ @@ -39542,35 +40425,35 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/store/t_grid/model.ts", - "lineNumber": 52 + "lineNumber": 54 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 30 + "lineNumber": 28 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 116 + "lineNumber": 114 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 28 + "lineNumber": 27 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 109 + "lineNumber": 108 } }, { @@ -40252,41 +41135,6 @@ "lineNumber": 183 } }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 8 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 14 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 50 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 11 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 21 - } - }, { "plugin": "securitySolution", "link": { @@ -40455,6 +41303,41 @@ "lineNumber": 36 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 8 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 14 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 50 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 11 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 21 + } + }, { "plugin": "securitySolution", "link": { @@ -40612,29 +41495,29 @@ { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", "lineNumber": 22 } }, { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", - "lineNumber": 63 + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", + "lineNumber": 62 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 15 + "lineNumber": 14 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 23 + "lineNumber": 22 } }, { @@ -40648,7 +41531,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx", - "lineNumber": 54 + "lineNumber": 55 } }, { @@ -40662,7 +41545,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 30 + "lineNumber": 31 } }, { @@ -40742,6 +41625,20 @@ "lineNumber": 114 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 23 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 30 + } + }, { "plugin": "securitySolution", "link": { @@ -42107,21 +43004,9 @@ "[]) => void; deserialize: ", "FormatFactory", "; getDefaultConfig: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", { "pluginId": "data", @@ -42135,71 +43020,23 @@ " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", "FieldFormatInstanceType", " | undefined; getDefaultType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", "FieldFormatInstanceType", " | undefined; getTypeNameByEsTypes: (esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", " | undefined; getDefaultTypeName: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "; getInstance: ((formatId: string, params?: Record) => ", { "pluginId": "data", @@ -42209,21 +43046,9 @@ "text": "FieldFormat" }, ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -42233,47 +43058,17 @@ "text": "FieldFormat" }, "; getDefaultInstanceCacheResolver: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]) => string; getByFieldType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ") => ", "FieldFormatInstanceType", "[]; getDefaultInstance: ((fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -42282,7 +43077,7 @@ "section": "def-common.FieldFormat", "text": "FieldFormat" }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; }" + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" ], "source": { "path": "src/plugins/data/common/field_formats/index.ts", @@ -42328,7 +43123,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 300 + "lineNumber": 348 }, "deprecated": true, "references": [ @@ -42478,7 +43273,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 290 + "lineNumber": 338 }, "deprecated": true, "references": [ @@ -42503,39 +43298,18 @@ "lineNumber": 97 } }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 11 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 39 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 41 - } - }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 22 + "lineNumber": 23 } }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 278 + "lineNumber": 281 } }, { @@ -42605,28 +43379,28 @@ "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 36 + "lineNumber": 35 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 49 + "lineNumber": 48 } }, { @@ -43057,23 +43831,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/types.d.ts", - "lineNumber": 48 - }, - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.TimeRange", @@ -43173,72 +43930,26 @@ "label": "esFilters", "description": [], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 33 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 29 }, "deprecated": false, "children": [ { "parentPluginId": "data", "id": "def-server.esFilters.buildQueryFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildQueryFilter", "description": [], "signature": [ - "(query: any, index: string, alias: string) => ", - "QueryStringFilter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 34 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 30 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.query", - "type": "Any", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.index", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.alias", - "type": "string", - "tags": [], - "label": "alias", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", @@ -43250,12 +43961,11 @@ "signature": [ "(indexPatternString: string, queryDsl: any, disabled: boolean, negate: boolean, alias: string | null, store: ", "FilterStateStore", - ") => ", - "Filter" + ") => any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 35 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 31 }, "deprecated": false, "returnComment": [], @@ -43352,107 +44062,34 @@ { "parentPluginId": "data", "id": "def-server.esFilters.buildEmptyFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildEmptyFilter", "description": [], "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 36 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 32 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.isPinned", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.index", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-server.esFilters.buildExistsFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildExistsFilter", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", indexPattern: ", - "IndexPatternBase", - ") => ", - "ExistsFilter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 37 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 33 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", @@ -43470,12 +44107,11 @@ "FILTERS", ", negate: boolean, disabled: boolean, params: any, alias: string | null, store?: ", "FilterStateStore", - " | undefined) => ", - "Filter" + " | undefined) => any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 38 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 34 }, "deprecated": false, "returnComment": [], @@ -43608,236 +44244,50 @@ { "parentPluginId": "data", "id": "def-server.esFilters.buildPhraseFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildPhraseFilter", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", value: any, indexPattern: ", - "IndexPatternBase", - ") => ", - "PhraseFilter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 39 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 35 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.value", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-server.esFilters.buildPhrasesFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildPhrasesFilter", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: any[], indexPattern: ", - "IndexPatternBase", - ") => ", - "PhrasesFilter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 40 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 36 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.params", - "type": "Array", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "any[]" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", "id": "def-server.esFilters.buildRangeFilter", - "type": "Function", + "type": "Any", "tags": [], "label": "buildRangeFilter", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern: ", - "IndexPatternBase", - ", formattedValue?: string | undefined) => ", - "RangeFilter" + "any" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 41 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 37 }, - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.formattedValue", - "type": "string", - "tags": [], - "label": "formattedValue", - "description": [], - "signature": [ - "string | undefined" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false - } - ] + "deprecated": false }, { "parentPluginId": "data", @@ -43847,13 +44297,11 @@ "label": "isFilterDisabled", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => boolean" + "(filter: any) => boolean" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 42 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 38 }, "deprecated": false, "returnComment": [], @@ -43861,20 +44309,16 @@ { "parentPluginId": "data", "id": "def-server.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/index.d.ts", - "lineNumber": 23 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 54 }, "deprecated": false } @@ -43891,8 +44335,8 @@ "label": "esKuery", "description": [], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 65 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 51 }, "deprecated": false, "children": [ @@ -43907,8 +44351,8 @@ "NodeTypes" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 66 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 52 }, "deprecated": false }, @@ -43926,8 +44370,8 @@ "KueryNode" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 67 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 53 }, "deprecated": false, "returnComment": [], @@ -43984,8 +44428,8 @@ "JsonObject" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 68 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 54 }, "deprecated": false, "returnComment": [], @@ -44068,8 +44512,8 @@ "label": "esQuery", "description": [], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 75 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 61 }, "deprecated": false, "children": [ @@ -44081,19 +44525,13 @@ "label": "buildQueryFromFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", + "(filters: any[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: any[]; should: never[]; must_not: any[]; }" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 76 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 62 }, "deprecated": false, "returnComment": [], @@ -44106,8 +44544,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", @@ -44162,8 +44599,8 @@ "EsQueryConfig" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 77 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 63 }, "deprecated": false, "returnComment": [], @@ -44196,27 +44633,15 @@ "signature": [ "(indexPattern: ", "IndexPatternBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", + " | undefined, queries: any, filters: any, config?: ", "EsQueryConfig", " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" + "[]; filter: any[]; should: never[]; must_not: any[]; }; }" ], "source": { - "path": "src/plugins/data/server/index.ts", - "lineNumber": 78 + "path": "src/plugins/data/server/deprecated.ts", + "lineNumber": 64 }, "deprecated": false, "returnComment": [], @@ -44241,15 +44666,12 @@ { "parentPluginId": "data", "id": "def-server.queries", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "queries", "description": [], "signature": [ - "Query", - " | ", - "Query", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -44260,15 +44682,12 @@ { "parentPluginId": "data", "id": "def-server.filters", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filters", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -44307,7 +44726,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 50 + "lineNumber": 21 }, "deprecated": false, "children": [ @@ -44331,7 +44750,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 51 + "lineNumber": 22 }, "deprecated": false, "returnComment": [], @@ -44385,7 +44804,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 52 + "lineNumber": 23 }, "deprecated": false } @@ -44401,7 +44820,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 106 + "lineNumber": 49 }, "deprecated": false, "children": [ @@ -44424,7 +44843,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 107 + "lineNumber": 50 }, "deprecated": false }, @@ -44447,7 +44866,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 108 + "lineNumber": 51 }, "deprecated": false }, @@ -44470,7 +44889,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 109 + "lineNumber": 52 }, "deprecated": false }, @@ -44493,7 +44912,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 110 + "lineNumber": 53 }, "deprecated": false }, @@ -44516,7 +44935,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 111 + "lineNumber": 54 }, "deprecated": false }, @@ -44539,7 +44958,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 112 + "lineNumber": 55 }, "deprecated": false }, @@ -44562,7 +44981,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 113 + "lineNumber": 56 }, "deprecated": false }, @@ -44585,7 +45004,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 114 + "lineNumber": 57 }, "deprecated": false }, @@ -44608,7 +45027,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 115 + "lineNumber": 58 }, "deprecated": false }, @@ -44631,7 +45050,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 116 + "lineNumber": 59 }, "deprecated": false }, @@ -44654,7 +45073,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 117 + "lineNumber": 60 }, "deprecated": false }, @@ -44677,7 +45096,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 118 + "lineNumber": 61 }, "deprecated": false }, @@ -44700,7 +45119,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 119 + "lineNumber": 62 }, "deprecated": false }, @@ -44723,7 +45142,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 120 + "lineNumber": 63 }, "deprecated": false }, @@ -44746,7 +45165,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 121 + "lineNumber": 64 }, "deprecated": false }, @@ -44769,7 +45188,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 122 + "lineNumber": 65 }, "deprecated": false } @@ -44785,7 +45204,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 138 + "lineNumber": 81 }, "deprecated": false, "children": [ @@ -44809,7 +45228,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 139 + "lineNumber": 82 }, "deprecated": false, "returnComment": [], @@ -44858,7 +45277,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 140 + "lineNumber": 83 }, "deprecated": false, "returnComment": [], @@ -44899,7 +45318,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 254 + "lineNumber": 197 }, "deprecated": false, "children": [ @@ -44912,7 +45331,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 255 + "lineNumber": 198 }, "deprecated": false, "children": [ @@ -44935,7 +45354,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 256 + "lineNumber": 199 }, "deprecated": false }, @@ -44951,7 +45370,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 257 + "lineNumber": 200 }, "deprecated": false, "returnComment": [], @@ -44991,7 +45410,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 258 + "lineNumber": 201 }, "deprecated": false }, @@ -45014,7 +45433,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 259 + "lineNumber": 202 }, "deprecated": false }, @@ -45037,7 +45456,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 260 + "lineNumber": 203 }, "deprecated": false }, @@ -45060,7 +45479,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 261 + "lineNumber": 204 }, "deprecated": false }, @@ -45084,7 +45503,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 262 + "lineNumber": 205 }, "deprecated": false, "returnComment": [], @@ -45133,7 +45552,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 263 + "lineNumber": 206 }, "deprecated": false, "returnComment": [], @@ -45182,7 +45601,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 264 + "lineNumber": 207 }, "deprecated": false, "returnComment": [], @@ -45217,7 +45636,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 265 + "lineNumber": 208 }, "deprecated": false, "returnComment": [], @@ -45249,7 +45668,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 266 + "lineNumber": 209 }, "deprecated": false, "returnComment": [], @@ -45294,7 +45713,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 267 + "lineNumber": 210 }, "deprecated": false }, @@ -45312,7 +45731,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 268 + "lineNumber": 211 }, "deprecated": false, "returnComment": [], @@ -45344,7 +45763,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 269 + "lineNumber": 212 }, "deprecated": false, "returnComment": [], @@ -45376,7 +45795,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 270 + "lineNumber": 213 }, "deprecated": false, "returnComment": [], @@ -45408,7 +45827,7 @@ "description": [], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 271 + "lineNumber": 214 }, "deprecated": false }, @@ -45424,7 +45843,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 272 + "lineNumber": 215 }, "deprecated": false }, @@ -45448,7 +45867,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 273 + "lineNumber": 216 }, "deprecated": false, "returnComment": [], @@ -45483,7 +45902,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 274 + "lineNumber": 217 }, "deprecated": false, "returnComment": [], @@ -45547,7 +45966,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 276 + "lineNumber": 219 }, "deprecated": false, "returnComment": [], @@ -45632,7 +46051,7 @@ ], "source": { "path": "src/plugins/data/server/index.ts", - "lineNumber": 277 + "lineNumber": 220 }, "deprecated": false, "returnComment": [], @@ -45686,7 +46105,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "source": { "path": "src/plugins/data/common/constants.ts", @@ -45867,9 +46286,12 @@ "tags": [], "label": "KbnFieldType", "description": [], + "signature": [ + "KbnFieldType" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 11 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 2 }, "deprecated": false, "children": [ @@ -45881,8 +46303,8 @@ "label": "name", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 3 }, "deprecated": false }, @@ -45894,8 +46316,8 @@ "label": "sortable", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 13 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 4 }, "deprecated": false }, @@ -45907,8 +46329,8 @@ "label": "filterable", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 14 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 5 }, "deprecated": false }, @@ -45921,18 +46343,12 @@ "description": [], "signature": [ "readonly ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 15 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 6 }, "deprecated": false }, @@ -45947,8 +46363,8 @@ "any" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 17 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 7 }, "deprecated": false, "children": [ @@ -45961,21 +46377,15 @@ "description": [], "signature": [ "Partial<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KbnFieldTypeOptions", - "text": "KbnFieldTypeOptions" - }, - ">" + "KbnFieldTypeOptions", + "> | undefined" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_type.ts", - "lineNumber": 17 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_type.d.ts", + "lineNumber": 7 }, "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] @@ -45997,12 +46407,11 @@ "signature": [ "(indexPatternString: string, queryDsl: any, disabled: boolean, negate: boolean, alias: string | null, store: ", "FilterStateStore", - ") => ", - "Filter" + ") => any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 200 + "lineNumber": 218 }, "deprecated": true, "references": [], @@ -46098,59 +46507,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-common.buildEmptyFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildEmptyFilter", - "description": [], - "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 210 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.isPinned", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.index", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 2 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.buildEsQuery", @@ -46163,27 +46519,15 @@ "signature": [ "(indexPattern: ", "IndexPatternBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", + " | undefined, queries: any, filters: any, config?: ", "EsQueryConfig", " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }" + "[]; filter: any[]; should: never[]; must_not: any[]; }; }" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 93 + "lineNumber": 101 }, "deprecated": true, "references": [], @@ -46209,15 +46553,12 @@ { "parentPluginId": "data", "id": "def-common.queries", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "queries", "description": [], "signature": [ - "Query", - " | ", - "Query", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -46228,15 +46569,12 @@ { "parentPluginId": "data", "id": "def-common.filters", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filters", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", @@ -46256,299 +46594,8 @@ " | undefined" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", - "lineNumber": 17 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildExistsFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildExistsFilter", - "description": [], - "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", indexPattern: ", - "IndexPatternBase", - ") => ", - "ExistsFilter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 215 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 13 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildFilter", - "description": [], - "signature": [ - "(indexPattern: ", - "IndexPatternBase", - ", field: ", - "IndexPatternFieldBase", - ", type: ", - "FILTERS", - ", negate: boolean, disabled: boolean, params: any, alias: string | null, store?: ", - "FilterStateStore", - " | undefined) => ", - "Filter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 205 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.type", - "type": "Enum", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "FILTERS" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.negate", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.disabled", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.params", - "type": "Any", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.alias", - "type": "CompoundType", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | null" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.store", - "type": "CompoundType", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "FilterStateStore", - " | undefined" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", - "lineNumber": 4 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildPhraseFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildPhraseFilter", - "description": [], - "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", value: any, indexPattern: ", - "IndexPatternBase", - ") => ", - "PhraseFilter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 190 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.value", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 26 + "path": "node_modules/@kbn/es-query/target_types/es_query/build_es_query.d.ts", + "lineNumber": 17 }, "deprecated": false } @@ -46557,29 +46604,48 @@ }, { "parentPluginId": "data", - "id": "def-common.buildPhrasesFilter", + "id": "def-common.buildFilter", "type": "Function", "tags": [ "deprecated" ], - "label": "buildPhrasesFilter", + "label": "buildFilter", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: any[], indexPattern: ", + "(indexPattern: ", "IndexPatternBase", - ") => ", - "PhrasesFilter" + ", field: ", + "IndexPatternFieldBase", + ", type: ", + "FILTERS", + ", negate: boolean, disabled: boolean, params: any, alias: string | null, store?: ", + "FilterStateStore", + " | undefined) => any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 185 + "lineNumber": 223 }, "deprecated": true, "references": [], "returnComment": [], "children": [ + { + "parentPluginId": "data", + "id": "def-common.indexPattern", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + "IndexPatternBase" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 + }, + "deprecated": false + }, { "parentPluginId": "data", "id": "def-common.field", @@ -46591,106 +46657,99 @@ "IndexPatternFieldBase" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.params", - "type": "Array", + "id": "def-common.type", + "type": "Enum", "tags": [], - "label": "params", + "label": "type", "description": [], "signature": [ - "any[]" + "FILTERS" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.indexPattern", - "type": "Object", + "id": "def-common.negate", + "type": "boolean", "tags": [], - "label": "indexPattern", + "label": "negate", "description": [], - "signature": [ - "IndexPatternBase" - ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildQueryFilter", - "description": [], - "signature": [ - "(query: any, index: string, alias: string) => ", - "QueryStringFilter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 180 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ + }, { "parentPluginId": "data", - "id": "def-common.query", + "id": "def-common.disabled", + "type": "boolean", + "tags": [], + "label": "disabled", + "description": [], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.params", "type": "Any", "tags": [], - "label": "query", + "label": "params", "description": [], "signature": [ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.index", - "type": "string", + "id": "def-common.alias", + "type": "CompoundType", "tags": [], - "label": "index", + "label": "alias", "description": [], + "signature": [ + "string | null" + ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.alias", - "type": "string", + "id": "def-common.store", + "type": "CompoundType", "tags": [], - "label": "alias", + "label": "store", "description": [], + "signature": [ + "FilterStateStore", + " | undefined" + ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters.d.ts", + "lineNumber": 4 }, "deprecated": false } @@ -46707,19 +46766,13 @@ "label": "buildQueryFromFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", + "(filters: any[] | undefined, indexPattern: ", "IndexPatternBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }" + " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => { must: never[]; filter: any[]; should: never[]; must_not: any[]; }" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 97 + "lineNumber": 105 }, "deprecated": true, "references": [], @@ -46733,8 +46786,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "node_modules/@kbn/es-query/target_types/es_query/from_filters.d.ts", @@ -46780,92 +46832,65 @@ }, { "parentPluginId": "data", - "id": "def-common.buildRangeFilter", + "id": "def-common.castEsToKbnFieldTypeName", "type": "Function", "tags": [ "deprecated" ], - "label": "buildRangeFilter", + "label": "castEsToKbnFieldTypeName", "description": [], "signature": [ - "(field: ", - "IndexPatternFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern: ", - "IndexPatternBase", - ", formattedValue?: string | undefined) => ", - "RangeFilter" + "(esType: string) => ", + "KBN_FIELD_TYPES" ], "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 195 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 22 }, "deprecated": true, - "references": [], - "returnComment": [], - "children": [ + "removeBy": "8.0", + "references": [ { - "parentPluginId": "data", - "id": "def-common.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "IndexPatternFieldBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 22 + } }, { - "parentPluginId": "data", - "id": "def-common.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false + "plugin": "indexPatternFieldEditor", + "link": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 83 + } }, { - "parentPluginId": "data", - "id": "def-common.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "IndexPatternBase" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 - }, - "deprecated": false + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 11 + } }, + { + "plugin": "savedObjectsManagement", + "link": { + "path": "src/plugins/saved_objects_management/public/lib/create_field_list.ts", + "lineNumber": 94 + } + } + ], + "returnComment": [], + "children": [ { "parentPluginId": "data", - "id": "def-common.formattedValue", + "id": "def-common.esType", "type": "string", "tags": [], - "label": "formattedValue", + "label": "esType", "description": [], - "signature": [ - "string | undefined" - ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 37 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", + "lineNumber": 22 }, "deprecated": false } @@ -46874,44 +46899,33 @@ }, { "parentPluginId": "data", - "id": "def-common.castEsToKbnFieldTypeName", + "id": "def-common.cellHasFormulas", "type": "Function", - "tags": [ - "return" - ], - "label": "castEsToKbnFieldTypeName", - "description": [ - "\n Get the KbnFieldType name for an esType string\n" - ], + "tags": [], + "label": "cellHasFormulas", + "description": [], "signature": [ - "(esType: string) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "(val: string) => boolean" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "src/plugins/data/common/exports/formula_checks.ts", + "lineNumber": 13 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.castEsToKbnFieldTypeName.$1", + "id": "def-common.cellHasFormulas.$1", "type": "string", "tags": [], - "label": "esType", + "label": "val", "description": [], "signature": [ "string" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 39 + "path": "src/plugins/data/common/exports/formula_checks.ts", + "lineNumber": 13 }, "deprecated": false, "isRequired": true @@ -46922,39 +46936,76 @@ }, { "parentPluginId": "data", - "id": "def-common.cellHasFormulas", + "id": "def-common.compareFilters", "type": "Function", - "tags": [], - "label": "cellHasFormulas", + "tags": [ + "deprecated" + ], + "label": "compareFilters", "description": [], "signature": [ - "(val: string) => boolean" + "(first: any, second: any, comparatorOptions?: ", + "FilterCompareOptions", + " | undefined) => boolean" ], "source": { - "path": "src/plugins/data/common/exports/formula_checks.ts", - "lineNumber": 13 + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 258 }, - "deprecated": false, + "deprecated": true, + "references": [], + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.cellHasFormulas.$1", - "type": "string", + "id": "def-common.first", + "type": "Any", "tags": [], - "label": "val", + "label": "first", "description": [], "signature": [ - "string" + "any" ], "source": { - "path": "src/plugins/data/common/exports/formula_checks.ts", - "lineNumber": 13 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 }, - "deprecated": false, - "isRequired": true + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.second", + "type": "Any", + "tags": [], + "label": "second", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.comparatorOptions", + "type": "Object", + "tags": [], + "label": "comparatorOptions", + "description": [], + "signature": [ + "FilterCompareOptions", + " | undefined" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/compare_filters.d.ts", + "lineNumber": 23 + }, + "deprecated": false } ], - "returnComment": [], "initialIsOpen": false }, { @@ -47096,7 +47147,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 105 + "lineNumber": 113 }, "deprecated": true, "references": [], @@ -47163,68 +47214,21 @@ }, { "parentPluginId": "data", - "id": "def-common.disableFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "disableFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 77 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.filter", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 44 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.fromKueryExpression", + "id": "def-common.dedupFilters", "type": "Function", "tags": [ "deprecated" ], - "label": "fromKueryExpression", + "label": "dedupFilters", "description": [], "signature": [ - "(expression: any, parseOptions?: Partial<", - "KueryParseOptions", - "> | undefined) => ", - "KueryNode" + "(existingFilters: any[], filters: any[], comparatorOptions?: ", + "FilterCompareOptions", + " | undefined) => any[]" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 81 + "lineNumber": 263 }, "deprecated": true, "references": [], @@ -47232,211 +47236,50 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.expression", - "type": "Any", + "id": "def-common.existingFilters", + "type": "Array", "tags": [], - "label": "expression", + "label": "existingFilters", "description": [], "signature": [ - "any" + "any[]" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", - "lineNumber": 5 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/dedup_filters.d.ts", + "lineNumber": 12 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.parseOptions", - "type": "Object", + "id": "def-common.filters", + "type": "Array", "tags": [], - "label": "parseOptions", + "label": "filters", "description": [], "signature": [ - "Partial<", - "KueryParseOptions", - "> | undefined" + "any[]" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", - "lineNumber": 5 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/dedup_filters.d.ts", + "lineNumber": 12 }, "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "source": { - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "lineNumber": 16 - }, - "deprecated": false, - "children": [ + }, { "parentPluginId": "data", - "id": "def-common.getEsQueryConfig.$1", + "id": "def-common.comparatorOptions", "type": "Object", "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "source": { - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "lineNumber": 16 - }, - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getFilterableKbnTypeNames", - "type": "Function", - "tags": [ - "return" - ], - "label": "getFilterableKbnTypeNames", - "description": [ - "\n Get filterable KbnFieldTypes\n" - ], - "signature": [ - "() => string[]" - ], - "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 50 - }, - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getKbnFieldType", - "type": "Function", - "tags": [ - "return" - ], - "label": "getKbnFieldType", - "description": [ - "\n Get a type object by name\n" - ], - "signature": [ - "(typeName: string) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KbnFieldType", - "text": "KbnFieldType" - } - ], - "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 22 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.getKbnFieldType.$1", - "type": "string", - "tags": [], - "label": "typeName", - "description": [], - "signature": [ - "string" - ], - "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 22 - }, - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getKbnTypeNames", - "type": "Function", - "tags": [ - "return" - ], - "label": "getKbnTypeNames", - "description": [ - "\n Get the esTypes known by all kbnFieldTypes\n" - ], - "signature": [ - "() => string[]" - ], - "source": { - "path": "src/plugins/data/common/kbn_field_types/kbn_field_types.ts", - "lineNumber": 30 - }, - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getPhraseFilterField", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getPhraseFilterField", - "description": [], - "signature": [ - "(filter: ", - "PhraseFilter", - ") => string" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 110 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.filter", - "type": "CompoundType", - "tags": [], - "label": "filter", + "label": "comparatorOptions", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" + "FilterCompareOptions", + " | undefined" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 24 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/dedup_filters.d.ts", + "lineNumber": 12 }, "deprecated": false } @@ -47445,21 +47288,19 @@ }, { "parentPluginId": "data", - "id": "def-common.getPhraseFilterValue", + "id": "def-common.disableFilter", "type": "Function", "tags": [ "deprecated" ], - "label": "getPhraseFilterValue", + "label": "disableFilter", "description": [], "signature": [ - "(filter: ", - "PhraseFilter", - ") => PhraseFilterValue" + "(filter: any) => any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 115 + "lineNumber": 85 }, "deprecated": true, "references": [], @@ -47468,19 +47309,16 @@ { "parentPluginId": "data", "id": "def-common.filter", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 25 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 43 }, "deprecated": false } @@ -47489,20 +47327,19 @@ }, { "parentPluginId": "data", - "id": "def-common.isExistsFilter", + "id": "def-common.enableFilter", "type": "Function", "tags": [ "deprecated" ], - "label": "isExistsFilter", + "label": "enableFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "ExistsFilter" + "(filter: any) => any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 135 + "lineNumber": 243 }, "deprecated": true, "references": [], @@ -47519,8 +47356,8 @@ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/exists_filter.d.ts", - "lineNumber": 11 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 42 }, "deprecated": false } @@ -47529,20 +47366,22 @@ }, { "parentPluginId": "data", - "id": "def-common.isFilter", + "id": "def-common.fromKueryExpression", "type": "Function", "tags": [ "deprecated" ], - "label": "isFilter", + "label": "fromKueryExpression", "description": [], "signature": [ - "(x: unknown) => x is ", - "Filter" + "(expression: any, parseOptions?: Partial<", + "KueryParseOptions", + "> | undefined) => ", + "KueryNode" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 69 + "lineNumber": 89 }, "deprecated": true, "references": [], @@ -47550,62 +47389,35 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.x", - "type": "Unknown", + "id": "def-common.expression", + "type": "Any", "tags": [], - "label": "x", + "label": "expression", "description": [], "signature": [ - "unknown" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 47 + "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "lineNumber": 5 }, "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isFilterDisabled", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilterDisabled", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => boolean" - ], - "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 73 - }, - "deprecated": true, - "references": [], - "returnComment": [], - "children": [ + }, { "parentPluginId": "data", - "id": "def-common.filter", + "id": "def-common.parseOptions", "type": "Object", "tags": [], - "label": "filter", + "label": "parseOptions", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "Partial<", + "KueryParseOptions", + "> | undefined" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/index.d.ts", - "lineNumber": 23 + "path": "node_modules/@kbn/es-query/target_types/kuery/ast/ast.d.ts", + "lineNumber": 5 }, "deprecated": false } @@ -47614,139 +47426,97 @@ }, { "parentPluginId": "data", - "id": "def-common.isFilterPinned", + "id": "def-common.getEsQueryConfig", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilterPinned", + "tags": [], + "label": "getEsQueryConfig", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => boolean | undefined" + "(config: KibanaConfig) => ", + "EsQueryConfig" ], "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 120 + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 }, - "deprecated": true, - "references": [], - "returnComment": [], + "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.filter", + "id": "def-common.getEsQueryConfig.$1", "type": "Object", "tags": [], - "label": "filter", + "label": "config", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "KibanaConfig" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 3 + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "lineNumber": 16 }, - "deprecated": false + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.isFilters", + "id": "def-common.getFilterableKbnTypeNames", "type": "Function", "tags": [ "deprecated" ], - "label": "isFilters", + "label": "getFilterableKbnTypeNames", "description": [], "signature": [ - "(x: unknown) => x is ", - "Filter", - "[]" + "() => string[]" ], "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 130 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 28 }, "deprecated": true, - "references": [ - { - "plugin": "dashboardEnhanced", - "link": { - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", - "lineNumber": 15 - } - }, - { - "plugin": "dashboardEnhanced", - "link": { - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", - "lineNumber": 70 - } - } - ], + "removeBy": "8.0", + "references": [], "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.x", - "type": "Unknown", - "tags": [], - "label": "x", - "description": [], - "signature": [ - "unknown" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 48 - }, - "deprecated": false - } - ], + "children": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.isGeoBoundingBoxFilter", + "id": "def-common.getKbnFieldType", "type": "Function", "tags": [ "deprecated" ], - "label": "isGeoBoundingBoxFilter", + "label": "getKbnFieldType", "description": [], "signature": [ - "(filter: any) => filter is ", - "GeoBoundingBoxFilter" + "(typeName: string) => ", + "KbnFieldType" ], "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 145 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 34 }, "deprecated": true, + "removeBy": "8.0", "references": [], "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.filter", - "type": "Any", + "id": "def-common.typeName", + "type": "string", "tags": [], - "label": "filter", + "label": "typeName", "description": [], - "signature": [ - "any" - ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/geo_bounding_box_filter.d.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/field-types/target_types/kbn_field_types.d.ts", + "lineNumber": 9 }, "deprecated": false } @@ -47755,60 +47525,42 @@ }, { "parentPluginId": "data", - "id": "def-common.isGeoPolygonFilter", + "id": "def-common.getKbnTypeNames", "type": "Function", "tags": [ "deprecated" ], - "label": "isGeoPolygonFilter", + "label": "getKbnTypeNames", "description": [], "signature": [ - "(filter: any) => filter is ", - "GeoPolygonFilter" + "() => string[]" ], "source": { - "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 150 + "path": "src/plugins/data/common/kbn_field_types/index.ts", + "lineNumber": 40 }, "deprecated": true, + "removeBy": "8.0", "references": [], "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.filter", - "type": "Any", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/geo_polygon_filter.d.ts", - "lineNumber": 11 - }, - "deprecated": false - } - ], + "children": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.isMatchAllFilter", + "id": "def-common.isFilter", "type": "Function", "tags": [ "deprecated" ], - "label": "isMatchAllFilter", + "label": "isFilter", "description": [], "signature": [ - "(filter: any) => filter is ", - "MatchAllFilter" + "(x: unknown) => x is any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 140 + "lineNumber": 77 }, "deprecated": true, "references": [], @@ -47816,17 +47568,17 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.filter", - "type": "Any", + "id": "def-common.x", + "type": "Unknown", "tags": [], - "label": "filter", + "label": "x", "description": [], "signature": [ - "any" + "unknown" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/match_all_filter.d.ts", - "lineNumber": 10 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 46 }, "deprecated": false } @@ -47835,20 +47587,19 @@ }, { "parentPluginId": "data", - "id": "def-common.isMissingFilter", + "id": "def-common.isFilterDisabled", "type": "Function", "tags": [ "deprecated" ], - "label": "isMissingFilter", + "label": "isFilterDisabled", "description": [], "signature": [ - "(filter: any) => filter is ", - "MissingFilter" + "(filter: any) => boolean" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 155 + "lineNumber": 81 }, "deprecated": true, "references": [], @@ -47865,8 +47616,8 @@ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/missing_filter.d.ts", - "lineNumber": 7 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 54 }, "deprecated": false } @@ -47875,20 +47626,19 @@ }, { "parentPluginId": "data", - "id": "def-common.isPhraseFilter", + "id": "def-common.isFilterPinned", "type": "Function", "tags": [ "deprecated" ], - "label": "isPhraseFilter", + "label": "isFilterPinned", "description": [], "signature": [ - "(filter: any) => filter is ", - "PhraseFilter" + "(filter: any) => boolean | undefined" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 160 + "lineNumber": 128 }, "deprecated": true, "references": [], @@ -47905,8 +47655,8 @@ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrase_filter.d.ts", - "lineNumber": 22 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 2 }, "deprecated": false } @@ -47915,38 +47665,52 @@ }, { "parentPluginId": "data", - "id": "def-common.isPhrasesFilter", + "id": "def-common.isFilters", "type": "Function", "tags": [ "deprecated" ], - "label": "isPhrasesFilter", + "label": "isFilters", "description": [], "signature": [ - "(filter: any) => filter is ", - "PhrasesFilter" + "(x: unknown) => x is any[]" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 165 + "lineNumber": 138 }, "deprecated": true, - "references": [], + "references": [ + { + "plugin": "dashboardEnhanced", + "link": { + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", + "lineNumber": 15 + } + }, + { + "plugin": "dashboardEnhanced", + "link": { + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx", + "lineNumber": 70 + } + } + ], "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.filter", - "type": "Any", + "id": "def-common.x", + "type": "Unknown", "tags": [], - "label": "filter", + "label": "x", "description": [], "signature": [ - "any" + "unknown" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/phrases_filter.d.ts", - "lineNumber": 10 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 47 }, "deprecated": false } @@ -47955,20 +47719,20 @@ }, { "parentPluginId": "data", - "id": "def-common.isQueryStringFilter", + "id": "def-common.luceneStringToDsl", "type": "Function", "tags": [ "deprecated" ], - "label": "isQueryStringFilter", + "label": "luceneStringToDsl", "description": [], "signature": [ - "(filter: any) => filter is ", - "QueryStringFilter" + "(query: any) => ", + "DslQuery" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 175 + "lineNumber": 109 }, "deprecated": true, "references": [], @@ -47976,17 +47740,17 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.filter", + "id": "def-common.query", "type": "Any", "tags": [], - "label": "filter", + "label": "query", "description": [], "signature": [ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/query_string_filter.d.ts", - "lineNumber": 11 + "path": "node_modules/@kbn/es-query/target_types/es_query/lucene_string_to_dsl.d.ts", + "lineNumber": 2 }, "deprecated": false } @@ -47995,20 +47759,19 @@ }, { "parentPluginId": "data", - "id": "def-common.isRangeFilter", + "id": "def-common.onlyDisabledFiltersChanged", "type": "Function", "tags": [ "deprecated" ], - "label": "isRangeFilter", + "label": "onlyDisabledFiltersChanged", "description": [], "signature": [ - "(filter: any) => filter is ", - "RangeFilter" + "(newFilters?: any[] | undefined, oldFilters?: any[] | undefined) => boolean" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 170 + "lineNumber": 148 }, "deprecated": true, "references": [], @@ -48016,17 +47779,33 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.filter", - "type": "Any", + "id": "def-common.newFilters", + "type": "Array", "tags": [], - "label": "filter", + "label": "newFilters", "description": [], "signature": [ - "any" + "any[] | undefined" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/range_filter.d.ts", - "lineNumber": 34 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/only_disabled.d.ts", + "lineNumber": 7 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.oldFilters", + "type": "Array", + "tags": [], + "label": "oldFilters", + "description": [], + "signature": [ + "any[] | undefined" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/only_disabled.d.ts", + "lineNumber": 7 }, "deprecated": false } @@ -48035,20 +47814,19 @@ }, { "parentPluginId": "data", - "id": "def-common.luceneStringToDsl", + "id": "def-common.pinFilter", "type": "Function", "tags": [ "deprecated" ], - "label": "luceneStringToDsl", + "label": "pinFilter", "description": [], "signature": [ - "(query: any) => ", - "DslQuery" + "(filter: any) => any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 101 + "lineNumber": 248 }, "deprecated": true, "references": [], @@ -48056,17 +47834,17 @@ "children": [ { "parentPluginId": "data", - "id": "def-common.query", + "id": "def-common.filter", "type": "Any", "tags": [], - "label": "query", + "label": "filter", "description": [], "signature": [ "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/es_query/lucene_string_to_dsl.d.ts", - "lineNumber": 2 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 44 }, "deprecated": false } @@ -48202,7 +47980,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 85 + "lineNumber": 93 }, "deprecated": true, "references": [], @@ -48276,6 +48054,45 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.toggleFilterDisabled", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "toggleFilterDisabled", + "description": [], + "signature": [ + "(filter: any) => { meta: { disabled: boolean; alias: string | null; negate: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: any; query?: any; }" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 253 + }, + "deprecated": true, + "references": [], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.filter", + "type": "Any", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 3 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.toggleFilterNegated", @@ -48286,15 +48103,11 @@ "label": "toggleFilterNegated", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: ", - "FilterState", - " | undefined; query?: any; }" + "(filter: any) => { meta: { negate: boolean; alias: string | null; disabled: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: any; query?: any; }" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 220 + "lineNumber": 238 }, "deprecated": true, "references": [], @@ -48303,20 +48116,71 @@ { "parentPluginId": "data", "id": "def-common.filter", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/meta_filter.d.ts", - "lineNumber": 20 + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/meta_filter.d.ts", + "lineNumber": 19 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.uniqFilters", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "uniqFilters", + "description": [], + "signature": [ + "(filters: any[], comparatorOptions?: any) => any[]" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 143 + }, + "deprecated": true, + "references": [], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "any[]" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/uniq_filters.d.ts", + "lineNumber": 10 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.comparatorOptions", + "type": "Any", + "tags": [], + "label": "comparatorOptions", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "node_modules/@kbn/es-query/target_types/filters/helpers/uniq_filters.d.ts", + "lineNumber": 10 }, "deprecated": false } @@ -48415,9 +48279,12 @@ "tags": [], "label": "KbnFieldTypeOptions", "description": [], + "signature": [ + "KbnFieldTypeOptions" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 10 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 2 }, "deprecated": false, "children": [ @@ -48429,8 +48296,8 @@ "label": "sortable", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 11 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 3 }, "deprecated": false }, @@ -48442,8 +48309,8 @@ "label": "filterable", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 12 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 4 }, "deprecated": false }, @@ -48455,8 +48322,8 @@ "label": "name", "description": [], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 13 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 5 }, "deprecated": false }, @@ -48468,18 +48335,12 @@ "label": "esTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]" ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 14 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 6 }, "deprecated": false } @@ -48708,9 +48569,12 @@ "tags": [], "label": "ES_FIELD_TYPES", "description": [], + "signature": [ + "ES_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 18 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 9 }, "deprecated": false, "initialIsOpen": false @@ -48726,7 +48590,7 @@ "FilterStateStore" ], "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/types.d.ts", + "path": "node_modules/@kbn/es-query/target_types/filters/build_filters/types.d.ts", "lineNumber": 24 }, "deprecated": false, @@ -48739,15 +48603,138 @@ "tags": [], "label": "KBN_FIELD_TYPES", "description": [], + "signature": [ + "KBN_FIELD_TYPES" + ], "source": { - "path": "src/plugins/data/common/kbn_field_types/types.ts", - "lineNumber": 65 + "path": "node_modules/@kbn/field-types/target_types/types.d.ts", + "lineNumber": 47 }, "deprecated": false, "initialIsOpen": false } ], "misc": [ + { + "parentPluginId": "data", + "id": "def-common.buildEmptyFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildEmptyFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 228 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.buildExistsFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildExistsFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 233 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.buildPhraseFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildPhraseFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 208 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.buildPhrasesFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildPhrasesFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 203 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.buildQueryFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildQueryFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 198 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.buildRangeFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "buildRangeFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 213 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.CSV_FORMULA_CHARS", @@ -48792,12 +48779,11 @@ "label": "CustomFilter", "description": [], "signature": [ - "Filter", - " & { query: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 270 + "lineNumber": 318 }, "deprecated": true, "references": [], @@ -48834,7 +48820,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 305 + "lineNumber": 353 }, "deprecated": true, "references": [ @@ -48879,16 +48865,11 @@ "label": "ExistsFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "FilterMeta", - "; exists?: ", - "FilterExistsProperty", - " | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 245 + "lineNumber": 293 }, "deprecated": true, "references": [ @@ -48940,15 +48921,11 @@ "label": "Filter", "description": [], "signature": [ - "{ $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 230 + "lineNumber": 278 }, "deprecated": true, "references": [ @@ -49530,35 +49507,35 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/store/t_grid/model.ts", - "lineNumber": 52 + "lineNumber": 54 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 30 + "lineNumber": 28 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 116 + "lineNumber": 114 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 28 + "lineNumber": 27 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx", - "lineNumber": 109 + "lineNumber": 108 } }, { @@ -50240,41 +50217,6 @@ "lineNumber": 183 } }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 8 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 14 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", - "lineNumber": 50 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 11 - } - }, - { - "plugin": "securitySolution", - "link": { - "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", - "lineNumber": 21 - } - }, { "plugin": "securitySolution", "link": { @@ -50443,6 +50385,41 @@ "lineNumber": 36 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 8 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 14 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/helpers.ts", + "lineNumber": 50 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 11 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.tsx", + "lineNumber": 21 + } + }, { "plugin": "securitySolution", "link": { @@ -50600,29 +50577,29 @@ { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", "lineNumber": 22 } }, { "plugin": "securitySolution", "link": { - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx", - "lineNumber": 63 + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx", + "lineNumber": 62 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 15 + "lineNumber": 14 } }, { "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx", - "lineNumber": 23 + "lineNumber": 22 } }, { @@ -50636,7 +50613,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx", - "lineNumber": 54 + "lineNumber": 55 } }, { @@ -50650,7 +50627,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 30 + "lineNumber": 31 } }, { @@ -50730,6 +50707,20 @@ "lineNumber": 114 } }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 23 + } + }, + { + "plugin": "securitySolution", + "link": { + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx", + "lineNumber": 30 + } + }, { "plugin": "securitySolution", "link": { @@ -51982,11 +51973,11 @@ "label": "FilterMeta", "description": [], "signature": [ - "{ alias: string | null; disabled: boolean; negate: boolean; controlledBy?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 295 + "lineNumber": 343 }, "deprecated": true, "references": [ @@ -52017,14 +52008,11 @@ "label": "GeoBoundingBoxFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "GeoBoundingBoxFilterMeta", - "; geo_bounding_box: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 285 + "lineNumber": 333 }, "deprecated": true, "references": [], @@ -52040,14 +52028,11 @@ "label": "GeoPolygonFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "GeoPolygonFilterMeta", - "; geo_polygon: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 250 + "lineNumber": 298 }, "deprecated": true, "references": [], @@ -52072,6 +52057,46 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.getPhraseFilterField", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "getPhraseFilterField", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 118 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getPhraseFilterValue", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "getPhraseFilterValue", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 123 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.IFieldSubType", @@ -52086,7 +52111,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 300 + "lineNumber": 348 }, "deprecated": true, "references": [ @@ -52124,6 +52149,186 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.isExistsFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isExistsFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 153 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isGeoBoundingBoxFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isGeoBoundingBoxFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 163 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isGeoPolygonFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isGeoPolygonFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 168 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isMatchAllFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isMatchAllFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 158 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isMissingFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isMissingFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 173 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isPhraseFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isPhraseFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 178 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isPhrasesFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isPhrasesFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 183 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isQueryStringFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isQueryStringFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 193 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isRangeFilter", + "type": "Any", + "tags": [ + "deprecated" + ], + "label": "isRangeFilter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 188 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.KIBANA_USER_QUERY_LANGUAGE_KEY", @@ -52155,7 +52360,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 290 + "lineNumber": 338 }, "deprecated": true, "references": [ @@ -52180,39 +52385,18 @@ "lineNumber": 97 } }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 11 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 39 - } - }, - { - "plugin": "alerting", - "link": { - "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts", - "lineNumber": 41 - } - }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 22 + "lineNumber": 23 } }, { "plugin": "alerting", "link": { "path": "x-pack/plugins/alerting/server/authorization/alerting_authorization.ts", - "lineNumber": 278 + "lineNumber": 281 } }, { @@ -52282,28 +52466,28 @@ "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 32 + "lineNumber": 31 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 36 + "lineNumber": 35 } }, { "plugin": "fleet", "link": { "path": "x-pack/plugins/fleet/server/services/agents/status.ts", - "lineNumber": 49 + "lineNumber": 48 } }, { @@ -52725,14 +52909,11 @@ "label": "MatchAllFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "MatchAllFilterMeta", - "; match_all: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 265 + "lineNumber": 313 }, "deprecated": true, "references": [ @@ -52763,14 +52944,11 @@ "label": "MissingFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "FilterMeta", - "; missing: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 275 + "lineNumber": 323 }, "deprecated": true, "references": [], @@ -52786,14 +52964,11 @@ "label": "PhraseFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhraseFilterMeta", - "; script?: { script: { source?: any; lang?: \"painless\" | \"expression\" | \"mustache\" | \"java\" | undefined; params: any; }; } | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 260 + "lineNumber": 308 }, "deprecated": true, "references": [], @@ -52809,36 +52984,16 @@ "label": "PhrasesFilter", "description": [], "signature": [ - "Filter", - " & { meta: ", - "PhrasesFilterMeta", - "; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 255 + "lineNumber": 303 }, "deprecated": true, "references": [], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-common.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "source": { - "path": "node_modules/@kbn/es-query/target_types/filters/types.d.ts", - "lineNumber": 48 - }, - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.RangeFilter", @@ -52849,18 +53004,11 @@ "label": "RangeFilter", "description": [], "signature": [ - "Filter", - " & ", - "EsRangeFilter", - " & { meta: ", - "RangeFilterMeta", - "; script?: { script: { params: any; lang: ", - "ScriptLanguage", - "; source: any; }; } | undefined; match_all?: any; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 280 + "lineNumber": 328 }, "deprecated": true, "references": [ @@ -52891,14 +53039,11 @@ "label": "RangeFilterMeta", "description": [], "signature": [ - "FilterMeta", - " & { params: ", - "RangeFilterParams", - "; field?: any; formattedValue?: string | undefined; }" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 235 + "lineNumber": 283 }, "deprecated": true, "references": [], @@ -52914,11 +53059,11 @@ "label": "RangeFilterParams", "description": [], "signature": [ - "RangeFilterParams" + "any" ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 240 + "lineNumber": 288 }, "deprecated": true, "references": [], @@ -52943,6 +53088,26 @@ } ], "objects": [ + { + "parentPluginId": "data", + "id": "def-common.COMPARE_ALL_OPTIONS", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "COMPARE_ALL_OPTIONS", + "description": [], + "signature": [ + "FilterCompareOptions" + ], + "source": { + "path": "src/plugins/data/common/es_query/index.ts", + "lineNumber": 268 + }, + "deprecated": true, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.FILTERS", @@ -52958,7 +53123,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 225 + "lineNumber": 273 }, "deprecated": true, "references": [], @@ -52990,7 +53155,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 125 + "lineNumber": 133 }, "deprecated": true, "references": [ @@ -53508,7 +53673,7 @@ ], "source": { "path": "src/plugins/data/common/es_query/index.ts", - "lineNumber": 89 + "lineNumber": 97 }, "deprecated": true, "references": [], @@ -53522,7 +53687,7 @@ "label": "UI_SETTINGS", "description": [], "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; }" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly COURIER_BATCH_SEARCHES: \"courier:batchSearches\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly SHORT_DOTS_ENABLE: \"shortDots:enable\"; readonly FORMAT_DEFAULT_TYPE_MAP: \"format:defaultTypeMap\"; readonly FORMAT_NUMBER_DEFAULT_PATTERN: \"format:number:defaultPattern\"; readonly FORMAT_PERCENT_DEFAULT_PATTERN: \"format:percent:defaultPattern\"; readonly FORMAT_BYTES_DEFAULT_PATTERN: \"format:bytes:defaultPattern\"; readonly FORMAT_CURRENCY_DEFAULT_PATTERN: \"format:currency:defaultPattern\"; readonly FORMAT_NUMBER_DEFAULT_LOCALE: \"format:number:defaultLocale\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly INDEXPATTERN_PLACEHOLDER: \"indexPattern:placeholder\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; }" ], "source": { "path": "src/plugins/data/common/constants.ts", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 463da97db8230..2936c876c5852 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client diff --git a/api_docs/data_autocomplete.mdx b/api_docs/data_autocomplete.mdx index 68d1d8cd2444f..99a562e56afce 100644 --- a/api_docs/data_autocomplete.mdx +++ b/api_docs/data_autocomplete.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client diff --git a/api_docs/data_field_formats.json b/api_docs/data_field_formats.json index f7df26b9b406d..96b435332cdda 100644 --- a/api_docs/data_field_formats.json +++ b/api_docs/data_field_formats.json @@ -45,13 +45,13 @@ "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, - ", \"init\" | \"register\" | \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\"> & { deserialize: ", + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\"> & { deserialize: ", "FormatFactory", "; }" ], "source": { "path": "src/plugins/data/public/field_formats/field_formats_service.ts", - "lineNumber": 55 + "lineNumber": 50 }, "deprecated": false, "initialIsOpen": false @@ -142,13 +142,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -379,13 +373,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -560,13 +548,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/duration.ts", @@ -741,6 +723,24 @@ }, "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-common.FieldFormat.hidden", + "type": "boolean", + "tags": [ + "property", + "static" + ], + "label": "hidden", + "description": [ + "\nHidden field formats can only be accessed directly by id,\nThey won't appear in field format editor UI,\nBut they can be accessed and used from code internally.\n" + ], + "source": { + "path": "src/plugins/data/common/field_formats/field_format.ts", + "lineNumber": 43 + }, + "deprecated": false + }, { "parentPluginId": "data", "id": "def-common.FieldFormat.title", @@ -753,7 +753,7 @@ "description": [], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 38 + "lineNumber": 50 }, "deprecated": false }, @@ -772,7 +772,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 44 + "lineNumber": 56 }, "deprecated": false }, @@ -792,7 +792,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 52 + "lineNumber": 64 }, "deprecated": false }, @@ -812,7 +812,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 60 + "lineNumber": 72 }, "deprecated": false }, @@ -832,7 +832,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 68 + "lineNumber": 80 }, "deprecated": false }, @@ -851,7 +851,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 74 + "lineNumber": 86 }, "deprecated": false }, @@ -867,7 +867,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 75 + "lineNumber": 87 }, "deprecated": false }, @@ -883,7 +883,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 77 + "lineNumber": 89 }, "deprecated": false }, @@ -906,7 +906,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 78 + "lineNumber": 90 }, "deprecated": false }, @@ -922,7 +922,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "children": [ @@ -938,7 +938,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "isRequired": true @@ -962,7 +962,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 80 + "lineNumber": 92 }, "deprecated": false, "isRequired": false @@ -996,7 +996,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 98 + "lineNumber": 110 }, "deprecated": false, "children": [ @@ -1012,7 +1012,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 99 + "lineNumber": 111 }, "deprecated": false, "isRequired": true @@ -1037,7 +1037,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 100 + "lineNumber": 112 }, "deprecated": false, "isRequired": true @@ -1056,7 +1056,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 101 + "lineNumber": 113 }, "deprecated": false, "isRequired": false @@ -1091,7 +1091,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 118 + "lineNumber": 130 }, "deprecated": false, "children": [ @@ -1113,7 +1113,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 119 + "lineNumber": 131 }, "deprecated": false, "isRequired": true @@ -1139,7 +1139,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 133 + "lineNumber": 145 }, "deprecated": false, "children": [], @@ -1163,7 +1163,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 144 + "lineNumber": 156 }, "deprecated": false, "children": [ @@ -1181,7 +1181,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 144 + "lineNumber": 156 }, "deprecated": false, "isRequired": true @@ -1205,7 +1205,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 161 + "lineNumber": 173 }, "deprecated": false, "children": [], @@ -1227,7 +1227,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 172 + "lineNumber": 184 }, "deprecated": false, "children": [], @@ -1248,7 +1248,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 193 + "lineNumber": 205 }, "deprecated": false, "children": [ @@ -1264,7 +1264,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 193 + "lineNumber": 205 }, "deprecated": false, "isRequired": true @@ -1285,7 +1285,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 197 + "lineNumber": 209 }, "deprecated": false, "children": [], @@ -1310,7 +1310,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 204 + "lineNumber": 216 }, "deprecated": false, "children": [ @@ -1326,7 +1326,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_format.ts", - "lineNumber": 204 + "lineNumber": 216 }, "deprecated": false, "isRequired": true @@ -1669,21 +1669,9 @@ ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", { "pluginId": "data", @@ -1709,13 +1697,7 @@ "- the field type" ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -1734,13 +1716,7 @@ "- Array of ES data types" ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -1848,21 +1824,9 @@ ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", "FieldFormatInstanceType", " | undefined" @@ -1881,13 +1845,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -1906,13 +1864,7 @@ "- Array of ES data types" ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -1938,21 +1890,9 @@ ], "signature": [ "(esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", " | undefined" ], "source": { @@ -1971,13 +1911,7 @@ "- Array of ES data types" ], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -2003,37 +1937,13 @@ ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - } + "ES_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -2049,13 +1959,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -2072,13 +1976,7 @@ "label": "esTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -2164,21 +2062,9 @@ ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -2202,13 +2088,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -2225,13 +2105,7 @@ "label": "esTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -2274,21 +2148,9 @@ ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]) => string" ], "source": { @@ -2305,13 +2167,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -2328,13 +2184,7 @@ "label": "esTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]" ], "source": { @@ -2356,24 +2206,18 @@ ], "label": "getByFieldType", "description": [ - "\nGet filtered list of field formats by format type\n" + "\nGet filtered list of field formats by format type,\nSkips hidden field formats\n" ], "signature": [ "(fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ") => ", "FieldFormatInstanceType", "[]" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 223 + "lineNumber": 224 }, "deprecated": false, "children": [ @@ -2385,17 +2229,11 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 223 + "lineNumber": 224 }, "deprecated": false, "isRequired": true @@ -2416,21 +2254,9 @@ ], "signature": [ "((fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -2443,7 +2269,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 242 + "lineNumber": 244 }, "deprecated": false, "returnComment": [], @@ -2456,13 +2282,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", @@ -2478,13 +2298,7 @@ "label": "esTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined" ], "source": { @@ -2523,7 +2337,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 244 + "lineNumber": 246 }, "deprecated": false, "children": [ @@ -2539,7 +2353,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 244 + "lineNumber": 246 }, "deprecated": false, "isRequired": true @@ -2561,7 +2375,7 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 255 + "lineNumber": 257 }, "deprecated": false, "children": [ @@ -2578,7 +2392,45 @@ ], "source": { "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", - "lineNumber": 255 + "lineNumber": 257 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.FieldFormatsRegistry.has", + "type": "Function", + "tags": [], + "label": "has", + "description": [ + "\nChecks if field format with id already registered" + ], + "signature": [ + "(id: string) => boolean" + ], + "source": { + "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", + "lineNumber": 271 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.FieldFormatsRegistry.has.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "source": { + "path": "src/plugins/data/common/field_formats/field_formats_registry.ts", + "lineNumber": 271 }, "deprecated": false, "isRequired": true @@ -2649,13 +2501,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/histogram.ts", @@ -2854,13 +2700,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/ip.ts", @@ -3254,13 +3094,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/relative_date.ts", @@ -3380,13 +3214,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/source.tsx", @@ -3562,13 +3390,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -3707,13 +3529,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -3924,13 +3740,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/field_formats/converters/truncate.ts", @@ -4050,13 +3860,7 @@ "label": "fieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -4446,36 +4250,12 @@ "label": "FieldFormatsStartCommon", "description": [], "signature": [ - "{ init: (getConfig: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.GetConfigFn", - "text": "GetConfigFn" - }, - ", metaParamsOptions?: Record, defaultFieldConverters?: ", - "FieldFormatInstanceType", - "[]) => void; register: (fieldFormats: ", - "FieldFormatInstanceType", - "[]) => void; deserialize: ", + "{ deserialize: ", "FormatFactory", "; getDefaultConfig: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", { "pluginId": "data", @@ -4489,71 +4269,23 @@ " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", "FieldFormatInstanceType", " | undefined; getDefaultType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", "FieldFormatInstanceType", " | undefined; getTypeNameByEsTypes: (esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", " | undefined; getDefaultTypeName: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "; getInstance: ((formatId: string, params?: Record) => ", { "pluginId": "data", @@ -4563,21 +4295,9 @@ "text": "FieldFormat" }, ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -4587,47 +4307,17 @@ "text": "FieldFormat" }, "; getDefaultInstanceCacheResolver: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]) => string; getByFieldType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ") => ", "FieldFormatInstanceType", "[]; getDefaultInstance: ((fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -4636,11 +4326,11 @@ "section": "def-common.FieldFormat", "text": "FieldFormat" }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; }" + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" ], "source": { "path": "src/plugins/data/common/field_formats/types.ts", - "lineNumber": 97 + "lineNumber": 98 }, "deprecated": false, "initialIsOpen": false @@ -4708,21 +4398,9 @@ "[]) => void; deserialize: ", "FormatFactory", "; getDefaultConfig: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", { "pluginId": "data", @@ -4736,71 +4414,23 @@ " | undefined; getTypeWithoutMetaParams: (formatId: string) => ", "FieldFormatInstanceType", " | undefined; getDefaultType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", "FieldFormatInstanceType", " | undefined; getTypeNameByEsTypes: (esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", " | undefined; getDefaultTypeName: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "; getInstance: ((formatId: string, params?: Record) => ", { "pluginId": "data", @@ -4810,21 +4440,9 @@ "text": "FieldFormat" }, ") & _.MemoizedFunction; getDefaultInstancePlain: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -4834,47 +4452,17 @@ "text": "FieldFormat" }, "; getDefaultInstanceCacheResolver: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[]) => string; getByFieldType: (fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ") => ", "FieldFormatInstanceType", "[]; getDefaultInstance: ((fieldType: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", ", esTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", "[] | undefined, params?: Record) => ", { "pluginId": "data", @@ -4883,7 +4471,7 @@ "section": "def-common.FieldFormat", "text": "FieldFormat" }, - ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; }" + ") & _.MemoizedFunction; parseDefaultTypeMap: (value: any) => void; has: (id: string) => boolean; }" ], "source": { "path": "src/plugins/data/common/field_formats/index.ts", diff --git a/api_docs/data_field_formats.mdx b/api_docs/data_field_formats.mdx index fdea9c8c7d4f5..6723bdc0fdca0 100644 --- a/api_docs/data_field_formats.mdx +++ b/api_docs/data_field_formats.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client diff --git a/api_docs/data_index_patterns.json b/api_docs/data_index_patterns.json index 4a71c6d4c21cf..5e085d9490dfd 100644 --- a/api_docs/data_index_patterns.json +++ b/api_docs/data_index_patterns.json @@ -5214,13 +5214,7 @@ "label": "type", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - } + "KBN_FIELD_TYPES" ], "source": { "path": "src/plugins/data/common/index_patterns/types.ts", @@ -7269,41 +7263,6 @@ "lineNumber": 30 } }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts", - "lineNumber": 22 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts", - "lineNumber": 96 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 14 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 50 - } - }, - { - "plugin": "visualizations", - "link": { - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", - "lineNumber": 72 - } - }, { "plugin": "savedObjectsManagement", "link": { @@ -7448,21 +7407,21 @@ "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/helpers.tsx", - "lineNumber": 149 + "lineNumber": 148 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 31 + "lineNumber": 29 } }, { "plugin": "timelines", "link": { "path": "x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx", - "lineNumber": 122 + "lineNumber": 120 } }, { @@ -7952,7 +7911,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx", - "lineNumber": 55 + "lineNumber": 56 } }, { @@ -7966,7 +7925,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx", - "lineNumber": 79 + "lineNumber": 80 } }, { @@ -8144,20 +8103,6 @@ "lineNumber": 54 } }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 8 - } - }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/hooks/update_kuery_string.ts", - "lineNumber": 28 - } - }, { "plugin": "timelines", "link": { @@ -8858,20 +8803,6 @@ "lineNumber": 405 } }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/state/reducers/index_pattern.ts", - "lineNumber": 10 - } - }, - { - "plugin": "uptime", - "link": { - "path": "x-pack/plugins/uptime/public/state/reducers/index_pattern.ts", - "lineNumber": 13 - } - }, { "plugin": "ml", "link": { diff --git a/api_docs/data_index_patterns.mdx b/api_docs/data_index_patterns.mdx index 3980d5de3caf3..cdbe6af3d5761 100644 --- a/api_docs/data_index_patterns.mdx +++ b/api_docs/data_index_patterns.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Server diff --git a/api_docs/data_query.json b/api_docs/data_query.json index 5b777ef557779..705be474a8d07 100644 --- a/api_docs/data_query.json +++ b/api_docs/data_query.json @@ -37,7 +37,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 36 + "lineNumber": 35 }, "deprecated": false, "children": [ @@ -53,7 +53,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 42 + "lineNumber": 41 }, "deprecated": false, "children": [ @@ -75,7 +75,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 42 + "lineNumber": 41 }, "deprecated": false, "isRequired": true @@ -91,13 +91,11 @@ "label": "getFilters", "description": [], "signature": [ - "() => ", - "Filter", - "[]" + "() => any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 99 + "lineNumber": 98 }, "deprecated": false, "children": [], @@ -111,13 +109,11 @@ "label": "getAppFilters", "description": [], "signature": [ - "() => ", - "Filter", - "[]" + "() => any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 103 + "lineNumber": 102 }, "deprecated": false, "children": [], @@ -131,13 +127,11 @@ "label": "getGlobalFilters", "description": [], "signature": [ - "() => ", - "Filter", - "[]" + "() => any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 108 + "lineNumber": 107 }, "deprecated": false, "children": [], @@ -156,7 +150,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 113 + "lineNumber": 112 }, "deprecated": false, "children": [], @@ -176,7 +170,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 117 + "lineNumber": 116 }, "deprecated": false, "children": [], @@ -196,7 +190,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 121 + "lineNumber": 120 }, "deprecated": false, "children": [], @@ -210,34 +204,27 @@ "label": "addFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - " | ", - "Filter", - "[], pinFilterStatus?: boolean) => void" + "(filters: any, pinFilterStatus?: boolean) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 127 + "lineNumber": 126 }, "deprecated": false, "children": [ { "parentPluginId": "data", "id": "def-public.FilterManager.addFilters.$1", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filters", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 128 + "lineNumber": 127 }, "deprecated": false, "isRequired": true @@ -254,7 +241,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 129 + "lineNumber": 128 }, "deprecated": false, "isRequired": true @@ -270,13 +257,11 @@ "label": "setFilters", "description": [], "signature": [ - "(newFilters: ", - "Filter", - "[], pinFilterStatus?: boolean) => void" + "(newFilters: any[], pinFilterStatus?: boolean) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 155 + "lineNumber": 154 }, "deprecated": false, "children": [ @@ -288,12 +273,11 @@ "label": "newFilters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 156 + "lineNumber": 155 }, "deprecated": false, "isRequired": true @@ -310,7 +294,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 157 + "lineNumber": 156 }, "deprecated": false, "isRequired": true @@ -328,13 +312,11 @@ "\nSets new global filters and leaves app filters untouched,\nRemoves app filters for which there is a duplicate within new global filters" ], "signature": [ - "(newGlobalFilters: ", - "Filter", - "[]) => void" + "(newGlobalFilters: any[]) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 174 + "lineNumber": 173 }, "deprecated": false, "children": [ @@ -346,12 +328,11 @@ "label": "newGlobalFilters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 174 + "lineNumber": 173 }, "deprecated": false, "isRequired": true @@ -369,13 +350,11 @@ "\nSets new app filters and leaves global filters untouched,\nRemoves app filters for which there is a duplicate within new global filters" ], "signature": [ - "(newAppFilters: ", - "Filter", - "[]) => void" + "(newAppFilters: any[]) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 191 + "lineNumber": 190 }, "deprecated": false, "children": [ @@ -387,12 +366,11 @@ "label": "newAppFilters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 191 + "lineNumber": 190 }, "deprecated": false, "isRequired": true @@ -408,29 +386,27 @@ "label": "removeFilter", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => void" + "(filter: any) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 202 + "lineNumber": 201 }, "deprecated": false, "children": [ { "parentPluginId": "data", "id": "def-public.FilterManager.removeFilter.$1", - "type": "Object", + "type": "Any", "tags": [], "label": "filter", "description": [], "signature": [ - "Filter" + "any" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 202 + "lineNumber": 201 }, "deprecated": false, "isRequired": true @@ -450,7 +426,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 214 + "lineNumber": 213 }, "deprecated": false, "children": [], @@ -464,15 +440,13 @@ "label": "setFiltersStore", "description": [], "signature": [ - "(filters: ", - "Filter", - "[], store: ", + "(filters: any[], store: ", "FilterStateStore", ", shouldOverrideStore?: boolean) => void" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 218 + "lineNumber": 217 }, "deprecated": false, "children": [ @@ -484,12 +458,11 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 219 + "lineNumber": 218 }, "deprecated": false, "isRequired": true @@ -506,7 +479,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 220 + "lineNumber": 219 }, "deprecated": false, "isRequired": true @@ -523,7 +496,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 221 + "lineNumber": 220 }, "deprecated": false, "isRequired": true @@ -543,7 +516,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 233 + "lineNumber": 232 }, "deprecated": false }, @@ -559,7 +532,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 236 + "lineNumber": 235 }, "deprecated": false }, @@ -583,7 +556,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 238 + "lineNumber": 237 }, "deprecated": false, "returnComment": [], @@ -642,7 +615,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 241 + "lineNumber": 240 }, "deprecated": false }, @@ -658,7 +631,7 @@ ], "source": { "path": "src/plugins/data/public/query/filter_manager/filter_manager.ts", - "lineNumber": 243 + "lineNumber": 242 }, "deprecated": false, "returnComment": [], @@ -822,9 +795,7 @@ "section": "def-public.QueryState", "text": "QueryState" }, - ">({ timefilter: { timefilter }, filterManager, queryString, state$, }: Pick<{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + ">({ timefilter: { timefilter }, filterManager, queryString, state$, }: Pick<{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -880,11 +851,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -940,9 +907,7 @@ "label": "{\n timefilter: { timefilter },\n filterManager,\n queryString,\n state$,\n }", "description": [], "signature": [ - "Pick<{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + "Pick<{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -998,11 +963,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -1212,6 +1173,216 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.extractTimeRange", + "type": "Function", + "tags": [], + "label": "extractTimeRange", + "description": [], + "signature": [ + "(filters: any[], timeFieldName: string | undefined) => { restOfFilters: any[]; timeRange?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined; }" + ], + "source": { + "path": "src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts", + "lineNumber": 31 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.extractTimeRange.$1", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "any[]" + ], + "source": { + "path": "src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts", + "lineNumber": 32 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.extractTimeRange.$2", + "type": "string", + "tags": [], + "label": "timeFieldName", + "description": [], + "signature": [ + "string | undefined" + ], + "source": { + "path": "src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts", + "lineNumber": 33 + }, + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.generateFilters", + "type": "Function", + "tags": [], + "label": "generateFilters", + "description": [ + "\nGenerate filter objects, as a result of triggering a filter action on a\nspecific index pattern field.\n" + ], + "signature": [ + "(filterManager: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.FilterManager", + "text": "FilterManager" + }, + ", field: string | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IFieldType", + "text": "IFieldType" + }, + ", values: any, operation: string, index: string) => any[]" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 67 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.generateFilters.$1", + "type": "Object", + "tags": [], + "label": "filterManager", + "description": [ + "- The active filter manager to lookup for existing filters" + ], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.FilterManager", + "text": "FilterManager" + } + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 68 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.generateFilters.$2", + "type": "CompoundType", + "tags": [], + "label": "field", + "description": [ + "- The field for which filters should be generated" + ], + "signature": [ + "string | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IFieldType", + "text": "IFieldType" + } + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 69 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.generateFilters.$3", + "type": "Any", + "tags": [], + "label": "values", + "description": [ + "- One or more values to filter for." + ], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 70 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.generateFilters.$4", + "type": "string", + "tags": [], + "label": "operation", + "description": [ + "- \"-\" to create a negated filter" + ], + "signature": [ + "string" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 71 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.generateFilters.$5", + "type": "string", + "tags": [], + "label": "index", + "description": [ + "- Index string to generate filters for" + ], + "signature": [ + "string" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", + "lineNumber": 72 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "An array of filters to be added back to filterManager" + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.getDefaultQuery", @@ -1253,6 +1424,75 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.getDisplayValueFromFilter", + "type": "Function", + "tags": [], + "label": "getDisplayValueFromFilter", + "description": [], + "signature": [ + "(filter: any, indexPatterns: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + "[]) => string" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", + "lineNumber": 30 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.getDisplayValueFromFilter.$1", + "type": "Any", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", + "lineNumber": 30 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-public.getDisplayValueFromFilter.$2", + "type": "Array", + "tags": [], + "label": "indexPatterns", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + "[]" + ], + "source": { + "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", + "lineNumber": 30 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.syncQueryStateWithUrl", @@ -1263,9 +1503,7 @@ "\nHelper to setup syncing of global data with the URL" ], "signature": [ - "(query: Pick<{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + "(query: Pick<{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -1321,11 +1559,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -1379,9 +1613,7 @@ "label": "query", "description": [], "signature": [ - "Pick<{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + "Pick<{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -1437,11 +1669,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; } | { filterManager: ", + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; } | { filterManager: ", { "pluginId": "data", "scope": "public", @@ -1580,8 +1808,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/data/public/query/state_sync/types.ts", @@ -1592,13 +1819,12 @@ { "parentPluginId": "data", "id": "def-public.QueryState.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/data/public/query/state_sync/types.ts", @@ -2032,9 +2258,7 @@ "label": "QueryStart", "description": [], "signature": [ - "{ addToQueryLog: (appName: string, { language, query }: ", - "Query", - ") => void; filterManager: ", + "{ addToQueryLog: (appName: string, { language, query }: any) => void; filterManager: ", { "pluginId": "data", "scope": "public", @@ -2090,11 +2314,7 @@ }, " | undefined) => { bool: { must: ", "DslQuery", - "[]; filter: ", - "Filter", - "[]; should: never[]; must_not: ", - "Filter", - "[]; }; }; }" + "[]; filter: any[]; should: never[]; must_not: any[]; }; }; }" ], "source": { "path": "src/plugins/data/public/query/query_service.ts", @@ -2217,9 +2437,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => ", - "RangeFilter", - " | undefined; getBounds: () => ", + " | undefined) => any; getBounds: () => ", { "pluginId": "data", "scope": "common", @@ -2400,240 +2618,28 @@ }, { "parentPluginId": "data", - "id": "def-common.compareFilters", + "id": "def-common.getAbsoluteTimeRange", "type": "Function", "tags": [], - "label": "compareFilters", - "description": [ - "\nCompare two filters or filter arrays to see if they match.\nFor filter arrays, the assumption is they are sorted.\n" - ], + "label": "getAbsoluteTimeRange", + "description": [], "signature": [ - "(first: ", - "Filter", - " | ", - "Filter", - "[], second: ", - "Filter", - " | ", - "Filter", - "[], comparatorOptions?: ", + "(timeRange: ", { "pluginId": "data", "scope": "common", "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" + "section": "def-common.TimeRange", + "text": "TimeRange" }, - ") => boolean" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 64 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.compareFilters.$1", - "type": "CompoundType", - "tags": [], - "label": "first", - "description": [ - "The first filter or filter array to compare" - ], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 65 - }, - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.compareFilters.$2", - "type": "CompoundType", - "tags": [], - "label": "second", - "description": [ - "The second filter or filter array to compare" - ], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 66 - }, - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.compareFilters.$3", - "type": "Object", - "tags": [], - "label": "comparatorOptions", - "description": [ - "Parameters to use for comparison" - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - } - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 67 - }, - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "Filters are the same" - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.dedupFilters", - "type": "Function", - "tags": [], - "label": "dedupFilters", - "description": [ - "\nCombine 2 filter collections, removing duplicates\n" - ], - "signature": [ - "(existingFilters: ", - "Filter", - "[], filters: ", - "Filter", - "[], comparatorOptions?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - }, - ") => ", - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/dedup_filters.ts", - "lineNumber": 22 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.dedupFilters.$1", - "type": "Array", - "tags": [], - "label": "existingFilters", - "description": [ - "- The filters to compare to" - ], - "signature": [ - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/dedup_filters.ts", - "lineNumber": 23 - }, - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.dedupFilters.$2", - "type": "Array", - "tags": [], - "label": "filters", - "description": [ - "- The filters being added" - ], - "signature": [ - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/dedup_filters.ts", - "lineNumber": 24 - }, - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.dedupFilters.$3", - "type": "Object", - "tags": [], - "label": "comparatorOptions", - "description": [ - "- Parameters to use for comparison" - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.FilterCompareOptions", - "text": "FilterCompareOptions" - } - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/dedup_filters.ts", - "lineNumber": 25 - }, - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "An array of filters that were not in existing" - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getAbsoluteTimeRange", - "type": "Function", - "tags": [], - "label": "getAbsoluteTimeRange", - "description": [], - "signature": [ - "(timeRange: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - ", { forceNow }: { forceNow?: Date | undefined; }) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + ", { forceNow }: { forceNow?: Date | undefined; }) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + } ], "source": { "path": "src/plugins/data/common/query/timefilter/get_time.ts", @@ -2723,9 +2729,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", - "RangeFilter", - " | undefined" + ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => any" ], "source": { "path": "src/plugins/data/common/query/timefilter/get_time.ts", @@ -2839,8 +2843,7 @@ "label": "isQuery", "description": [], "signature": [ - "(x: unknown) => x is ", - "Query" + "(x: unknown) => x is any" ], "source": { "path": "src/plugins/data/common/query/is_query.ts", @@ -2912,172 +2915,9 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.uniqFilters", - "type": "Function", - "tags": [], - "label": "uniqFilters", - "description": [ - "\nRemove duplicate filters from an array of filters\n" - ], - "signature": [ - "(filters: ", - "Filter", - "[], comparatorOptions?: any) => ", - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/uniq_filters.ts", - "lineNumber": 21 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.uniqFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [ - "The filters to remove duplicates from" - ], - "signature": [ - "Filter", - "[]" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/uniq_filters.ts", - "lineNumber": 21 - }, - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.uniqFilters.$2", - "type": "Any", - "tags": [], - "label": "comparatorOptions", - "description": [ - "- Parameters to use for comparison" - ], - "signature": [ - "any" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/uniq_filters.ts", - "lineNumber": 21 - }, - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "The original filters array with duplicates removed" - ], - "initialIsOpen": false } ], "interfaces": [ - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions", - "type": "Interface", - "tags": [], - "label": "FilterCompareOptions", - "description": [], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 12 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions.index", - "type": "CompoundType", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "boolean | undefined" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 13 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions.disabled", - "type": "CompoundType", - "tags": [], - "label": "disabled", - "description": [], - "signature": [ - "boolean | undefined" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 14 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions.negate", - "type": "CompoundType", - "tags": [], - "label": "negate", - "description": [], - "signature": [ - "boolean | undefined" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 15 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions.state", - "type": "CompoundType", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "boolean | undefined" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 16 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterCompareOptions.alias", - "type": "CompoundType", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "boolean | undefined" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 17 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.RefreshInterval", @@ -3189,105 +3029,6 @@ "initialIsOpen": false } ], - "objects": [ - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS", - "type": "Object", - "tags": [], - "label": "COMPARE_ALL_OPTIONS", - "description": [ - "\nInclude disabled, negate and store when comparing filters" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 23 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS.index", - "type": "boolean", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "true" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 24 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS.disabled", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "signature": [ - "true" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 25 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS.negate", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "signature": [ - "true" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 26 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS.state", - "type": "boolean", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "true" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 27 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS.alias", - "type": "boolean", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "true" - ], - "source": { - "path": "src/plugins/data/common/query/filter_manager/compare_filters.ts", - "lineNumber": 28 - }, - "deprecated": false - } - ], - "initialIsOpen": false - } - ] + "objects": [] } } \ No newline at end of file diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index b7145952a1308..2f32f33248c7f 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client @@ -36,9 +36,6 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services ## Common -### Objects - - ### Functions diff --git a/api_docs/data_search.json b/api_docs/data_search.json index 95d3733201ba3..1c0569fe53fe5 100644 --- a/api_docs/data_search.json +++ b/api_docs/data_search.json @@ -2561,7 +2561,7 @@ ], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 12 + "lineNumber": 11 }, "deprecated": false, "children": [ @@ -2577,7 +2577,7 @@ ], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 13 + "lineNumber": 12 }, "deprecated": false }, @@ -2594,7 +2594,7 @@ ], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 14 + "lineNumber": 13 }, "deprecated": false }, @@ -2607,7 +2607,7 @@ "description": [], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 15 + "lineNumber": 14 }, "deprecated": false }, @@ -2620,7 +2620,7 @@ "description": [], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 16 + "lineNumber": 15 }, "deprecated": false }, @@ -2633,7 +2633,7 @@ "description": [], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 17 + "lineNumber": 16 }, "deprecated": false }, @@ -2646,7 +2646,7 @@ "description": [], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 18 + "lineNumber": 17 }, "deprecated": false } @@ -2680,7 +2680,7 @@ ], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 20 + "lineNumber": 19 }, "deprecated": false, "children": [ @@ -2693,7 +2693,7 @@ "description": [], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 21 + "lineNumber": 20 }, "deprecated": false }, @@ -2705,11 +2705,11 @@ "label": "_shards", "description": [], "signature": [ - "ShardsResponse" + "ShardStatistics" ], "source": { "path": "src/plugins/data/server/search/strategies/ese_search/types.ts", - "lineNumber": 22 + "lineNumber": 21 }, "deprecated": false } @@ -3364,6 +3364,47 @@ }, "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-server.ISearchStart.searchAsInternalUser", + "type": "Object", + "tags": [], + "label": "searchAsInternalUser", + "description": [ + "\nSearch as the internal Kibana system user. This is not a registered search strategy as we don't\nwant to allow access from the client." + ], + "signature": [ + { + "pluginId": "data", + "scope": "server", + "docId": "kibDataSearchPluginApi", + "section": "def-server.ISearchStrategy", + "text": "ISearchStrategy" + }, + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchRequest", + "text": "IEsSearchRequest" + }, + ", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchResponse", + "text": "IEsSearchResponse" + }, + ">" + ], + "source": { + "path": "src/plugins/data/server/search/types.ts", + "lineNumber": 109 + }, + "deprecated": false + }, { "parentPluginId": "data", "id": "def-server.ISearchStart.getSearchStrategy", @@ -3386,7 +3427,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 110 + "lineNumber": 115 }, "deprecated": false, "returnComment": [], @@ -3403,7 +3444,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 111 + "lineNumber": 116 }, "deprecated": false } @@ -3436,7 +3477,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 113 + "lineNumber": 118 }, "deprecated": false, "returnComment": [], @@ -3460,7 +3501,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 113 + "lineNumber": 118 }, "deprecated": false } @@ -3494,7 +3535,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 114 + "lineNumber": 119 }, "deprecated": false } @@ -4197,7 +4238,7 @@ ], "source": { "path": "src/plugins/data/server/search/types.ts", - "lineNumber": 119 + "lineNumber": 124 }, "deprecated": false, "initialIsOpen": false @@ -6481,9 +6522,7 @@ "label": "getSearchSourceTimeFilter", "description": [], "signature": [ - "(forceNow?: Date | undefined) => ", - "RangeFilter", - "[] | { meta: { index: string | undefined; params: {}; alias: string; disabled: boolean; negate: boolean; }; query: { bool: { should: { bool: { filter: { range: { [x: string]: { gte: string; lte: string; }; }; }[]; }; }[]; minimum_should_match: number; }; }; }[]" + "(forceNow?: Date | undefined) => any[]" ], "source": { "path": "src/plugins/data/common/search/aggs/agg_configs.ts", @@ -8470,7 +8509,15 @@ "section": "def-common.ExpressionAstExpression", "text": "ExpressionAstExpression" }, - " | undefined) | undefined" + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | undefined) | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/param_types/base.ts", @@ -9172,21 +9219,9 @@ "label": "filterFieldTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | \"*\" | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[]" ], "source": { @@ -11454,7 +11489,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts", - "lineNumber": 30 + "lineNumber": 34 }, "deprecated": false, "children": [], @@ -11473,7 +11508,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/date_range_fn.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false, "children": [], @@ -11511,7 +11546,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter_fn.ts", - "lineNumber": 30 + "lineNumber": 35 }, "deprecated": false, "children": [], @@ -11549,7 +11584,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters_fn.ts", - "lineNumber": 30 + "lineNumber": 32 }, "deprecated": false, "children": [], @@ -11606,7 +11641,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts", - "lineNumber": 29 + "lineNumber": 31 }, "deprecated": false, "children": [], @@ -11644,7 +11679,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram_fn.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false, "children": [], @@ -11663,7 +11698,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts", - "lineNumber": 30 + "lineNumber": 34 }, "deprecated": false, "children": [], @@ -11796,7 +11831,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range_fn.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false, "children": [], @@ -12056,6 +12091,64 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.cidrToAst", + "type": "Function", + "tags": [], + "label": "cidrToAst", + "description": [], + "signature": [ + "(cidr: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.cidrToAst.$1", + "type": "Object", + "tags": [], + "label": "cidr", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.convertDateRangeToString", @@ -12069,14 +12162,14 @@ "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.DateRangeKey", - "text": "DateRangeKey" + "section": "def-common.DateRange", + "text": "DateRange" }, ", format: (val: any) => string) => string" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 14 + "lineNumber": 11 }, "deprecated": false, "children": [ @@ -12092,13 +12185,13 @@ "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.DateRangeKey", - "text": "DateRangeKey" + "section": "def-common.DateRange", + "text": "DateRange" } ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 14 + "lineNumber": 11 }, "deprecated": false, "isRequired": true @@ -12115,7 +12208,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 14 + "lineNumber": 11 }, "deprecated": false, "isRequired": true @@ -12341,6 +12434,122 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeToAst", + "type": "Function", + "tags": [], + "label": "dateRangeToAst", + "description": [], + "signature": [ + "(dateRange: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.dateRangeToAst.$1", + "type": "Object", + "tags": [], + "label": "dateRange", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsToAst", + "type": "Function", + "tags": [], + "label": "extendedBoundsToAst", + "description": [], + "signature": [ + "(extendedBounds: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsToAst.$1", + "type": "Object", + "tags": [], + "label": "extendedBounds", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.extractReferences", @@ -12410,17 +12619,13 @@ "label": "filtersToAst", "description": [], "signature": [ - "(filters: ", - "Filter", - " | ", - "Filter", - "[]) => ", + "(filters: any) => ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionAstExpressionBuilder", - "text": "ExpressionAstExpressionBuilder" + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" }, "[]" ], @@ -12433,15 +12638,12 @@ { "parentPluginId": "data", "id": "def-common.filtersToAst.$1", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filters", "description": [], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], "source": { "path": "src/plugins/data/common/search/expressions/filters_to_ast.ts", @@ -12527,18 +12729,134 @@ }, { "parentPluginId": "data", - "id": "def-common.getAvgMetricAgg", + "id": "def-common.geoBoundingBoxToAst", "type": "Function", "tags": [], - "label": "getAvgMetricAgg", + "label": "geoBoundingBoxToAst", "description": [], "signature": [ - "() => ", + "(geoBoundingBox: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.MetricAggType", + "section": "def-common.GeoBoundingBox", + "text": "GeoBoundingBox" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box_to_ast.ts", + "lineNumber": 16 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxToAst.$1", + "type": "CompoundType", + "tags": [], + "label": "geoBoundingBox", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoBoundingBox", + "text": "GeoBoundingBox" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box_to_ast.ts", + "lineNumber": 16 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoPointToAst", + "type": "Function", + "tags": [], + "label": "geoPointToAst", + "description": [], + "signature": [ + "(point: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_point_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoPointToAst.$1", + "type": "CompoundType", + "tags": [], + "label": "point", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_point_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getAvgMetricAgg", + "type": "Function", + "tags": [], + "label": "getAvgMetricAgg", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.MetricAggType", "text": "MetricAggType" }, "<", @@ -13189,7 +13507,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false, "children": [ @@ -13202,7 +13520,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false, "children": [ @@ -13218,7 +13536,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false, "returnComment": [], @@ -13232,7 +13550,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false } @@ -13315,7 +13633,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 44 + "lineNumber": 42 }, "deprecated": false, "children": [ @@ -13337,7 +13655,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 44 + "lineNumber": 42 }, "deprecated": false, "isRequired": true @@ -13444,7 +13762,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false, "children": [], @@ -13514,7 +13832,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 51 + "lineNumber": 52 }, "deprecated": false, "children": [ @@ -13536,7 +13854,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 51 + "lineNumber": 52 }, "deprecated": false, "isRequired": true @@ -13573,7 +13891,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 38 + "lineNumber": 39 }, "deprecated": false, "children": [], @@ -14014,7 +14332,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 38 + "lineNumber": 35 }, "deprecated": false, "children": [ @@ -14036,7 +14354,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 38 + "lineNumber": 35 }, "deprecated": false, "isRequired": true @@ -14772,6 +15090,64 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.ipRangeToAst", + "type": "Function", + "tags": [], + "label": "ipRangeToAst", + "description": [], + "signature": [ + "(ipRange: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.ipRangeToAst.$1", + "type": "Object", + "tags": [], + "label": "ipRange", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.isAutoInterval", @@ -15374,6 +15750,64 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeToAst", + "type": "Function", + "tags": [], + "label": "numericalRangeToAst", + "description": [], + "signature": [ + "(numericalRange: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ") => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeToAst.$1", + "type": "Object", + "tags": [], + "label": "numericalRange", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range_to_ast.ts", + "lineNumber": 12 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.parseEsInterval", @@ -15673,42 +16107,54 @@ }, { "parentPluginId": "data", - "id": "def-common.queryToAst", + "id": "def-common.queryFilterToAst", "type": "Function", "tags": [], - "label": "queryToAst", + "label": "queryFilterToAst", "description": [], "signature": [ - "(query: ", - "Query", + "({ input, label }: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, ") => ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionAstExpressionBuilder", - "text": "ExpressionAstExpressionBuilder" + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" } ], "source": { - "path": "src/plugins/data/common/search/expressions/query_to_ast.ts", - "lineNumber": 14 + "path": "src/plugins/data/common/search/expressions/query_filter_to_ast.ts", + "lineNumber": 13 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.queryToAst.$1", + "id": "def-common.queryFilterToAst.$1", "type": "Object", "tags": [], - "label": "query", + "label": "{ input, label }", "description": [], "signature": [ - "Query" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + } ], "source": { - "path": "src/plugins/data/common/search/expressions/query_to_ast.ts", - "lineNumber": 14 + "path": "src/plugins/data/common/search/expressions/query_filter_to_ast.ts", + "lineNumber": 13 }, "deprecated": false, "isRequired": true @@ -15719,26 +16165,70 @@ }, { "parentPluginId": "data", - "id": "def-common.splitStringInterval", + "id": "def-common.queryToAst", "type": "Function", "tags": [], - "label": "splitStringInterval", + "label": "queryToAst", "description": [], "signature": [ - "(interval: string) => { value: number; unit: ", - "Unit", - "; } | null" + "(query: any) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } ], "source": { - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "lineNumber": 16 + "path": "src/plugins/data/common/search/expressions/query_to_ast.ts", + "lineNumber": 14 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.splitStringInterval.$1", - "type": "string", + "id": "def-common.queryToAst.$1", + "type": "Any", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_to_ast.ts", + "lineNumber": 14 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.splitStringInterval", + "type": "Function", + "tags": [], + "label": "splitStringInterval", + "description": [], + "signature": [ + "(interval: string) => { value: number; unit: ", + "Unit", + "; } | null" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "lineNumber": 16 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.splitStringInterval.$1", + "type": "string", "tags": [], "label": "interval", "description": [], @@ -16050,18 +16540,9 @@ "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionAstFunctionBuilder", - "text": "ExpressionAstFunctionBuilder" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExpressionFunctionKibanaTimerange", - "text": "ExpressionFunctionKibanaTimerange" - }, - ">" + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } ], "source": { "path": "src/plugins/data/common/search/expressions/timerange_to_ast.ts", @@ -16208,7 +16689,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 196 + "lineNumber": 195 }, "deprecated": false, "children": [ @@ -16237,7 +16718,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: string | undefined; filter?: string | undefined; }, \"filter\">, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", + ".FILTER>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, \"filter\" | \"geo_bounding_box\"> & Pick<{ geo_bounding_box?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; filter?: any; }, never>, \"enabled\" | \"id\" | \"filter\" | \"customLabel\" | \"schema\" | \"geo_bounding_box\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -16261,7 +16806,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 197 + "lineNumber": 196 }, "deprecated": false }, @@ -16290,7 +16835,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: string | undefined; }, \"filters\"> & Pick<{ filters?: string | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", + ".FILTERS>, \"enabled\" | \"id\" | \"schema\" | \"json\" | \"timeShift\"> & Pick<{ filters?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">[] | undefined; }, \"filters\"> & Pick<{ filters?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">[] | undefined; }, never>, \"enabled\" | \"filters\" | \"id\" | \"schema\" | \"json\" | \"timeShift\">, ", "AggExpressionType", ", ", { @@ -16314,7 +16891,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 198 + "lineNumber": 197 }, "deprecated": false }, @@ -16367,7 +16944,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 199 + "lineNumber": 198 }, "deprecated": false }, @@ -16396,7 +16973,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: string | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", + ".IP_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, \"ipRangeType\" | \"ranges\"> & Pick<{ ranges?: (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + "> | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"ip_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">)[] | undefined; ipRangeType?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ipRangeType\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -16420,7 +17061,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 200 + "lineNumber": 199 }, "deprecated": false }, @@ -16449,7 +17090,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", + ".DATE_RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"date_range\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\" | \"time_zone\">, ", "AggExpressionType", ", ", { @@ -16473,7 +17146,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 201 + "lineNumber": 200 }, "deprecated": false }, @@ -16502,60 +17175,39 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: string | undefined; }, \"ranges\"> & Pick<{ ranges?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", - "AggExpressionType", - ", ", + ".RANGE>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\"> & Pick<{ ranges?: ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" }, - "<", + "<\"numerical_range\", ", { - "pluginId": "inspector", + "pluginId": "data", "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" }, - ", ", - "SerializableState", - ">>" - ], - "source": { - "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 202 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.AggFunctionsMapping.aggGeoTile", - "type": "Object", - "tags": [], - "label": "aggGeoTile", - "description": [], - "signature": [ + ">[] | undefined; }, \"ranges\"> & Pick<{ ranges?: ", { "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" }, - "<\"aggGeoTile\", any, ", - "AggExpressionFunctionArgs", - "<", + "<\"numerical_range\", ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.BUCKET_TYPES", - "text": "BUCKET_TYPES" + "section": "def-common.NumericalRange", + "text": "NumericalRange" }, - ".GEOTILE_GRID>, ", + ">[] | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"ranges\">, ", "AggExpressionType", ", ", { @@ -16579,16 +17231,16 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 203 + "lineNumber": 201 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.AggFunctionsMapping.aggGeoHash", + "id": "def-common.AggFunctionsMapping.aggGeoTile", "type": "Object", "tags": [], - "label": "aggGeoHash", + "label": "aggGeoTile", "description": [], "signature": [ { @@ -16598,7 +17250,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"aggGeoHash\", any, Pick, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: string | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: string | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", + ".GEOTILE_GRID>, ", "AggExpressionType", ", ", { @@ -16632,16 +17284,16 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 204 + "lineNumber": 202 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.AggFunctionsMapping.aggHistogram", + "id": "def-common.AggFunctionsMapping.aggGeoHash", "type": "Object", "tags": [], - "label": "aggHistogram", + "label": "aggGeoHash", "description": [], "signature": [ { @@ -16651,7 +17303,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"aggHistogram\", any, Pick, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", + ".GEOHASH_GRID>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, \"boundingBox\"> & Pick<{ boundingBox?: ({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText) | undefined; }, never>, \"enabled\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"autoPrecision\" | \"precision\" | \"useGeocentroid\" | \"isFilteredByCollar\" | \"boundingBox\">, ", "AggExpressionType", ", ", { @@ -16685,7 +17401,92 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 205 + "lineNumber": 203 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.AggFunctionsMapping.aggHistogram", + "type": "Object", + "tags": [], + "label": "aggHistogram", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"aggHistogram\", any, Pick, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"extended_bounds\"> & Pick<{ extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"used_interval\" | \"maxBars\" | \"intervalBase\" | \"min_doc_count\" | \"has_extended_bounds\" | \"extended_bounds\">, ", + "AggExpressionType", + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/types.ts", + "lineNumber": 204 }, "deprecated": false }, @@ -16714,7 +17515,71 @@ "section": "def-common.BUCKET_TYPES", "text": "BUCKET_TYPES" }, - ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: string | undefined; extended_bounds?: string | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", + ".DATE_HISTOGRAM>, \"enabled\" | \"interval\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, \"timeRange\" | \"extended_bounds\"> & Pick<{ timeRange?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "> | undefined; extended_bounds?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"extended_bounds\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + "> | undefined; }, never>, \"enabled\" | \"interval\" | \"timeRange\" | \"id\" | \"customLabel\" | \"schema\" | \"json\" | \"timeShift\" | \"field\" | \"time_zone\" | \"used_interval\" | \"min_doc_count\" | \"extended_bounds\" | \"useNormalizedEsInterval\" | \"scaleMetricValues\" | \"used_time_zone\" | \"drop_partials\" | \"format\">, ", "AggExpressionType", ", ", { @@ -16738,7 +17603,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 206 + "lineNumber": 205 }, "deprecated": false }, @@ -16795,7 +17660,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 207 + "lineNumber": 206 }, "deprecated": false }, @@ -16848,7 +17713,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 208 + "lineNumber": 207 }, "deprecated": false }, @@ -16909,7 +17774,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 209 + "lineNumber": 208 }, "deprecated": false }, @@ -16970,7 +17835,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 210 + "lineNumber": 209 }, "deprecated": false }, @@ -17031,7 +17896,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 211 + "lineNumber": 210 }, "deprecated": false }, @@ -17092,7 +17957,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 212 + "lineNumber": 211 }, "deprecated": false }, @@ -17153,7 +18018,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 213 + "lineNumber": 212 }, "deprecated": false }, @@ -17206,7 +18071,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 214 + "lineNumber": 213 }, "deprecated": false }, @@ -17259,7 +18124,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 215 + "lineNumber": 214 }, "deprecated": false }, @@ -17316,7 +18181,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 216 + "lineNumber": 215 }, "deprecated": false }, @@ -17373,7 +18238,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 217 + "lineNumber": 216 }, "deprecated": false }, @@ -17426,7 +18291,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 218 + "lineNumber": 217 }, "deprecated": false }, @@ -17479,7 +18344,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 219 + "lineNumber": 218 }, "deprecated": false }, @@ -17532,7 +18397,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 220 + "lineNumber": 219 }, "deprecated": false }, @@ -17585,7 +18450,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 221 + "lineNumber": 220 }, "deprecated": false }, @@ -17638,7 +18503,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 222 + "lineNumber": 221 }, "deprecated": false }, @@ -17691,7 +18556,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 223 + "lineNumber": 222 }, "deprecated": false }, @@ -17748,7 +18613,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 224 + "lineNumber": 223 }, "deprecated": false }, @@ -17801,7 +18666,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 225 + "lineNumber": 224 }, "deprecated": false }, @@ -17854,7 +18719,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 226 + "lineNumber": 225 }, "deprecated": false }, @@ -17911,7 +18776,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 227 + "lineNumber": 226 }, "deprecated": false }, @@ -17964,7 +18829,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 228 + "lineNumber": 227 }, "deprecated": false }, @@ -18017,7 +18882,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 229 + "lineNumber": 228 }, "deprecated": false }, @@ -18070,7 +18935,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 230 + "lineNumber": 229 }, "deprecated": false } @@ -18801,7 +19666,13 @@ "label": "extended_bounds", "description": [], "signature": [ - "ExtendedBounds", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, " | undefined" ], "source": { @@ -18865,8 +19736,8 @@ "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.DateRangeKey", - "text": "DateRangeKey" + "section": "def-common.DateRange", + "text": "DateRange" }, "[] | undefined" ], @@ -18992,7 +19863,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 23 + "lineNumber": 24 }, "deprecated": false, "children": [ @@ -19004,21 +19875,76 @@ "label": "geo_bounding_box", "description": [], "signature": [ - "Partial<{ top_left: GeoPoint; top_right: GeoPoint; bottom_right: GeoPoint; bottom_left: GeoPoint; }> | { wkt: string; } | GeoBox | undefined" + "GeoBox | { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | WellKnownText | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", - "lineNumber": 24 + "lineNumber": 25 }, "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.AggParamsFilteredMetric", - "type": "Interface", + }, + { + "parentPluginId": "data", + "id": "def-common.AggParamsFilter.filter", + "type": "Object", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + " | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/buckets/filter.ts", + "lineNumber": 26 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.AggParamsFilteredMetric", + "type": "Interface", "tags": [], "label": "AggParamsFilteredMetric", "description": [], @@ -19099,7 +20025,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false, "children": [ @@ -19111,13 +20037,18 @@ "label": "filters", "description": [], "signature": [ - "{ input: ", - "Query", - "; label: string; }[] | undefined" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + "[] | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 38 + "lineNumber": 39 }, "deprecated": false } @@ -19224,7 +20155,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 28 + "lineNumber": 29 }, "deprecated": false, "children": [ @@ -19237,7 +20168,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 29 + "lineNumber": 30 }, "deprecated": false }, @@ -19253,7 +20184,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false }, @@ -19269,7 +20200,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 31 + "lineNumber": 32 }, "deprecated": false }, @@ -19285,7 +20216,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 32 + "lineNumber": 33 }, "deprecated": false }, @@ -19301,7 +20232,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 33 + "lineNumber": 34 }, "deprecated": false }, @@ -19313,11 +20244,43 @@ "label": "boundingBox", "description": [], "signature": [ - "Partial<{ top_left: GeoPoint; top_right: GeoPoint; bottom_right: GeoPoint; bottom_left: GeoPoint; }> | { wkt: string; } | GeoBox | undefined" + "GeoBox | { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | WellKnownText | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash.ts", - "lineNumber": 34 + "lineNumber": 35 }, "deprecated": false } @@ -19416,7 +20379,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 40 + "lineNumber": 41 }, "deprecated": false, "children": [ @@ -19429,7 +20392,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 41 + "lineNumber": 42 }, "deprecated": false }, @@ -19445,7 +20408,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 42 + "lineNumber": 43 }, "deprecated": false }, @@ -19461,7 +20424,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 43 + "lineNumber": 44 }, "deprecated": false }, @@ -19477,7 +20440,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 44 + "lineNumber": 45 }, "deprecated": false }, @@ -19493,7 +20456,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 45 + "lineNumber": 46 }, "deprecated": false }, @@ -19509,7 +20472,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 46 + "lineNumber": 47 }, "deprecated": false }, @@ -19525,7 +20488,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 47 + "lineNumber": 48 }, "deprecated": false }, @@ -19537,12 +20500,18 @@ "label": "extended_bounds", "description": [], "signature": [ - "ExtendedBounds", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, " | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 48 + "lineNumber": 49 }, "deprecated": false } @@ -19569,7 +20538,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 29 + "lineNumber": 30 }, "deprecated": false, "children": [ @@ -19582,7 +20551,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false }, @@ -19605,7 +20574,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 31 + "lineNumber": 32 }, "deprecated": false }, @@ -19637,7 +20606,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 32 + "lineNumber": 33 }, "deprecated": false } @@ -20005,7 +20974,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 29 + "lineNumber": 30 }, "deprecated": false, "children": [ @@ -20018,7 +20987,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false }, @@ -20030,11 +20999,18 @@ "label": "ranges", "description": [], "signature": [ - "{ from: number; to: number; label?: string | undefined; }[] | undefined" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + "[] | undefined" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 31 + "lineNumber": 32 }, "deprecated": false } @@ -21028,7 +22004,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 25 + "lineNumber": 26 }, "deprecated": false, "children": [ @@ -21041,7 +22017,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 26 + "lineNumber": 27 }, "deprecated": false }, @@ -21054,7 +22030,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 27 + "lineNumber": 28 }, "deprecated": false } @@ -21116,21 +22092,9 @@ "label": "filterFieldTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | \"*\" | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[] | undefined" ], "source": { @@ -21142,6 +22106,35 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.Cidr", + "type": "Interface", + "tags": [], + "label": "Cidr", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.Cidr.mask", + "type": "string", + "tags": [], + "label": "mask", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 13 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.CidrMaskIpRangeAggKey", @@ -21303,6 +22296,54 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.DateRange", + "type": "Interface", + "tags": [], + "label": "DateRange", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DateRange.from", + "type": "CompoundType", + "tags": [], + "label": "from", + "description": [], + "signature": [ + "string | number" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 13 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.DateRange.to", + "type": "CompoundType", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "string | number" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 14 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.DateRangeBucketAggDependencies", @@ -21369,54 +22410,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-common.DateRangeKey", - "type": "Interface", - "tags": [], - "label": "DateRangeKey", - "description": [], - "source": { - "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 9 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DateRangeKey.from", - "type": "CompoundType", - "tags": [], - "label": "from", - "description": [], - "signature": [ - "string | number" - ], - "source": { - "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 10 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DateRangeKey.to", - "type": "CompoundType", - "tags": [], - "label": "to", - "description": [], - "signature": [ - "string | number" - ], - "source": { - "path": "src/plugins/data/common/search/aggs/buckets/lib/date_range.ts", - "lineNumber": 11 - }, - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.EqlSearchStrategyRequest", @@ -21537,33 +22530,81 @@ }, { "parentPluginId": "data", - "id": "def-common.FetchHandlers", + "id": "def-common.ExtendedBounds", "type": "Interface", "tags": [], - "label": "FetchHandlers", + "label": "ExtendedBounds", "description": [], "source": { - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "lineNumber": 21 + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 13 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.FetchHandlers.getConfig", - "type": "Function", + "id": "def-common.ExtendedBounds.min", + "type": "number", "tags": [], - "label": "getConfig", + "label": "min", "description": [], "signature": [ - "(key: string, defaultOverride?: T | undefined) => T" + "number | undefined" ], "source": { - "path": "src/plugins/data/common/search/search_source/fetch/types.ts", - "lineNumber": 22 + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 14 }, - "deprecated": false, - "returnComment": [], + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.ExtendedBounds.max", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "signature": [ + "number | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 15 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FetchHandlers", + "type": "Interface", + "tags": [], + "label": "FetchHandlers", + "description": [], + "source": { + "path": "src/plugins/data/common/search/search_source/fetch/types.ts", + "lineNumber": 21 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.FetchHandlers.getConfig", + "type": "Function", + "tags": [], + "label": "getConfig", + "description": [], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => T" + ], + "source": { + "path": "src/plugins/data/common/search/search_source/fetch/types.ts", + "lineNumber": 22 + }, + "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", @@ -21684,7 +22725,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 33 + "lineNumber": 34 }, "deprecated": false, "children": [ @@ -21700,7 +22741,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 34 + "lineNumber": 35 }, "deprecated": false, "returnComment": [], @@ -21714,7 +22755,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters.ts", - "lineNumber": 34 + "lineNumber": 35 }, "deprecated": false } @@ -21732,7 +22773,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 30 + "lineNumber": 31 }, "deprecated": false, "children": [ @@ -21748,7 +22789,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 31 + "lineNumber": 32 }, "deprecated": false, "returnComment": [], @@ -21762,7 +22803,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 31 + "lineNumber": 32 }, "deprecated": false } @@ -21784,11 +22825,11 @@ "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, - ", \"init\" | \"register\" | \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\">, \"deserialize\" | \"getDefaultInstance\">" + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\">, \"deserialize\" | \"getDefaultInstance\">" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 32 + "lineNumber": 33 }, "deprecated": false, "returnComment": [], @@ -21987,7 +23028,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 35 + "lineNumber": 36 }, "deprecated": false, "children": [ @@ -22011,7 +23052,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false, "returnComment": [], @@ -22034,7 +23075,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false } @@ -22059,7 +23100,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false, "returnComment": [], @@ -22486,6 +23527,48 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.IpRange", + "type": "Interface", + "tags": [], + "label": "IpRange", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 12 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.IpRange.from", + "type": "string", + "tags": [], + "label": "from", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 13 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.IpRange.to", + "type": "string", + "tags": [], + "label": "to", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 14 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.ISearchClient", @@ -22947,7 +24030,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 26 + "lineNumber": 25 }, "deprecated": false, "children": [ @@ -22981,7 +24064,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 31 + "lineNumber": 30 }, "deprecated": false, "returnComment": [], @@ -23005,7 +24088,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 31 + "lineNumber": 30 }, "deprecated": false } @@ -23033,7 +24116,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 35 + "lineNumber": 34 }, "deprecated": false, "returnComment": [], @@ -23174,21 +24257,9 @@ "label": "filterFieldTypes", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | \"*\" | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[] | undefined" ], "source": { @@ -23283,6 +24354,70 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.NumericalRange", + "type": "Interface", + "tags": [], + "label": "NumericalRange", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 13 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.NumericalRange.from", + "type": "number", + "tags": [], + "label": "from", + "description": [], + "signature": [ + "number | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 14 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.NumericalRange.to", + "type": "number", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "number | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 15 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.NumericalRange.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "signature": [ + "string | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 16 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.OptionedValueProp", @@ -23419,7 +24554,7 @@ "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, - ", \"init\" | \"register\" | \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\">, \"deserialize\" | \"getDefaultInstance\">" + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\">, \"deserialize\" | \"getDefaultInstance\">" ], "source": { "path": "src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts", @@ -23432,6 +24567,54 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.QueryFilter", + "type": "Interface", + "tags": [], + "label": "QueryFilter", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 15 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.QueryFilter.input", + "type": "Any", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "any" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 16 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.QueryFilter.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "signature": [ + "string | undefined" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 17 + }, + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.RangeBucketAggDependencies", @@ -23441,7 +24624,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 25 + "lineNumber": 26 }, "deprecated": false, "children": [ @@ -23461,11 +24644,11 @@ "section": "def-common.FieldFormatsRegistry", "text": "FieldFormatsRegistry" }, - ", \"init\" | \"register\" | \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\">, \"deserialize\" | \"getDefaultInstance\">" + ", \"deserialize\" | \"getDefaultConfig\" | \"getType\" | \"getTypeWithoutMetaParams\" | \"getDefaultType\" | \"getTypeNameByEsTypes\" | \"getDefaultTypeName\" | \"getInstance\" | \"getDefaultInstancePlain\" | \"getDefaultInstanceCacheResolver\" | \"getByFieldType\" | \"getDefaultInstance\" | \"parseDefaultTypeMap\" | \"has\">, \"deserialize\" | \"getDefaultInstance\">" ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range.ts", - "lineNumber": 26 + "lineNumber": 27 }, "deprecated": false, "returnComment": [], @@ -23541,7 +24724,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 131 + "lineNumber": 130 }, "deprecated": false, "children": [ @@ -23557,7 +24740,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 132 + "lineNumber": 131 }, "deprecated": false }, @@ -23573,7 +24756,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 133 + "lineNumber": 132 }, "deprecated": false }, @@ -23589,7 +24772,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 134 + "lineNumber": 133 }, "deprecated": false }, @@ -23605,7 +24788,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 135 + "lineNumber": 134 }, "deprecated": false }, @@ -23621,7 +24804,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 136 + "lineNumber": 135 }, "deprecated": false }, @@ -23637,7 +24820,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 137 + "lineNumber": 136 }, "deprecated": false } @@ -23653,7 +24836,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 140 + "lineNumber": 139 }, "deprecated": false, "children": [ @@ -23677,7 +24860,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 141 + "lineNumber": 140 }, "deprecated": false } @@ -24409,7 +25592,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 70 + "lineNumber": 69 }, "deprecated": false, "children": [ @@ -24425,51 +25608,43 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 71 + "lineNumber": 70 }, "deprecated": false }, { "parentPluginId": "data", "id": "def-common.SearchSourceFields.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\n{@link Query}" ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 75 + "lineNumber": 74 }, "deprecated": false }, { "parentPluginId": "data", "id": "def-common.SearchSourceFields.filter", - "type": "CompoundType", + "type": "Any", "tags": [], "label": "filter", "description": [ "\n{@link Filter}" ], "signature": [ - "Filter", - " | ", - "Filter", - "[] | (() => ", - "Filter", - " | ", - "Filter", - "[] | undefined) | undefined" + "any" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 79 + "lineNumber": 78 }, "deprecated": false }, @@ -24535,7 +25710,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 83 + "lineNumber": 82 }, "deprecated": false }, @@ -24551,7 +25726,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 84 + "lineNumber": 83 }, "deprecated": false }, @@ -24567,7 +25742,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 85 + "lineNumber": 84 }, "deprecated": false }, @@ -24583,7 +25758,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 86 + "lineNumber": 85 }, "deprecated": false }, @@ -24609,7 +25784,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 90 + "lineNumber": 89 }, "deprecated": false }, @@ -24625,7 +25800,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 91 + "lineNumber": 90 }, "deprecated": false }, @@ -24641,7 +25816,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 92 + "lineNumber": 91 }, "deprecated": false }, @@ -24657,7 +25832,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 93 + "lineNumber": 92 }, "deprecated": false }, @@ -24673,7 +25848,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 94 + "lineNumber": 93 }, "deprecated": false }, @@ -24698,7 +25873,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 98 + "lineNumber": 97 }, "deprecated": false }, @@ -24714,11 +25889,11 @@ "\nRetreive fields directly from _source (legacy behavior)\n" ], "signature": [ - "string | boolean | string[] | undefined" + "string | string[] | undefined" ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 104 + "lineNumber": 103 }, "deprecated": true, "references": [ @@ -24759,7 +25934,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 108 + "lineNumber": 107 }, "deprecated": false }, @@ -24782,7 +25957,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 109 + "lineNumber": 108 }, "deprecated": false }, @@ -24798,7 +25973,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 110 + "lineNumber": 109 }, "deprecated": false }, @@ -24814,7 +25989,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 111 + "lineNumber": 110 }, "deprecated": false }, @@ -24837,7 +26012,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 113 + "lineNumber": 112 }, "deprecated": false } @@ -24853,7 +26028,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 116 + "lineNumber": 115 }, "deprecated": false, "children": [ @@ -24869,7 +26044,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 117 + "lineNumber": 116 }, "deprecated": false } @@ -24885,7 +26060,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 150 + "lineNumber": 149 }, "deprecated": false, "children": [ @@ -24898,7 +26073,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 151 + "lineNumber": 150 }, "deprecated": false }, @@ -24911,7 +26086,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 152 + "lineNumber": 151 }, "deprecated": false }, @@ -24927,7 +26102,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 153 + "lineNumber": 152 }, "deprecated": false }, @@ -24940,7 +26115,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 164 + "lineNumber": 163 }, "deprecated": false } @@ -24956,7 +26131,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 45 + "lineNumber": 44 }, "deprecated": false, "children": [ @@ -24978,7 +26153,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 46 + "lineNumber": 45 }, "deprecated": false }, @@ -24994,7 +26169,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 47 + "lineNumber": 46 }, "deprecated": false } @@ -25010,7 +26185,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 50 + "lineNumber": 49 }, "deprecated": false, "children": [ @@ -25032,7 +26207,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 51 + "lineNumber": 50 }, "deprecated": false }, @@ -25048,7 +26223,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 52 + "lineNumber": 51 }, "deprecated": false } @@ -25064,7 +26239,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 120 + "lineNumber": 119 }, "deprecated": false, "children": [ @@ -25080,7 +26255,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 121 + "lineNumber": 120 }, "deprecated": false }, @@ -25096,7 +26271,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 122 + "lineNumber": 121 }, "deprecated": false }, @@ -25112,7 +26287,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 123 + "lineNumber": 122 }, "deprecated": false }, @@ -25128,7 +26303,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 124 + "lineNumber": 123 }, "deprecated": false }, @@ -25144,7 +26319,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 125 + "lineNumber": 124 }, "deprecated": false }, @@ -25160,7 +26335,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 126 + "lineNumber": 125 }, "deprecated": false }, @@ -25176,7 +26351,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 127 + "lineNumber": 126 }, "deprecated": false }, @@ -25192,7 +26367,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 128 + "lineNumber": 127 }, "deprecated": false } @@ -25224,7 +26399,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range.ts", - "lineNumber": 24 + "lineNumber": 25 }, "deprecated": false, "initialIsOpen": false @@ -25266,7 +26441,7 @@ "description": [], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 40 + "lineNumber": 39 }, "deprecated": false, "initialIsOpen": false @@ -25448,7 +26623,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts", - "lineNumber": 15 + "lineNumber": 16 }, "deprecated": false, "initialIsOpen": false @@ -25465,7 +26640,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/date_range_fn.ts", - "lineNumber": 15 + "lineNumber": 16 }, "deprecated": false, "initialIsOpen": false @@ -25516,7 +26691,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filter_fn.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false @@ -25533,7 +26708,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/filters_fn.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false @@ -25584,7 +26759,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false @@ -25635,7 +26810,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/histogram_fn.ts", - "lineNumber": 15 + "lineNumber": 16 }, "deprecated": false, "initialIsOpen": false @@ -25652,7 +26827,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts", - "lineNumber": 15 + "lineNumber": 16 }, "deprecated": false, "initialIsOpen": false @@ -25803,7 +26978,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/buckets/range_fn.ts", - "lineNumber": 15 + "lineNumber": 16 }, "deprecated": false, "initialIsOpen": false @@ -25957,7 +27132,7 @@ ], "source": { "path": "src/plugins/data/common/search/aggs/types.ts", - "lineNumber": 129 + "lineNumber": 128 }, "deprecated": false, "initialIsOpen": false @@ -26101,6 +27276,30 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.CidrOutput", + "type": "Type", + "tags": [], + "label": "CidrOutput", + "description": [], + "signature": [ + "{ type: \"cidr\"; } & ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 16 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.CreateAggConfigParams", @@ -26128,6 +27327,30 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.DateRangeOutput", + "type": "Type", + "tags": [], + "label": "DateRangeOutput", + "description": [], + "signature": [ + "{ type: \"date_range\"; } & ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 17 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.ENHANCED_ES_SEARCH_STRATEGY", @@ -26319,7 +27542,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 38 + "lineNumber": 37 }, "deprecated": false, "initialIsOpen": false @@ -26360,7 +27583,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 55 + "lineNumber": 54 }, "deprecated": false, "initialIsOpen": false @@ -26413,13 +27636,7 @@ "label": "ExecutionContextSearch", "description": [], "signature": [ - "{ filters?: ", - "Filter", - "[] | undefined; query?: ", - "Query", - " | ", - "Query", - "[] | undefined; timeRange?: ", + "{ filters?: any[] | undefined; query?: any; timeRange?: ", { "pluginId": "data", "scope": "common", @@ -26438,10 +27655,10 @@ }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionExistsFilter", + "id": "def-common.ExpressionFunctionCidr", "type": "Type", "tags": [], - "label": "ExpressionFunctionExistsFilter", + "label": "ExpressionFunctionCidr", "description": [], "signature": [ { @@ -26451,7 +27668,15 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"existsFilter\", null, Arguments, ", + "<\"cidr\", null, ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + ", ", { "pluginId": "expressions", "scope": "common", @@ -26459,8 +27684,14 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_filter\", ", - "Filter", + "<\"cidr\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, ">, ", { "pluginId": "expressions", @@ -26482,18 +27713,18 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 20 + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 18 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionField", + "id": "def-common.ExpressionFunctionDateRange", "type": "Type", "tags": [], - "label": "ExpressionFunctionField", + "label": "ExpressionFunctionDateRange", "description": [], "signature": [ { @@ -26503,7 +27734,15 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"field\", null, Arguments, ", + "<\"dateRange\", null, ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ", ", { "pluginId": "expressions", "scope": "common", @@ -26511,13 +27750,13 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_field\", ", + "<\"date_range\", ", { "pluginId": "data", "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" }, ">, ", { @@ -26540,7 +27779,7 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/date_range.ts", "lineNumber": 19 }, "deprecated": false, @@ -26548,10 +27787,10 @@ }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionKibana", + "id": "def-common.ExpressionFunctionExistsFilter", "type": "Type", "tags": [], - "label": "ExpressionFunctionKibana", + "label": "ExpressionFunctionExistsFilter", "description": [], "signature": [ { @@ -26561,23 +27800,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"kibana\", Input, object, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_context\", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, - ">, ", + "<\"existsFilter\", null, Arguments, any, ", { "pluginId": "expressions", "scope": "common", @@ -26594,28 +27817,22 @@ "text": "Adapters" }, ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, + "SerializableState", ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/kibana.ts", - "lineNumber": 17 + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 20 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionKibanaContext", + "id": "def-common.ExpressionFunctionExtendedBounds", "type": "Type", "tags": [], - "label": "ExpressionFunctionKibanaContext", + "label": "ExpressionFunctionExtendedBounds", "description": [], "signature": [ { @@ -26625,7 +27842,15 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"kibana_context\", Input, Arguments, Promise<", + "<\"extendedBounds\", null, ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + ", ", { "pluginId": "expressions", "scope": "common", @@ -26633,15 +27858,15 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_context\", ", + "<\"extended_bounds\", ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" }, - ">>, ", + ">, ", { "pluginId": "expressions", "scope": "common", @@ -26658,28 +27883,22 @@ "text": "Adapters" }, ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - }, + "SerializableState", ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/kibana_context.ts", - "lineNumber": 34 + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 20 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionKibanaFilter", + "id": "def-common.ExpressionFunctionField", "type": "Type", "tags": [], - "label": "ExpressionFunctionKibanaFilter", + "label": "ExpressionFunctionField", "description": [], "signature": [ { @@ -26689,7 +27908,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"kibanaFilter\", null, Arguments, ", + "<\"field\", null, Arguments, ", { "pluginId": "expressions", "scope": "common", @@ -26697,8 +27916,14 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_filter\", ", - "Filter", + "<\"kibana_field\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternField", + "text": "IndexPatternField" + }, ">, ", { "pluginId": "expressions", @@ -26720,7 +27945,7 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/kibana_filter.ts", + "path": "src/plugins/data/common/search/expressions/field.ts", "lineNumber": 19 }, "deprecated": false, @@ -26728,10 +27953,10 @@ }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionKibanaTimerange", + "id": "def-common.ExpressionFunctionGeoBoundingBox", "type": "Type", "tags": [], - "label": "ExpressionFunctionKibanaTimerange", + "label": "ExpressionFunctionGeoBoundingBox", "description": [], "signature": [ { @@ -26741,15 +27966,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"timerange\", null, ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - ", ", + "<\"geoBoundingBox\", null, GeoBoundingBoxArguments, ", { "pluginId": "expressions", "scope": "common", @@ -26757,13 +27974,13 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"timerange\", ", + "<\"geo_bounding_box\", ", { "pluginId": "data", "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoBoundingBox", + "text": "GeoBoundingBox" }, ">, ", { @@ -26786,18 +28003,18 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/timerange.ts", - "lineNumber": 15 + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 111 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionKql", + "id": "def-common.ExpressionFunctionGeoPoint", "type": "Type", "tags": [], - "label": "ExpressionFunctionKql", + "label": "ExpressionFunctionGeoPoint", "description": [], "signature": [ { @@ -26807,7 +28024,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"kql\", null, Arguments, ", + "<\"geoPoint\", null, GeoPointArguments, ", { "pluginId": "expressions", "scope": "common", @@ -26815,9 +28032,15 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_query\", ", - "Query", - ">, ", + "<\"geo_point\", { value: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }>, ", { "pluginId": "expressions", "scope": "common", @@ -26838,18 +28061,18 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/kql.ts", - "lineNumber": 17 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 25 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionLucene", + "id": "def-common.ExpressionFunctionIpRange", "type": "Type", "tags": [], - "label": "ExpressionFunctionLucene", + "label": "ExpressionFunctionIpRange", "description": [], "signature": [ { @@ -26859,7 +28082,15 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"lucene\", null, Arguments, ", + "<\"ipRange\", null, ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ", ", { "pluginId": "expressions", "scope": "common", @@ -26867,11 +28098,17 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_query\", ", - "Query", - ">, ", + "<\"ip_range\", ", { - "pluginId": "expressions", + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + }, + ">, ", + { + "pluginId": "expressions", "scope": "common", "docId": "kibExpressionsPluginApi", "section": "def-common.ExecutionContext", @@ -26890,18 +28127,18 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/lucene.ts", - "lineNumber": 17 + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 19 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionPhraseFilter", + "id": "def-common.ExpressionFunctionKibana", "type": "Type", "tags": [], - "label": "ExpressionFunctionPhraseFilter", + "label": "ExpressionFunctionKibana", "description": [], "signature": [ { @@ -26911,7 +28148,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"rangeFilter\", null, Arguments, ", + "<\"kibana\", Input, object, ", { "pluginId": "expressions", "scope": "common", @@ -26919,8 +28156,14 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_filter\", ", - "Filter", + "<\"kibana_context\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExecutionContextSearch", + "text": "ExecutionContextSearch" + }, ">, ", { "pluginId": "expressions", @@ -26938,22 +28181,28 @@ "text": "Adapters" }, ", ", - "SerializableState", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExecutionContextSearch", + "text": "ExecutionContextSearch" + }, ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", - "lineNumber": 21 + "path": "src/plugins/data/common/search/expressions/kibana.ts", + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionRange", + "id": "def-common.ExpressionFunctionKibanaContext", "type": "Type", "tags": [], - "label": "ExpressionFunctionRange", + "label": "ExpressionFunctionKibanaContext", "description": [], "signature": [ { @@ -26963,7 +28212,7 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"range\", null, Arguments, ", + "<\"kibana_context\", Input, Arguments, Promise<", { "pluginId": "expressions", "scope": "common", @@ -26971,7 +28220,63 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_range\", Arguments>, ", + "<\"kibana_context\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExecutionContextSearch", + "text": "ExecutionContextSearch" + }, + ">>, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExecutionContextSearch", + "text": "ExecutionContextSearch" + }, + ">>" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/kibana_context.ts", + "lineNumber": 34 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ExpressionFunctionKibanaFilter", + "type": "Type", + "tags": [], + "label": "ExpressionFunctionKibanaFilter", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"kibanaFilter\", null, Arguments, any, ", { "pluginId": "expressions", "scope": "common", @@ -26992,18 +28297,18 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/range.ts", - "lineNumber": 21 + "path": "src/plugins/data/common/search/expressions/kibana_filter.ts", + "lineNumber": 19 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionFunctionRangeFilter", + "id": "def-common.ExpressionFunctionKibanaTimerange", "type": "Type", "tags": [], - "label": "ExpressionFunctionRangeFilter", + "label": "ExpressionFunctionKibanaTimerange", "description": [], "signature": [ { @@ -27013,7 +28318,15 @@ "section": "def-common.ExpressionFunctionDefinition", "text": "ExpressionFunctionDefinition" }, - "<\"rangeFilter\", null, Arguments, ", + "<\"timerange\", null, ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + ", ", { "pluginId": "expressions", "scope": "common", @@ -27021,8 +28334,14 @@ "section": "def-common.ExpressionValueBoxed", "text": "ExpressionValueBoxed" }, - "<\"kibana_filter\", ", - "Filter", + "<\"timerange\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, ">, ", { "pluginId": "expressions", @@ -27044,244 +28363,349 @@ ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/range_filter.ts", - "lineNumber": 22 + "path": "src/plugins/data/common/search/expressions/timerange.ts", + "lineNumber": 15 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ExpressionValueSearchContext", + "id": "def-common.ExpressionFunctionKql", "type": "Type", "tags": [], - "label": "ExpressionValueSearchContext", + "label": "ExpressionFunctionKql", "description": [], "signature": [ - "{ type: \"kibana_context\"; } & ", { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ExecutionContextSearch", - "text": "ExecutionContextSearch" - } + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"kql\", null, Arguments, any, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" ], "source": { - "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", - "lineNumber": 20 + "path": "src/plugins/data/common/search/expressions/kql.ts", + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.FieldTypes", + "id": "def-common.ExpressionFunctionLucene", "type": "Type", "tags": [], - "label": "FieldTypes", + "label": "ExpressionFunctionLucene", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"lucene\", null, Arguments, any, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/lucene.ts", + "lineNumber": 17 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ExpressionFunctionNumericalRange", + "type": "Type", + "tags": [], + "label": "ExpressionFunctionNumericalRange", "description": [], "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"numericalRange\", null, ", { "pluginId": "data", "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" }, - " | \"*\" | ", + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"numerical_range\", ", { "pluginId": "data", "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" }, - "[]" + ">, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" ], "source": { - "path": "src/plugins/data/common/search/aggs/param_types/field.ts", - "lineNumber": 22 + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 21 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.GenericBucket", + "id": "def-common.ExpressionFunctionPhraseFilter", "type": "Type", "tags": [], - "label": "GenericBucket", + "label": "ExpressionFunctionPhraseFilter", "description": [], "signature": [ - "(", - "AggregationsCompositeBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsDateHistogramBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsFiltersBucketItemKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsIpRangeBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsRangeBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsRareTermsBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsSignificantTermsBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; }) | ({ [property: string]: ", - "AggregationsAggregate", - "; } & { [property: string]: ", - "AggregationsAggregate", - "; }) | (", - "AggregationsKeyedBucketKeys", - " & { [property: string]: ", - "AggregationsAggregate", - "; })" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"rangeFilter\", null, Arguments, any, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" ], "source": { - "path": "src/plugins/data/common/search/aggs/agg_configs.ts", - "lineNumber": 61 + "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", + "lineNumber": 21 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IAggConfig", + "id": "def-common.ExpressionFunctionQueryFilter", "type": "Type", - "tags": [ - "name", - "description" - ], - "label": "IAggConfig", + "tags": [], + "label": "ExpressionFunctionQueryFilter", "description": [], "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"queryFilter\", null, QueryFilterArguments, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" ], "source": { - "path": "src/plugins/data/common/search/aggs/agg_config.ts", - "lineNumber": 55 + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 27 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IAggType", + "id": "def-common.ExpressionFunctionRange", "type": "Type", "tags": [], - "label": "IAggType", + "label": "ExpressionFunctionRange", "description": [], "signature": [ { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggType", - "text": "AggType" + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" }, - "<", + "<\"range\", null, Arguments, ", { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" }, - ", ", + "<\"kibana_range\", Arguments>, ", { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggParamType", - "text": "AggParamType" + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" }, "<", { - "pluginId": "data", + "pluginId": "inspector", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" }, + ", ", + "SerializableState", ">>" ], "source": { - "path": "src/plugins/data/common/search/aggs/agg_type.ts", - "lineNumber": 62 + "path": "src/plugins/data/common/search/expressions/range.ts", + "lineNumber": 21 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IEsSearchResponse", + "id": "def-common.ExpressionFunctionRangeFilter", "type": "Type", "tags": [], - "label": "IEsSearchResponse", + "label": "ExpressionFunctionRangeFilter", "description": [], "signature": [ { - "pluginId": "data", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"rangeFilter\", null, Arguments, any, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" }, "<", - "SearchResponse", - ">" + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" ], "source": { - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "path": "src/plugins/data/common/search/expressions/range_filter.ts", "lineNumber": 22 }, "deprecated": false, @@ -27289,428 +28713,655 @@ }, { "parentPluginId": "data", - "id": "def-common.IFieldParamType", + "id": "def-common.ExpressionValueSearchContext", "type": "Type", "tags": [], - "label": "IFieldParamType", + "label": "ExpressionValueSearchContext", "description": [], "signature": [ + "{ type: \"kibana_context\"; } & ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.FieldParamType", - "text": "FieldParamType" + "section": "def-common.ExecutionContextSearch", + "text": "ExecutionContextSearch" } ], "source": { - "path": "src/plugins/data/common/search/aggs/param_types/field.ts", - "lineNumber": 24 + "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", + "lineNumber": 20 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IMetricAggType", + "id": "def-common.ExtendedBoundsOutput", "type": "Type", "tags": [], - "label": "IMetricAggType", + "label": "ExtendedBoundsOutput", "description": [], "signature": [ + "{ type: \"extended_bounds\"; } & ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.MetricAggType", - "text": "MetricAggType" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IMetricAggConfig", - "text": "IMetricAggConfig" - }, - ">" + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + } ], "source": { - "path": "src/plugins/data/common/search/aggs/metrics/metric_agg_type.ts", - "lineNumber": 36 + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 18 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.intervalOptions", - "type": "Array", + "id": "def-common.FieldTypes", + "type": "Type", "tags": [], - "label": "intervalOptions", + "label": "FieldTypes", "description": [], "signature": [ - "({ display: string; val: string; enabled(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IBucketAggConfig", - "text": "IBucketAggConfig" - }, - "): boolean; } | { display: string; val: string; })[]" + "KBN_FIELD_TYPES", + " | \"*\" | ", + "KBN_FIELD_TYPES", + "[]" ], "source": { - "path": "src/plugins/data/common/search/aggs/buckets/_interval_options.ts", - "lineNumber": 15 + "path": "src/plugins/data/common/search/aggs/param_types/field.ts", + "lineNumber": 22 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IPercentileAggConfig", + "id": "def-common.GenericBucket", "type": "Type", "tags": [], - "label": "IPercentileAggConfig", + "label": "GenericBucket", "description": [], "signature": [ - "IResponseAggConfig" + "(", + "AggregationsCompositeBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsDateHistogramBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsFiltersBucketItemKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsIpRangeBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsRangeBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsRareTermsBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsSignificantTermsBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; }) | ({ [property: string]: ", + "AggregationsAggregate", + "; } & { [property: string]: ", + "AggregationsAggregate", + "; }) | (", + "AggregationsKeyedBucketKeys", + " & { [property: string]: ", + "AggregationsAggregate", + "; })" ], "source": { - "path": "src/plugins/data/common/search/aggs/metrics/percentiles.ts", - "lineNumber": 24 + "path": "src/plugins/data/common/search/aggs/agg_configs.ts", + "lineNumber": 61 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IPercentileRanksAggConfig", + "id": "def-common.GeoBoundingBox", "type": "Type", "tags": [], - "label": "IPercentileRanksAggConfig", - "description": [], + "label": "GeoBoundingBox", + "description": [ + "GeoBoundingBox Accepted Formats:\n Lat Lon As Properties:\n \"top_left\" : {\n \"lat\" : 40.73, \"lon\" : -74.1\n },\n \"bottom_right\" : {\n \"lat\" : 40.01, \"lon\" : -71.12\n }\n\n Lat Lon As Array:\n {\n \"top_left\" : [-74.1, 40.73],\n \"bottom_right\" : [-71.12, 40.01]\n }\n\n Lat Lon As String:\n {\n \"top_left\" : \"40.73, -74.1\",\n \"bottom_right\" : \"40.01, -71.12\"\n }\n\n Bounding Box as Well-Known Text (WKT):\n {\n \"wkt\" : \"BBOX (-74.1, -71.12, 40.73, 40.01)\"\n }\n\n Geohash:\n {\n \"top_right\" : \"dr5r9ydj2y73\",\n \"bottom_left\" : \"drj7teegpus6\"\n }\n\n Vertices:\n {\n \"top\" : 40.73,\n \"left\" : -74.1,\n \"bottom\" : 40.01,\n \"right\" : -71.12\n }\n" + ], "signature": [ - "IResponseAggConfig" + "GeoBox | { top_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; } | WellKnownText" ], "source": { - "path": "src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts", - "lineNumber": 27 + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 80 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IpRangeKey", + "id": "def-common.GeoBoundingBoxOutput", "type": "Type", "tags": [], - "label": "IpRangeKey", + "label": "GeoBoundingBoxOutput", "description": [], "signature": [ + "({ type: \"geo_bounding_box\"; } & GeoBox) | ({ type: \"geo_bounding_box\"; } & { top_left: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.CidrMaskIpRangeAggKey", - "text": "CidrMaskIpRangeAggKey" + "section": "def-common.GeoPoint", + "text": "GeoPoint" }, - " | ", + "; bottom_right: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.RangeIpRangeAggKey", - "text": "RangeIpRangeAggKey" - } + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & { top_right: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; bottom_left: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }) | ({ type: \"geo_bounding_box\"; } & WellKnownText)" ], "source": { - "path": "src/plugins/data/common/search/aggs/buckets/lib/ip_range.ts", - "lineNumber": 20 + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 82 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchCancelGeneric", + "id": "def-common.GeoPoint", "type": "Type", "tags": [], - "label": "ISearchCancelGeneric", + "label": "GeoPoint", "description": [], "signature": [ - "(id: string, options?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchOptions", - "text": "ISearchOptions" - }, - " | undefined) => Promise" + "string | [number, number] | Point" ], "source": { - "path": "src/plugins/data/common/search/types.ts", - "lineNumber": 21 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 17 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchExtendGeneric", + "id": "def-common.GeoPointOutput", "type": "Type", "tags": [], - "label": "ISearchExtendGeneric", + "label": "GeoPointOutput", "description": [], "signature": [ - "(id: string, keepAlive: string, options?: ", + "{ type: \"geo_point\"; } & { value: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchOptions", - "text": "ISearchOptions" + "section": "def-common.GeoPoint", + "text": "GeoPoint" }, - " | undefined) => Promise" + "; }" ], "source": { - "path": "src/plugins/data/common/search/types.ts", - "lineNumber": 22 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 19 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchGeneric", + "id": "def-common.IAggConfig", "type": "Type", - "tags": [], - "label": "ISearchGeneric", + "tags": [ + "name", + "description" + ], + "label": "IAggConfig", "description": [], "signature": [ - " = ", + "section": "def-common.AggConfig", + "text": "AggConfig" + } + ], + "source": { + "path": "src/plugins/data/common/search/aggs/agg_config.ts", + "lineNumber": 55 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IAggType", + "type": "Type", + "tags": [], + "label": "IAggType", + "description": [], + "signature": [ { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" + "section": "def-common.AggType", + "text": "AggType" }, - ", SearchStrategyResponse extends ", + "<", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" + "section": "def-common.AggConfig", + "text": "AggConfig" }, - " = ", + ", ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" + "section": "def-common.AggParamType", + "text": "AggParamType" }, - ">(request: SearchStrategyRequest, options?: ", + "<", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchOptions", - "text": "ISearchOptions" + "section": "def-common.AggConfig", + "text": "AggConfig" }, - " | undefined) => ", - "Observable", - "" + ">>" ], "source": { - "path": "src/plugins/data/common/search/types.ts", - "lineNumber": 13 + "path": "src/plugins/data/common/search/aggs/agg_type.ts", + "lineNumber": 62 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchOptionsSerializable", + "id": "def-common.IEsSearchResponse", "type": "Type", "tags": [], - "label": "ISearchOptionsSerializable", - "description": [ - "\nSame as `ISearchOptions`, but contains only serializable fields, which can\nbe sent over the network." - ], + "label": "IEsSearchResponse", + "description": [], "signature": [ - "{ isStored?: boolean | undefined; isRestore?: boolean | undefined; sessionId?: string | undefined; executionContext?: ", - "KibanaExecutionContext", - " | undefined; strategy?: string | undefined; legacyHitsTotal?: boolean | undefined; }" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IKibanaSearchResponse", + "text": "IKibanaSearchResponse" + }, + "<", + "SearchResponse", + ">" ], "source": { - "path": "src/plugins/data/common/search/types.ts", - "lineNumber": 145 + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "lineNumber": 22 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchRequestParams", + "id": "def-common.IFieldParamType", "type": "Type", "tags": [], - "label": "ISearchRequestParams", + "label": "IFieldParamType", "description": [], "signature": [ - "{ trackTotalHits?: boolean | undefined; } & ", - "SearchRequest" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.FieldParamType", + "text": "FieldParamType" + } ], "source": { - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", - "lineNumber": 14 + "path": "src/plugins/data/common/search/aggs/param_types/field.ts", + "lineNumber": 24 }, "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.ISearchSource", + "id": "def-common.IMetricAggType", "type": "Type", "tags": [], - "label": "ISearchSource", - "description": [ - "\nsearch source interface" - ], + "label": "IMetricAggType", + "description": [], "signature": [ - "{ create: () => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" - }, - "; history: Record[]; setPreferredSearchStrategyId: (searchStrategyId: string) => void; setField: (field: K, value: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceFields", - "text": "SearchSourceFields" - }, - "[K]) => ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" - }, - "; removeField: (field: K) => ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.MetricAggType", + "text": "MetricAggType" }, - "; setFields: (newFields: ", + "<", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceFields", - "text": "SearchSourceFields" + "section": "def-common.IMetricAggConfig", + "text": "IMetricAggConfig" }, - ") => ", + ">" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/metrics/metric_agg_type.ts", + "lineNumber": 36 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.intervalOptions", + "type": "Array", + "tags": [], + "label": "intervalOptions", + "description": [], + "signature": [ + "({ display: string; val: string; enabled(agg: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.IBucketAggConfig", + "text": "IBucketAggConfig" }, - "; getId: () => string; getFields: () => ", + "): boolean; } | { display: string; val: string; })[]" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/buckets/_interval_options.ts", + "lineNumber": 15 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IPercentileAggConfig", + "type": "Type", + "tags": [], + "label": "IPercentileAggConfig", + "description": [], + "signature": [ + "IResponseAggConfig" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/metrics/percentiles.ts", + "lineNumber": 24 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IPercentileRanksAggConfig", + "type": "Type", + "tags": [], + "label": "IPercentileRanksAggConfig", + "description": [], + "signature": [ + "IResponseAggConfig" + ], + "source": { + "path": "src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts", + "lineNumber": 27 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IpRangeKey", + "type": "Type", + "tags": [], + "label": "IpRangeKey", + "description": [], + "signature": [ { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceFields", - "text": "SearchSourceFields" + "section": "def-common.CidrMaskIpRangeAggKey", + "text": "CidrMaskIpRangeAggKey" }, - "; getField: (field: K, recurse?: boolean) => ", + " | ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceFields", - "text": "SearchSourceFields" - }, - "[K]; getOwnField: (field: K) => ", + "section": "def-common.RangeIpRangeAggKey", + "text": "RangeIpRangeAggKey" + } + ], + "source": { + "path": "src/plugins/data/common/search/aggs/buckets/lib/ip_range.ts", + "lineNumber": 20 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IpRangeOutput", + "type": "Type", + "tags": [], + "label": "IpRangeOutput", + "description": [], + "signature": [ + "{ type: \"ip_range\"; } & ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceFields", - "text": "SearchSourceFields" - }, - "[K]; createCopy: () => ", + "section": "def-common.IpRange", + "text": "IpRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 17 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchCancelGeneric", + "type": "Type", + "tags": [], + "label": "ISearchCancelGeneric", + "description": [], + "signature": [ + "(id: string, options?: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.ISearchOptions", + "text": "ISearchOptions" }, - "; createChild: (options?: {}) => ", + " | undefined) => Promise" + ], + "source": { + "path": "src/plugins/data/common/search/types.ts", + "lineNumber": 21 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchExtendGeneric", + "type": "Type", + "tags": [], + "label": "ISearchExtendGeneric", + "description": [], + "signature": [ + "(id: string, keepAlive: string, options?: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.ISearchOptions", + "text": "ISearchOptions" }, - "; setParent: (parent?: Pick<", + " | undefined) => Promise" + ], + "source": { + "path": "src/plugins/data/common/search/types.ts", + "lineNumber": 22 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchGeneric", + "type": "Type", + "tags": [], + "label": "ISearchGeneric", + "description": [], + "signature": [ + " | undefined, options?: ", + " = ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSourceOptions", - "text": "SearchSourceOptions" + "section": "def-common.IEsSearchRequest", + "text": "IEsSearchRequest" }, - ") => ", + ", SearchStrategyResponse extends ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.IKibanaSearchResponse", + "text": "IKibanaSearchResponse" }, - "; getParent: () => ", + " = ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSource", - "text": "SearchSource" + "section": "def-common.IEsSearchResponse", + "text": "IEsSearchResponse" }, - " | undefined; fetch$: (options?: ", + ">(request: SearchStrategyRequest, options?: ", { "pluginId": "data", "scope": "common", @@ -27718,15 +29369,203 @@ "section": "def-common.ISearchOptions", "text": "ISearchOptions" }, - ") => ", + " | undefined) => ", "Observable", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" + "" + ], + "source": { + "path": "src/plugins/data/common/search/types.ts", + "lineNumber": 13 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchOptionsSerializable", + "type": "Type", + "tags": [], + "label": "ISearchOptionsSerializable", + "description": [ + "\nSame as `ISearchOptions`, but contains only serializable fields, which can\nbe sent over the network." + ], + "signature": [ + "{ isStored?: boolean | undefined; isRestore?: boolean | undefined; sessionId?: string | undefined; executionContext?: ", + "KibanaExecutionContext", + " | undefined; strategy?: string | undefined; legacyHitsTotal?: boolean | undefined; }" + ], + "source": { + "path": "src/plugins/data/common/search/types.ts", + "lineNumber": 145 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchRequestParams", + "type": "Type", + "tags": [], + "label": "ISearchRequestParams", + "description": [], + "signature": [ + "{ trackTotalHits?: boolean | undefined; } & ", + "SearchRequest" + ], + "source": { + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "lineNumber": 14 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ISearchSource", + "type": "Type", + "tags": [], + "label": "ISearchSource", + "description": [ + "\nsearch source interface" + ], + "signature": [ + "{ create: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; history: Record[]; setPreferredSearchStrategyId: (searchStrategyId: string) => void; setField: (field: K, value: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceFields", + "text": "SearchSourceFields" + }, + "[K]) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; removeField: (field: K) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; setFields: (newFields: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceFields", + "text": "SearchSourceFields" + }, + ") => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; getId: () => string; getFields: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceFields", + "text": "SearchSourceFields" + }, + "; getField: (field: K, recurse?: boolean) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceFields", + "text": "SearchSourceFields" + }, + "[K]; getOwnField: (field: K) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceFields", + "text": "SearchSourceFields" + }, + "[K]; createCopy: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; createChild: (options?: {}) => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; setParent: (parent?: Pick<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + ", \"create\" | \"history\" | \"setPreferredSearchStrategyId\" | \"setField\" | \"removeField\" | \"setFields\" | \"getId\" | \"getFields\" | \"getField\" | \"getOwnField\" | \"createCopy\" | \"createChild\" | \"setParent\" | \"getParent\" | \"fetch$\" | \"fetch\" | \"onRequestStart\" | \"getSearchRequestBody\" | \"destroy\" | \"getSerializedFields\" | \"serialize\"> | undefined, options?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSourceOptions", + "text": "SearchSourceOptions" + }, + ") => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + "; getParent: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.SearchSource", + "text": "SearchSource" + }, + " | undefined; fetch$: (options?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ISearchOptions", + "text": "ISearchOptions" + }, + ") => ", + "Observable", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IKibanaSearchResponse", + "text": "IKibanaSearchResponse" }, "<", "SearchResponse", @@ -27770,7 +29609,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 20 + "lineNumber": 19 }, "deprecated": false, "initialIsOpen": false @@ -27848,8 +29687,7 @@ "label": "KibanaFilter", "description": [], "signature": [ - "{ type: \"kibana_filter\"; } & ", - "Filter" + "any" ], "source": { "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", @@ -27866,8 +29704,7 @@ "label": "KibanaQueryOutput", "description": [], "signature": [ - "{ type: \"kibana_query\"; } & ", - "Query" + "any" ], "source": { "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", @@ -27917,6 +29754,30 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.NumericalRangeOutput", + "type": "Type", + "tags": [], + "label": "NumericalRangeOutput", + "description": [], + "signature": [ + "{ type: \"numerical_range\"; } & ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 19 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.parentPipelineType", @@ -27950,6 +29811,30 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.QueryFilterOutput", + "type": "Type", + "tags": [], + "label": "QueryFilterOutput", + "description": [], + "signature": [ + "{ type: \"kibana_query_filter\"; } & ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 20 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.SEARCH_SESSION_TYPE", @@ -27996,7 +29881,7 @@ ], "source": { "path": "src/plugins/data/common/search/search_source/types.ts", - "lineNumber": 65 + "lineNumber": 64 }, "deprecated": false, "initialIsOpen": false @@ -28108,150 +29993,2007 @@ }, { "parentPluginId": "data", - "id": "def-common.esRawResponse", + "id": "def-common.cidrFunction", "type": "Object", "tags": [], - "label": "esRawResponse", + "label": "cidrFunction", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "lineNumber": 63 + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 20 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.esRawResponse.name", + "id": "def-common.cidrFunction.name", "type": "string", "tags": [], "label": "name", "description": [], "signature": [ - "\"es_raw_response\"" + "\"cidr\"" ], "source": { - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "lineNumber": 64 + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 21 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.esRawResponse.to", - "type": "Object", + "id": "def-common.cidrFunction.type", + "type": "string", "tags": [], - "label": "to", + "label": "type", "description": [], + "signature": [ + "\"cidr\"" + ], "source": { - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "lineNumber": 65 + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 22 }, - "deprecated": false, - "children": [ + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 23 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 24 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 27 + }, + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.esRawResponse.to.datatable", - "type": "Function", + "id": "def-common.cidrFunction.args.mask", + "type": "Object", "tags": [], - "label": "datatable", + "label": "mask", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 28 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.args.mask.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.args.mask.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.args.mask.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 31 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, { mask }: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.Cidr", + "text": "Cidr" + }, + ") => { mask: string; type: \"cidr\"; }" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 37 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 37 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.cidrFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "{ mask }", "description": [], "signature": [ - "(context: ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.EsRawResponse", - "text": "EsRawResponse" - }, - ") => { type: string; meta: { type: string; source: string; }; columns: { id: string; name: string; meta: { type: \"string\" | \"number\" | \"bigint\" | \"boolean\" | \"symbol\" | \"undefined\" | \"object\" | \"function\"; field: string; params: {}; }; }[]; rows: any[]; }" + "section": "def-common.Cidr", + "text": "Cidr" + } ], "source": { - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "lineNumber": 66 + "path": "src/plugins/data/common/search/expressions/cidr.ts", + "lineNumber": 37 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction", + "type": "Object", + "tags": [], + "label": "dateRangeFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 26 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"dateRange\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 27 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"date_range\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 28 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 33 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args.from", + "type": "Object", + "tags": [], + "label": "from", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 34 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.esRawResponse.to.datatable.$1", - "type": "Object", + "id": "def-common.dateRangeFunction.args.from.types", + "type": "Array", "tags": [], - "label": "context", + "label": "types", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.EsRawResponse", - "text": "EsRawResponse" - }, - "" + "(\"number\" | \"string\")[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", - "lineNumber": 66 + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 35 }, - "deprecated": false, - "isRequired": true + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args.from.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 36 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args.to", + "type": "Object", + "tags": [], + "label": "to", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 40 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args.to.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "(\"number\" | \"string\")[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 41 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.args.to.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 42 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, { from, to }: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + }, + ") => { from: React.ReactText; to: React.ReactText; type: \"date_range\"; }" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 48 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 48 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.dateRangeFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "{ from, to }", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.DateRange", + "text": "DateRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/date_range.ts", + "lineNumber": 48 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.esRawResponse", + "type": "Object", + "tags": [], + "label": "esRawResponse", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", + "lineNumber": 63 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.esRawResponse.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"es_raw_response\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", + "lineNumber": 64 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.esRawResponse.to", + "type": "Object", + "tags": [], + "label": "to", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", + "lineNumber": 65 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.esRawResponse.to.datatable", + "type": "Function", + "tags": [], + "label": "datatable", + "description": [], + "signature": [ + "(context: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsRawResponse", + "text": "EsRawResponse" + }, + ") => { type: string; meta: { type: string; source: string; }; columns: { id: string; name: string; meta: { type: \"string\" | \"number\" | \"bigint\" | \"boolean\" | \"symbol\" | \"undefined\" | \"object\" | \"function\"; field: string; params: {}; }; }[]; rows: any[]; }" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", + "lineNumber": 66 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.esRawResponse.to.datatable.$1", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsRawResponse", + "text": "EsRawResponse" + }, + "" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/es_raw_response.ts", + "lineNumber": 66 + }, + "deprecated": false, + "isRequired": true } ], "returnComment": [] } - ] + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction", + "type": "Object", + "tags": [], + "label": "existsFilterFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 27 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"existsFilter\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 28 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 31 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 34 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.field", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 35 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.field.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"kibana_field\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 36 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.field.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 37 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.field.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 38 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.negate", + "type": "Object", + "tags": [], + "label": "negate", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 42 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.negate.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"boolean\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.negate.default", + "type": "boolean", + "tags": [], + "label": "default", + "description": [], + "signature": [ + "false" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 44 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.args.negate.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 45 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, args: Arguments) => any" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 51 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 51 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.existsFilterFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "Arguments" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/exists_filter.ts", + "lineNumber": 51 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction", + "type": "Object", + "tags": [], + "label": "extendedBoundsFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 27 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"extendedBounds\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 28 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"extended_bounds\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 31 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 34 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.min", + "type": "Object", + "tags": [], + "label": "min", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 35 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.min.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 36 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.min.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 37 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.max", + "type": "Object", + "tags": [], + "label": "max", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 41 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.max.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 42 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.args.max.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 43 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, { min, max }: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + }, + ") => { type: \"extended_bounds\"; }" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 49 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 49 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.extendedBoundsFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "{ min, max }", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ExtendedBounds", + "text": "ExtendedBounds" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/extended_bounds.ts", + "lineNumber": 49 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction", + "type": "Object", + "tags": [], + "label": "fieldFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 26 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"field\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 27 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"kibana_field\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 28 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 33 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.name", + "type": "Object", + "tags": [], + "label": "name", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 34 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.name.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 35 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.name.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 36 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.name.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 37 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.type", + "type": "Object", + "tags": [], + "label": "type", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 41 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.type.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 42 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.type.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.type.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 44 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.script", + "type": "Object", + "tags": [], + "label": "script", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 48 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.script.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 49 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.args.script.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 50 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, args: Arguments) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_field\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataIndexPatternsPluginApi", + "section": "def-common.IndexPatternField", + "text": "IndexPatternField" + }, + ">" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 56 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 56 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.fieldFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "Arguments" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/field.ts", + "lineNumber": 56 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction", + "type": "Object", + "tags": [], + "label": "geoBoundingBoxFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 118 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"geoBoundingBox\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 119 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"geo_bounding_box\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 120 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 121 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 122 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 125 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.top", + "type": "Object", + "tags": [], + "label": "top", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 126 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.top.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 127 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.top.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 128 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.left", + "type": "Object", + "tags": [], + "label": "left", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 132 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.left.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 133 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.left.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 134 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottom", + "type": "Object", + "tags": [], + "label": "bottom", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 138 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottom.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 139 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottom.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 140 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.right", + "type": "Object", + "tags": [], + "label": "right", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 144 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.right.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 145 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.right.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 146 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.wkt", + "type": "Object", + "tags": [], + "label": "wkt", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 150 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.wkt.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 151 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.wkt.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 152 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topLeft", + "type": "Object", + "tags": [], + "label": "topLeft", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 156 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topLeft.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"geo_point\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 157 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topLeft.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 158 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomRight", + "type": "Object", + "tags": [], + "label": "bottomRight", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 162 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomRight.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"geo_point\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 163 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomRight.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 164 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topRight", + "type": "Object", + "tags": [], + "label": "topRight", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 168 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topRight.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"geo_point\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 169 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.topRight.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 170 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomLeft", + "type": "Object", + "tags": [], + "label": "bottomLeft", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 174 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomLeft.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"geo_point\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 175 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.args.bottomLeft.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 176 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, args: GeoBoundingBoxArguments) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"geo_bounding_box\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoBoundingBox", + "text": "GeoBoundingBox" + }, + ">" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 182 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 182 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.geoBoundingBoxFunction.fn.$2", + "type": "CompoundType", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "GeoBoundingBoxArguments" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_bounding_box.ts", + "lineNumber": 182 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction", + "id": "def-common.geoPointFunction", "type": "Object", "tags": [], - "label": "existsFilterFunction", + "label": "geoPointFunction", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 27 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 32 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.name", + "id": "def-common.geoPointFunction.name", "type": "string", "tags": [], "label": "name", "description": [], "signature": [ - "\"existsFilter\"" + "\"geoPoint\"" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 28 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 33 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.type", + "id": "def-common.geoPointFunction.type", "type": "string", "tags": [], "label": "type", "description": [], "signature": [ - "\"kibana_filter\"" + "\"geo_point\"" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 29 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 34 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.inputTypes", + "id": "def-common.geoPointFunction.inputTypes", "type": "Array", "tags": [], "label": "inputTypes", @@ -28260,92 +32002,120 @@ "\"null\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 30 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 35 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.help", + "id": "def-common.geoPointFunction.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 31 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 36 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args", + "id": "def-common.geoPointFunction.args", "type": "Object", "tags": [], "label": "args", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 34 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 39 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.field", + "id": "def-common.geoPointFunction.args.lat", "type": "Object", "tags": [], - "label": "field", + "label": "lat", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 35 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 40 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.field.types", + "id": "def-common.geoPointFunction.args.lat.types", "type": "Array", "tags": [], "label": "types", "description": [], "signature": [ - "\"kibana_field\"[]" + "\"number\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 36 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 41 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.field.required", - "type": "boolean", + "id": "def-common.geoPointFunction.args.lat.help", + "type": "string", "tags": [], - "label": "required", + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 42 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.geoPointFunction.args.lon", + "type": "Object", + "tags": [], + "label": "lon", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 46 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.geoPointFunction.args.lon.types", + "type": "Array", + "tags": [], + "label": "types", "description": [], "signature": [ - "true" + "\"number\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 37 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 47 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.field.help", + "id": "def-common.geoPointFunction.args.lon.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 38 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 48 }, "deprecated": false } @@ -28353,59 +32123,75 @@ }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.negate", + "id": "def-common.geoPointFunction.args.point", "type": "Object", "tags": [], - "label": "negate", + "label": "point", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 42 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 52 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.negate.types", + "id": "def-common.geoPointFunction.args.point.aliases", + "type": "Array", + "tags": [], + "label": "aliases", + "description": [], + "signature": [ + "string[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 53 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.geoPointFunction.args.point.types", "type": "Array", "tags": [], "label": "types", "description": [], "signature": [ - "\"boolean\"[]" + "(\"number\" | \"string\")[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 43 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 54 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.negate.default", + "id": "def-common.geoPointFunction.args.point.multi", "type": "boolean", "tags": [], - "label": "default", + "label": "multi", "description": [], "signature": [ - "false" + "true" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 44 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 55 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.args.negate.help", + "id": "def-common.geoPointFunction.args.point.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 45 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 56 }, "deprecated": false } @@ -28415,27 +32201,39 @@ }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.fn", + "id": "def-common.geoPointFunction.fn", "type": "Function", "tags": [], "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => { $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "(input: null, { lat, lon, point }: GeoPointArguments) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"geo_point\", { value: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.GeoPoint", + "text": "GeoPoint" + }, + "; }>" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 51 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 63 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.fn.$1", + "id": "def-common.geoPointFunction.fn.$1", "type": "Uncategorized", "tags": [], "label": "input", @@ -28444,25 +32242,25 @@ "null" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 51 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 63 }, "deprecated": false, "isRequired": true }, { "parentPluginId": "data", - "id": "def-common.existsFilterFunction.fn.$2", + "id": "def-common.geoPointFunction.fn.$2", "type": "Object", "tags": [], - "label": "args", + "label": "{ lat, lon, point }", "description": [], "signature": [ - "Arguments" + "GeoPointArguments" ], "source": { - "path": "src/plugins/data/common/search/expressions/exists_filter.ts", - "lineNumber": 51 + "path": "src/plugins/data/common/search/expressions/geo_point.ts", + "lineNumber": 63 }, "deprecated": false, "isRequired": true @@ -28475,52 +32273,52 @@ }, { "parentPluginId": "data", - "id": "def-common.fieldFunction", + "id": "def-common.ipRangeFunction", "type": "Object", "tags": [], - "label": "fieldFunction", + "label": "ipRangeFunction", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 26 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.fieldFunction.name", + "id": "def-common.ipRangeFunction.name", "type": "string", "tags": [], "label": "name", "description": [], "signature": [ - "\"field\"" + "\"ipRange\"" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 27 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.type", + "id": "def-common.ipRangeFunction.type", "type": "string", "tags": [], "label": "type", "description": [], "signature": [ - "\"kibana_field\"" + "\"ip_range\"" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 28 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.inputTypes", + "id": "def-common.ipRangeFunction.inputTypes", "type": "Array", "tags": [], "label": "inputTypes", @@ -28529,53 +32327,53 @@ "\"null\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 29 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.help", + "id": "def-common.ipRangeFunction.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 30 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args", + "id": "def-common.ipRangeFunction.args", "type": "Object", "tags": [], "label": "args", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 33 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.name", + "id": "def-common.ipRangeFunction.args.from", "type": "Object", "tags": [], - "label": "name", + "label": "from", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 34 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.name.types", + "id": "def-common.ipRangeFunction.args.from.types", "type": "Array", "tags": [], "label": "types", @@ -28584,14 +32382,14 @@ "\"string\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 35 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.name.required", + "id": "def-common.ipRangeFunction.args.from.required", "type": "boolean", "tags": [], "label": "required", @@ -28600,20 +32398,20 @@ "true" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 36 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.name.help", + "id": "def-common.ipRangeFunction.args.from.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 37 }, "deprecated": false @@ -28622,20 +32420,20 @@ }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.type", + "id": "def-common.ipRangeFunction.args.to", "type": "Object", "tags": [], - "label": "type", + "label": "to", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 41 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.type.types", + "id": "def-common.ipRangeFunction.args.to.types", "type": "Array", "tags": [], "label": "types", @@ -28644,14 +32442,14 @@ "\"string\"[]" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 42 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.type.required", + "id": "def-common.ipRangeFunction.args.to.required", "type": "boolean", "tags": [], "label": "required", @@ -28660,107 +32458,55 @@ "true" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 43 }, "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.args.type.help", + "id": "def-common.ipRangeFunction.args.to.help", "type": "string", "tags": [], "label": "help", "description": [], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", + "path": "src/plugins/data/common/search/expressions/ip_range.ts", "lineNumber": 44 }, "deprecated": false } ] - }, - { - "parentPluginId": "data", - "id": "def-common.fieldFunction.args.script", - "type": "Object", - "tags": [], - "label": "script", - "description": [], - "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 48 - }, - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.fieldFunction.args.script.types", - "type": "Array", - "tags": [], - "label": "types", - "description": [], - "signature": [ - "\"string\"[]" - ], - "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 49 - }, - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.fieldFunction.args.script.help", - "type": "string", - "tags": [], - "label": "help", - "description": [], - "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 50 - }, - "deprecated": false - } - ] } ] }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.fn", + "id": "def-common.ipRangeFunction.fn", "type": "Function", "tags": [], "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionValueBoxed", - "text": "ExpressionValueBoxed" - }, - "<\"kibana_field\", ", + "(input: null, { from, to }: ", { "pluginId": "data", "scope": "common", - "docId": "kibDataIndexPatternsPluginApi", - "section": "def-common.IndexPatternField", - "text": "IndexPatternField" + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" }, - ">" + ") => { from: string; to: string; type: \"ip_range\"; }" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 56 + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 50 }, "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.fieldFunction.fn.$1", + "id": "def-common.ipRangeFunction.fn.$1", "type": "Uncategorized", "tags": [], "label": "input", @@ -28769,25 +32515,31 @@ "null" ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 56 + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 50 }, "deprecated": false, "isRequired": true }, { "parentPluginId": "data", - "id": "def-common.fieldFunction.fn.$2", + "id": "def-common.ipRangeFunction.fn.$2", "type": "Object", "tags": [], - "label": "args", + "label": "{ from, to }", "description": [], "signature": [ - "Arguments" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpRange", + "text": "IpRange" + } ], "source": { - "path": "src/plugins/data/common/search/expressions/field.ts", - "lineNumber": 56 + "path": "src/plugins/data/common/search/expressions/ip_range.ts", + "lineNumber": 50 }, "deprecated": false, "isRequired": true @@ -29153,9 +32905,6 @@ "tags": [], "label": "type", "description": [], - "signature": [ - "\"kibana_filter\"" - ], "source": { "path": "src/plugins/data/common/search/expressions/kibana_filter.ts", "lineNumber": 28 @@ -29833,9 +33582,6 @@ "tags": [], "label": "type", "description": [], - "signature": [ - "\"kibana_query\"" - ], "source": { "path": "src/plugins/data/common/search/expressions/kql.ts", "lineNumber": 26 @@ -29970,7 +33716,7 @@ "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => { type: \"kibana_query\"; language: string; query: string; }" + "(input: null, args: Arguments) => { type: string; language: string; query: string; }" ], "source": { "path": "src/plugins/data/common/search/expressions/kql.ts", @@ -30054,9 +33800,6 @@ "tags": [], "label": "type", "description": [], - "signature": [ - "\"kibana_query\"" - ], "source": { "path": "src/plugins/data/common/search/expressions/lucene.ts", "lineNumber": 26 @@ -30191,7 +33934,7 @@ "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => { type: \"kibana_query\"; language: string; query: any; }" + "(input: null, args: Arguments) => { type: string; language: string; query: any; }" ], "source": { "path": "src/plugins/data/common/search/expressions/lucene.ts", @@ -30248,21 +33991,9 @@ "description": [], "signature": [ "{ scriptable?: boolean | undefined; filterFieldTypes?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", " | \"*\" | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.KBN_FIELD_TYPES", - "text": "KBN_FIELD_TYPES" - }, + "KBN_FIELD_TYPES", "[] | undefined; makeAgg?: ((agg: ", { "pluginId": "data", @@ -30321,7 +34052,15 @@ "section": "def-common.ExpressionAstExpression", "text": "ExpressionAstExpression" }, - " | undefined) | undefined; options?: any[] | undefined; valueType?: any; onChange?: ((agg: ", + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | undefined) | undefined; options?: any[] | undefined; valueType?: any; onChange?: ((agg: ", { "pluginId": "data", "scope": "common", @@ -30363,11 +34102,302 @@ }, " | undefined) => void) | undefined; }" ], - "source": { - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "lineNumber": 25 - }, - "deprecated": false, + "source": { + "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", + "lineNumber": 25 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction", + "type": "Object", + "tags": [], + "label": "numericalRangeFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 28 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"numericalRange\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 29 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"numerical_range\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 30 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 31 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 32 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 35 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.from", + "type": "Object", + "tags": [], + "label": "from", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 36 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.from.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 37 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.from.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 38 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.to", + "type": "Object", + "tags": [], + "label": "to", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 42 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.to.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"number\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.to.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 44 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.label", + "type": "Object", + "tags": [], + "label": "label", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 48 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.label.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 49 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.args.label.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 50 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(input: null, { from, to, label }: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + }, + ") => { type: \"numerical_range\"; }" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 56 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 56 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.numericalRangeFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "{ from, to, label }", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.NumericalRange", + "text": "NumericalRange" + } + ], + "source": { + "path": "src/plugins/data/common/search/expressions/numerical_range.ts", + "lineNumber": 56 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], "initialIsOpen": false }, { @@ -30519,9 +34549,6 @@ "tags": [], "label": "type", "description": [], - "signature": [ - "\"kibana_filter\"" - ], "source": { "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", "lineNumber": 30 @@ -30776,11 +34803,7 @@ "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => { $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "(input: null, args: Arguments) => any" ], "source": { "path": "src/plugins/data/common/search/expressions/phrase_filter.ts", @@ -30828,6 +34851,287 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction", + "type": "Object", + "tags": [], + "label": "queryFilterFunction", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 34 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"queryFilter\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 35 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"kibana_query_filter\"" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 36 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.inputTypes", + "type": "Array", + "tags": [], + "label": "inputTypes", + "description": [], + "signature": [ + "\"null\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 37 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 38 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 41 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.input", + "type": "Object", + "tags": [], + "label": "input", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 42 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.input.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"kibana_query\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.input.aliases", + "type": "Array", + "tags": [], + "label": "aliases", + "description": [], + "signature": [ + "string[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 44 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.input.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 45 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.input.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 46 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.label", + "type": "Object", + "tags": [], + "label": "label", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 50 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.label.types", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "\"string\"[]" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 51 + }, + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.args.label.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 52 + }, + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.fn", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "(_: null, { input, label }: QueryFilterArguments) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"kibana_query_filter\", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.QueryFilter", + "text": "QueryFilter" + }, + ">" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 58 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.fn.$1", + "type": "Uncategorized", + "tags": [], + "label": "_", + "description": [], + "signature": [ + "null" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 58 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.queryFilterFunction.fn.$2", + "type": "Object", + "tags": [], + "label": "{ input, label }", + "description": [], + "signature": [ + "QueryFilterArguments" + ], + "source": { + "path": "src/plugins/data/common/search/expressions/query_filter.ts", + "lineNumber": 58 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.rangeFilterFunction", @@ -30864,9 +35168,6 @@ "tags": [], "label": "type", "description": [], - "signature": [ - "\"kibana_filter\"" - ], "source": { "path": "src/plugins/data/common/search/expressions/range_filter.ts", "lineNumber": 31 @@ -31105,11 +35406,7 @@ "label": "fn", "description": [], "signature": [ - "(input: null, args: Arguments) => { $state?: ", - "FilterState", - " | undefined; meta: ", - "FilterMeta", - "; query?: any; type: \"kibana_filter\"; }" + "(input: null, args: Arguments) => any" ], "source": { "path": "src/plugins/data/common/search/expressions/range_filter.ts", diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 7b655c21c096e..7828294938057 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client diff --git a/api_docs/data_ui.json b/api_docs/data_ui.json index e2dfa821e7178..c088e81c3f2f8 100644 --- a/api_docs/data_ui.json +++ b/api_docs/data_ui.json @@ -3,6 +3,84 @@ "client": { "classes": [], "functions": [ + { + "parentPluginId": "data", + "id": "def-public.FilterItem", + "type": "Function", + "tags": [], + "label": "FilterItem", + "description": [], + "signature": [ + "(props: ", + "FilterItemProps", + ") => JSX.Element" + ], + "source": { + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 24 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.FilterItem.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "FilterItemProps" + ], + "source": { + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 24 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.FilterLabel", + "type": "Function", + "tags": [], + "label": "FilterLabel", + "description": [], + "signature": [ + "(props: ", + "FilterLabelProps", + ") => JSX.Element" + ], + "source": { + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 15 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.FilterLabel.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "FilterLabelProps" + ], + "source": { + "path": "src/plugins/data/public/ui/filter_bar/index.tsx", + "lineNumber": 15 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.QueryStringInput", @@ -96,12 +174,12 @@ { "parentPluginId": "data", "id": "def-public.QueryStringInputProps.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [], "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" + "any" ], "source": { "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", @@ -262,9 +340,7 @@ "label": "onChange", "description": [], "signature": [ - "((query: ", - "Query", - ") => void) | undefined" + "((query: any) => void) | undefined" ], "source": { "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", @@ -296,9 +372,7 @@ "label": "onSubmit", "description": [], "signature": [ - "((query: ", - "Query", - ") => void) | undefined" + "((query: any) => void) | undefined" ], "source": { "path": "src/plugins/data/public/ui/query_string_input/query_string_input.tsx", diff --git a/api_docs/data_ui.mdx b/api_docs/data_ui.mdx index 8a3386132f150..077f492157e67 100644 --- a/api_docs/data_ui.mdx +++ b/api_docs/data_ui.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3716 | 98 | 3162 | 64 | +| 3870 | 151 | 3323 | 63 | ## Client diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 7fd02d4c3a94b..b5af0464730f4 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -11,44 +11,48 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| +| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | +| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | +| | indexPatternFieldEditor, savedObjectsManagement | 8.0 | | | indexManagement | 7.16 | | | indexManagement | 7.16 | | | indexManagement, globalSearch | 7.16 | | | crossClusterReplication, indexLifecycleManagement | 7.16 | +| | savedObjects, discover, savedObjectsManagement, lens, observability, timelines, infra, ml, apm, securitySolution, maps, stackAlerts, transform | - | +| | savedObjects, discover, savedObjectsManagement, lens, observability, timelines, infra, ml, apm, securitySolution, maps, stackAlerts, transform | - | +| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | +| | discover, visualizations, dashboard, lens, observability, maps, canvas, dashboardEnhanced, discoverEnhanced, securitySolution | - | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | +| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | +| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | +| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | +| | embeddable, discover, presentationUtil, dashboard, graph | - | +| | visualizations, discover, dashboard, savedObjectsManagement | - | +| | savedObjectsTaggingOss, visualizations, discover, dashboard, savedObjectsManagement | - | +| | fleet, lens, timelines, infra, dataVisualizer, ml, apm, securitySolution, stackAlerts, transform, uptime | - | +| | lens, timelines, dataVisualizer, ml, infra, securitySolution, stackAlerts, transform | - | +| | lens | - | +| | observability | - | +| | observability | - | +| | timelines | - | +| | timelines | - | +| | timelines | - | | | securitySolution, alerting, fleet, cases, dataEnhanced | - | | | securitySolution | - | | | securitySolution, visTypeTimeseries | - | -| | fleet, lens, timelines, infra, dataVisualizer, ml, apm, securitySolution, stackAlerts, transform, uptime | - | -| | lens, timelines, dataVisualizer, ml, infra, securitySolution, stackAlerts, transform | - | -| | savedObjects, discover, visualizations, savedObjectsManagement, lens, observability, timelines, infra, ml, apm, securitySolution, uptime, maps, stackAlerts, transform | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | | | securitySolution | - | | | securitySolution, alerting, fleet, cases, dataEnhanced | - | | | securitySolution, visTypeTimeseries | - | -| | savedObjects, discover, visualizations, savedObjectsManagement, lens, observability, timelines, infra, ml, apm, securitySolution, uptime, maps, stackAlerts, transform | - | | | securitySolution, visTypeTimeseries | - | | | securitySolution, alerting, fleet, cases, dataEnhanced | - | -| | canvas, discover, visualizations, dashboard, lens, observability, timelines, maps, infra, dashboardEnhanced, discoverEnhanced, securitySolution, urlDrilldown, lists, ml, visTypeTimeseries | - | | | securitySolution | - | -| | actions, alerting, cases, dataEnhanced | - | -| | encryptedSavedObjects, actions, alerting | - | -| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | -| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | -| | discover, fleet, maps, ml, infra, stackAlerts, lens | - | | | fleet | - | -| | discoverEnhanced | - | -| | discoverEnhanced | - | -| | observability | - | -| | observability | - | -| | timelines | - | -| | timelines | - | -| | timelines | - | +| | canvas | - | | | dashboardEnhanced | - | | | dashboardEnhanced | - | -| | lens | - | -| | embeddable, discover, presentationUtil, dashboard, graph | - | -| | visualizations, discover, dashboard, savedObjectsManagement | - | -| | savedObjectsTaggingOss, visualizations, discover, dashboard, savedObjectsManagement | - | -| | canvas | - | +| | discoverEnhanced | - | +| | discoverEnhanced | - | +| | actions, alerting, cases, dataEnhanced | - | +| | encryptedSavedObjects, actions, alerting | - | | | security | - | \ No newline at end of file diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index c9c957387ee93..82ffc78870c78 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -22,10 +22,10 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [alerting_authorization_kuery.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L11), [alerting_authorization_kuery.ts#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L39), [alerting_authorization_kuery.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L41), [alerting_authorization.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L22), [alerting_authorization.ts#L278](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L278), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | +| | [alerting_authorization.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L23), [alerting_authorization.ts#L281](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L281), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | | | [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L512](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L512), [rules_client.ts#L585](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L585) | - | -| | [alerting_authorization_kuery.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L11), [alerting_authorization_kuery.ts#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L39), [alerting_authorization_kuery.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L41), [alerting_authorization.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L22), [alerting_authorization.ts#L278](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L278), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | -| | [alerting_authorization_kuery.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L11), [alerting_authorization_kuery.ts#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L39), [alerting_authorization_kuery.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization_kuery.ts#L41), [alerting_authorization.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L22), [alerting_authorization.ts#L278](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L278), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | +| | [alerting_authorization.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L23), [alerting_authorization.ts#L281](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L281), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | +| | [alerting_authorization.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L23), [alerting_authorization.ts#L281](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/alerting_authorization.ts#L281), [rules_client.ts#L68](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L68), [rules_client.ts#L514](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L514), [rules_client.ts#L587](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client/rules_client.ts#L587) | - | | | [audit_logger.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#L8), [audit_logger.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#L21), [audit_logger.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/authorization/audit_logger.ts#L23), [rules_client_factory.test.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#L23), [rules_client_factory.test.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/alerting/server/rules_client_factory.test.ts#L98) | - | @@ -34,8 +34,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L13), [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L33), [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L34) | - | | | [index.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L14), [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L32) | - | +| | [index.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L13), [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L33), [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L34) | - | | | [index.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L14), [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#L32) | - | @@ -44,6 +44,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [build_embeddable_filters.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L35) | - | | | [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [build_embeddable_filters.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L14), [build_embeddable_filters.ts#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L33), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L32), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [saved_lens.d.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L16) | - | | | [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [build_embeddable_filters.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L14), [build_embeddable_filters.ts#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L33), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L32), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [saved_lens.d.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L16) | - | | | [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [build_embeddable_filters.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L11), [build_embeddable_filters.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L14), [build_embeddable_filters.ts#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/build_embeddable_filters.ts#L33), [saved_lens.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L10), [saved_lens.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#L32), [saved_lens.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L3), [saved_lens.d.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/target/types/canvas_plugin_src/functions/external/saved_lens.d.ts#L16) | - | @@ -74,6 +75,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [save_dashboard.ts#L19](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#L19), [save_dashboard.ts#L82](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/save_dashboard.ts#L82), [diff_dashboard_state.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#L11), [diff_dashboard_state.ts#L101](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#L101), [diff_dashboard_state.ts#L103](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#L103), [diff_dashboard_state.ts#L104](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/diff_dashboard_state.ts#L104), [sync_dashboard_container_input.ts#L14](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#L14), [sync_dashboard_container_input.ts#L98](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#L98), [sync_dashboard_container_input.ts#L101](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts#L101), [plugin.tsx#L37](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#L37)+ 7 more | - | | | [filter_utils.ts#L13](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L13), [filter_utils.ts#L56](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L56), [filter_utils.ts#L58](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L58), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [saved_dashboard.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L11), [saved_dashboard.ts#L33](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L33), [dashboard_state_slice.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L11), [dashboard_state_slice.ts#L74](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L74), [dashboard_state_slice.ts#L78](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L78)+ 26 more | - | | | [filter_utils.ts#L13](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L13), [filter_utils.ts#L56](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L56), [filter_utils.ts#L58](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L58), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [saved_dashboard.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L11), [saved_dashboard.ts#L33](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L33), [dashboard_state_slice.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L11), [dashboard_state_slice.ts#L74](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L74), [dashboard_state_slice.ts#L78](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L78)+ 26 more | - | | | [filter_utils.ts#L13](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L13), [filter_utils.ts#L56](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L56), [filter_utils.ts#L58](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L58), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [filter_utils.ts#L68](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#L68), [saved_dashboard.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L11), [saved_dashboard.ts#L33](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#L33), [dashboard_state_slice.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L11), [dashboard_state_slice.ts#L74](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L74), [dashboard_state_slice.ts#L78](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#L78)+ 26 more | - | @@ -87,6 +89,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [embeddable_to_dashboard_drilldown.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L13), [embeddable_to_dashboard_drilldown.tsx#L73](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L73), [embeddable_to_dashboard_drilldown.tsx#L79](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L79) | - | | | [embeddable_to_dashboard_drilldown.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L15), [embeddable_to_dashboard_drilldown.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L70) | - | | | [embeddable_to_dashboard_drilldown.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L14), [embeddable_to_dashboard_drilldown.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L33) | - | | | [embeddable_to_dashboard_drilldown.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L15), [embeddable_to_dashboard_drilldown.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#L70) | - | @@ -121,6 +124,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | ---------------|-----------|-----------| | | [kibana_services.ts#L101](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/kibana_services.ts#L101), [create_doc_table_react.tsx#L15](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx#L15), [create_doc_table_react.tsx#L25](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx#L25), [types.ts#L16](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L16), [types.ts#L30](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L30) | - | | | [kibana_services.ts#L104](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/kibana_services.ts#L104), [saved_search_embeddable.tsx#L25](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#L25), [saved_search_embeddable.tsx#L53](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#L53) | - | +| | [url_generator.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L11), [url_generator.ts#L121](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L121), [url_generator.ts#L130](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L130), [locator.ts#L12](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L12), [locator.ts#L120](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L120), [locator.ts#L129](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L129), [get_context_url.tsx#L12](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#L12), [get_context_url.tsx#L35](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/helpers/get_context_url.tsx#L35), [discover_state.ts#L25](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#L25), [discover_state.ts#L264](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/apps/main/services/discover_state.ts#L264)+ 17 more | - | | | [url_generator.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L10), [url_generator.ts#L40](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L40), [url_generator.ts#L110](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L110), [locator.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L10), [locator.ts#L41](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L41), [locator.ts#L109](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L109), [types.ts#L16](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L16), [types.ts#L22](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L22), [context.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#L10), [context.ts#L57](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#L57)+ 15 more | - | | | [url_generator.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L10), [url_generator.ts#L40](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L40), [url_generator.ts#L110](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/url_generator.ts#L110), [locator.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L10), [locator.ts#L41](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L41), [locator.ts#L109](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#L109), [types.ts#L16](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L16), [types.ts#L22](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/types.ts#L22), [context.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#L10), [context.ts#L57](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/angular/context/api/context.ts#L57)+ 15 more | - | | | [kibana_services.ts#L104](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/kibana_services.ts#L104), [saved_search_embeddable.tsx#L25](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#L25), [saved_search_embeddable.tsx#L53](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx#L53) | - | @@ -137,6 +141,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [explore_data_chart_action.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#L15), [explore_data_chart_action.ts#L57](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.ts#L57) | - | | | [explore_data_chart_action.test.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L18), [explore_data_chart_action.test.ts#L237](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L237) | - | | | [explore_data_context_menu_action.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#L14), [explore_data_context_menu_action.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#L22), [explore_data_chart_action.test.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L18), [explore_data_chart_action.test.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L41), [explore_data_chart_action.test.ts#L237](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L237) | - | | | [explore_data_context_menu_action.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#L14), [explore_data_context_menu_action.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#L22), [explore_data_chart_action.test.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L18), [explore_data_chart_action.test.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L41), [explore_data_chart_action.test.ts#L237](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts#L237) | - | @@ -165,13 +170,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L32)+ 11 more | - | -| | [search_bar.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L11), [search_bar.tsx#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L41), [agent_logs.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#L32), [agent_logs.tsx#L174](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#L174) | - | | | [search_bar.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L10), [search_bar.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L33), [search_bar.tsx#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L51), [query_bar.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L11), [query_bar.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L30), [query_bar.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L38) | - | -| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L32)+ 11 more | - | +| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L31)+ 11 more | - | +| | [search_bar.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L11), [search_bar.tsx#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L41), [agent_logs.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#L32), [agent_logs.tsx#L174](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#L174) | - | +| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L31)+ 11 more | - | | | [search_bar.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L10), [search_bar.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L33), [search_bar.tsx#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L51), [query_bar.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L11), [query_bar.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L30), [query_bar.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L38) | - | -| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L32)+ 11 more | - | | | [search_bar.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L10), [search_bar.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L33), [search_bar.tsx#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx#L51), [query_bar.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L11), [query_bar.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L30), [query_bar.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#L38) | - | +| | [crud.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L18), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L27), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L31), [crud.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L32), [crud.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L37), [crud.ts#L51](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/crud.ts#L51), [status.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L15), [status.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/services/agents/status.ts#L31)+ 11 more | - | | | [plugin.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#L14), [plugin.ts#L184](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#L184), [plugin.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#L2), [plugin.d.ts#L84](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/target/types/server/plugin.d.ts#L84) | - | @@ -210,14 +215,24 @@ warning: This document is auto-generated and is meant to be viewed inside our ex +## indexPatternFieldEditor + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [field_format_editor.tsx#L22](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L22), [field_format_editor.tsx#L83](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L83) | 8.0 | +| | [field_format_editor.tsx#L22](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L22), [field_format_editor.tsx#L83](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L83) | 8.0 | +| | [field_format_editor.tsx#L22](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L22), [field_format_editor.tsx#L83](https://github.com/elastic/kibana/tree/master/src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx#L83) | 8.0 | + + + ## infra | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [kuery_bar.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L14), [kuery_bar.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L38), [kuery.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L8), [kuery.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L17), [kuery.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L17), [use_waffle_filters.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#L18), [use_waffle_filters.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#L22) | - | -| | [index.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#L13), [index.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#L21), [log_stream.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L11), [log_stream.tsx#L126](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L126), [log_stream.tsx#L128](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L128), [log_filter_state.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L11), [log_filter_state.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L13), [log_filter_state.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L40) | - | | | [with_kuery_autocompletion.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#L9), [with_kuery_autocompletion.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/with_kuery_autocompletion.tsx#L24), [kuery_bar.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L15), [kuery_bar.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L28), [toolbar.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#L21), [toolbar.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/toolbars/toolbar.tsx#L27), [kuery.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L8), [kuery.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L12), [use_metrics_explorer_data.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#L11), [use_metrics_explorer_data.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts#L30)+ 34 more | - | | | [custom_metric_form.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#L23), [custom_metric_form.tsx#L56](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#L56), [index.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#L11), [index.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#L29), [custom_field_panel.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#L11), [custom_field_panel.tsx#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#L16), [waffle_group_by_controls.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#L18), [waffle_group_by_controls.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#L32), [metric.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#L25), [metric.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#L45)+ 46 more | - | +| | [kuery_bar.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L14), [kuery_bar.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/kuery_bar.tsx#L38), [kuery.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L8), [kuery.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L17), [kuery.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/utils/kuery.ts#L17), [use_waffle_filters.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#L18), [use_waffle_filters.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.ts#L22) | - | +| | [index.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#L13), [index.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts#L21), [log_stream.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L11), [log_stream.tsx#L126](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L126), [log_stream.tsx#L128](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L128), [log_filter_state.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L11), [log_filter_state.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L13), [log_filter_state.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/containers/logs/log_filter/log_filter_state.ts#L40) | - | | | [log_stream.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L11), [log_stream.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L70), [log_stream_embeddable.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#L12), [log_stream_embeddable.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#L27), [use_dataset_filtering.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L10), [use_dataset_filtering.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L15), [use_dataset_filtering.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L20) | - | | | [log_stream.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L11), [log_stream.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream.tsx#L70), [log_stream_embeddable.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#L12), [log_stream_embeddable.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#L27), [use_dataset_filtering.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L10), [use_dataset_filtering.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L15), [use_dataset_filtering.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_dataset_filtering.ts#L20) | - | | | [custom_metric_form.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#L23), [custom_metric_form.tsx#L56](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx#L56), [index.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#L11), [index.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/index.tsx#L29), [custom_field_panel.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#L11), [custom_field_panel.tsx#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/custom_field_panel.tsx#L16), [waffle_group_by_controls.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#L18), [waffle_group_by_controls.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/waffle_group_by_controls.tsx#L32), [metric.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#L25), [metric.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/alerting/inventory/components/metric.tsx#L45)+ 46 more | - | @@ -231,10 +246,11 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [validation.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L12), [validation.ts#L185](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L185), [validation.ts#L185](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L185), [filters.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L22), [filters.tsx#L63](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L63), [filters.tsx#L63](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L63) | - | -| | [validation.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L12), [validation.ts#L187](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L187), [filters.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L23), [filters.tsx#L65](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L65), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L24), [index.tsx#L101](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L101), [index.tsx#L105](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L105), [field_item.tsx#L46](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L46), [field_item.tsx#L171](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L171), [field_item.tsx#L175](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L175)+ 3 more | - | | | [index.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L25), [index.tsx#L102](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L102), [field_item.tsx#L47](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L47), [field_item.tsx#L172](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L172), [datapanel.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx#L43), [datapanel.tsx#L97](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx#L97), [datapanel.tsx#L167](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx#L167), [embeddable.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#L15), [embeddable.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#L86), [embeddable.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/embeddable/embeddable.d.ts#L3)+ 1 more | - | | | [types.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#L8), [types.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/types.ts#L60), [types.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#L1), [types.d.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/target/types/public/indexpattern_datasource/types.d.ts#L22) | - | +| | [save_modal_container.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#L19), [save_modal_container.tsx#L355](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx#L355), [mocks.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#L24), [mocks.tsx#L249](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/mocks.tsx#L249), [time_range_middleware.test.ts#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#L18), [time_range_middleware.test.ts#L62](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/state_management/time_range_middleware.test.ts#L62) | - | +| | [validation.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L12), [validation.ts#L185](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L185), [validation.ts#L185](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L185), [filters.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L22), [filters.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L64), [filters.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L64) | - | +| | [validation.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L12), [validation.ts#L187](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts#L187), [filters.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L23), [filters.tsx#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx#L66), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L24), [index.tsx#L101](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L101), [index.tsx#L105](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx#L105), [field_item.tsx#L46](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L46), [field_item.tsx#L171](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L171), [field_item.tsx#L175](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L175)+ 3 more | - | | | [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L22), [types.ts#L273](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L273), [types.ts#L518](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L518), [filter_references.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L8), [filter_references.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L13), [filter_references.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L49), [utils.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#L13), [utils.ts#L72](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#L72), [field_item.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L45), [field_item.tsx#L73](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L73)+ 25 more | - | | | [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L22), [types.ts#L273](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L273), [types.ts#L518](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/types.ts#L518), [filter_references.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L8), [filter_references.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L13), [filter_references.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/filter_references.ts#L49), [utils.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#L13), [utils.ts#L72](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/utils.ts#L72), [field_item.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L45), [field_item.tsx#L73](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx#L73)+ 25 more | - | | | [types.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/types.ts#L8), [types.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/types.ts#L23) | - | @@ -261,6 +277,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | ---------------|-----------|-----------| | | [types.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/embeddable/types.ts#L8), [types.ts#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/embeddable/types.ts#L44) | - | | | [es_doc_field.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#L12), [es_doc_field.ts#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#L45), [es_source.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#L10), [es_source.ts#L367](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#L367), [index_pattern_util.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L8), [index_pattern_util.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L15), [index_pattern_util.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L49), [index_pattern_util.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L49), [index_pattern_util.ts#L59](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L59), [index_pattern_util.ts#L59](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L59)+ 84 more | - | +| | [es_tooltip_property.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L12), [es_tooltip_property.ts#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L86), [es_tooltip_property.ts#L90](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L90), [es_geo_line_source.tsx#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#L38), [es_geo_line_source.tsx#L245](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx#L245), [app_sync.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#L9), [app_sync.ts#L42](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/app_sync.ts#L42), [map_app.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#L32), [map_app.tsx#L439](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#L439), [map_embeddable.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#L25)+ 6 more | - | | | [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#L22), [types.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#L37), [tooltip_property.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L10), [tooltip_property.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L21), [tooltip_property.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L35), [tooltip_property.ts#L94](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L94), [vector_source.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#L9), [vector_source.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#L40), [es_tooltip_property.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L13), [es_tooltip_property.ts#L78](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L78)+ 92 more | - | | | [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#L22), [types.ts#L37](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#L37), [tooltip_property.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L10), [tooltip_property.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L21), [tooltip_property.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L35), [tooltip_property.ts#L94](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts#L94), [vector_source.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#L9), [vector_source.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#L40), [es_tooltip_property.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L13), [es_tooltip_property.ts#L78](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts#L78)+ 92 more | - | | | [es_doc_field.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#L12), [es_doc_field.ts#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/fields/es_doc_field.ts#L45), [es_source.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#L10), [es_source.ts#L367](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts#L367), [index_pattern_util.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L8), [index_pattern_util.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L15), [index_pattern_util.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L49), [index_pattern_util.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L49), [index_pattern_util.ts#L59](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L59), [index_pattern_util.ts#L59](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/index_pattern_util.ts#L59)+ 84 more | - | @@ -274,10 +291,10 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [new_job_utils.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L10), [new_job_utils.ts#L56](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L56), [new_job_utils.ts#L58](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L58), [exploration_query_bar.tsx#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L16), [exploration_query_bar.tsx#L99](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L99), [exploration_query_bar.tsx#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L100), [use_saved_search.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L10), [use_saved_search.ts#L42](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L42), [use_saved_search.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L43), [process_filters.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#L9)+ 6 more | - | -| | [new_job_utils.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L10), [new_job_utils.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L60), [new_job_utils.ts#L75](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L75), [new_job_utils.ts#L76](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L76), [exploration_query_bar.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L17), [exploration_query_bar.tsx#L105](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L105), [use_saved_search.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L10), [use_saved_search.ts#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L45), [use_saved_search.ts#L46](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L46), [process_filters.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#L9)+ 3 more | - | | | [index_utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#L11), [index_utils.ts#L79](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/index_utils.ts#L79), [new_job_capabilities_service_analytics.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#L9), [new_job_capabilities_service_analytics.ts#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service_analytics.ts#L45), [data_recognizer.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#L10), [data_recognizer.d.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_recognizer/data_recognizer.d.ts#L13), [new_job_capabilities_service.ts#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#L14), [new_job_capabilities_service.ts#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/new_job_capabilities_service.ts#L39), [load_new_job_capabilities.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#L8), [load_new_job_capabilities.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/new_job_capabilities/load_new_job_capabilities.ts#L30)+ 26 more | - | | | [common.ts#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#L24), [common.ts#L222](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#L222), [field_types_utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#L11), [field_types_utils.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#L16), [field_types_utils.test.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L8), [field_types_utils.test.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L19), [field_types_utils.test.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L40), [field_types_utils.test.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L49), [field_types_utils.test.ts#L58](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L58) | - | +| | [new_job_utils.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L10), [new_job_utils.ts#L56](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L56), [new_job_utils.ts#L58](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L58), [exploration_query_bar.tsx#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L16), [exploration_query_bar.tsx#L99](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L99), [exploration_query_bar.tsx#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L100), [use_saved_search.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L10), [use_saved_search.ts#L42](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L42), [use_saved_search.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L43), [process_filters.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#L9)+ 6 more | - | +| | [new_job_utils.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L10), [new_job_utils.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L60), [new_job_utils.ts#L75](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L75), [new_job_utils.ts#L76](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts#L76), [exploration_query_bar.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L17), [exploration_query_bar.tsx#L105](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx#L105), [use_saved_search.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L10), [use_saved_search.ts#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L45), [use_saved_search.ts#L46](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts#L46), [process_filters.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/embeddables/common/process_filters.ts#L9)+ 3 more | - | | | [apply_influencer_filters_action.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#L12), [apply_influencer_filters_action.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#L40), [apply_entity_filters_action.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#L11), [apply_entity_filters_action.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#L45) | - | | | [apply_influencer_filters_action.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#L12), [apply_influencer_filters_action.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx#L40), [apply_entity_filters_action.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#L11), [apply_entity_filters_action.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/ui_actions/apply_entity_filters_action.tsx#L45) | - | | | [common.ts#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#L24), [common.ts#L222](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/data_grid/common.ts#L222), [field_types_utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#L11), [field_types_utils.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.ts#L16), [field_types_utils.test.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L8), [field_types_utils.test.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L19), [field_types_utils.test.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L40), [field_types_utils.test.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L49), [field_types_utils.test.ts#L58](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/util/field_types_utils.test.ts#L58) | - | @@ -291,8 +308,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L11), [utils.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L83), [lens_attributes.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L32), [lens_attributes.ts#L481](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L481), [lens_attributes.ts#L510](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L510) | - | | | [types.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#L20), [types.ts#L95](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts#L95), [alerts_search_bar.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#L10), [alerts_search_bar.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx#L20), [utils.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L10), [utils.ts#L59](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L59), [utils.ts#L67](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L67), [utils.ts#L75](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L75), [utils.ts#L92](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L92) | - | +| | [utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L11), [utils.ts#L62](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L62), [utils.ts#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L70), [utils.ts#L78](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L78), [filter_value_label.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L10), [filter_value_label.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L30), [filter_value_label.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L31), [filter_value_label.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L64) | - | +| | [utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L11), [utils.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L83), [lens_attributes.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L32), [lens_attributes.ts#L481](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L481), [lens_attributes.ts#L510](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L510) | - | | | [filter_value_label.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L10), [filter_value_label.tsx#L80](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L80) | - | | | [filter_value_label.tsx#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L10), [filter_value_label.tsx#L80](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/filter_value_label/filter_value_label.tsx#L80) | - | | | [utils.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L11), [utils.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/utils.ts#L83), [lens_attributes.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L32), [lens_attributes.ts#L481](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L481), [lens_attributes.ts#L510](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations/lens_attributes.ts#L510) | - | @@ -323,7 +341,10 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [flyout.tsx#L37](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx#L37), [flyout.tsx#L89](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx#L89) | - | +| | [create_field_list.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L11), [create_field_list.ts#L94](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L94) | 8.0 | | | [flyout.tsx#L37](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx#L37), [flyout.tsx#L89](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx#L89) | - | +| | [create_field_list.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L11), [create_field_list.ts#L94](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L94) | 8.0 | +| | [create_field_list.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L11), [create_field_list.ts#L94](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L94) | 8.0 | | | [service_registry.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#L10), [service_registry.ts#L14](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/services/service_registry.ts#L14), [resolve_saved_objects.ts#L12](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L12), [resolve_saved_objects.ts#L24](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L24), [resolve_saved_objects.ts#L239](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L239), [resolve_saved_objects.ts#L260](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L260), [create_field_list.ts#L13](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L13), [create_field_list.ts#L20](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/create_field_list.ts#L20), [form.tsx#L23](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#L23), [form.tsx#L31](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx#L31) | - | | | [resolve_saved_objects.ts#L12](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L12), [resolve_saved_objects.ts#L125](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L125), [resolve_saved_objects.ts#L223](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L223), [resolve_saved_objects.ts#L233](https://github.com/elastic/kibana/tree/master/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts#L233) | - | @@ -349,21 +370,22 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L9), [index.ts#L81](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L81), [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L22), [types.ts#L82](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L82), [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19), [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98), [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12), [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48), [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122), [index.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L17)+ 81 more | - | +| | [index.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#L19), [index.tsx#L312](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx#L312), [helpers.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L13), [helpers.ts#L246](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L246), [epic.ts#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L34), [epic.ts#L382](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L382), [epic.ts#L383](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L383), [epic.ts#L384](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L384), [epic.ts#L385](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L385), [epic.ts#L398](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L398)+ 18 more | - | | | [helpers.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L12), [helpers.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L83), [helpers.ts#L97](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L97) | - | | | [epic.ts#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L36), [epic.ts#L400](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L400) | - | | | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L12), [index.ts#L79](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L79) | - | | | [index.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L16), [index.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L27), [index.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L27), [index.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L41), [index.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L41), [helpers.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L11), [helpers.ts#L123](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L123), [schema.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#L20), [schema.tsx#L110](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#L110), [schema.tsx#L468](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/schema.tsx#L468) | - | -| | [index.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L15), [index.ts#L87](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L87), [expandable_network.tsx#L26](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#L26), [expandable_network.tsx#L102](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#L102), [events_viewer.tsx#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#L35), [events_viewer.tsx#L200](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#L200), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#L27), [index.tsx#L123](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#L123), [index.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx#L22), [index.tsx#L255](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_histogram_panel/index.tsx#L255)+ 32 more | - | -| | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L9), [index.ts#L81](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L81), [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L22), [types.ts#L82](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L82), [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19), [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98), [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12), [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48), [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122), [index.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L17)+ 81 more | - | -| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 168 more | - | -| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 168 more | - | +| | [index.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L15), [index.ts#L87](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L87), [expandable_network.tsx#L26](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#L26), [expandable_network.tsx#L102](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/expandable_network.tsx#L102), [events_viewer.tsx#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#L35), [events_viewer.tsx#L200](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx#L200), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#L27), [index.tsx#L123](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx#L123), [index.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#L22), [index.tsx#L208](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx#L208)+ 34 more | - | +| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 170 more | - | +| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 170 more | - | | | [epic.ts#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L36), [epic.ts#L400](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts#L400) | - | | | [helpers.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L12), [helpers.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L83), [helpers.ts#L97](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L97) | - | | | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L12), [index.ts#L79](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L79) | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L9), [index.ts#L81](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L81), [types.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L22), [types.ts#L82](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L82), [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19), [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98), [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12), [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48), [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122), [index.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L17)+ 81 more | - | +| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 170 more | - | | | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L12), [index.ts#L79](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/lib/keury/index.ts#L79) | - | | | [helpers.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L12), [helpers.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L83), [helpers.ts#L97](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts#L97) | - | -| | [store.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L16), [store.ts#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/types/timeline/store.ts#L49), [model.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L11), [model.ts#L83](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/model.ts#L83), [actions.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L12), [actions.ts#L93](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts#L93), [selectors.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L10), [selectors.ts#L77](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts#L77), [actions.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L10), [actions.ts#L183](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/store/timeline/actions.ts#L183)+ 168 more | - | | | [index.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#L13), [index.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#L23), [index.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#L13), [index.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#L23), [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#L12), [index.tsx#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#L66), [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#L12), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#L28), [routes.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#L13), [routes.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#L23)+ 3 more | - | @@ -372,10 +394,10 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L20), [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L44) | - | -| | [index.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L19), [index.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L45) | - | | | [entity_index_expression.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L24), [entity_index_expression.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L33), [entity_index_expression.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L34), [boundary_index_expression.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L20), [boundary_index_expression.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L25), [boundary_index_expression.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L27), [index.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L17), [index.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L70), [index.tsx#L75](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L75), [index.tsx#L92](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L92)+ 1 more | - | | | [single_field_select.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L17), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L39), [single_field_select.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L44), [single_field_select.tsx#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L60), [single_field_select.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L64), [single_field_select.tsx#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L66), [single_field_select.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L1), [single_field_select.d.ts#L6](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L6)+ 16 more | - | +| | [index.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L20), [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L44) | - | +| | [index.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L19), [index.tsx#L45](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L45) | - | | | [single_field_select.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L17), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L39), [single_field_select.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L44), [single_field_select.tsx#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L60), [single_field_select.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L64), [single_field_select.tsx#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L66), [single_field_select.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L1), [single_field_select.d.ts#L6](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L6)+ 16 more | - | | | [entity_index_expression.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L24), [entity_index_expression.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L33), [entity_index_expression.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx#L34), [boundary_index_expression.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L20), [boundary_index_expression.tsx#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L25), [boundary_index_expression.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx#L27), [index.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L17), [index.tsx#L70](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L70), [index.tsx#L75](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L75), [index.tsx#L92](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#L92)+ 1 more | - | | | [single_field_select.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L17), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L20), [single_field_select.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L39), [single_field_select.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L44), [single_field_select.tsx#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L60), [single_field_select.tsx#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L64), [single_field_select.tsx#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/util_components/single_field_select.tsx#L66), [single_field_select.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L1), [single_field_select.d.ts#L6](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/target/types/public/alert_types/geo_containment/query_builder/util_components/single_field_select.d.ts#L6)+ 16 more | - | @@ -386,16 +408,16 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L16), [index.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L31), [index.ts#L74](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L74), [helpers.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L18), [helpers.tsx#L148](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L148), [index.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L29), [index.tsx#L120](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L120), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L24), [index.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L40)+ 3 more | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L9), [index.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L30) | - | | | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L21), [index.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L21), [index.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L35), [index.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L35) | - | -| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L80](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L80), [index.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L29), [index.tsx#L203](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L203), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L27), [index.tsx#L179](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L179) | - | -| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L16), [index.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L31), [index.ts#L74](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L74), [helpers.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L18), [helpers.tsx#L149](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L149), [index.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L31), [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L122), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L24), [index.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L40)+ 3 more | - | -| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L52), [index.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L30), [index.tsx#L116](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L116), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L28), [index.tsx#L109](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L109), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | -| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L52), [index.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L30), [index.tsx#L116](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L116), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L28), [index.tsx#L109](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L109), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | +| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L80](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L80), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L27), [index.tsx#L201](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L201), [index.tsx#L26](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L26), [index.tsx#L178](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L178) | - | +| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L54](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L54), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L28), [index.tsx#L114](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L114), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L27), [index.tsx#L108](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L108), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | +| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L54](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L54), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L28), [index.tsx#L114](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L114), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L27), [index.tsx#L108](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L108), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L9), [index.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L30) | - | -| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L16), [index.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L31), [index.ts#L74](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L74), [helpers.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L18), [helpers.tsx#L149](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L149), [index.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L31), [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L122), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L24), [index.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L40)+ 3 more | - | +| | [index.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L12), [index.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L16), [index.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L31), [index.ts#L74](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/utils/keury/index.ts#L74), [helpers.tsx#L18](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L18), [helpers.tsx#L148](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/helpers.tsx#L148), [index.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L29), [index.tsx#L120](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L120), [index.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L24), [index.tsx#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/container/source/index.tsx#L40)+ 3 more | - | +| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L54](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L54), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L28), [index.tsx#L114](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L114), [index.tsx#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L27), [index.tsx#L108](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L108), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L9), [index.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/columns/index.ts#L30) | - | -| | [store.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L17), [store.ts#L50](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/common/types/timeline/store.ts#L50), [model.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L9), [model.ts#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/store/t_grid/model.ts#L52), [index.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L30), [index.tsx#L116](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx#L116), [index.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L28), [index.tsx#L109](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx#L109), [utils.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L8), [utils.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/timelines/public/components/hover_actions/utils.ts#L28)+ 1 more | - | @@ -403,9 +425,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [es_index_service.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L10), [es_index_service.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L22), [transforms.ts#L63](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L63), [transforms.ts#L405](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L405) | - | | | [use_search_bar.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#L10), [use_search_bar.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#L55), [use_search_bar.ts#L56](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#L56) | - | | | [use_search_bar.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#L10), [use_search_bar.ts#L62](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_search_bar.ts#L62), [common.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#L11), [common.ts#L121](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#L121), [common.ts#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#L122) | - | -| | [es_index_service.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L10), [es_index_service.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L22), [transforms.ts#L63](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L63), [transforms.ts#L405](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L405) | - | | | [es_index_service.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L10), [es_index_service.ts#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/public/app/services/es_index_service.ts#L22), [transforms.ts#L63](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L63), [transforms.ts#L405](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/routes/api/transforms.ts#L405) | - | @@ -414,9 +436,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [update_kuery_string.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L8), [update_kuery_string.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L41), [update_kuery_string.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L43) | - | -| | [update_kuery_string.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L8), [update_kuery_string.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L28), [index_pattern.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts#L10), [index_pattern.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts#L13) | - | -| | [update_kuery_string.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L8), [update_kuery_string.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L28), [index_pattern.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts#L10), [index_pattern.ts#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts#L13) | - | +| | [update_kuery_string.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L8), [update_kuery_string.ts#L42](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L42), [update_kuery_string.ts#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#L44) | - | @@ -438,8 +458,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L9), [index.ts#L43](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L43) | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L9), [index.ts#L43](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L43) | - | | | [types.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L11), [types.ts#L21](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L21) | - | -| | [types.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L11), [types.ts#L21](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L21) | - | | | [index.ts#L9](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L9), [index.ts#L43](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/common/types/index.ts#L43) | - | +| | [types.ts#L11](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L11), [types.ts#L21](https://github.com/elastic/kibana/tree/master/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/types.ts#L21) | - | @@ -447,10 +467,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [_saved_vis.ts#L22](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L22), [_saved_vis.ts#L96](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L96), [visualize_embeddable.ts#L14](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L14), [visualize_embeddable.ts#L50](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L50), [visualize_embeddable.ts#L72](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L72) | - | +| | [visualize_embeddable.ts#L17](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L17), [visualize_embeddable.ts#L236](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L236) | - | | | [visualize_embeddable.ts#L18](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L18), [visualize_embeddable.ts#L64](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L64), [visualize_embeddable.ts#L93](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L93) | - | | | [visualize_embeddable.ts#L18](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L18), [visualize_embeddable.ts#L64](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L64), [visualize_embeddable.ts#L93](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L93) | - | -| | [_saved_vis.ts#L22](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L22), [_saved_vis.ts#L96](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L96), [visualize_embeddable.ts#L14](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L14), [visualize_embeddable.ts#L50](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L50), [visualize_embeddable.ts#L72](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L72) | - | | | [visualize_embeddable.ts#L18](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L18), [visualize_embeddable.ts#L64](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L64), [visualize_embeddable.ts#L93](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts#L93) | - | | | [find_list_items.ts#L16](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#L16), [find_list_items.ts#L35](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts#L35), [saved_visualizations.ts#L10](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#L10), [saved_visualizations.ts#L28](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#L28), [saved_visualizations.ts#L85](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/saved_visualizations.ts#L85), [services.ts#L26](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#L26), [services.ts#L72](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/services.ts#L72) | - | | | [types.ts#L9](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#L9), [types.ts#L41](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/types.ts#L41), [_saved_vis.ts#L16](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L16), [_saved_vis.ts#L105](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L105), [_saved_vis.ts#L114](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L114), [_saved_vis.ts#L124](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts#L124) | - | \ No newline at end of file diff --git a/api_docs/discover.json b/api_docs/discover.json index cb9332adda00b..d4e0150ea0239 100644 --- a/api_docs/discover.json +++ b/api_docs/discover.json @@ -205,8 +205,7 @@ "\nOptionally apply filters." ], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/discover/public/locator.ts", @@ -217,15 +216,14 @@ { "parentPluginId": "discover", "id": "def-public.DiscoverAppLocatorParams.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\nOptionally set a query." ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/discover/public/locator.ts", @@ -461,8 +459,7 @@ "\nOptionally apply filters." ], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/discover/public/url_generator.ts", @@ -473,15 +470,14 @@ { "parentPluginId": "discover", "id": "def-public.DiscoverUrlGeneratorState.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [ "\nOptionally set a query. NOTE: if given and used in conjunction with `dashboardId`, and the\nsaved dashboard has a query saved with it, this will _replace_ that query." ], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/discover/public/url_generator.ts", @@ -1050,13 +1046,12 @@ { "parentPluginId": "discover", "id": "def-public.SearchInput.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/discover/public/application/embeddable/types.ts", @@ -1072,8 +1067,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/discover/public/application/embeddable/types.ts", diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 610ec5d90f267..9e3ae166da774 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -18,7 +18,7 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 81 | 0 | 55 | 6 | +| 81 | 3 | 55 | 6 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 3f9ab4d4068a7..ecba2f6d0f805 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -12,7 +12,7 @@ import discoverEnhancedObj from './discover_enhanced.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/encrypted_saved_objects.json b/api_docs/encrypted_saved_objects.json index 6a699e3534d4b..371f4baccd6d5 100644 --- a/api_docs/encrypted_saved_objects.json +++ b/api_docs/encrypted_saved_objects.json @@ -305,7 +305,49 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "encryptedSavedObjects", + "id": "def-server.IsMigrationNeededPredicate", + "type": "Type", + "tags": [], + "label": "IsMigrationNeededPredicate", + "description": [], + "signature": [ + "(encryptedDoc: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectUnsanitizedDoc", + "text": "SavedObjectUnsanitizedDoc" + }, + " | ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectUnsanitizedDoc", + "text": "SavedObjectUnsanitizedDoc" + }, + ") => encryptedDoc is ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectUnsanitizedDoc", + "text": "SavedObjectUnsanitizedDoc" + }, + "" + ], + "source": { + "path": "x-pack/plugins/encrypted_saved_objects/server/create_migration.ts", + "lineNumber": 25 + }, + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [], "setup": { "parentPluginId": "encryptedSavedObjects", @@ -392,31 +434,9 @@ "label": "createMigration", "description": [], "signature": [ - "(isMigrationNeededPredicate: IsMigrationNeededPredicate, migration: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectMigrationFn", - "text": "SavedObjectMigrationFn" - }, - ", inputType?: ", - { - "pluginId": "encryptedSavedObjects", - "scope": "server", - "docId": "kibEncryptedSavedObjectsPluginApi", - "section": "def-server.EncryptedSavedObjectTypeRegistration", - "text": "EncryptedSavedObjectTypeRegistration" - }, - " | undefined, migratedType?: ", - { - "pluginId": "encryptedSavedObjects", - "scope": "server", - "docId": "kibEncryptedSavedObjectsPluginApi", - "section": "def-server.EncryptedSavedObjectTypeRegistration", - "text": "EncryptedSavedObjectTypeRegistration" - }, - " | undefined) => SavedObjectOptionalMigrationFn" + "(opts: ", + "CreateEncryptedSavedObjectsMigrationFnOpts", + ") => SavedObjectOptionalMigrationFn" ], "source": { "path": "x-pack/plugins/encrypted_saved_objects/server/plugin.ts", @@ -427,127 +447,18 @@ "children": [ { "parentPluginId": "encryptedSavedObjects", - "id": "def-server.isMigrationNeededPredicate", - "type": "Function", - "tags": [], - "label": "isMigrationNeededPredicate", - "description": [], - "signature": [ - "(encryptedDoc: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectUnsanitizedDoc", - "text": "SavedObjectUnsanitizedDoc" - }, - " | ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectUnsanitizedDoc", - "text": "SavedObjectUnsanitizedDoc" - }, - ") => encryptedDoc is ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectUnsanitizedDoc", - "text": "SavedObjectUnsanitizedDoc" - }, - "" - ], - "source": { - "path": "x-pack/plugins/encrypted_saved_objects/server/create_migration.ts", - "lineNumber": 32 - }, - "deprecated": false - }, - { - "parentPluginId": "encryptedSavedObjects", - "id": "def-server.migration", - "type": "Function", - "tags": [], - "label": "migration", - "description": [], - "signature": [ - "(doc: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectUnsanitizedDoc", - "text": "SavedObjectUnsanitizedDoc" - }, - ", context: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectMigrationContext", - "text": "SavedObjectMigrationContext" - }, - ") => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectUnsanitizedDoc", - "text": "SavedObjectUnsanitizedDoc" - }, - "" - ], - "source": { - "path": "x-pack/plugins/encrypted_saved_objects/server/create_migration.ts", - "lineNumber": 33 - }, - "deprecated": false - }, - { - "parentPluginId": "encryptedSavedObjects", - "id": "def-server.inputType", - "type": "Object", - "tags": [], - "label": "inputType", - "description": [], - "signature": [ - { - "pluginId": "encryptedSavedObjects", - "scope": "server", - "docId": "kibEncryptedSavedObjectsPluginApi", - "section": "def-server.EncryptedSavedObjectTypeRegistration", - "text": "EncryptedSavedObjectTypeRegistration" - }, - " | undefined" - ], - "source": { - "path": "x-pack/plugins/encrypted_saved_objects/server/create_migration.ts", - "lineNumber": 34 - }, - "deprecated": false - }, - { - "parentPluginId": "encryptedSavedObjects", - "id": "def-server.migratedType", + "id": "def-server.opts", "type": "Object", "tags": [], - "label": "migratedType", + "label": "opts", "description": [], "signature": [ - { - "pluginId": "encryptedSavedObjects", - "scope": "server", - "docId": "kibEncryptedSavedObjectsPluginApi", - "section": "def-server.EncryptedSavedObjectTypeRegistration", - "text": "EncryptedSavedObjectTypeRegistration" - }, - " | undefined" + "CreateEncryptedSavedObjectsMigrationFnOpts", + "" ], "source": { "path": "x-pack/plugins/encrypted_saved_objects/server/create_migration.ts", - "lineNumber": 35 + "lineNumber": 46 }, "deprecated": false } diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 02cbf225c355d..d274500438ba5 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -18,7 +18,7 @@ Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-securit | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 28 | 3 | +| 28 | 0 | 26 | 4 | ## Server @@ -34,3 +34,6 @@ Contact [Platform Security](https://github.com/orgs/elastic/teams/kibana-securit ### Interfaces +### Consts, variables and types + + diff --git a/api_docs/expressions.json b/api_docs/expressions.json index 2c095859821f3..87929dbb00790 100644 --- a/api_docs/expressions.json +++ b/api_docs/expressions.json @@ -6637,7 +6637,23 @@ "section": "def-common.InferFunctionDefinition", "text": "InferFunctionDefinition" }, - "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -6705,7 +6721,23 @@ "Object containing the arguments to this function." ], "signature": [ - "{ [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "{ [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -7087,7 +7119,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 98 + "lineNumber": 102 }, "deprecated": false, "children": [ @@ -7103,7 +7135,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 99 + "lineNumber": 103 }, "deprecated": false }, @@ -7126,7 +7158,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 100 + "lineNumber": 104 }, "deprecated": false }, @@ -7142,7 +7174,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 101 + "lineNumber": 105 }, "deprecated": false } @@ -7160,7 +7192,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 89 + "lineNumber": 93 }, "deprecated": false, "children": [ @@ -7173,7 +7205,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 90 + "lineNumber": 94 }, "deprecated": false }, @@ -7186,7 +7218,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 91 + "lineNumber": 95 }, "deprecated": false }, @@ -7208,7 +7240,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 92 + "lineNumber": 96 }, "deprecated": false } @@ -11255,7 +11287,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 104 + "lineNumber": 108 }, "deprecated": false, "children": [ @@ -11271,7 +11303,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 105 + "lineNumber": 109 }, "deprecated": false } @@ -17527,7 +17559,23 @@ "section": "def-common.InferFunctionDefinition", "text": "InferFunctionDefinition" }, - "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -17595,7 +17643,23 @@ "Object containing the arguments to this function." ], "signature": [ - "{ [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "{ [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -17926,7 +17990,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 98 + "lineNumber": 102 }, "deprecated": false, "children": [ @@ -17942,7 +18006,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 99 + "lineNumber": 103 }, "deprecated": false }, @@ -17965,7 +18029,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 100 + "lineNumber": 104 }, "deprecated": false }, @@ -17981,7 +18045,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 101 + "lineNumber": 105 }, "deprecated": false } @@ -17999,7 +18063,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 89 + "lineNumber": 93 }, "deprecated": false, "children": [ @@ -18012,7 +18076,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 90 + "lineNumber": 94 }, "deprecated": false }, @@ -18025,7 +18089,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 91 + "lineNumber": 95 }, "deprecated": false }, @@ -18047,7 +18111,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 92 + "lineNumber": 96 }, "deprecated": false } @@ -21026,7 +21090,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 104 + "lineNumber": 108 }, "deprecated": false, "children": [ @@ -21042,7 +21106,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 105 + "lineNumber": 109 }, "deprecated": false } @@ -28133,7 +28197,23 @@ "section": "def-common.InferFunctionDefinition", "text": "InferFunctionDefinition" }, - "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "[\"name\"], initialArgs: { [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -28201,7 +28281,23 @@ "Object containing the arguments to this function." ], "signature": [ - "{ [K in keyof FunctionArgs]: FunctionArgs[K] | ", + "{ [K in keyof FunctionArgs]: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + " | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + }, + "[] | FunctionArgs[K] | ", { "pluginId": "expressions", "scope": "common", @@ -29823,7 +29919,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 98 + "lineNumber": 102 }, "deprecated": false, "children": [ @@ -29839,7 +29935,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 99 + "lineNumber": 103 }, "deprecated": false }, @@ -29862,7 +29958,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 100 + "lineNumber": 104 }, "deprecated": false }, @@ -29878,7 +29974,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 101 + "lineNumber": 105 }, "deprecated": false } @@ -29896,7 +29992,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 89 + "lineNumber": 93 }, "deprecated": false, "children": [ @@ -29909,7 +30005,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 90 + "lineNumber": 94 }, "deprecated": false }, @@ -29922,7 +30018,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 91 + "lineNumber": 95 }, "deprecated": false }, @@ -29944,7 +30040,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 92 + "lineNumber": 96 }, "deprecated": false } @@ -30018,6 +30114,24 @@ }, "deprecated": false }, + { + "parentPluginId": "expressions", + "id": "def-common.DatatableColumnMeta.dimensionName", + "type": "string", + "tags": [], + "label": "dimensionName", + "description": [ + "\nnames the domain this column represents" + ], + "signature": [ + "string | undefined" + ], + "source": { + "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", + "lineNumber": 75 + }, + "deprecated": false + }, { "parentPluginId": "expressions", "id": "def-common.DatatableColumnMeta.params", @@ -30039,7 +30153,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 75 + "lineNumber": 79 }, "deprecated": false }, @@ -30057,7 +30171,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 79 + "lineNumber": 83 }, "deprecated": false }, @@ -30076,7 +30190,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 83 + "lineNumber": 87 }, "deprecated": false } @@ -34830,7 +34944,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 104 + "lineNumber": 108 }, "deprecated": false, "children": [ @@ -34846,7 +34960,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 105 + "lineNumber": 109 }, "deprecated": false } @@ -38321,7 +38435,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 115 + "lineNumber": 119 }, "deprecated": false, "children": [ @@ -38337,7 +38451,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 116 + "lineNumber": 120 }, "deprecated": false }, @@ -38353,7 +38467,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 117 + "lineNumber": 121 }, "deprecated": false, "children": [ @@ -38369,7 +38483,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 117 + "lineNumber": 121 }, "deprecated": false, "isRequired": true @@ -38405,7 +38519,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 127 + "lineNumber": 131 }, "deprecated": false, "children": [ @@ -38427,7 +38541,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 127 + "lineNumber": 131 }, "deprecated": false, "isRequired": true @@ -38463,7 +38577,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false, "children": [ @@ -38485,7 +38599,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false, "isRequired": true @@ -38502,7 +38616,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 145 + "lineNumber": 149 }, "deprecated": false, "children": [ @@ -38518,7 +38632,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 146 + "lineNumber": 150 }, "deprecated": false, "children": [], @@ -38552,7 +38666,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 152 + "lineNumber": 156 }, "deprecated": false, "children": [ @@ -38583,7 +38697,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 152 + "lineNumber": 156 }, "deprecated": false, "isRequired": true @@ -38602,7 +38716,7 @@ "description": [], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 161 + "lineNumber": 165 }, "deprecated": false, "children": [ @@ -38634,7 +38748,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 162 + "lineNumber": 166 }, "deprecated": false, "children": [ @@ -38656,7 +38770,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 162 + "lineNumber": 166 }, "deprecated": false, "isRequired": true @@ -38700,7 +38814,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 172 + "lineNumber": 176 }, "deprecated": false, "children": [ @@ -38722,7 +38836,7 @@ ], "source": { "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", - "lineNumber": 172 + "lineNumber": 176 }, "deprecated": false, "isRequired": true diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 6ff430ddcfaa8..abac2ad5cd8b9 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -18,7 +18,7 @@ import expressionsObj from './expressions.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2003 | 58 | 1569 | 5 | +| 2004 | 58 | 1569 | 5 | ## Client diff --git a/api_docs/file_upload.json b/api_docs/file_upload.json index ee3af81c4daca..75c7d5fb3dec4 100644 --- a/api_docs/file_upload.json +++ b/api_docs/file_upload.json @@ -343,21 +343,9 @@ "label": "geoFieldType", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".GEO_POINT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".GEO_SHAPE" ], "source": { @@ -1317,253 +1305,67 @@ "description": [], "signature": [ "{ properties: { [fieldName: string]: { type: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".STRING | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".TEXT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".KEYWORD | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".VERSION | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".BOOLEAN | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".OBJECT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".DATE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".DATE_NANOS | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".DATE_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".GEO_POINT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".GEO_SHAPE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".FLOAT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".HALF_FLOAT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".SCALED_FLOAT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".DOUBLE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".INTEGER | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".LONG | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".SHORT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".UNSIGNED_LONG | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".FLOAT_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".DOUBLE_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".INTEGER_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".LONG_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".NESTED | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".BYTE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".IP | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".IP_RANGE | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".ATTACHMENT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".TOKEN_COUNT | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".MURMUR3 | ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ES_FIELD_TYPES", - "text": "ES_FIELD_TYPES" - }, + "ES_FIELD_TYPES", ".HISTOGRAM; format?: string | undefined; }; }; }" ], "source": { diff --git a/api_docs/fleet.json b/api_docs/fleet.json index cf5cedd94b9e3..2eed10bb4a68c 100644 --- a/api_docs/fleet.json +++ b/api_docs/fleet.json @@ -4503,7 +4503,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -4748,7 +4748,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -7544,12 +7544,12 @@ { "parentPluginId": "fleet", "id": "def-common.Agent.status", - "type": "string", + "type": "CompoundType", "tags": [], "label": "status", "description": [], "signature": [ - "string | undefined" + "\"warning\" | \"offline\" | \"online\" | \"error\" | \"inactive\" | \"enrolling\" | \"unenrolling\" | \"updating\" | \"degraded\" | undefined" ], "source": { "path": "x-pack/plugins/fleet/common/types/models/agent.ts", diff --git a/api_docs/index_management.json b/api_docs/index_management.json index 9dc02a51148bc..5e7156b47cb45 100644 --- a/api_docs/index_management.json +++ b/api_docs/index_management.json @@ -56,6 +56,60 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "indexManagement", + "id": "def-public.getTemplateDetailsLink", + "type": "Function", + "tags": [], + "label": "getTemplateDetailsLink", + "description": [], + "signature": [ + "(name: string, isLegacy?: boolean | undefined) => string" + ], + "source": { + "path": "x-pack/plugins/index_management/public/application/services/routing.ts", + "lineNumber": 10 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "indexManagement", + "id": "def-public.getTemplateDetailsLink.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "source": { + "path": "x-pack/plugins/index_management/public/application/services/routing.ts", + "lineNumber": 10 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "indexManagement", + "id": "def-public.getTemplateDetailsLink.$2", + "type": "CompoundType", + "tags": [], + "label": "isLegacy", + "description": [], + "signature": [ + "boolean | undefined" + ], + "source": { + "path": "x-pack/plugins/index_management/public/application/services/routing.ts", + "lineNumber": 10 + }, + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 42414651d4d4b..d97582e62523d 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -18,7 +18,7 @@ import indexManagementObj from './index_management.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 162 | 12 | 157 | 3 | +| 165 | 12 | 160 | 3 | ## Client diff --git a/api_docs/index_pattern_field_editor.json b/api_docs/index_pattern_field_editor.json index d7afa005cf2da..e1ad62b534d2d 100644 --- a/api_docs/index_pattern_field_editor.json +++ b/api_docs/index_pattern_field_editor.json @@ -18,14 +18,20 @@ "text": "DefaultFormatEditor" }, " extends React.PureComponent<", - "FormatEditorProps", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, "

, ", "FormatEditorState", " & S, any>" ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 71 + "lineNumber": 64 }, "deprecated": false, "children": [ @@ -38,7 +44,7 @@ "description": [], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 75 + "lineNumber": 68 }, "deprecated": false }, @@ -55,7 +61,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 76 + "lineNumber": 69 }, "deprecated": false }, @@ -68,7 +74,13 @@ "description": [], "signature": [ "(nextProps: ", - "FormatEditorProps", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, "<{}>, state: ", "FormatEditorState", ") => { error: string | undefined; samples: ", @@ -77,7 +89,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 78 + "lineNumber": 71 }, "deprecated": false, "children": [ @@ -89,12 +101,18 @@ "label": "nextProps", "description": [], "signature": [ - "FormatEditorProps", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, "<{}>" ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 78 + "lineNumber": 71 }, "deprecated": false, "isRequired": true @@ -111,7 +129,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 78 + "lineNumber": 71 }, "deprecated": false, "isRequired": true @@ -131,7 +149,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 90 + "lineNumber": 83 }, "deprecated": false, "children": [ @@ -147,7 +165,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 90 + "lineNumber": 83 }, "deprecated": false, "isRequired": true @@ -167,7 +185,7 @@ ], "source": { "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/default/default.tsx", - "lineNumber": 99 + "lineNumber": 92 }, "deprecated": false, "children": [], @@ -259,6 +277,155 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps", + "type": "Interface", + "tags": [], + "label": "FormatEditorProps", + "description": [ + "\nProps for received by {@link FieldFormatEditor}" + ], + "signature": [ + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, + "

" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 17 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps.fieldType", + "type": "string", + "tags": [], + "label": "fieldType", + "description": [], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 18 + }, + "deprecated": false + }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps.format", + "type": "Object", + "tags": [], + "label": "format", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 19 + }, + "deprecated": false + }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps.formatParams", + "type": "CompoundType", + "tags": [], + "label": "formatParams", + "description": [], + "signature": [ + "{ type?: string | undefined; } & P" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 20 + }, + "deprecated": false + }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps.onChange", + "type": "Function", + "tags": [], + "label": "onChange", + "description": [], + "signature": [ + "(newParams: { [key: string]: any; }) => void" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 21 + }, + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.newParams", + "type": "Object", + "tags": [], + "label": "newParams", + "description": [], + "signature": [ + "{ [key: string]: any; }" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 21 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FormatEditorProps.onError", + "type": "Function", + "tags": [], + "label": "onError", + "description": [], + "signature": [ + "(error?: string | undefined) => void" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 22 + }, + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.error", + "type": "string", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "string | undefined" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/field_format_editor.tsx", + "lineNumber": 34 + }, + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "indexPatternFieldEditor", "id": "def-public.OpenFieldDeleteModalOptions", @@ -413,7 +580,70 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FieldFormatEditor", + "type": "Type", + "tags": [], + "label": "FieldFormatEditor", + "description": [ + "\nA React component for editing custom field format params" + ], + "signature": [ + "(React.ComponentClass<", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, + ", any> & { formatId: string; }) | (React.FunctionComponent<", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FormatEditorProps", + "text": "FormatEditorProps" + }, + "> & { formatId: string; })" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 29 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "indexPatternFieldEditor", + "id": "def-public.FieldFormatEditorFactory", + "type": "Type", + "tags": [], + "label": "FieldFormatEditorFactory", + "description": [ + "\nA factory for registering field format editor for a field format with `formatId`" + ], + "signature": [ + "(() => Promise<", + { + "pluginId": "indexPatternFieldEditor", + "scope": "public", + "docId": "kibIndexPatternFieldEditorPluginApi", + "section": "def-public.FieldFormatEditor", + "text": "FieldFormatEditor" + }, + ">) & { formatId: string; }" + ], + "source": { + "path": "src/plugins/index_pattern_field_editor/public/components/field_format_editor/editors/types.ts", + "lineNumber": 37 + }, + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [], "start": { "parentPluginId": "indexPatternFieldEditor", @@ -536,23 +766,23 @@ "label": "fieldFormatEditors", "description": [], "signature": [ - "{ getAll: () => typeof ", + "{ getAll: () => ", { "pluginId": "indexPatternFieldEditor", "scope": "public", "docId": "kibIndexPatternFieldEditorPluginApi", - "section": "def-public.DefaultFormatEditor", - "text": "DefaultFormatEditor" + "section": "def-public.FieldFormatEditorFactory", + "text": "FieldFormatEditorFactory" }, - "[]; getById: (id: string) => typeof ", + "[]; getById: (id: string) => ", { "pluginId": "indexPatternFieldEditor", "scope": "public", "docId": "kibIndexPatternFieldEditorPluginApi", - "section": "def-public.DefaultFormatEditor", - "text": "DefaultFormatEditor" + "section": "def-public.FieldFormatEditorFactory", + "text": "FieldFormatEditorFactory" }, - " | undefined; }" + " | undefined; }" ], "source": { "path": "src/plugins/index_pattern_field_editor/public/types.ts", diff --git a/api_docs/index_pattern_field_editor.mdx b/api_docs/index_pattern_field_editor.mdx index b2808ecb30245..a231ac79bd77b 100644 --- a/api_docs/index_pattern_field_editor.mdx +++ b/api_docs/index_pattern_field_editor.mdx @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 31 | 1 | 29 | 4 | +| 41 | 1 | 36 | 3 | ## Client @@ -31,3 +31,6 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services ### Interfaces +### Consts, variables and types + + diff --git a/api_docs/kibana_legacy.mdx b/api_docs/kibana_legacy.mdx index b5c4fd37b252a..0cd1ce47b6b88 100644 --- a/api_docs/kibana_legacy.mdx +++ b/api_docs/kibana_legacy.mdx @@ -12,7 +12,7 @@ import kibanaLegacyObj from './kibana_legacy.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/lens.json b/api_docs/lens.json index 6fcd02dedc702..0ee635231b78d 100644 --- a/api_docs/lens.json +++ b/api_docs/lens.json @@ -199,7 +199,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx", - "lineNumber": 44 + "lineNumber": 45 }, "deprecated": false, "children": [ @@ -215,7 +215,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx", - "lineNumber": 45 + "lineNumber": 46 }, "deprecated": false }, @@ -231,7 +231,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx", - "lineNumber": 46 + "lineNumber": 47 }, "deprecated": false } @@ -258,7 +258,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 73 + "lineNumber": 74 }, "deprecated": false, "children": [ @@ -274,7 +274,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 74 + "lineNumber": 75 }, "deprecated": false }, @@ -292,7 +292,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx", - "lineNumber": 75 + "lineNumber": 76 }, "deprecated": false } @@ -1163,7 +1163,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx", - "lineNumber": 36 + "lineNumber": 40 }, "deprecated": false, "children": [ @@ -1179,7 +1179,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx", - "lineNumber": 37 + "lineNumber": 41 }, "deprecated": false }, @@ -1199,7 +1199,7 @@ ], "source": { "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx", - "lineNumber": 38 + "lineNumber": 42 }, "deprecated": false } @@ -4032,8 +4032,7 @@ "section": "def-common.PersistableFilter", "text": "PersistableFilter" }, - " extends ", - "Filter" + " extends any" ], "source": { "path": "x-pack/plugins/lens/common/types.ts", @@ -4081,8 +4080,7 @@ "section": "def-common.PersistableFilterMeta", "text": "PersistableFilterMeta" }, - " extends ", - "FilterMeta" + " extends any" ], "source": { "path": "x-pack/plugins/lens/common/types.ts", diff --git a/api_docs/licensing.json b/api_docs/licensing.json index b4a779fc90aa2..b54c2b749e3fe 100644 --- a/api_docs/licensing.json +++ b/api_docs/licensing.json @@ -1007,8 +1007,8 @@ { "plugin": "reporting", "link": { - "path": "x-pack/plugins/reporting/public/management/report_listing.tsx", - "lineNumber": 44 + "path": "x-pack/plugins/reporting/public/management/index.ts", + "lineNumber": 20 } }, { diff --git a/api_docs/lists.json b/api_docs/lists.json index 36fb301ac0d6a..7e6ff37d439ee 100644 --- a/api_docs/lists.json +++ b/api_docs/lists.json @@ -467,7 +467,7 @@ "signature": [ "({ itemId, id, namespaceType, }: ", "GetExceptionListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -549,7 +549,7 @@ "signature": [ "({ comments, description, entries, itemId, meta, name, osTypes, tags, type, }: ", "CreateEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -589,7 +589,7 @@ "signature": [ "({ _version, comments, description, entries, id, itemId, meta, name, osTypes, tags, type, }: ", "UpdateEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -629,7 +629,7 @@ "signature": [ "({ itemId, id, }: ", "GetEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -787,7 +787,7 @@ "section": "def-server.CreateExceptionListItemOptions", "text": "CreateExceptionListItemOptions" }, - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -837,7 +837,7 @@ "section": "def-server.UpdateExceptionListItemOptions", "text": "UpdateExceptionListItemOptions" }, - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -881,7 +881,7 @@ "signature": [ "({ id, itemId, namespaceType, }: ", "DeleteExceptionListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -959,7 +959,7 @@ "signature": [ "({ id, itemId, }: ", "DeleteEndpointListItemOptions", - ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -997,7 +997,7 @@ "signature": [ "({ listId, filter, perPage, page, sortField, sortOrder, namespaceType, }: ", "FindExceptionListItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -1035,7 +1035,7 @@ "signature": [ "({ listId, filter, perPage, page, sortField, sortOrder, namespaceType, }: ", "FindExceptionListsItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -1073,7 +1073,7 @@ "signature": [ "({ perPage, page, sortField, sortOrder, valueListId, }: ", "FindValueListExceptionListsItems", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -1151,7 +1151,7 @@ "signature": [ "({ filter, perPage, page, sortField, sortOrder, }: ", "FindEndpointListItemOptions", - ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ data: { _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }[]; page: number; per_page: number; total: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", @@ -1277,7 +1277,7 @@ "signature": [ "({ id }: ", "GetListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1315,7 +1315,7 @@ "signature": [ "({ id, deserializer, immutable, serializer, name, description, type, meta, version, }: ", "CreateListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1353,7 +1353,7 @@ "signature": [ "({ id, deserializer, serializer, name, description, immutable, type, meta, version, }: ", "CreateListIfItDoesNotExistOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1751,7 +1751,7 @@ "signature": [ "({ id }: ", "DeleteListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1789,7 +1789,7 @@ "signature": [ "({ listId, value, type, }: ", "DeleteListItemByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1827,7 +1827,7 @@ "signature": [ "({ id }: ", "DeleteListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1903,7 +1903,7 @@ "signature": [ "({ deserializer, serializer, type, listId, stream, meta, version, }: ", "ImportListItemsToStreamOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1941,7 +1941,7 @@ "signature": [ "({ listId, value, type, }: ", "GetListItemByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -1979,7 +1979,7 @@ "signature": [ "({ id, deserializer, serializer, listId, value, type, meta, }: ", "CreateListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2017,7 +2017,7 @@ "signature": [ "({ _version, id, value, meta, }: ", "UpdateListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2055,7 +2055,7 @@ "signature": [ "({ _version, id, name, description, meta, version, }: ", "UpdateListOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2093,7 +2093,7 @@ "signature": [ "({ id }: ", "GetListItemOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2131,7 +2131,7 @@ "signature": [ "({ type, listId, value, }: ", "GetListItemsByValueOptions", - ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" + ") => Promise<{ _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2169,7 +2169,7 @@ "signature": [ "({ type, listId, value, }: ", "SearchListItemByValuesOptions", - ") => Promise<{ items: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]>" + ") => Promise<{ items: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2207,7 +2207,7 @@ "signature": [ "({ filter, currentIndexPosition, perPage, page, sortField, sortOrder, searchAfter, }: ", "FindListOptions", - ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" + ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; description: string; deserializer: string | undefined; id: string; immutable: boolean; meta: object | undefined; name: string; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2245,7 +2245,7 @@ "signature": [ "({ listId, filter, currentIndexPosition, perPage, page, sortField, sortOrder, searchAfter, }: ", "FindListItemOptions", - ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; } | null>" + ") => Promise<{ cursor: string; data: { _version: string | undefined; created_at: string; created_by: string; deserializer: string | undefined; id: string; list_id: string; meta: object | undefined; serializer: string | undefined; tie_breaker_id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; } | null>" ], "source": { "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", @@ -2316,7 +2316,7 @@ "label": "entries", "description": [], "signature": [ - "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", @@ -2877,7 +2877,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", @@ -3043,7 +3043,7 @@ "label": "entries", "description": [], "signature": [ - "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"date_range\" | \"ip_range\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"date\" | \"keyword\" | \"text\" | \"long\" | \"double\" | \"ip\" | \"date_nanos\" | \"ip_range\" | \"date_range\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"short\" | \"shape\" | \"float\" | \"half_float\" | \"integer\" | \"byte\" | \"long_range\" | \"integer_range\" | \"float_range\" | \"double_range\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]" ], "source": { "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", diff --git a/api_docs/management.mdx b/api_docs/management.mdx index fff52d8d9bf07..36cc53caa1b74 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -12,7 +12,7 @@ import managementObj from './management.json'; - +Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/maps.json b/api_docs/maps.json index 1171ccf406c56..71cfab6e7ba1d 100644 --- a/api_docs/maps.json +++ b/api_docs/maps.json @@ -427,9 +427,7 @@ "label": "_getFilters", "description": [], "signature": [ - "() => ", - "Filter", - "[]" + "() => any[]" ], "source": { "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", @@ -709,9 +707,7 @@ "label": "addFilters", "description": [], "signature": [ - "(filters: ", - "Filter", - "[], actionId?: string) => Promise" + "(filters: any[], actionId?: string) => Promise" ], "source": { "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", @@ -727,8 +723,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[]" + "any[]" ], "source": { "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", @@ -968,9 +963,7 @@ "label": "addFilters", "description": [], "signature": [ - "((filters: ", - "Filter", - "[], actionId: string) => Promise) | null" + "((filters: any[], actionId: string) => Promise) | null" ], "source": { "path": "x-pack/plugins/maps/public/classes/tooltips/tooltip_property.ts", diff --git a/api_docs/metrics_entities.json b/api_docs/metrics_entities.json index b78278a84162a..a5e6da4a47f6a 100644 --- a/api_docs/metrics_entities.json +++ b/api_docs/metrics_entities.json @@ -64,7 +64,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", diff --git a/api_docs/monitoring.json b/api_docs/monitoring.json index 17d4bc7eac006..5918561f10e14 100644 --- a/api_docs/monitoring.json +++ b/api_docs/monitoring.json @@ -96,7 +96,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", diff --git a/api_docs/observability.json b/api_docs/observability.json index 2680face23d92..c862a60d56971 100644 --- a/api_docs/observability.json +++ b/api_docs/observability.json @@ -3883,7 +3883,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 30c1673d360e9..bb0545f4adf87 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -12,7 +12,7 @@ import observabilityObj from './observability.json'; - +Contact Observability UI for questions regarding this plugin. **Code health stats** diff --git a/api_docs/reporting.json b/api_docs/reporting.json index b77e76a76ab00..328d872aa11f7 100644 --- a/api_docs/reporting.json +++ b/api_docs/reporting.json @@ -21,7 +21,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 63 + "lineNumber": 59 }, "deprecated": false, "children": [ @@ -37,7 +37,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 66 + "lineNumber": 62 }, "deprecated": false, "children": [ @@ -59,7 +59,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 66 + "lineNumber": 62 }, "deprecated": false, "isRequired": true @@ -79,7 +79,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 70 + "lineNumber": 66 }, "deprecated": false, "children": [ @@ -95,7 +95,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 70 + "lineNumber": 66 }, "deprecated": false, "isRequired": true @@ -115,7 +115,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 77 + "lineNumber": 73 }, "deprecated": false, "children": [ @@ -131,7 +131,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 77 + "lineNumber": 73 }, "deprecated": false, "isRequired": true @@ -151,7 +151,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 83 + "lineNumber": 79 }, "deprecated": false, "children": [ @@ -167,7 +167,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 83 + "lineNumber": 79 }, "deprecated": false, "isRequired": true @@ -189,7 +189,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 89 + "lineNumber": 85 }, "deprecated": false, "children": [ @@ -205,7 +205,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 89 + "lineNumber": 85 }, "deprecated": false, "isRequired": true @@ -222,7 +222,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 89 + "lineNumber": 85 }, "deprecated": false, "isRequired": true @@ -242,7 +242,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 104 + "lineNumber": 100 }, "deprecated": false, "children": [], @@ -256,11 +256,11 @@ "label": "getError", "description": [], "signature": [ - "(jobId: string) => Promise" + "(jobId: string) => Promise" ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 110 + "lineNumber": 106 }, "deprecated": false, "children": [ @@ -276,7 +276,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 110 + "lineNumber": 106 }, "deprecated": false, "isRequired": true @@ -298,7 +298,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 116 + "lineNumber": 120 }, "deprecated": false, "children": [ @@ -314,7 +314,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 116 + "lineNumber": 120 }, "deprecated": false, "isRequired": true @@ -336,7 +336,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 123 + "lineNumber": 127 }, "deprecated": false, "children": [ @@ -352,7 +352,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 123 + "lineNumber": 127 }, "deprecated": false, "isRequired": true @@ -372,7 +372,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 131 + "lineNumber": 135 }, "deprecated": false, "children": [ @@ -388,7 +388,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 131 + "lineNumber": 135 }, "deprecated": false, "isRequired": true @@ -405,7 +405,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 131 + "lineNumber": 135 }, "deprecated": false, "isRequired": true @@ -427,7 +427,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false, "children": [ @@ -443,7 +443,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false, "isRequired": true @@ -460,7 +460,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false, "isRequired": true @@ -480,7 +480,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 153 + "lineNumber": 157 }, "deprecated": false, "children": [], @@ -498,7 +498,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 156 + "lineNumber": 160 }, "deprecated": false, "children": [ @@ -514,7 +514,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 156 + "lineNumber": 160 }, "deprecated": false, "isRequired": true @@ -534,7 +534,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 159 + "lineNumber": 163 }, "deprecated": false, "children": [], @@ -552,7 +552,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 161 + "lineNumber": 165 }, "deprecated": false, "children": [], @@ -570,7 +570,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 167 + "lineNumber": 171 }, "deprecated": false, "children": [], @@ -588,7 +588,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 173 + "lineNumber": 177 }, "deprecated": false, "children": [], @@ -606,7 +606,7 @@ ], "source": { "path": "x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts", - "lineNumber": 179 + "lineNumber": 183 }, "deprecated": false, "children": [], diff --git a/api_docs/rule_registry.json b/api_docs/rule_registry.json index 9462f8712d139..7b69dea910833 100644 --- a/api_docs/rule_registry.json +++ b/api_docs/rule_registry.json @@ -638,7 +638,7 @@ "description": [], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 35 + "lineNumber": 36 }, "deprecated": false, "children": [ @@ -655,7 +655,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false, "children": [ @@ -668,7 +668,7 @@ "description": [], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false, "children": [ @@ -684,7 +684,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 36 + "lineNumber": 37 }, "deprecated": false } @@ -706,7 +706,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false, "children": [ @@ -719,7 +719,7 @@ "description": [], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false, "children": [ @@ -735,7 +735,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 37 + "lineNumber": 38 }, "deprecated": false } @@ -756,7 +756,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 38 + "lineNumber": 39 }, "deprecated": false, "children": [], @@ -774,7 +774,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 39 + "lineNumber": 40 }, "deprecated": false, "children": [ @@ -787,7 +787,7 @@ "description": [], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 39 + "lineNumber": 40 }, "deprecated": false, "children": [ @@ -803,7 +803,7 @@ ], "source": { "path": "x-pack/plugins/rule_registry/server/rule_data_client/types.ts", - "lineNumber": 39 + "lineNumber": 40 }, "deprecated": false } diff --git a/api_docs/security.json b/api_docs/security.json index 97605c3ca755a..1a7e3f5568f8d 100644 --- a/api_docs/security.json +++ b/api_docs/security.json @@ -1946,7 +1946,7 @@ "plugin": "actions", "link": { "path": "x-pack/plugins/actions/server/plugin.ts", - "lineNumber": 453 + "lineNumber": 458 } }, { @@ -2035,7 +2035,7 @@ "plugin": "actions", "link": { "path": "x-pack/plugins/actions/server/plugin.ts", - "lineNumber": 452 + "lineNumber": 457 } }, { diff --git a/api_docs/security_solution.json b/api_docs/security_solution.json index cc27e10835515..ca408f9deb3cb 100644 --- a/api_docs/security_solution.json +++ b/api_docs/security_solution.json @@ -309,7 +309,7 @@ "signature": [ "Pick<", "TGridModel", - ", \"columns\" | \"filters\" | \"title\" | \"id\" | \"sort\" | \"version\" | \"isLoading\" | \"savedObjectId\" | \"dateRange\" | \"deletedEventIds\" | \"excludedRowRendererIds\" | \"expandedDetail\" | \"graphEventId\" | \"kqlQuery\" | \"indexNames\" | \"isSelectAllChecked\" | \"itemsPerPage\" | \"itemsPerPageOptions\" | \"loadingEventIds\" | \"showCheckboxes\" | \"selectedEventIds\"> & { activeTab: ", + ", \"columns\" | \"filters\" | \"title\" | \"id\" | \"sort\" | \"version\" | \"isLoading\" | \"dateRange\" | \"savedObjectId\" | \"dataProviders\" | \"deletedEventIds\" | \"excludedRowRendererIds\" | \"expandedDetail\" | \"graphEventId\" | \"kqlQuery\" | \"indexNames\" | \"isSelectAllChecked\" | \"itemsPerPage\" | \"itemsPerPageOptions\" | \"loadingEventIds\" | \"showCheckboxes\" | \"selectedEventIds\"> & { activeTab: ", { "pluginId": "securitySolution", "scope": "common", @@ -325,9 +325,7 @@ "section": "def-common.TimelineTabs", "text": "TimelineTabs" }, - "; createdBy?: string | undefined; dataProviders: ", - "DataProvider", - "[]; description: string; eqlOptions: ", + "; createdBy?: string | undefined; description: string; eqlOptions: ", { "pluginId": "timelines", "scope": "common", @@ -359,7 +357,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts", - "lineNumber": 23 + "lineNumber": 22 }, "deprecated": false, "initialIsOpen": false @@ -540,7 +538,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 125 + "lineNumber": 129 }, "deprecated": false, "children": [ @@ -556,7 +554,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 141 + "lineNumber": 145 }, "deprecated": false, "children": [ @@ -579,7 +577,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 141 + "lineNumber": 145 }, "deprecated": false, "isRequired": true @@ -619,7 +617,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 153 + "lineNumber": 157 }, "deprecated": false, "children": [ @@ -652,7 +650,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 153 + "lineNumber": 157 }, "deprecated": false, "isRequired": true @@ -669,7 +667,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 153 + "lineNumber": 157 }, "deprecated": false, "isRequired": true @@ -699,7 +697,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 336 + "lineNumber": 341 }, "deprecated": false, "children": [ @@ -721,7 +719,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 336 + "lineNumber": 341 }, "deprecated": false, "isRequired": true @@ -738,7 +736,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 336 + "lineNumber": 341 }, "deprecated": false, "isRequired": true @@ -758,7 +756,7 @@ ], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 416 + "lineNumber": 429 }, "deprecated": false, "children": [], @@ -842,7 +840,7 @@ "description": [], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 121 + "lineNumber": 125 }, "deprecated": false, "children": [], @@ -858,7 +856,7 @@ "description": [], "source": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 124 + "lineNumber": 128 }, "deprecated": false, "children": [], @@ -17056,7 +17054,7 @@ "label": "renderRow", "description": [], "signature": [ - "({ browserFields, data, timelineId, }: { browserFields: Readonly>>; data: ", "Ecs", - "; timelineId: string; }) => React.ReactNode" + "; isDraggable: boolean; timelineId: string; }) => React.ReactNode" ], "source": { "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", @@ -17093,7 +17091,7 @@ }, ">>>; data: ", "Ecs", - "; timelineId: string; }" + "; isDraggable: boolean; timelineId: string; }" ], "source": { "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", @@ -17751,7 +17749,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 13 + "lineNumber": 15 }, "deprecated": false, "children": [ @@ -17773,7 +17771,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 14 + "lineNumber": 16 }, "deprecated": false }, @@ -17795,7 +17793,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false } @@ -17833,7 +17831,7 @@ "section": "def-common.TimelineEventsAllRequestOptions", "text": "TimelineEventsAllRequestOptions" }, - ", \"id\" | \"sort\" | \"fields\" | \"language\" | \"timerange\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"fieldRequested\" | \"excludeEcsData\">" + ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", @@ -18052,7 +18050,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 37 + "lineNumber": 39 }, "deprecated": false, "children": [ @@ -18068,7 +18066,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 38 + "lineNumber": 40 }, "deprecated": false }, @@ -18084,7 +18082,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 39 + "lineNumber": 41 }, "deprecated": false }, @@ -18100,7 +18098,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 40 + "lineNumber": 42 }, "deprecated": false }, @@ -18116,7 +18114,24 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 41 + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "securitySolution", + "id": "def-common.TimelineEventsAllRequestOptions.authFilter", + "type": "Object", + "tags": [], + "label": "authFilter", + "description": [], + "signature": [ + "JsonObject", + " | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "lineNumber": 44 }, "deprecated": false } @@ -18150,7 +18165,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 30 + "lineNumber": 32 }, "deprecated": false, "children": [ @@ -18173,7 +18188,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 31 + "lineNumber": 33 }, "deprecated": false }, @@ -18186,7 +18201,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 32 + "lineNumber": 34 }, "deprecated": false }, @@ -18202,7 +18217,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 33 + "lineNumber": 35 }, "deprecated": false }, @@ -18225,7 +18240,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 34 + "lineNumber": 36 }, "deprecated": false } @@ -18241,7 +18256,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 12 + "lineNumber": 14 }, "deprecated": false, "children": [ @@ -18257,7 +18272,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 13 + "lineNumber": 15 }, "deprecated": false }, @@ -18273,7 +18288,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 14 + "lineNumber": 16 }, "deprecated": false }, @@ -18286,7 +18301,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false }, @@ -18302,7 +18317,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 16 + "lineNumber": 18 }, "deprecated": false }, @@ -18318,7 +18333,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 18 + "lineNumber": 20 }, "deprecated": false }, @@ -18331,7 +18346,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 19 + "lineNumber": 21 }, "deprecated": false } @@ -18365,7 +18380,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false, "children": [ @@ -18378,7 +18393,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 29 + "lineNumber": 31 }, "deprecated": false }, @@ -18391,7 +18406,24 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 30 + "lineNumber": 32 + }, + "deprecated": false + }, + { + "parentPluginId": "securitySolution", + "id": "def-common.TimelineEventsDetailsRequestOptions.authFilter", + "type": "Object", + "tags": [], + "label": "authFilter", + "description": [], + "signature": [ + "JsonObject", + " | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "lineNumber": 33 }, "deprecated": false } @@ -18425,7 +18457,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 22 + "lineNumber": 24 }, "deprecated": false, "children": [ @@ -18448,7 +18480,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 23 + "lineNumber": 25 }, "deprecated": false }, @@ -18471,7 +18503,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 24 + "lineNumber": 26 }, "deprecated": false } @@ -18501,7 +18533,7 @@ "section": "def-common.TimelineRequestBasicOptions", "text": "TimelineRequestBasicOptions" }, - ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\">" + ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\">" ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", @@ -19012,7 +19044,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 18 + "lineNumber": 20 }, "deprecated": false, "children": [ @@ -19025,7 +19057,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 19 + "lineNumber": 21 }, "deprecated": false }, @@ -19041,7 +19073,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 20 + "lineNumber": 22 }, "deprecated": false }, @@ -19064,7 +19096,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 21 + "lineNumber": 23 }, "deprecated": false }, @@ -19080,7 +19112,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 22 + "lineNumber": 24 }, "deprecated": false } @@ -19218,7 +19250,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 25 + "lineNumber": 27 }, "deprecated": false, "children": [ @@ -19231,7 +19263,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 26 + "lineNumber": 28 }, "deprecated": false }, @@ -19247,7 +19279,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false } @@ -19373,8 +19405,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "x-pack/plugins/security_solution/common/types/timeline/store.ts", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 00953ef3bbee5..c61a6e7d8e28f 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -18,7 +18,7 @@ import securitySolutionObj from './security_solution.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1296 | 8 | 1245 | 28 | +| 1298 | 8 | 1247 | 27 | ## Client diff --git a/api_docs/spaces.json b/api_docs/spaces.json index cecc76168520f..7db86ee4786e2 100644 --- a/api_docs/spaces.json +++ b/api_docs/spaces.json @@ -1363,7 +1363,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 187 + "lineNumber": 191 } }, { @@ -2204,7 +2204,7 @@ "plugin": "securitySolution", "link": { "path": "x-pack/plugins/security_solution/server/plugin.ts", - "lineNumber": 187 + "lineNumber": 191 } } ] diff --git a/api_docs/telemetry_collection_manager.json b/api_docs/telemetry_collection_manager.json index 681e10bd3ffaa..8fecd9f54d513 100644 --- a/api_docs/telemetry_collection_manager.json +++ b/api_docs/telemetry_collection_manager.json @@ -86,7 +86,7 @@ "signature": [ "Pick<", "KibanaClient", - ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"helpers\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", + ", \"get\" | \"delete\" | \"create\" | \"index\" | \"update\" | \"closePointInTime\" | \"count\" | \"search\" | \"security\" | \"eql\" | \"on\" | \"off\" | \"transform\" | \"helpers\" | \"emit\" | \"once\" | \"asyncSearch\" | \"autoscaling\" | \"bulk\" | \"cat\" | \"ccr\" | \"clearScroll\" | \"cluster\" | \"danglingIndices\" | \"dataFrameTransformDeprecated\" | \"deleteByQuery\" | \"deleteByQueryRethrottle\" | \"deleteScript\" | \"enrich\" | \"exists\" | \"existsSource\" | \"explain\" | \"features\" | \"fieldCaps\" | \"fleet\" | \"getScript\" | \"getScriptContext\" | \"getScriptLanguages\" | \"getSource\" | \"graph\" | \"ilm\" | \"indices\" | \"info\" | \"ingest\" | \"license\" | \"logstash\" | \"mget\" | \"migration\" | \"ml\" | \"monitoring\" | \"msearch\" | \"msearchTemplate\" | \"mtermvectors\" | \"nodes\" | \"openPointInTime\" | \"ping\" | \"putScript\" | \"rankEval\" | \"reindex\" | \"reindexRethrottle\" | \"renderSearchTemplate\" | \"rollup\" | \"scriptsPainlessExecute\" | \"scroll\" | \"searchShards\" | \"searchTemplate\" | \"searchableSnapshots\" | \"shutdown\" | \"slm\" | \"snapshot\" | \"sql\" | \"ssl\" | \"tasks\" | \"termsEnum\" | \"termvectors\" | \"textStructure\" | \"updateByQuery\" | \"updateByQueryRethrottle\" | \"watcher\" | \"xpack\"> & { transport: { request(params: ", "TransportRequestParams", ", options?: ", "TransportRequestOptions", diff --git a/api_docs/timelines.json b/api_docs/timelines.json index 6ce01a8cadfb8..321ebb422a3a3 100644 --- a/api_docs/timelines.json +++ b/api_docs/timelines.json @@ -15,7 +15,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/components/drag_and_drop/helpers.ts", - "lineNumber": 160 + "lineNumber": 159 }, "deprecated": false, "children": [ @@ -31,7 +31,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/components/drag_and_drop/helpers.ts", - "lineNumber": 160 + "lineNumber": 159 }, "deprecated": false, "isRequired": true @@ -605,7 +605,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/components/drag_and_drop/helpers.ts", - "lineNumber": 210 + "lineNumber": 209 }, "deprecated": false, "children": [ @@ -621,7 +621,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/components/drag_and_drop/helpers.ts", - "lineNumber": 210 + "lineNumber": 209 }, "deprecated": false, "isRequired": true @@ -1258,7 +1258,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/store/t_grid/reducer.ts", - "lineNumber": 53 + "lineNumber": 55 }, "deprecated": false, "returnComment": [], @@ -1820,9 +1820,7 @@ "section": "def-common.ColumnHeaderOptions", "text": "ColumnHeaderOptions" }, - "[]; filters?: ", - "Filter", - "[] | undefined; title: string; id: string; sort: ", + "[]; filters?: any[] | undefined; title: string; id: string; sort: ", { "pluginId": "timelines", "scope": "common", @@ -1830,7 +1828,15 @@ "section": "def-common.SortColumnTimeline", "text": "SortColumnTimeline" }, - "[]; version: string | null; isLoading: boolean; savedObjectId: string | null; dateRange: { start: string; end: string; }; deletedEventIds: string[]; excludedRowRendererIds: ", + "[]; version: string | null; isLoading: boolean; dateRange: { start: string; end: string; }; savedObjectId: string | null; dataProviders: ", + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.DataProvider", + "text": "DataProvider" + }, + "[]; deletedEventIds: string[]; excludedRowRendererIds: ", { "pluginId": "timelines", "scope": "common", @@ -1866,7 +1872,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/store/t_grid/model.ts", - "lineNumber": 82 + "lineNumber": 84 }, "deprecated": false, "initialIsOpen": false @@ -1919,7 +1925,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 23 + "lineNumber": 27 }, "deprecated": false, "children": [ @@ -1936,7 +1942,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 24 + "lineNumber": 28 }, "deprecated": false, "returnComment": [], @@ -1960,7 +1966,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 25 + "lineNumber": 29 }, "deprecated": false, "returnComment": [], @@ -1977,7 +1983,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 26 + "lineNumber": 30 }, "deprecated": false } @@ -1995,7 +2001,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 29 + "lineNumber": 33 }, "deprecated": false, "returnComment": [], @@ -2017,7 +2023,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 30 + "lineNumber": 34 }, "deprecated": false, "returnComment": [], @@ -2034,7 +2040,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 30 + "lineNumber": 34 }, "deprecated": false } @@ -2056,7 +2062,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 31 + "lineNumber": 35 }, "deprecated": false, "returnComment": [], @@ -2073,7 +2079,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 31 + "lineNumber": 35 }, "deprecated": false } @@ -2095,7 +2101,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 32 + "lineNumber": 36 }, "deprecated": false, "returnComment": [], @@ -2114,7 +2120,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 32 + "lineNumber": 36 }, "deprecated": false } @@ -2135,7 +2141,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 33 + "lineNumber": 37 }, "deprecated": false, "returnComment": [], @@ -2155,7 +2161,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 34 + "lineNumber": 38 }, "deprecated": false, "returnComment": [], @@ -2176,7 +2182,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 35 + "lineNumber": 39 }, "deprecated": false, "returnComment": [], @@ -2198,7 +2204,7 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 38 + "lineNumber": 42 }, "deprecated": false, "returnComment": [], @@ -2218,7 +2224,46 @@ ], "source": { "path": "x-pack/plugins/timelines/public/types.ts", - "lineNumber": 38 + "lineNumber": 42 + }, + "deprecated": false + } + ] + }, + { + "parentPluginId": "timelines", + "id": "def-public.TimelinesUIStart.getAddToCaseAction", + "type": "Function", + "tags": [], + "label": "getAddToCaseAction", + "description": [], + "signature": [ + "(props: ", + "AddToCaseActionProps", + ") => React.ReactElement<", + "AddToCaseActionProps", + ">" + ], + "source": { + "path": "x-pack/plugins/timelines/public/types.ts", + "lineNumber": 43 + }, + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "timelines", + "id": "def-public.props", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "AddToCaseActionProps" + ], + "source": { + "path": "x-pack/plugins/timelines/public/types.ts", + "lineNumber": 43 }, "deprecated": false } @@ -2245,7 +2290,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/server/types.ts", - "lineNumber": 12 + "lineNumber": 13 }, "deprecated": false, "children": [], @@ -2261,7 +2306,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/server/types.ts", - "lineNumber": 14 + "lineNumber": 15 }, "deprecated": false, "children": [], @@ -6219,7 +6264,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 80 + "lineNumber": 84 }, "deprecated": false, "children": [ @@ -6235,7 +6280,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 81 + "lineNumber": 85 }, "deprecated": false }, @@ -6251,7 +6296,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 82 + "lineNumber": 86 }, "deprecated": false }, @@ -6267,7 +6312,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 83 + "lineNumber": 87 }, "deprecated": false }, @@ -6283,7 +6328,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 84 + "lineNumber": 88 }, "deprecated": false }, @@ -6299,7 +6344,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 85 + "lineNumber": 89 }, "deprecated": false }, @@ -6315,7 +6360,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 86 + "lineNumber": 90 }, "deprecated": false }, @@ -6331,7 +6376,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 87 + "lineNumber": 91 }, "deprecated": false }, @@ -6347,7 +6392,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 88 + "lineNumber": 92 }, "deprecated": false }, @@ -6363,7 +6408,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 89 + "lineNumber": 93 }, "deprecated": false }, @@ -6379,7 +6424,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 90 + "lineNumber": 94 }, "deprecated": false }, @@ -6395,7 +6440,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 91 + "lineNumber": 95 }, "deprecated": false } @@ -6947,7 +6992,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 106 + "lineNumber": 110 }, "deprecated": false, "children": [ @@ -6963,7 +7008,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 107 + "lineNumber": 111 }, "deprecated": false }, @@ -6979,7 +7024,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 108 + "lineNumber": 112 }, "deprecated": false }, @@ -6995,7 +7040,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 109 + "lineNumber": 113 }, "deprecated": false }, @@ -7011,7 +7056,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 110 + "lineNumber": 114 }, "deprecated": false }, @@ -7027,7 +7072,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 111 + "lineNumber": 115 }, "deprecated": false }, @@ -7050,7 +7095,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 112 + "lineNumber": 116 }, "deprecated": false }, @@ -7073,7 +7118,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 113 + "lineNumber": 117 }, "deprecated": false }, @@ -7096,7 +7141,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 114 + "lineNumber": 118 }, "deprecated": false } @@ -7277,7 +7322,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 163 + "lineNumber": 167 }, "deprecated": false, "children": [ @@ -7293,7 +7338,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 164 + "lineNumber": 168 }, "deprecated": false }, @@ -7309,7 +7354,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 165 + "lineNumber": 169 }, "deprecated": false } @@ -7440,7 +7485,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 117 + "lineNumber": 121 }, "deprecated": false, "children": [ @@ -7456,7 +7501,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 118 + "lineNumber": 122 }, "deprecated": false }, @@ -7472,7 +7517,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 119 + "lineNumber": 123 }, "deprecated": false }, @@ -7488,7 +7533,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 120 + "lineNumber": 124 }, "deprecated": false }, @@ -7504,7 +7549,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 121 + "lineNumber": 125 }, "deprecated": false }, @@ -7520,7 +7565,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 122 + "lineNumber": 126 }, "deprecated": false } @@ -8183,7 +8228,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 125 + "lineNumber": 129 }, "deprecated": false, "children": [ @@ -8199,7 +8244,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 126 + "lineNumber": 130 }, "deprecated": false }, @@ -8215,7 +8260,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 127 + "lineNumber": 131 }, "deprecated": false }, @@ -8231,7 +8276,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 128 + "lineNumber": 132 }, "deprecated": false }, @@ -8247,7 +8292,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 129 + "lineNumber": 133 }, "deprecated": false }, @@ -8263,7 +8308,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 130 + "lineNumber": 134 }, "deprecated": false }, @@ -8279,7 +8324,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 131 + "lineNumber": 135 }, "deprecated": false }, @@ -8295,7 +8340,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 132 + "lineNumber": 136 }, "deprecated": false }, @@ -8311,7 +8356,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 133 + "lineNumber": 137 }, "deprecated": false }, @@ -8327,7 +8372,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 134 + "lineNumber": 138 }, "deprecated": false }, @@ -8343,7 +8388,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 135 + "lineNumber": 139 }, "deprecated": false }, @@ -8359,7 +8404,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 136 + "lineNumber": 140 }, "deprecated": false } @@ -8567,7 +8612,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 139 + "lineNumber": 143 }, "deprecated": false, "children": [ @@ -8583,7 +8628,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 140 + "lineNumber": 144 }, "deprecated": false }, @@ -8606,7 +8651,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 141 + "lineNumber": 145 }, "deprecated": false }, @@ -8622,7 +8667,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 142 + "lineNumber": 146 }, "deprecated": false }, @@ -8638,7 +8683,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 143 + "lineNumber": 147 }, "deprecated": false }, @@ -8654,7 +8699,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 144 + "lineNumber": 148 }, "deprecated": false }, @@ -8670,7 +8715,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 145 + "lineNumber": 149 }, "deprecated": false }, @@ -8686,7 +8731,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 146 + "lineNumber": 150 }, "deprecated": false } @@ -9621,7 +9666,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 158 + "lineNumber": 162 }, "deprecated": false, "children": [ @@ -9637,7 +9682,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 159 + "lineNumber": 163 }, "deprecated": false }, @@ -9653,7 +9698,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 160 + "lineNumber": 164 }, "deprecated": false } @@ -9976,7 +10021,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 94 + "lineNumber": 98 }, "deprecated": false, "children": [ @@ -9992,7 +10037,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 95 + "lineNumber": 99 }, "deprecated": false }, @@ -10008,7 +10053,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 97 + "lineNumber": 101 }, "deprecated": false }, @@ -10024,7 +10069,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 99 + "lineNumber": 103 }, "deprecated": false }, @@ -10040,7 +10085,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 101 + "lineNumber": 105 }, "deprecated": false }, @@ -10056,7 +10101,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 103 + "lineNumber": 107 }, "deprecated": false } @@ -10309,7 +10354,7 @@ "label": "renderRow", "description": [], "signature": [ - "({ browserFields, data, timelineId, }: { browserFields: Readonly>>; data: ", "Ecs", - "; timelineId: string; }) => React.ReactNode" + "; isDraggable: boolean; timelineId: string; }) => React.ReactNode" ], "source": { "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", @@ -10346,7 +10391,7 @@ }, ">>>; data: ", "Ecs", - "; timelineId: string; }" + "; isDraggable: boolean; timelineId: string; }" ], "source": { "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", @@ -10420,7 +10465,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 149 + "lineNumber": 153 }, "deprecated": false, "children": [ @@ -10443,7 +10488,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 150 + "lineNumber": 154 }, "deprecated": false } @@ -10498,7 +10543,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 153 + "lineNumber": 157 }, "deprecated": false, "children": [ @@ -10521,7 +10566,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 154 + "lineNumber": 158 }, "deprecated": false }, @@ -10537,7 +10582,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 155 + "lineNumber": 159 }, "deprecated": false } @@ -10797,7 +10842,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 168 + "lineNumber": 172 }, "deprecated": false, "children": [ @@ -10813,7 +10858,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 169 + "lineNumber": 173 }, "deprecated": false }, @@ -10829,7 +10874,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 170 + "lineNumber": 174 }, "deprecated": false } @@ -10845,7 +10890,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 13 + "lineNumber": 15 }, "deprecated": false, "children": [ @@ -10867,7 +10912,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 14 + "lineNumber": 16 }, "deprecated": false }, @@ -10889,7 +10934,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false } @@ -10927,7 +10972,7 @@ "section": "def-common.TimelineEventsAllRequestOptions", "text": "TimelineEventsAllRequestOptions" }, - ", \"id\" | \"sort\" | \"fields\" | \"language\" | \"timerange\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"fieldRequested\" | \"excludeEcsData\">" + ", \"id\" | \"sort\" | \"fields\" | \"timerange\" | \"language\" | \"defaultIndex\" | \"pagination\" | \"filterQuery\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\" | \"fieldRequested\" | \"excludeEcsData\" | \"authFilter\">" ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", @@ -11146,7 +11191,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 37 + "lineNumber": 39 }, "deprecated": false, "children": [ @@ -11162,7 +11207,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 38 + "lineNumber": 40 }, "deprecated": false }, @@ -11178,7 +11223,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 39 + "lineNumber": 41 }, "deprecated": false }, @@ -11194,7 +11239,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 40 + "lineNumber": 42 }, "deprecated": false }, @@ -11210,7 +11255,24 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 41 + "lineNumber": 43 + }, + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.TimelineEventsAllRequestOptions.authFilter", + "type": "Object", + "tags": [], + "label": "authFilter", + "description": [], + "signature": [ + "JsonObject", + " | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "lineNumber": 44 }, "deprecated": false } @@ -11244,7 +11306,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 30 + "lineNumber": 32 }, "deprecated": false, "children": [ @@ -11267,7 +11329,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 31 + "lineNumber": 33 }, "deprecated": false }, @@ -11280,7 +11342,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 32 + "lineNumber": 34 }, "deprecated": false }, @@ -11296,7 +11358,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 33 + "lineNumber": 35 }, "deprecated": false }, @@ -11319,7 +11381,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 34 + "lineNumber": 36 }, "deprecated": false } @@ -11335,7 +11397,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 12 + "lineNumber": 14 }, "deprecated": false, "children": [ @@ -11351,7 +11413,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 13 + "lineNumber": 15 }, "deprecated": false }, @@ -11367,7 +11429,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 14 + "lineNumber": 16 }, "deprecated": false }, @@ -11380,7 +11442,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 15 + "lineNumber": 17 }, "deprecated": false }, @@ -11396,7 +11458,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 16 + "lineNumber": 18 }, "deprecated": false }, @@ -11412,7 +11474,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 18 + "lineNumber": 20 }, "deprecated": false }, @@ -11425,7 +11487,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 19 + "lineNumber": 21 }, "deprecated": false } @@ -11459,7 +11521,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false, "children": [ @@ -11472,7 +11534,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 29 + "lineNumber": 31 }, "deprecated": false }, @@ -11485,7 +11547,24 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 30 + "lineNumber": 32 + }, + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.TimelineEventsDetailsRequestOptions.authFilter", + "type": "Object", + "tags": [], + "label": "authFilter", + "description": [], + "signature": [ + "JsonObject", + " | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "lineNumber": 33 }, "deprecated": false } @@ -11519,7 +11598,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 22 + "lineNumber": 24 }, "deprecated": false, "children": [ @@ -11542,7 +11621,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 23 + "lineNumber": 25 }, "deprecated": false }, @@ -11565,7 +11644,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", - "lineNumber": 24 + "lineNumber": 26 }, "deprecated": false } @@ -11595,7 +11674,7 @@ "section": "def-common.TimelineRequestBasicOptions", "text": "TimelineRequestBasicOptions" }, - ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\">" + ", \"id\" | \"params\" | \"defaultIndex\" | \"docValueFields\" | \"factoryQueryType\" | \"indexType\" | \"entityType\" | \"alertConsumers\">" ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", @@ -11732,7 +11811,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 173 + "lineNumber": 177 }, "deprecated": false, "children": [ @@ -11755,7 +11834,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 174 + "lineNumber": 178 }, "deprecated": false }, @@ -11778,7 +11857,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 175 + "lineNumber": 179 }, "deprecated": false }, @@ -11794,7 +11873,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 176 + "lineNumber": 180 }, "deprecated": false }, @@ -11817,7 +11896,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 177 + "lineNumber": 181 }, "deprecated": false }, @@ -11833,7 +11912,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 178 + "lineNumber": 182 }, "deprecated": false }, @@ -11856,7 +11935,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 179 + "lineNumber": 183 }, "deprecated": false }, @@ -11879,7 +11958,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 180 + "lineNumber": 184 }, "deprecated": false }, @@ -11895,7 +11974,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 181 + "lineNumber": 185 }, "deprecated": false }, @@ -11918,7 +11997,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 182 + "lineNumber": 186 }, "deprecated": false }, @@ -11934,7 +12013,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 183 + "lineNumber": 187 }, "deprecated": false }, @@ -11950,7 +12029,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 184 + "lineNumber": 188 }, "deprecated": false }, @@ -11966,7 +12045,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 185 + "lineNumber": 189 }, "deprecated": false }, @@ -11982,7 +12061,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 186 + "lineNumber": 190 }, "deprecated": false }, @@ -12005,7 +12084,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 187 + "lineNumber": 191 }, "deprecated": false }, @@ -12028,7 +12107,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 188 + "lineNumber": 192 }, "deprecated": false }, @@ -12044,7 +12123,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 189 + "lineNumber": 193 }, "deprecated": false }, @@ -12067,7 +12146,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 190 + "lineNumber": 194 }, "deprecated": false }, @@ -12090,7 +12169,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 191 + "lineNumber": 195 }, "deprecated": false } @@ -12106,7 +12185,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 18 + "lineNumber": 20 }, "deprecated": false, "children": [ @@ -12119,7 +12198,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 19 + "lineNumber": 21 }, "deprecated": false }, @@ -12135,7 +12214,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 20 + "lineNumber": 22 }, "deprecated": false }, @@ -12158,7 +12237,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 21 + "lineNumber": 23 }, "deprecated": false }, @@ -12174,7 +12253,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 22 + "lineNumber": 24 }, "deprecated": false } @@ -12312,7 +12391,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 25 + "lineNumber": 27 }, "deprecated": false, "children": [ @@ -12325,7 +12404,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 26 + "lineNumber": 28 }, "deprecated": false }, @@ -12341,7 +12420,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", - "lineNumber": 27 + "lineNumber": 29 }, "deprecated": false } @@ -12467,8 +12546,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "x-pack/plugins/timelines/common/types/timeline/store.ts", @@ -12687,7 +12765,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 38 + "lineNumber": 40 }, "deprecated": false, "children": [ @@ -12709,7 +12787,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 39 + "lineNumber": 41 }, "deprecated": false }, @@ -12737,7 +12815,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 40 + "lineNumber": 42 }, "deprecated": false }, @@ -12753,7 +12831,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 41 + "lineNumber": 43 }, "deprecated": false }, @@ -12770,7 +12848,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 42 + "lineNumber": 44 }, "deprecated": false }, @@ -12793,7 +12871,47 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 43 + "lineNumber": 45 + }, + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.TimelineRequestBasicOptions.entityType", + "type": "CompoundType", + "tags": [], + "label": "entityType", + "description": [], + "signature": [ + { + "pluginId": "timelines", + "scope": "common", + "docId": "kibTimelinesPluginApi", + "section": "def-common.EntityType", + "text": "EntityType" + }, + " | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", + "lineNumber": 46 + }, + "deprecated": false + }, + { + "parentPluginId": "timelines", + "id": "def-common.TimelineRequestBasicOptions.alertConsumers", + "type": "Array", + "tags": [], + "label": "alertConsumers", + "description": [], + "signature": [ + "ALERTS_CONSUMERS", + "[] | undefined" + ], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", + "lineNumber": 47 }, "deprecated": false } @@ -12826,7 +12944,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 50 + "lineNumber": 54 }, "deprecated": false, "children": [ @@ -12842,7 +12960,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 52 + "lineNumber": 56 }, "deprecated": false }, @@ -12865,7 +12983,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 53 + "lineNumber": 57 }, "deprecated": false } @@ -12899,7 +13017,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 46 + "lineNumber": 50 }, "deprecated": false, "children": [ @@ -12912,7 +13030,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 47 + "lineNumber": 51 }, "deprecated": false } @@ -13640,6 +13758,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "timelines", + "id": "def-common.EntityType", + "type": "Enum", + "tags": [], + "label": "EntityType", + "description": [], + "source": { + "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "lineNumber": 20 + }, + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "timelines", "id": "def-common.FlowDirection", @@ -13649,7 +13781,7 @@ "description": [], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 194 + "lineNumber": 198 }, "deprecated": false, "initialIsOpen": false @@ -15481,7 +15613,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 36 + "lineNumber": 38 }, "deprecated": false, "initialIsOpen": false @@ -15787,7 +15919,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 68 + "lineNumber": 72 }, "deprecated": false, "initialIsOpen": false @@ -15868,7 +16000,7 @@ ], "source": { "path": "x-pack/plugins/timelines/common/search_strategy/timeline/index.ts", - "lineNumber": 56 + "lineNumber": 60 }, "deprecated": false, "initialIsOpen": false diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 6e48be17ba601..78b00340cc544 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -18,7 +18,7 @@ import timelinesObj from './timelines.json'; | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 882 | 6 | 763 | 25 | +| 889 | 6 | 770 | 26 | ## Client diff --git a/api_docs/triggers_actions_ui.json b/api_docs/triggers_actions_ui.json index 1c7b699984873..ef489c8ef2f96 100644 --- a/api_docs/triggers_actions_ui.json +++ b/api_docs/triggers_actions_ui.json @@ -2175,9 +2175,9 @@ "ActionTypeModel", "; register: (objectType: ", "ActionTypeModel", - ") => void; list: () => ", + ") => void; has: (id: string) => boolean; list: () => ", "ActionTypeModel", - "[]; has: (id: string) => boolean; }" + "[]; }" ], "source": { "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", @@ -2209,7 +2209,7 @@ "section": "def-public.AlertTypeModel", "text": "AlertTypeModel" }, - ">) => void; list: () => ", + ">) => void; has: (id: string) => boolean; list: () => ", { "pluginId": "triggersActionsUi", "scope": "public", @@ -2217,7 +2217,7 @@ "section": "def-public.AlertTypeModel", "text": "AlertTypeModel" }, - ">[]; has: (id: string) => boolean; }" + ">[]; }" ], "source": { "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", @@ -2447,9 +2447,9 @@ "ActionTypeModel", "; register: (objectType: ", "ActionTypeModel", - ") => void; list: () => ", + ") => void; has: (id: string) => boolean; list: () => ", "ActionTypeModel", - "[]; has: (id: string) => boolean; }" + "[]; }" ], "source": { "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", @@ -2591,7 +2591,7 @@ "section": "def-public.AlertTypeModel", "text": "AlertTypeModel" }, - ">) => void; list: () => ", + ">) => void; has: (id: string) => boolean; list: () => ", { "pluginId": "triggersActionsUi", "scope": "public", @@ -2599,7 +2599,7 @@ "section": "def-public.AlertTypeModel", "text": "AlertTypeModel" }, - ">[]; has: (id: string) => boolean; }" + ">[]; }" ], "source": { "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", diff --git a/api_docs/visualizations.json b/api_docs/visualizations.json index 4bc734b27d487..c29cbdf4719c1 100644 --- a/api_docs/visualizations.json +++ b/api_docs/visualizations.json @@ -1416,6 +1416,107 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "visualizations", + "id": "def-public.prepareLogTable", + "type": "Function", + "tags": [], + "label": "prepareLogTable", + "description": [], + "signature": [ + "(datatable: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ", dimensions: ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Dimension", + "text": "Dimension" + }, + "[]) => { columns: { meta: { dimensionName: string | undefined; type: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumnType", + "text": "DatatableColumnType" + }, + "; field?: string | undefined; index?: string | undefined; params?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined; source?: string | undefined; sourceParams?: ", + "SerializableState", + " | undefined; }; id: string; name: string; }[]; type: \"datatable\"; rows: Record[]; }" + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-public.prepareLogTable.$1", + "type": "Object", + "tags": [], + "label": "datatable", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-public.prepareLogTable.$2", + "type": "Array", + "tags": [], + "label": "dimensions", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Dimension", + "text": "Dimension" + }, + "[]" + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-public.updateOldState", @@ -2959,9 +3060,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => ", - "RangeFilter", - " | undefined; getBounds: () => ", + " | undefined) => any; getBounds: () => ", { "pluginId": "data", "scope": "common", @@ -4124,13 +4223,12 @@ { "parentPluginId": "visualizations", "id": "def-public.VisualizeInput.query", - "type": "Object", + "type": "Any", "tags": [], "label": "query", "description": [], "signature": [ - "Query", - " | undefined" + "any" ], "source": { "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", @@ -4146,8 +4244,7 @@ "label": "filters", "description": [], "signature": [ - "Filter", - "[] | undefined" + "any[] | undefined" ], "source": { "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.ts", @@ -4218,7 +4315,7 @@ "; format: { id?: string | undefined; params: Record; }; }" ], "source": { - "path": "src/plugins/visualizations/public/expression_functions/vis_dimension.ts", + "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", "lineNumber": 23 }, "deprecated": false, @@ -5292,7 +5389,239 @@ }, "common": { "classes": [], - "functions": [], + "functions": [ + { + "parentPluginId": "visualizations", + "id": "def-common.prepareLogTable", + "type": "Function", + "tags": [], + "label": "prepareLogTable", + "description": [], + "signature": [ + "(datatable: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ", dimensions: ", + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Dimension", + "text": "Dimension" + }, + "[]) => { columns: { meta: { dimensionName: string | undefined; type: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumnType", + "text": "DatatableColumnType" + }, + "; field?: string | undefined; index?: string | undefined; params?: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "> | undefined; source?: string | undefined; sourceParams?: ", + "SerializableState", + " | undefined; }; id: string; name: string; }[]; type: \"datatable\"; rows: Record[]; }" + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.prepareLogTable.$1", + "type": "Object", + "tags": [], + "label": "datatable", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.prepareLogTable.$2", + "type": "Array", + "tags": [], + "label": "dimensions", + "description": [], + "signature": [ + { + "pluginId": "visualizations", + "scope": "common", + "docId": "kibVisualizationsPluginApi", + "section": "def-common.Dimension", + "text": "Dimension" + }, + "[]" + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 22 + }, + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.range", + "type": "Function", + "tags": [], + "label": "range", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"range\", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + " | null, Arguments, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Range", + "text": "Range" + }, + ", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" + ], + "source": { + "path": "src/plugins/visualizations/common/expression_functions/range.ts", + "lineNumber": 17 + }, + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.visDimension", + "type": "Function", + "tags": [], + "label": "visDimension", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" + }, + "<\"visdimension\", ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ", Arguments, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"vis_dimension\", { accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: { id?: string | undefined; params: Record; }; }>, ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" + }, + "<", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" + }, + ", ", + "SerializableState", + ">>" + ], + "source": { + "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", + "lineNumber": 34 + }, + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], "interfaces": [ { "parentPluginId": "visualizations", @@ -5538,7 +5867,66 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "visualizations", + "id": "def-common.Dimension", + "type": "Type", + "tags": [], + "label": "Dimension", + "description": [], + "signature": [ + "[", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionValueBoxed", + "text": "ExpressionValueBoxed" + }, + "<\"vis_dimension\", { accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: { id?: string | undefined; params: Record; }; }>[] | undefined, string]" + ], + "source": { + "path": "src/plugins/visualizations/common/prepare_log_table.ts", + "lineNumber": 12 + }, + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.ExpressionValueVisDimension", + "type": "Type", + "tags": [], + "label": "ExpressionValueVisDimension", + "description": [], + "signature": [ + "{ type: \"vis_dimension\"; } & { accessor: number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "; format: { id?: string | undefined; params: Record; }; }" + ], + "source": { + "path": "src/plugins/visualizations/common/expression_functions/vis_dimension.ts", + "lineNumber": 23 + }, + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index a7dab0c029cc8..4686c5b64f936 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -18,7 +18,7 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 247 | 13 | 229 | 12 | +| 257 | 14 | 239 | 12 | ## Client @@ -48,6 +48,12 @@ Contact [Kibana App](https://github.com/orgs/elastic/teams/kibana-app) for quest ## Common +### Functions + + ### Interfaces +### Consts, variables and types + + diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index ba594b1f312e9..1548669b1c060 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -6,7 +6,7 @@ NOTE: node scripts/build_plugin_list_docs - You can update the template within node_modules/@kbn/dev-utils/target/plugin_list/generate_plugin_list.js + You can update the template within node_modules/@kbn/dev-utils/target_node/plugin_list/generate_plugin_list.js //// diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md new file mode 100644 index 0000000000000..528be67f029c6 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) > [isSingleNamespaceType](./kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md) + +## SavedObjectMigrationContext.isSingleNamespaceType property + +Whether this is a single-namespace type or not + +Signature: + +```typescript +readonly isSingleNamespaceType: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md index c8a291e502845..21ca234fde185 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md @@ -17,6 +17,7 @@ export interface SavedObjectMigrationContext | Property | Type | Description | | --- | --- | --- | | [convertToMultiNamespaceTypeVersion](./kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md) | string | The version in which this object type is being converted to a multi-namespace type | +| [isSingleNamespaceType](./kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md) | boolean | Whether this is a single-namespace type or not | | [log](./kibana-plugin-core-server.savedobjectmigrationcontext.log.md) | SavedObjectsMigrationLogger | logger instance to be used by the migration handler | | [migrationVersion](./kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md) | string | The migration version that this migration function is defined for | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md index a3914a54decb3..c6135d9313b23 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.castestokbnfieldtypename.md @@ -4,10 +4,13 @@ ## castEsToKbnFieldTypeName variable -Get the KbnFieldType name for an esType string +> Warning: This API is now obsolete. +> +> Import from the "@kbn/field-types" package directly instead. 8.0 +> Signature: ```typescript -castEsToKbnFieldTypeName: (esType: ES_FIELD_TYPES | string) => KBN_FIELD_TYPES +castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_field_types.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_field_types.md deleted file mode 100644 index 61929355decc2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.es_field_types.md +++ /dev/null @@ -1,54 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ES\_FIELD\_TYPES](./kibana-plugin-plugins-data-public.es_field_types.md) - -## ES\_FIELD\_TYPES enum - -\* - -Signature: - -```typescript -export declare enum ES_FIELD_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| \_ID | "_id" | | -| \_INDEX | "_index" | | -| \_SOURCE | "_source" | | -| \_TYPE | "_type" | | -| ATTACHMENT | "attachment" | | -| BOOLEAN | "boolean" | | -| BYTE | "byte" | | -| DATE | "date" | | -| DATE\_NANOS | "date_nanos" | | -| DATE\_RANGE | "date_range" | | -| DOUBLE | "double" | | -| DOUBLE\_RANGE | "double_range" | | -| FLOAT | "float" | | -| FLOAT\_RANGE | "float_range" | | -| GEO\_POINT | "geo_point" | | -| GEO\_SHAPE | "geo_shape" | | -| HALF\_FLOAT | "half_float" | | -| HISTOGRAM | "histogram" | | -| INTEGER | "integer" | | -| INTEGER\_RANGE | "integer_range" | | -| IP | "ip" | | -| IP\_RANGE | "ip_range" | | -| KEYWORD | "keyword" | | -| LONG | "long" | | -| LONG\_RANGE | "long_range" | | -| MURMUR3 | "murmur3" | | -| NESTED | "nested" | | -| OBJECT | "object" | | -| SCALED\_FLOAT | "scaled_float" | | -| SHORT | "short" | | -| STRING | "string" | | -| TEXT | "text" | | -| TOKEN\_COUNT | "token_count" | | -| UNSIGNED\_LONG | "unsigned_long" | | -| VERSION | "version" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md index ee04b37bb153c..c13f6e951be98 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.esfilters.md @@ -20,18 +20,18 @@ esFilters: { FILTERS: typeof import("@kbn/es-query").FILTERS; FilterStateStore: typeof FilterStateStore; buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: any[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; + buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: any, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; + buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isPhraseFilter: (filter: any) => filter is import("@kbn/es-query").PhraseFilter; - isExistsFilter: (filter: any) => filter is import("@kbn/es-query").ExistsFilter; - isPhrasesFilter: (filter: any) => filter is import("@kbn/es-query").PhrasesFilter; - isRangeFilter: (filter: any) => filter is import("@kbn/es-query").RangeFilter; - isMatchAllFilter: (filter: any) => filter is import("@kbn/es-query").MatchAllFilter; - isMissingFilter: (filter: any) => filter is import("@kbn/es-query").MissingFilter; - isQueryStringFilter: (filter: any) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; + isPhraseFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhraseFilter; + isExistsFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").ExistsFilter; + isPhrasesFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhrasesFilter; + isRangeFilter: (filter?: import("@kbn/es-query").ExistsFilter | import("@kbn/es-query").GeoPolygonFilter | import("@kbn/es-query").PhrasesFilter | import("@kbn/es-query").PhraseFilter | import("@kbn/es-query").MatchAllFilter | import("@kbn/es-query").MissingFilter | import("@kbn/es-query").RangeFilter | import("@kbn/es-query").GeoBoundingBoxFilter | undefined) => filter is import("@kbn/es-query").RangeFilter; + isMatchAllFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MatchAllFilter; + isMissingFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MissingFilter; + isQueryStringFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; isFilterPinned: (filter: import("@kbn/es-query").Filter) => boolean | undefined; toggleFilterNegated: (filter: import("@kbn/es-query").Filter) => { meta: { @@ -46,7 +46,9 @@ esFilters: { params?: any; value?: string | undefined; }; - $state?: import("@kbn/es-query").FilterState | undefined; + $state?: { + store: FilterStateStore; + } | undefined; query?: any; }; disableFilter: (filter: import("@kbn/es-query").Filter) => import("@kbn/es-query").Filter; diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md index 57ea5bab6e8c3..66effff722f3b 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getkbntypenames.md @@ -4,9 +4,10 @@ ## getKbnTypeNames variable -Get the esTypes known by all kbnFieldTypes - - {Array} +> Warning: This API is now obsolete. +> +> Import from the "@kbn/field-types" package directly instead. 8.0 +> Signature: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kbn_field_types.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kbn_field_types.md deleted file mode 100644 index 521ceeb1e37f2..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.kbn_field_types.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [KBN\_FIELD\_TYPES](./kibana-plugin-plugins-data-public.kbn_field_types.md) - -## KBN\_FIELD\_TYPES enum - -\* - -Signature: - -```typescript -export declare enum KBN_FIELD_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| \_SOURCE | "_source" | | -| ATTACHMENT | "attachment" | | -| BOOLEAN | "boolean" | | -| CONFLICT | "conflict" | | -| DATE | "date" | | -| DATE\_RANGE | "date_range" | | -| GEO\_POINT | "geo_point" | | -| GEO\_SHAPE | "geo_shape" | | -| HISTOGRAM | "histogram" | | -| IP | "ip" | | -| IP\_RANGE | "ip_range" | | -| MISSING | "missing" | | -| MURMUR3 | "murmur3" | | -| NESTED | "nested" | | -| NUMBER | "number" | | -| NUMBER\_RANGE | "number_range" | | -| OBJECT | "object" | | -| STRING | "string" | | -| UNKNOWN | "unknown" | | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md index 37af5ea226086..49c9d1d143e6b 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md @@ -30,9 +30,7 @@ | Enumeration | Description | | --- | --- | | [BUCKET\_TYPES](./kibana-plugin-plugins-data-public.bucket_types.md) | | -| [ES\_FIELD\_TYPES](./kibana-plugin-plugins-data-public.es_field_types.md) | \* | | [IndexPatternType](./kibana-plugin-plugins-data-public.indexpatterntype.md) | | -| [KBN\_FIELD\_TYPES](./kibana-plugin-plugins-data-public.kbn_field_types.md) | \* | | [METRIC\_TYPES](./kibana-plugin-plugins-data-public.metric_types.md) | | | [QuerySuggestionTypes](./kibana-plugin-plugins-data-public.querysuggestiontypes.md) | | | [SearchSessionState](./kibana-plugin-plugins-data-public.searchsessionstate.md) | Possible state that current session can be in | @@ -107,7 +105,7 @@ | [AggGroupNames](./kibana-plugin-plugins-data-public.agggroupnames.md) | | | [APPLY\_FILTER\_TRIGGER](./kibana-plugin-plugins-data-public.apply_filter_trigger.md) | | | [baseFormattersPublic](./kibana-plugin-plugins-data-public.baseformatterspublic.md) | | -| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-public.castestokbnfieldtypename.md) | Get the KbnFieldType name for an esType string | +| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-public.castestokbnfieldtypename.md) | | | [connectToQueryState](./kibana-plugin-plugins-data-public.connecttoquerystate.md) | Helper to setup two-way syncing of global data and a state container | | [createSavedQueryService](./kibana-plugin-plugins-data-public.createsavedqueryservice.md) | | | [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-public.es_search_strategy.md) | | @@ -120,7 +118,7 @@ | [fieldList](./kibana-plugin-plugins-data-public.fieldlist.md) | | | [FilterItem](./kibana-plugin-plugins-data-public.filteritem.md) | | | [FilterLabel](./kibana-plugin-plugins-data-public.filterlabel.md) | | -| [getKbnTypeNames](./kibana-plugin-plugins-data-public.getkbntypenames.md) | Get the esTypes known by all kbnFieldTypes {Array} | +| [getKbnTypeNames](./kibana-plugin-plugins-data-public.getkbntypenames.md) | | | [INDEX\_PATTERN\_SAVED\_OBJECT\_TYPE](./kibana-plugin-plugins-data-public.index_pattern_saved_object_type.md) | \* | | [indexPatterns](./kibana-plugin-plugins-data-public.indexpatterns.md) | | | [injectSearchSourceReferences](./kibana-plugin-plugins-data-public.injectsearchsourcereferences.md) | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.buildqueryfromfilters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.buildqueryfromfilters.md index 90fdb471d6280..fba0d9fe62c78 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.buildqueryfromfilters.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.buildqueryfromfilters.md @@ -6,7 +6,7 @@ > Warning: This API is now obsolete. > -> Please import from the package kbn/es-query directly. This import will be deprecated in v8.0.0. +> Please import from the package kbn/es-query directly. This import will be removed in v8.0.0. > Signature: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md index ea009601acdff..834fe302ad9f8 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.castestokbnfieldtypename.md @@ -4,10 +4,13 @@ ## castEsToKbnFieldTypeName variable -Get the KbnFieldType name for an esType string +> Warning: This API is now obsolete. +> +> Import from the "@kbn/field-types" package directly instead. 8.0 +> Signature: ```typescript -castEsToKbnFieldTypeName: (esType: ES_FIELD_TYPES | string) => KBN_FIELD_TYPES +castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES ``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_field_types.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_field_types.md deleted file mode 100644 index 5061e3e97a346..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.es_field_types.md +++ /dev/null @@ -1,54 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ES\_FIELD\_TYPES](./kibana-plugin-plugins-data-server.es_field_types.md) - -## ES\_FIELD\_TYPES enum - -\* - -Signature: - -```typescript -export declare enum ES_FIELD_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| \_ID | "_id" | | -| \_INDEX | "_index" | | -| \_SOURCE | "_source" | | -| \_TYPE | "_type" | | -| ATTACHMENT | "attachment" | | -| BOOLEAN | "boolean" | | -| BYTE | "byte" | | -| DATE | "date" | | -| DATE\_NANOS | "date_nanos" | | -| DATE\_RANGE | "date_range" | | -| DOUBLE | "double" | | -| DOUBLE\_RANGE | "double_range" | | -| FLOAT | "float" | | -| FLOAT\_RANGE | "float_range" | | -| GEO\_POINT | "geo_point" | | -| GEO\_SHAPE | "geo_shape" | | -| HALF\_FLOAT | "half_float" | | -| HISTOGRAM | "histogram" | | -| INTEGER | "integer" | | -| INTEGER\_RANGE | "integer_range" | | -| IP | "ip" | | -| IP\_RANGE | "ip_range" | | -| KEYWORD | "keyword" | | -| LONG | "long" | | -| LONG\_RANGE | "long_range" | | -| MURMUR3 | "murmur3" | | -| NESTED | "nested" | | -| OBJECT | "object" | | -| SCALED\_FLOAT | "scaled_float" | | -| SHORT | "short" | | -| STRING | "string" | | -| TEXT | "text" | | -| TOKEN\_COUNT | "token_count" | | -| UNSIGNED\_LONG | "unsigned_long" | | -| VERSION | "version" | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md index b807fe7d66369..b37d0555194fc 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esfilters.md @@ -13,8 +13,8 @@ esFilters: { buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; buildFilter: typeof import("@kbn/es-query").buildFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: any, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: any[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; + buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; + buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; isFilterDisabled: (filter: import("@kbn/es-query").Filter) => boolean; } diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md index 5c736f40cdbf4..6d8383ead501f 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.esqueryconfig.md @@ -6,7 +6,7 @@ > Warning: This API is now obsolete. > -> Please import from the package kbn/es-query directly. This import will be deprecated in v8.0.0. +> Please import from the package kbn/es-query directly. This import will be removed in v8.0.0. > Signature: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md index f46ff36277d93..e7f3777cd2d3f 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.filter.md @@ -6,7 +6,7 @@ > Warning: This API is now obsolete. > -> Please import from the package kbn/es-query directly. This import will be deprecated in v8.0.0. +> Please import from the package kbn/es-query directly. This import will be removed in v8.0.0. > Signature: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md index e8e872577b46b..07a59d41fb0a3 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldsubtype.md @@ -6,7 +6,7 @@ > Warning: This API is now obsolete. > -> Please import from the package kbn/es-query directly. This import will be deprecated in v8.0.0. +> Please import from the package kbn/es-query directly. This import will be removed in v8.0.0. > Signature: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kbn_field_types.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kbn_field_types.md deleted file mode 100644 index 40fa872ff0fc6..0000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kbn_field_types.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [KBN\_FIELD\_TYPES](./kibana-plugin-plugins-data-server.kbn_field_types.md) - -## KBN\_FIELD\_TYPES enum - -\* - -Signature: - -```typescript -export declare enum KBN_FIELD_TYPES -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| \_SOURCE | "_source" | | -| ATTACHMENT | "attachment" | | -| BOOLEAN | "boolean" | | -| CONFLICT | "conflict" | | -| DATE | "date" | | -| DATE\_RANGE | "date_range" | | -| GEO\_POINT | "geo_point" | | -| GEO\_SHAPE | "geo_shape" | | -| HISTOGRAM | "histogram" | | -| IP | "ip" | | -| IP\_RANGE | "ip_range" | | -| MISSING | "missing" | | -| MURMUR3 | "murmur3" | | -| NESTED | "nested" | | -| NUMBER | "number" | | -| NUMBER\_RANGE | "number_range" | | -| OBJECT | "object" | | -| STRING | "string" | | -| UNKNOWN | "unknown" | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md index a5c14ee8627b1..28d64cf9e17da 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.kuerynode.md @@ -6,7 +6,7 @@ > Warning: This API is now obsolete. > -> Please import from the package kbn/es-query directly. This import will be deprecated in v8.0.0. +> Please import from the package kbn/es-query directly. This import will be removed in v8.0.0. > Signature: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md index ea0a6f8c64be0..755fa33bfe506 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md @@ -22,8 +22,6 @@ | Enumeration | Description | | --- | --- | | [BUCKET\_TYPES](./kibana-plugin-plugins-data-server.bucket_types.md) | | -| [ES\_FIELD\_TYPES](./kibana-plugin-plugins-data-server.es_field_types.md) | \* | -| [KBN\_FIELD\_TYPES](./kibana-plugin-plugins-data-server.kbn_field_types.md) | \* | | [METRIC\_TYPES](./kibana-plugin-plugins-data-server.metric_types.md) | | ## Functions @@ -74,7 +72,7 @@ | [AggGroupLabels](./kibana-plugin-plugins-data-server.agggrouplabels.md) | | | [AggGroupNames](./kibana-plugin-plugins-data-server.agggroupnames.md) | | | [buildQueryFromFilters](./kibana-plugin-plugins-data-server.buildqueryfromfilters.md) | | -| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-server.castestokbnfieldtypename.md) | Get the KbnFieldType name for an esType string | +| [castEsToKbnFieldTypeName](./kibana-plugin-plugins-data-server.castestokbnfieldtypename.md) | | | [config](./kibana-plugin-plugins-data-server.config.md) | | | [ES\_SEARCH\_STRATEGY](./kibana-plugin-plugins-data-server.es_search_strategy.md) | | | [esFilters](./kibana-plugin-plugins-data-server.esfilters.md) | | diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index f3ca30eb860e8..23f79c1bbb480 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -514,6 +514,10 @@ Shows the Timelion tutorial to users when they first open the Timelion app. Used for calculating automatic intervals in visualizations, this is the number of buckets to try to represent. +[[timelion-legacyChartsLibrary]]`timelion:legacyChartsLibrary`:: +Enables the legacy charts library for timelion charts in Visualize. + + [float] [[kibana-visualization-settings]] ==== Visualization diff --git a/docs/user/alerting/alerting-setup.asciidoc b/docs/user/alerting/alerting-setup.asciidoc index 2ae5160069f0a..4cd26dbc13e4d 100644 --- a/docs/user/alerting/alerting-setup.asciidoc +++ b/docs/user/alerting/alerting-setup.asciidoc @@ -18,6 +18,7 @@ If you are using an *on-premises* Elastic Stack deployment: If you are using an *on-premises* Elastic Stack deployment with <>: * You must enable Transport Layer Security (TLS) for communication <>. {kib} alerting uses <> to secure background rule checks and actions, and API keys require {ref}/configuring-tls.html#tls-http[TLS on the HTTP interface]. A proxy will not suffice. +* If you have enabled TLS and are still unable to access Alerting, ensure that you have not {ref}/security-settings.html#api-key-service-settings[explicitly disabled API keys]. [float] [[alerting-setup-production]] diff --git a/examples/state_containers_examples/public/with_data_services/app.tsx b/examples/state_containers_examples/public/with_data_services/app.tsx index 88c193d1533b7..a26b28f3cf9f3 100644 --- a/examples/state_containers_examples/public/with_data_services/app.tsx +++ b/examples/state_containers_examples/public/with_data_services/app.tsx @@ -26,7 +26,7 @@ import { DataPublicPluginStart, esFilters, Filter, - IIndexPattern, + IndexPattern, Query, QueryState, syncQueryStateWithUrl, @@ -127,7 +127,7 @@ export const App = ({ }; function useIndexPattern(data: DataPublicPluginStart) { - const [indexPattern, setIndexPattern] = useState(); + const [indexPattern, setIndexPattern] = useState(); useEffect(() => { const fetchIndexPattern = async () => { const defaultIndexPattern = await data.indexPatterns.getDefault(); diff --git a/package.json b/package.json index f7e178ab46fc0..f018a580706e8 100644 --- a/package.json +++ b/package.json @@ -130,6 +130,7 @@ "@kbn/config-schema": "link:bazel-bin/packages/kbn-config-schema", "@kbn/crypto": "link:bazel-bin/packages/kbn-crypto", "@kbn/es-query": "link:bazel-bin/packages/kbn-es-query", + "@kbn/field-types": "link:bazel-bin/packages/kbn-field-types", "@kbn/i18n": "link:bazel-bin/packages/kbn-i18n", "@kbn/interpreter": "link:bazel-bin/packages/kbn-interpreter", "@kbn/io-ts-utils": "link:bazel-bin/packages/kbn-io-ts-utils", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 778a7c7a0f2d4..fcadedf8630f1 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -25,6 +25,7 @@ filegroup( "//packages/kbn-eslint-import-resolver-kibana:build", "//packages/kbn-eslint-plugin-eslint:build", "//packages/kbn-expect:build", + "//packages/kbn-field-types:build", "//packages/kbn-i18n:build", "//packages/kbn-interpreter:build", "//packages/kbn-io-ts-utils:build", diff --git a/packages/elastic-eslint-config-kibana/.eslintrc.js b/packages/elastic-eslint-config-kibana/.eslintrc.js index d3cf7cf964a60..1b3e852e5a502 100644 --- a/packages/elastic-eslint-config-kibana/.eslintrc.js +++ b/packages/elastic-eslint-config-kibana/.eslintrc.js @@ -1,4 +1,4 @@ -const { USES_STYLED_COMPONENTS } = require('@kbn/dev-utils'); +const { USES_STYLED_COMPONENTS } = require('@kbn/babel-preset/styled_components_files'); module.exports = { extends: [ diff --git a/packages/elastic-eslint-config-kibana/BUILD.bazel b/packages/elastic-eslint-config-kibana/BUILD.bazel index 1745d919acdaa..628b3a8bf173c 100644 --- a/packages/elastic-eslint-config-kibana/BUILD.bazel +++ b/packages/elastic-eslint-config-kibana/BUILD.bazel @@ -25,6 +25,7 @@ NPM_MODULE_EXTRA_FILES = [ ] DEPS = [ + "//packages/kbn-babel-preset", "//packages/kbn-dev-utils", "@npm//eslint-config-prettier", "@npm//semver", diff --git a/packages/kbn-apm-config-loader/.babelrc b/packages/kbn-apm-config-loader/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-apm-config-loader/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-apm-config-loader/BUILD.bazel b/packages/kbn-apm-config-loader/BUILD.bazel index 09a121d71575c..2ace393bcc4a3 100644 --- a/packages/kbn-apm-config-loader/BUILD.bazel +++ b/packages/kbn-apm-config-loader/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-apm-config-loader" PKG_REQUIRE_NAME = "@kbn/apm-config-loader" @@ -25,7 +26,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/elastic-safer-lodash-set", "//packages/kbn-utils", "@npm//js-yaml", @@ -33,13 +34,19 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/elastic-safer-lodash-set", + "//packages/kbn-utils", "@npm//@types/jest", "@npm//@types/js-yaml", "@npm//@types/lodash", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -50,14 +57,15 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - incremental = True, - out_dir = "target", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -66,7 +74,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-apm-config-loader/package.json b/packages/kbn-apm-config-loader/package.json index c096ed2efb92a..cdd4c62b9b8d4 100644 --- a/packages/kbn-apm-config-loader/package.json +++ b/packages/kbn-apm-config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@kbn/apm-config-loader", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0", "private": true diff --git a/packages/kbn-apm-config-loader/tsconfig.json b/packages/kbn-apm-config-loader/tsconfig.json index aa34b05061600..314c7969b3f94 100644 --- a/packages/kbn-apm-config-loader/tsconfig.json +++ b/packages/kbn-apm-config-loader/tsconfig.json @@ -1,14 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "outDir": "./target", - "stripInternal": false, "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "./target_types", "rootDir": "./src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-apm-config-loader/src", + "stripInternal": false, "types": [ "jest", "node" diff --git a/packages/kbn-babel-preset/BUILD.bazel b/packages/kbn-babel-preset/BUILD.bazel index 11eae8bc55ca9..0aff32f584c66 100644 --- a/packages/kbn-babel-preset/BUILD.bazel +++ b/packages/kbn-babel-preset/BUILD.bazel @@ -8,6 +8,7 @@ SOURCE_FILES = glob([ "common_preset.js", "istanbul_preset.js", "node_preset.js", + "styled_components_files.js", "webpack_preset.js", ]) diff --git a/packages/kbn-babel-preset/styled_components_files.js b/packages/kbn-babel-preset/styled_components_files.js new file mode 100644 index 0000000000000..feff76605f457 --- /dev/null +++ b/packages/kbn-babel-preset/styled_components_files.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + /** + * Synchronized regex list of files that use `styled-components`. + * Used by `kbn-babel-preset` and `elastic-eslint-config-kibana`. + */ + USES_STYLED_COMPONENTS: [ + /packages[\/\\]kbn-ui-shared-deps[\/\\]/, + /src[\/\\]plugins[\/\\](data|kibana_react)[\/\\]/, + /x-pack[\/\\]plugins[\/\\](apm|beats_management|cases|fleet|infra|lists|observability|osquery|security_solution|timelines|uptime)[\/\\]/, + /x-pack[\/\\]test[\/\\]plugin_functional[\/\\]plugins[\/\\]resolver_test[\/\\]/, + ], +}; diff --git a/packages/kbn-babel-preset/webpack_preset.js b/packages/kbn-babel-preset/webpack_preset.js index 186ce87478828..0c949eae5b55b 100644 --- a/packages/kbn-babel-preset/webpack_preset.js +++ b/packages/kbn-babel-preset/webpack_preset.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -const { USES_STYLED_COMPONENTS } = require.resolve('@kbn/dev-utils'); +const { USES_STYLED_COMPONENTS } = require.resolve('./styled_components_files'); module.exports = () => { return { diff --git a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts index 3471e69846226..8937eadfa4ee3 100644 --- a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts +++ b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts @@ -34,8 +34,8 @@ const { DevServer } = jest.requireMock('./dev_server'); jest.mock('./base_path_proxy_server'); const { BasePathProxyServer } = jest.requireMock('./base_path_proxy_server'); -jest.mock('@kbn/dev-utils/target/ci_stats_reporter'); -const { CiStatsReporter } = jest.requireMock('@kbn/dev-utils/target/ci_stats_reporter'); +jest.mock('@kbn/dev-utils/ci_stats_reporter'); +const { CiStatsReporter } = jest.requireMock('@kbn/dev-utils/ci_stats_reporter'); jest.mock('./get_server_watch_paths', () => ({ getServerWatchPaths: jest.fn(() => ({ diff --git a/packages/kbn-common-utils/.babelrc b/packages/kbn-common-utils/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-common-utils/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-common-utils/BUILD.bazel b/packages/kbn-common-utils/BUILD.bazel index 0244684973353..699f65da408f5 100644 --- a/packages/kbn-common-utils/BUILD.bazel +++ b/packages/kbn-common-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-common-utils" PKG_REQUIRE_NAME = "@kbn/common-utils" @@ -23,18 +24,23 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-config-schema", - "@npm//load-json-file", "@npm//tslib", ] TYPES_DEPS = [ + "//packages/kbn-config-schema", + "@npm//tslib", "@npm//@types/jest", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -45,14 +51,15 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - incremental = True, - out_dir = "target", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -61,7 +68,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-common-utils/package.json b/packages/kbn-common-utils/package.json index db99f4d6afb98..a9679c2f0fb18 100644 --- a/packages/kbn-common-utils/package.json +++ b/packages/kbn-common-utils/package.json @@ -1,8 +1,7 @@ { "name": "@kbn/common-utils", - "main": "./target/index.js", - "browser": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0", "private": true diff --git a/packages/kbn-common-utils/tsconfig.json b/packages/kbn-common-utils/tsconfig.json index 98f1b30c0d7ff..7d1ecaa10a234 100644 --- a/packages/kbn-common-utils/tsconfig.json +++ b/packages/kbn-common-utils/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "outDir": "target", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "target_types", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-common-utils/src", "types": [ diff --git a/packages/kbn-crypto/BUILD.bazel b/packages/kbn-crypto/BUILD.bazel index bf1ed3f778975..7419145f62888 100644 --- a/packages/kbn-crypto/BUILD.bazel +++ b/packages/kbn-crypto/BUILD.bazel @@ -28,7 +28,6 @@ NPM_MODULE_EXTRA_FILES = [ SRC_DEPS = [ "//packages/kbn-dev-utils", - "@npm//jest-styled-components", "@npm//node-forge", ] diff --git a/packages/kbn-crypto/tsconfig.json b/packages/kbn-crypto/tsconfig.json index a9f18fde1bba0..8b7be5e8a3c9b 100644 --- a/packages/kbn-crypto/tsconfig.json +++ b/packages/kbn-crypto/tsconfig.json @@ -7,7 +7,11 @@ "declarationMap": true, "rootDir": "src", "sourceMap": true, - "sourceRoot": "../../../../packages/kbn-crypto/src" + "sourceRoot": "../../../../packages/kbn-crypto/src", + "types": [ + "jest", + "node" + ] }, "include": ["src/**/*"] } diff --git a/packages/kbn-dev-utils/.babelrc b/packages/kbn-dev-utils/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-dev-utils/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-dev-utils/BUILD.bazel b/packages/kbn-dev-utils/BUILD.bazel index 7c9beafc711ee..65935a0d73868 100644 --- a/packages/kbn-dev-utils/BUILD.bazel +++ b/packages/kbn-dev-utils/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-dev-utils" PKG_REQUIRE_NAME = "@kbn/dev-utils" @@ -41,21 +42,18 @@ NPM_MODULE_EXTRA_FILES = [ "tooling_log/package.json" ] -SRC_DEPS = [ - "//packages/kbn-expect", +RUNTIME_DEPS = [ "//packages/kbn-std", "//packages/kbn-utils", "@npm//@babel/core", "@npm//axios", "@npm//chalk", - "@npm//chance", "@npm//cheerio", "@npm//dedent", "@npm//execa", "@npm//exit-hook", "@npm//getopts", "@npm//globby", - "@npm//jest-styled-components", "@npm//load-json-file", "@npm//markdown-it", "@npm//moment", @@ -63,13 +61,19 @@ SRC_DEPS = [ "@npm//rxjs", "@npm//tar", "@npm//tree-kill", - "@npm//tslib", - "@npm//typescript", "@npm//vinyl", "@npm//yauzl" ] TYPES_DEPS = [ + "//packages/kbn-std", + "//packages/kbn-utils", + "@npm//axios", + "@npm//execa", + "@npm//exit-hook", + "@npm//getopts", + "@npm//rxjs", + "@npm//tree-kill", "@npm//@types/babel__core", "@npm//@types/cheerio", "@npm//@types/dedent", @@ -85,7 +89,11 @@ TYPES_DEPS = [ "@npm//@types/yauzl" ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -96,14 +104,15 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - incremental = True, - out_dir = "target", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -112,7 +121,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-dev-utils/ci_stats_reporter/package.json b/packages/kbn-dev-utils/ci_stats_reporter/package.json index a4f86a9239e31..e20bd531a77ef 100644 --- a/packages/kbn-dev-utils/ci_stats_reporter/package.json +++ b/packages/kbn-dev-utils/ci_stats_reporter/package.json @@ -1,3 +1,4 @@ { - "main": "../target/ci_stats_reporter/ci_stats_reporter" + "main": "../target_node/ci_stats_reporter/ci_stats_reporter", + "types": "../target_types/ci_stats_reporter/ci_stats_reporter" } \ No newline at end of file diff --git a/packages/kbn-dev-utils/package.json b/packages/kbn-dev-utils/package.json index 90c5ef17d1859..9d6e6dde86fac 100644 --- a/packages/kbn-dev-utils/package.json +++ b/packages/kbn-dev-utils/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "kibana": { "devOnly": true } diff --git a/packages/kbn-dev-utils/src/babel.ts b/packages/kbn-dev-utils/src/babel.ts index 5570055a21d15..9daa7d9fe8d7a 100644 --- a/packages/kbn-dev-utils/src/babel.ts +++ b/packages/kbn-dev-utils/src/babel.ts @@ -46,14 +46,3 @@ export async function transformFileWithBabel(file: File) { file.extname = '.js'; transformedFiles.add(file); } - -/** - * Synchronized regex list of files that use `styled-components`. - * Used by `kbn-babel-preset` and `elastic-eslint-config-kibana`. - */ -export const USES_STYLED_COMPONENTS = [ - /packages[\/\\]kbn-ui-shared-deps[\/\\]/, - /src[\/\\]plugins[\/\\](data|kibana_react)[\/\\]/, - /x-pack[\/\\]plugins[\/\\](apm|beats_management|cases|fleet|infra|lists|observability|osquery|security_solution|timelines|uptime)[\/\\]/, - /x-pack[\/\\]test[\/\\]plugin_functional[\/\\]plugins[\/\\]resolver_test[\/\\]/, -]; diff --git a/packages/kbn-dev-utils/src/run/flags.ts b/packages/kbn-dev-utils/src/run/flags.ts index e8f915ae73326..822ac261d4908 100644 --- a/packages/kbn-dev-utils/src/run/flags.ts +++ b/packages/kbn-dev-utils/src/run/flags.ts @@ -9,6 +9,7 @@ import getopts from 'getopts'; import { RunOptions } from './run'; +import { LOG_LEVEL_FLAGS, DEFAULT_LOG_LEVEL } from '../tooling_log/log_levels'; export interface Flags { verbose: boolean; @@ -52,12 +53,18 @@ export function mergeFlagOptions(global: FlagOptions = {}, local: FlagOptions = }; } -export function getFlags(argv: string[], flagOptions: RunOptions['flags'] = {}): Flags { +export function getFlags( + argv: string[], + flagOptions: RunOptions['flags'] = {}, + defaultLogLevel: string = DEFAULT_LOG_LEVEL +): Flags { const unexpectedNames = new Set(); + const logLevelFlags = LOG_LEVEL_FLAGS.map((f) => f.name).filter((f) => f !== defaultLogLevel); + const { verbose, quiet, silent, debug, help, _, ...others } = getopts(argv, { string: flagOptions.string, - boolean: [...(flagOptions.boolean || []), 'verbose', 'quiet', 'silent', 'debug', 'help'], + boolean: [...(flagOptions.boolean || []), ...logLevelFlags, 'help'], alias: { ...flagOptions.alias, v: 'verbose', diff --git a/packages/kbn-dev-utils/src/run/help.ts b/packages/kbn-dev-utils/src/run/help.ts index ea197d1813086..0da4e8146d198 100644 --- a/packages/kbn-dev-utils/src/run/help.ts +++ b/packages/kbn-dev-utils/src/run/help.ts @@ -13,13 +13,10 @@ import 'core-js/features/string/repeat'; import dedent from 'dedent'; import { Command } from './run_with_commands'; +import { getLogLevelFlagsHelp } from '../tooling_log/log_levels'; const DEFAULT_GLOBAL_USAGE = `node ${Path.relative(process.cwd(), process.argv[1])}`; export const GLOBAL_FLAGS = dedent` - --verbose, -v Log verbosely - --debug Log debug messages (less than verbose) - --quiet Only log errors - --silent Don't log anything --help Show this message `; @@ -39,12 +36,18 @@ export function getHelp({ description, usage, flagHelp, + defaultLogLevel, }: { description?: string; usage?: string; flagHelp?: string; + defaultLogLevel?: string; }) { - const optionHelp = joinAndTrimLines(dedent(flagHelp || ''), GLOBAL_FLAGS); + const optionHelp = joinAndTrimLines( + dedent(flagHelp || ''), + getLogLevelFlagsHelp(defaultLogLevel), + GLOBAL_FLAGS + ); return ` ${dedent(usage || '') || DEFAULT_GLOBAL_USAGE} diff --git a/packages/kbn-dev-utils/src/run/run.ts b/packages/kbn-dev-utils/src/run/run.ts index 3e82763cb5124..d5cba180d5099 100644 --- a/packages/kbn-dev-utils/src/run/run.ts +++ b/packages/kbn-dev-utils/src/run/run.ts @@ -31,11 +31,12 @@ export interface RunOptions { } export async function run(fn: RunFn, options: RunOptions = {}) { - const flags = getFlags(process.argv.slice(2), options.flags); + const flags = getFlags(process.argv.slice(2), options.flags, options.log?.defaultLevel); const helpText = getHelp({ description: options.description, usage: options.usage, flagHelp: options.flags?.help, + defaultLogLevel: options.log?.defaultLevel, }); const log = new ToolingLog({ diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts b/packages/kbn-dev-utils/src/tooling_log/log_levels.ts index 3870b938c8f8e..c6653c5ed1a90 100644 --- a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts +++ b/packages/kbn-dev-utils/src/tooling_log/log_levels.ts @@ -7,6 +7,7 @@ */ const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose'] as const; +export const DEFAULT_LOG_LEVEL = 'info' as const; export type LogLevel = typeof LEVELS[number]; export function pickLevelFromFlags( @@ -15,9 +16,39 @@ export function pickLevelFromFlags( ) { if (flags.verbose) return 'verbose'; if (flags.debug) return 'debug'; + if (flags.info) return 'info'; if (flags.quiet) return 'error'; if (flags.silent) return 'silent'; - return options.default || 'info'; + return options.default || DEFAULT_LOG_LEVEL; +} + +export const LOG_LEVEL_FLAGS = [ + { + name: 'verbose', + help: '--verbose, -v Log verbosely', + }, + { + name: 'info', + help: "--info Don't log debug messages", + }, + { + name: 'debug', + help: '--debug Log debug messages (less than verbose)', + }, + { + name: 'quiet', + help: '--quiet Only log errors', + }, + { + name: 'silent', + help: "--silent Don't log anything", + }, +]; + +export function getLogLevelFlagsHelp(defaultLogLevel: string = DEFAULT_LOG_LEVEL) { + return LOG_LEVEL_FLAGS.filter(({ name }) => name !== defaultLogLevel) + .map(({ help }) => help) + .join('\n'); } export type ParsedLogLevel = ReturnType; diff --git a/packages/kbn-dev-utils/stdio/package.json b/packages/kbn-dev-utils/stdio/package.json index 415ab0e6de316..9aa2d96e19f3f 100644 --- a/packages/kbn-dev-utils/stdio/package.json +++ b/packages/kbn-dev-utils/stdio/package.json @@ -1,3 +1,4 @@ { - "main": "../target/stdio" + "main": "../target_node/stdio", + "types": "../target_types/stdio" } \ No newline at end of file diff --git a/packages/kbn-dev-utils/tooling_log/package.json b/packages/kbn-dev-utils/tooling_log/package.json index 51ee1a38b873e..711a55b9ba335 100644 --- a/packages/kbn-dev-utils/tooling_log/package.json +++ b/packages/kbn-dev-utils/tooling_log/package.json @@ -1,3 +1,4 @@ { - "main": "../target/tooling_log" + "main": "../target_node/tooling_log", + "types": "../target_types/tooling_log" } \ No newline at end of file diff --git a/packages/kbn-dev-utils/tsconfig.json b/packages/kbn-dev-utils/tsconfig.json index 5bb7bd0424daf..56843918d88b1 100644 --- a/packages/kbn-dev-utils/tsconfig.json +++ b/packages/kbn-dev-utils/tsconfig.json @@ -1,15 +1,16 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "outDir": "target", - "stripInternal": false, - "target": "ES2019", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-dev-utils/src", + "stripInternal": false, + "target": "ES2019", "types": [ "jest", "node" diff --git a/packages/kbn-es-query/.babelrc b/packages/kbn-es-query/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-es-query/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-es-query/.babelrc.browser b/packages/kbn-es-query/.babelrc.browser new file mode 100644 index 0000000000000..dc6a77bbe0bcd --- /dev/null +++ b/packages/kbn-es-query/.babelrc.browser @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/webpack_preset"] +} diff --git a/packages/kbn-es-query/BUILD.bazel b/packages/kbn-es-query/BUILD.bazel index 9639a1057cac3..7d6e2b4683b9b 100644 --- a/packages/kbn-es-query/BUILD.bazel +++ b/packages/kbn-es-query/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@npm//peggy:index.bzl", "peggy") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-es-query" PKG_REQUIRE_NAME = "@kbn/es-query" @@ -29,7 +30,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-common-utils", "//packages/kbn-config-schema", "//packages/kbn-i18n", @@ -41,14 +42,15 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/kbn-common-utils", + "//packages/kbn-i18n", + "@npm//@elastic/elasticsearch", "@npm//@types/jest", "@npm//@types/lodash", "@npm//@types/moment-timezone", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS - peggy( name = "grammar", data = [ @@ -64,55 +66,46 @@ peggy( ], ) -ts_config( - name = "tsconfig", - src = "tsconfig.json", - deps = [ - "//:tsconfig.base.json", - ], +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + config_file = ".babelrc.browser" ) ts_config( - name = "tsconfig_browser", - src = "tsconfig.browser.json", + name = "tsconfig", + src = "tsconfig.json", deps = [ "//:tsconfig.base.json", - "//:tsconfig.browser.json", ], ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, - declaration_dir = "target_types", declaration_map = True, - incremental = True, - out_dir = "target_node", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", ) -ts_project( - name = "tsc_browser", - args = ['--pretty'], - srcs = SRCS, - deps = DEPS, - declaration = False, - incremental = True, - out_dir = "target_web", - source_map = True, - root_dir = "src", - tsconfig = ":tsconfig_browser", -) - js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES + [":grammar"], - deps = DEPS + [":tsc", ":tsc_browser"], + deps = RUNTIME_DEPS + [":target_node", ":target_web", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-es-query/src/es_query/build_es_query.ts b/packages/kbn-es-query/src/es_query/build_es_query.ts index e8a494ec1b8e4..955af1e4c185f 100644 --- a/packages/kbn-es-query/src/es_query/build_es_query.ts +++ b/packages/kbn-es-query/src/es_query/build_es_query.ts @@ -13,6 +13,10 @@ import { buildQueryFromLucene } from './from_lucene'; import { Filter, Query } from '../filters'; import { IndexPatternBase } from './types'; +/** + * Configurations to be used while constructing an ES query. + * @public + */ export interface EsQueryConfig { allowLeadingWildcards: boolean; queryStringOptions: Record; @@ -33,6 +37,8 @@ function removeMatchAll(filters: T[]) { * @param config - an objects with query:allowLeadingWildcards and query:queryString:options UI * settings in form of { allowLeadingWildcards, queryStringOptions } * config contains dateformat:tz + * + * @public */ export function buildEsQuery( indexPattern: IndexPatternBase | undefined, @@ -47,7 +53,7 @@ export function buildEsQuery( queries = Array.isArray(queries) ? queries : [queries]; filters = Array.isArray(filters) ? filters : [filters]; - const validQueries = queries.filter((query) => has(query, 'query')); + const validQueries = queries.filter((query: any) => has(query, 'query')); const queriesByLanguage = groupBy(validQueries, 'language'); const kueryQuery = buildQueryFromKuery( indexPattern, diff --git a/packages/kbn-es-query/src/es_query/decorate_query.ts b/packages/kbn-es-query/src/es_query/decorate_query.ts index 594e046a979de..b6623b9b1946c 100644 --- a/packages/kbn-es-query/src/es_query/decorate_query.ts +++ b/packages/kbn-es-query/src/es_query/decorate_query.ts @@ -16,6 +16,8 @@ import { DslQuery, isEsQueryString } from './es_query_dsl'; * @param queryStringOptions query:queryString:options from UI settings * @param dateFormatTZ dateFormat:tz from UI settings * @returns {object} + * + * @public */ export function decorateQuery( diff --git a/packages/kbn-es-query/src/es_query/es_query_dsl.ts b/packages/kbn-es-query/src/es_query/es_query_dsl.ts index 30f7693ee2a94..6cff8b0ff47c7 100644 --- a/packages/kbn-es-query/src/es_query/es_query_dsl.ts +++ b/packages/kbn-es-query/src/es_query/es_query_dsl.ts @@ -43,6 +43,9 @@ export interface DslTermQuery { term: Record; } +/** + * @public + */ export type DslQuery = | DslRangeQuery | DslMatchQuery @@ -50,5 +53,6 @@ export type DslQuery = | DslMatchAllQuery | DslTermQuery; +/** @internal */ export const isEsQueryString = (query: any): query is DslQueryStringQuery => has(query, 'query_string.query'); diff --git a/packages/kbn-es-query/src/es_query/filter_matches_index.ts b/packages/kbn-es-query/src/es_query/filter_matches_index.ts index 7df719533486a..541298ee0e19b 100644 --- a/packages/kbn-es-query/src/es_query/filter_matches_index.ts +++ b/packages/kbn-es-query/src/es_query/filter_matches_index.ts @@ -13,6 +13,8 @@ import { IndexPatternBase } from '..'; * TODO: We should base this on something better than `filter.meta.key`. We should probably modify * this to check if `filter.meta.index` matches `indexPattern.id` instead, but that's a breaking * change. + * + * @internal */ export function filterMatchesIndex(filter: Filter, indexPattern?: IndexPatternBase | null) { if (!filter.meta?.key || !indexPattern) { diff --git a/packages/kbn-es-query/src/es_query/from_filters.ts b/packages/kbn-es-query/src/es_query/from_filters.ts index 7b3c58d45a569..94def4008a2bc 100644 --- a/packages/kbn-es-query/src/es_query/from_filters.ts +++ b/packages/kbn-es-query/src/es_query/from_filters.ts @@ -43,6 +43,14 @@ const translateToQuery = (filter: Filter) => { return filter; }; +/** + * @param filters + * @param indexPattern + * @param ignoreFilterIfFieldNotInIndex by default filters that use fields that can't be found in the specified index pattern are not applied. Set this to true if you want to apply them any way. + * @returns An EQL query + * + * @public + */ export const buildQueryFromFilters = ( filters: Filter[] = [], indexPattern: IndexPatternBase | undefined, diff --git a/packages/kbn-es-query/src/es_query/from_kuery.ts b/packages/kbn-es-query/src/es_query/from_kuery.ts index efe8b26a81412..87382585181f8 100644 --- a/packages/kbn-es-query/src/es_query/from_kuery.ts +++ b/packages/kbn-es-query/src/es_query/from_kuery.ts @@ -10,6 +10,7 @@ import { Query } from '../filters'; import { fromKueryExpression, toElasticsearchQuery, nodeTypes, KueryNode } from '../kuery'; import { IndexPatternBase } from './types'; +/** @internal */ export function buildQueryFromKuery( indexPattern: IndexPatternBase | undefined, queries: Query[] = [], diff --git a/packages/kbn-es-query/src/es_query/from_lucene.ts b/packages/kbn-es-query/src/es_query/from_lucene.ts index cba789513c983..ef4becd1d1584 100644 --- a/packages/kbn-es-query/src/es_query/from_lucene.ts +++ b/packages/kbn-es-query/src/es_query/from_lucene.ts @@ -10,6 +10,7 @@ import { Query } from '..'; import { decorateQuery } from './decorate_query'; import { luceneStringToDsl } from './lucene_string_to_dsl'; +/** @internal */ export function buildQueryFromLucene( queries: Query[], queryStringOptions: Record, diff --git a/packages/kbn-es-query/src/es_query/handle_nested_filter.ts b/packages/kbn-es-query/src/es_query/handle_nested_filter.ts index 60e92769503fb..74c758c1c54bf 100644 --- a/packages/kbn-es-query/src/es_query/handle_nested_filter.ts +++ b/packages/kbn-es-query/src/es_query/handle_nested_filter.ts @@ -9,6 +9,7 @@ import { getFilterField, cleanFilter, Filter } from '../filters'; import { IndexPatternBase } from './types'; +/** @internal */ export const handleNestedFilter = (filter: Filter, indexPattern?: IndexPatternBase) => { if (!indexPattern) return filter; diff --git a/packages/kbn-es-query/src/es_query/lucene_string_to_dsl.ts b/packages/kbn-es-query/src/es_query/lucene_string_to_dsl.ts index 97160bd645797..2e4eb5ab7f7c4 100644 --- a/packages/kbn-es-query/src/es_query/lucene_string_to_dsl.ts +++ b/packages/kbn-es-query/src/es_query/lucene_string_to_dsl.ts @@ -9,6 +9,13 @@ import { isString } from 'lodash'; import { DslQuery } from './es_query_dsl'; +/** + * + * @param query + * @returns + * + * @public + */ export function luceneStringToDsl(query: string | any): DslQuery { if (isString(query)) { if (query.trim() === '') { diff --git a/packages/kbn-es-query/src/es_query/migrate_filter.ts b/packages/kbn-es-query/src/es_query/migrate_filter.ts index 9bd78b092fc18..5edab3e042f5c 100644 --- a/packages/kbn-es-query/src/es_query/migrate_filter.ts +++ b/packages/kbn-es-query/src/es_query/migrate_filter.ts @@ -11,6 +11,7 @@ import { getConvertedValueForField } from '../filters'; import { Filter } from '../filters'; import { IndexPatternBase } from './types'; +/** @internal */ export interface DeprecatedMatchPhraseFilter extends Filter { query: { match: { @@ -28,6 +29,7 @@ function isDeprecatedMatchPhraseFilter(filter: any): filter is DeprecatedMatchPh return Boolean(fieldName && get(filter, ['query', 'match', fieldName, 'type']) === 'phrase'); } +/** @internal */ export function migrateFilter(filter: Filter, indexPattern?: IndexPatternBase) { if (isDeprecatedMatchPhraseFilter(filter)) { const fieldName = Object.keys(filter.query.match)[0]; diff --git a/packages/kbn-es-query/src/es_query/types.ts b/packages/kbn-es-query/src/es_query/types.ts index ca6a542779053..d68d9e4a4da22 100644 --- a/packages/kbn-es-query/src/es_query/types.ts +++ b/packages/kbn-es-query/src/es_query/types.ts @@ -8,10 +8,19 @@ import type { estypes } from '@elastic/elasticsearch'; +/** + * A field's sub type + * @public + */ export interface IFieldSubType { multi?: { parent: string }; nested?: { path: string }; } + +/** + * A base interface for an index pattern field + * @public + */ export interface IndexPatternFieldBase { name: string; /** @@ -31,6 +40,10 @@ export interface IndexPatternFieldBase { scripted?: boolean; } +/** + * A base interface for an index pattern + * @public + */ export interface IndexPatternBase { fields: IndexPatternFieldBase[]; id?: string; diff --git a/packages/kbn-es-query/src/filters/build_filters/build_empty_filter.ts b/packages/kbn-es-query/src/filters/build_filters/build_empty_filter.ts index a7945da5829a9..09b58bb15147f 100644 --- a/packages/kbn-es-query/src/filters/build_filters/build_empty_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/build_empty_filter.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { Filter, FilterMeta, FilterState, FilterStateStore } from './types'; +import { Filter, FilterMeta, FilterStateStore } from './types'; export const buildEmptyFilter = (isPinned: boolean, index?: string): Filter => { const meta: FilterMeta = { @@ -15,7 +15,7 @@ export const buildEmptyFilter = (isPinned: boolean, index?: string): Filter => { alias: null, index, }; - const $state: FilterState = { + const $state: Filter['$state'] = { store: isPinned ? FilterStateStore.GLOBAL_STATE : FilterStateStore.APP_STATE, }; diff --git a/packages/kbn-es-query/src/filters/build_filters/build_filters.ts b/packages/kbn-es-query/src/filters/build_filters/build_filters.ts index 9beee96fd2ee2..eba7a6a26c545 100644 --- a/packages/kbn-es-query/src/filters/build_filters/build_filters.ts +++ b/packages/kbn-es-query/src/filters/build_filters/build_filters.ts @@ -14,8 +14,22 @@ import { buildRangeFilter } from './range_filter'; import { buildExistsFilter } from './exists_filter'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; -import { FilterMeta, FilterStateStore } from './types'; +import { FilterStateStore } from './types'; +/** + * + * @param indexPattern + * @param field + * @param type + * @param negate whether the filter is negated (NOT filter) + * @param disabled whether the filter is disabled andwon't be applied to searches + * @param params + * @param alias a display name for the filter + * @param store whether the filter applies to the current application or should be applied to global context + * @returns + * + * @public + */ export function buildFilter( indexPattern: IndexPatternBase, field: IndexPatternFieldBase, @@ -36,26 +50,6 @@ export function buildFilter( return filter; } -export function buildCustomFilter( - indexPatternString: string, - queryDsl: any, - disabled: boolean, - negate: boolean, - alias: string | null, - store: FilterStateStore -): Filter { - const meta: FilterMeta = { - index: indexPatternString, - type: FILTERS.CUSTOM, - disabled, - negate, - alias, - }; - const filter: Filter = { ...queryDsl, meta }; - filter.$state = { store }; - return filter; -} - function buildBaseFilter( indexPattern: IndexPatternBase, field: IndexPatternFieldBase, diff --git a/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts b/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts index 0dc1fc86d25a1..60a128d58fee3 100644 --- a/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/custom_filter.ts @@ -6,8 +6,41 @@ * Side Public License, v 1. */ -import type { Filter } from './types'; +import { Filter, FilterMeta, FILTERS, FilterStateStore } from './types'; +/** @public */ export type CustomFilter = Filter & { query: any; }; + +/** + * + * @param indexPatternString + * @param queryDsl + * @param disabled + * @param negate + * @param alias + * @param store + * @returns + * + * @public + */ +export function buildCustomFilter( + indexPatternString: string, + queryDsl: any, + disabled: boolean, + negate: boolean, + alias: string | null, + store: FilterStateStore +): Filter { + const meta: FilterMeta = { + index: indexPatternString, + type: FILTERS.CUSTOM, + disabled, + negate, + alias, + }; + const filter: Filter = { ...queryDsl, meta }; + filter.$state = { store }; + return filter; +} diff --git a/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts b/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts index fdb4ab548fdc5..3a8935d057f4a 100644 --- a/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/exists_filter.ts @@ -6,26 +6,42 @@ * Side Public License, v 1. */ +import { has } from 'lodash'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; -import type { Filter, FilterMeta } from './types'; - -export type ExistsFilterMeta = FilterMeta; - -export interface FilterExistsProperty { - field: any; -} +import type { FieldFilter, Filter, FilterMeta } from './types'; +/** @public */ export type ExistsFilter = Filter & { - meta: ExistsFilterMeta; - exists?: FilterExistsProperty; + meta: FilterMeta; + exists?: { + field: string; + }; }; -export const isExistsFilter = (filter: any): filter is ExistsFilter => filter && filter.exists; +/** + * @param filter + * @returns `true` if a filter is an `ExistsFilter` + * + * @public + */ +export const isExistsFilter = (filter: FieldFilter): filter is ExistsFilter => + has(filter, 'exists'); +/** + * @internal + */ export const getExistsFilterField = (filter: ExistsFilter) => { return filter.exists && filter.exists.field; }; +/** + * Builds an `ExistsFilter` + * @param field field to validate the existence of + * @param indexPattern index pattern to look for the field in + * @returns An `ExistsFilter` + * + * @public + */ export const buildExistsFilter = (field: IndexPatternFieldBase, indexPattern: IndexPatternBase) => { return { meta: { diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts b/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts index 323c7108ea3e5..9066b695c17fc 100644 --- a/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/geo_bounding_box_filter.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { Filter, FilterMeta, LatLon } from './types'; +import { has } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta, LatLon } from './types'; export type GeoBoundingBoxFilterMeta = FilterMeta & { params: { @@ -20,9 +21,18 @@ export type GeoBoundingBoxFilter = Filter & { geo_bounding_box: any; }; -export const isGeoBoundingBoxFilter = (filter: any): filter is GeoBoundingBoxFilter => - filter && filter.geo_bounding_box; +/** + * @param filter + * @returns `true` if a filter is an `GeoBoundingBoxFilter` + * + * @public + */ +export const isGeoBoundingBoxFilter = (filter: FieldFilter): filter is GeoBoundingBoxFilter => + has(filter, 'geo_bounding_box'); +/** + * @internal + */ export const getGeoBoundingBoxFilterField = (filter: GeoBoundingBoxFilter) => { return ( filter.geo_bounding_box && diff --git a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts b/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts index d25f2a87dcd8c..edeccdcf28b26 100644 --- a/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/geo_polygon_filter.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { Filter, FilterMeta, LatLon } from './types'; +import { has } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta, LatLon } from './types'; export type GeoPolygonFilterMeta = FilterMeta & { params: { @@ -19,9 +20,18 @@ export type GeoPolygonFilter = Filter & { geo_polygon: any; }; -export const isGeoPolygonFilter = (filter: any): filter is GeoPolygonFilter => - filter && filter.geo_polygon; +/** + * @param filter + * @returns `true` if a filter is an `GeoPolygonFilter` + * + * @public + */ +export const isGeoPolygonFilter = (filter: FieldFilter): filter is GeoPolygonFilter => + has(filter, 'geo_polygon'); +/** + * @internal + */ export const getGeoPolygonFilterField = (filter: GeoPolygonFilter) => { return ( filter.geo_polygon && Object.keys(filter.geo_polygon).find((key) => key !== 'ignore_unmapped') diff --git a/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts b/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts index a949c0f7cd5b1..4ebed12e1237e 100644 --- a/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts +++ b/packages/kbn-es-query/src/filters/build_filters/get_filter_field.ts @@ -15,6 +15,7 @@ import { getPhraseFilterField, isPhraseFilter } from './phrase_filter'; import { getRangeFilterField, isRangeFilter } from './range_filter'; import type { Filter } from './types'; +/** @internal */ export const getFilterField = (filter: Filter) => { if (isExistsFilter(filter)) { return getExistsFilterField(filter); diff --git a/packages/kbn-es-query/src/filters/build_filters/get_filter_params.ts b/packages/kbn-es-query/src/filters/build_filters/get_filter_params.ts index 65a586db39789..46585acd9efc0 100644 --- a/packages/kbn-es-query/src/filters/build_filters/get_filter_params.ts +++ b/packages/kbn-es-query/src/filters/build_filters/get_filter_params.ts @@ -11,6 +11,9 @@ import type { PhraseFilter } from './phrase_filter'; import type { RangeFilter } from './range_filter'; import { Filter, FILTERS } from './types'; +/** + * @internal used only by the filter bar to create filter pills. + */ export function getFilterParams(filter: Filter) { switch (filter.meta.type) { case FILTERS.PHRASE: diff --git a/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts b/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts index 1a3fae4181379..b1b134313b746 100644 --- a/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/match_all_filter.ts @@ -6,10 +6,11 @@ * Side Public License, v 1. */ -import type { Filter, FilterMeta } from './types'; +import { has } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta } from './types'; export interface MatchAllFilterMeta extends FilterMeta { - field: any; + field: string; formattedValue: string; } @@ -18,5 +19,11 @@ export type MatchAllFilter = Filter & { match_all: any; }; -export const isMatchAllFilter = (filter: any): filter is MatchAllFilter => - filter && filter.match_all; +/** + * @param filter + * @returns `true` if a filter is an `MatchAllFilter` + * + * @public + */ +export const isMatchAllFilter = (filter: FieldFilter): filter is MatchAllFilter => + has(filter, 'match_all'); diff --git a/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts b/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts index e52b7753c13a4..8f0364a565d79 100644 --- a/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/missing_filter.ts @@ -6,17 +6,30 @@ * Side Public License, v 1. */ -import type { Filter, FilterMeta } from './types'; +import { has } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta } from './types'; export type MissingFilterMeta = FilterMeta; export type MissingFilter = Filter & { meta: MissingFilterMeta; - missing: any; + missing: { + field: string; + }; }; -export const isMissingFilter = (filter: any): filter is MissingFilter => filter && filter.missing; +/** + * @param filter + * @returns `true` if a filter is an `MissingFilter` + * + * @public + */ +export const isMissingFilter = (filter: FieldFilter): filter is MissingFilter => + has(filter, 'missing'); +/** + * @internal + */ export const getMissingFilterField = (filter: MissingFilter) => { return filter.missing && filter.missing.field; }; diff --git a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts index bc60043d0887e..7b60548f912ba 100644 --- a/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/phrase_filter.ts @@ -6,33 +6,39 @@ * Side Public License, v 1. */ import type { estypes } from '@elastic/elasticsearch'; -import { get, isPlainObject } from 'lodash'; -import type { Filter, FilterMeta } from './types'; +import { has, isPlainObject } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta } from './types'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; import { getConvertedValueForField } from './get_converted_value_for_field'; +type PhraseFilterValue = string | number | boolean; + export type PhraseFilterMeta = FilterMeta & { params?: { - query: string; // The unformatted value + query: PhraseFilterValue; // The unformatted value }; - field?: any; - index?: any; + field?: string; + index?: string; }; export type PhraseFilter = Filter & { meta: PhraseFilterMeta; script?: { script: { - source?: any; + source?: string; lang?: estypes.ScriptLanguage; - params: any; + params: { [key: string]: PhraseFilterValue }; }; }; }; -type PhraseFilterValue = string | number | boolean; - -export const isPhraseFilter = (filter: any): filter is PhraseFilter => { +/** + * @param filter + * @returns `true` if a filter is a `PhraseFilter` + * + * @public + */ +export const isPhraseFilter = (filter: FieldFilter): filter is PhraseFilter => { const isMatchPhraseQuery = filter && filter.query && filter.query.match_phrase; const isDeprecatedMatchPhraseQuery = @@ -44,23 +50,42 @@ export const isPhraseFilter = (filter: any): filter is PhraseFilter => { return Boolean(isMatchPhraseQuery || isDeprecatedMatchPhraseQuery); }; -export const isScriptedPhraseFilter = (filter: any): filter is PhraseFilter => - Boolean(get(filter, 'script.script.params.value')); +/** + * @param filter + * @returns `true` if a filter is a scripted `PhrasesFilter` + * + * @public + */ +export const isScriptedPhraseFilter = (filter: FieldFilter): filter is PhraseFilter => + has(filter, 'script.script.params.value'); +/** @internal */ export const getPhraseFilterField = (filter: PhraseFilter) => { const queryConfig = filter.query.match_phrase || filter.query.match; return Object.keys(queryConfig)[0]; }; +/** + * @internal + */ export const getPhraseFilterValue = (filter: PhraseFilter): PhraseFilterValue => { const queryConfig = filter.query.match_phrase || filter.query.match; const queryValue = Object.values(queryConfig)[0] as any; return isPlainObject(queryValue) ? queryValue.query : queryValue; }; +/** + * Creates a filter where the given field matches a given value + * @param field + * @param params + * @param indexPattern + * @returns `PhraseFilter` + * + * @public + */ export const buildPhraseFilter = ( field: IndexPatternFieldBase, - value: any, + value: PhraseFilterValue, indexPattern: IndexPatternBase ): PhraseFilter => { const convertedValue = getConvertedValueForField(field, value); @@ -82,7 +107,8 @@ export const buildPhraseFilter = ( } }; -export const getPhraseScript = (field: IndexPatternFieldBase, value: string) => { +/** @internal */ +export const getPhraseScript = (field: IndexPatternFieldBase, value: PhraseFilterValue) => { const convertedValue = getConvertedValueForField(field, value); const script = buildInlineScriptForPhraseFilter(field); diff --git a/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts b/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts index 6f8c3815a5c63..526d3802337ea 100644 --- a/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/phrases_filter.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { Filter, FilterMeta, FILTERS } from './types'; +import { FieldFilter, Filter, FilterMeta, FILTERS } from './types'; import { getPhraseScript } from './phrase_filter'; import type { IndexPatternFieldBase, IndexPatternBase } from '../../es_query'; @@ -19,20 +19,35 @@ export type PhrasesFilter = Filter & { meta: PhrasesFilterMeta; }; -export const isPhrasesFilter = (filter: any): filter is PhrasesFilter => +/** + * @param filter + * @returns `true` if a filter is a `PhrasesFilter` + * + * @public + */ +export const isPhrasesFilter = (filter: FieldFilter): filter is PhrasesFilter => filter?.meta?.type === FILTERS.PHRASES; +/** @internal */ export const getPhrasesFilterField = (filter: PhrasesFilter) => { // Phrases is a newer filter type that has always been created via a constructor that ensures // `meta.key` is set to the field name return filter.meta.key; }; -// Creates a filter where the given field matches one or more of the given values -// params should be an array of values +/** + * Creates a filter where the given field matches one or more of the given values + * params should be an array of values + * @param field + * @param params + * @param indexPattern + * @returns + * + * @public + */ export const buildPhrasesFilter = ( field: IndexPatternFieldBase, - params: any[], + params: string[], indexPattern: IndexPatternBase ) => { const index = indexPattern.id; @@ -41,11 +56,11 @@ export const buildPhrasesFilter = ( let should; if (field.scripted) { - should = params.map((v: any) => ({ + should = params.map((v) => ({ script: getPhraseScript(field, v), })); } else { - should = params.map((v: any) => ({ + should = params.map((v) => ({ match_phrase: { [field.name]: v, }, diff --git a/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts b/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts index 4fa084f181827..c083775b8db44 100644 --- a/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/query_string_filter.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import type { Filter, FilterMeta } from './types'; +import { has } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta } from './types'; export type QueryStringFilterMeta = FilterMeta; @@ -19,10 +20,24 @@ export type QueryStringFilter = Filter & { }; }; -export const isQueryStringFilter = (filter: any): filter is QueryStringFilter => - filter && filter.query && filter.query.query_string; +/** + * @param filter + * @returns `true` if a filter is a `QueryStringFilter` + * + * @public + */ +export const isQueryStringFilter = (filter: FieldFilter): filter is QueryStringFilter => + has(filter, 'query.query_string'); -// Creates a filter corresponding to a raw Elasticsearch query DSL object +/** + * Creates a filter corresponding to a raw Elasticsearch query DSL object + * @param query + * @param index + * @param alias + * @returns `QueryStringFilter` + * + * @public + */ export const buildQueryFilter = (query: QueryStringFilter['query'], index: string, alias: string) => ({ query, diff --git a/packages/kbn-es-query/src/filters/build_filters/range_filter.ts b/packages/kbn-es-query/src/filters/build_filters/range_filter.ts index 6ed560ccc831e..ae26c6ae48db8 100644 --- a/packages/kbn-es-query/src/filters/build_filters/range_filter.ts +++ b/packages/kbn-es-query/src/filters/build_filters/range_filter.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ import type { estypes } from '@elastic/elasticsearch'; -import { map, reduce, mapValues, get, keys, pickBy } from 'lodash'; -import type { Filter, FilterMeta } from './types'; +import { map, reduce, mapValues, has, get, keys, pickBy } from 'lodash'; +import type { FieldFilter, Filter, FilterMeta } from './types'; import type { IndexPatternBase, IndexPatternFieldBase } from '../../es_query'; const OPERANDS_IN_RANGE = 2; @@ -32,6 +32,10 @@ const dateComparators = { lt: 'boolean lt(Supplier s, def v) {return s.get().toInstant().isBefore(Instant.parse(v))}', }; +/** + * An interface for all possible range filter params + * @public + */ export interface RangeFilterParams { from?: number | string; to?: number | string; @@ -49,7 +53,7 @@ const hasRangeKeys = (params: RangeFilterParams) => export type RangeFilterMeta = FilterMeta & { params: RangeFilterParams; - field?: any; + field?: string; formattedValue?: string; }; @@ -57,6 +61,9 @@ export interface EsRangeFilter { range: { [key: string]: RangeFilterParams }; } +/** + * @public + */ export type RangeFilter = Filter & EsRangeFilter & { meta: RangeFilterMeta; @@ -64,20 +71,36 @@ export type RangeFilter = Filter & script: { params: any; lang: estypes.ScriptLanguage; - source: any; + source: string; }; }; match_all?: any; }; -export const isRangeFilter = (filter: any): filter is RangeFilter => filter && filter.range; - -export const isScriptedRangeFilter = (filter: any): filter is RangeFilter => { +/** + * @param filter + * @returns `true` if a filter is an `RangeFilter` + * + * @public + */ +export const isRangeFilter = (filter?: FieldFilter): filter is RangeFilter => has(filter, 'range'); + +/** + * + * @param filter + * @returns `true` if a filter is a scripted `RangeFilter` + * + * @public + */ +export const isScriptedRangeFilter = (filter: FieldFilter): filter is RangeFilter => { const params: RangeFilterParams = get(filter, 'script.script.params', {}); return hasRangeKeys(params); }; +/** + * @internal + */ export const getRangeFilterField = (filter: RangeFilter) => { return filter.range && Object.keys(filter.range)[0]; }; @@ -85,8 +108,18 @@ export const getRangeFilterField = (filter: RangeFilter) => { const formatValue = (params: any[]) => map(params, (val: any, key: string) => get(operators, key) + val).join(' '); -// Creates a filter where the value for the given field is in the given range -// params should be an object containing `lt`, `lte`, `gt`, and/or `gte` +/** + * Creates a filter where the value for the given field is in the given range + * params should be an object containing `lt`, `lte`, `gt`, and/or `gte` + * + * @param field + * @param params + * @param indexPattern + * @param formattedValue + * @returns + * + * @public + */ export const buildRangeFilter = ( field: IndexPatternFieldBase, params: RangeFilterParams, @@ -134,6 +167,9 @@ export const buildRangeFilter = ( return filter as RangeFilter; }; +/** + * @internal + */ export const getRangeScript = (field: IndexPatternFieldBase, params: RangeFilterParams) => { const knownParams = mapValues( pickBy(params, (val, key: any) => key in operators), diff --git a/packages/kbn-es-query/src/filters/build_filters/types.ts b/packages/kbn-es-query/src/filters/build_filters/types.ts index 13e4a941b9166..4bf53303c1544 100644 --- a/packages/kbn-es-query/src/filters/build_filters/types.ts +++ b/packages/kbn-es-query/src/filters/build_filters/types.ts @@ -15,7 +15,10 @@ import { RangeFilter } from './range_filter'; import { MatchAllFilter } from './match_all_filter'; import { MissingFilter } from './missing_filter'; -// Any filter associated with a field (used in the filter bar/editor) +/** + * A common type for filters supported by this package + * @public + **/ export type FieldFilter = | ExistsFilter | GeoBoundingBoxFilter @@ -26,6 +29,16 @@ export type FieldFilter = | MatchAllFilter | MissingFilter; +/** + * A common type for filters supported by this package + * @public + **/ +export type FilterParams = any; + +/** + * An enum of all types of filters supported by this package + * @public + */ export enum FILTERS { CUSTOM = 'custom', PHRASES = 'phrases', @@ -41,16 +54,15 @@ export enum FILTERS { SPATIAL_FILTER = 'spatial_filter', } +/** + * An enum to denote whether a filter is specific to an application's context or whether it should be applied globally. + * @public + */ export enum FilterStateStore { APP_STATE = 'appState', GLOBAL_STATE = 'globalState', } -// eslint-disable-next-line -export type FilterState = { - store: FilterStateStore; -}; - // eslint-disable-next-line export type FilterMeta = { alias: string | null; @@ -69,7 +81,9 @@ export type FilterMeta = { // eslint-disable-next-line export type Filter = { - $state?: FilterState; + $state?: { + store: FilterStateStore; + }; meta: FilterMeta; query?: any; // TODO: can we use the Query type her? }; @@ -80,6 +94,10 @@ export type Query = { language: string; }; +/** + * An interface for a latitude-longitude pair + * @public + */ export interface LatLon { lat: number; lon: number; diff --git a/packages/kbn-es-query/src/filters/helpers/compare_filters.ts b/packages/kbn-es-query/src/filters/helpers/compare_filters.ts index 1ca9143247eea..ffc7461bc6cdd 100644 --- a/packages/kbn-es-query/src/filters/helpers/compare_filters.ts +++ b/packages/kbn-es-query/src/filters/helpers/compare_filters.ts @@ -9,6 +9,7 @@ import { defaults, isEqual, omit, map } from 'lodash'; import type { FilterMeta, Filter } from '../build_filters'; +/** @public */ export interface FilterCompareOptions { index?: boolean; disabled?: boolean; @@ -19,6 +20,7 @@ export interface FilterCompareOptions { /** * Include disabled, negate and store when comparing filters + * @public */ export const COMPARE_ALL_OPTIONS: FilterCompareOptions = { index: true, @@ -60,6 +62,8 @@ const mapFilterArray = ( * @param {FilterCompareOptions} comparatorOptions Parameters to use for comparison * * @returns {bool} Filters are the same + * + * @public */ export const compareFilters = ( first: Filter | Filter[], diff --git a/packages/kbn-es-query/src/filters/helpers/dedup_filters.ts b/packages/kbn-es-query/src/filters/helpers/dedup_filters.ts index 564354d012371..f43ef31837ae2 100644 --- a/packages/kbn-es-query/src/filters/helpers/dedup_filters.ts +++ b/packages/kbn-es-query/src/filters/helpers/dedup_filters.ts @@ -18,6 +18,8 @@ import { compareFilters, FilterCompareOptions } from './compare_filters'; * @param {object} comparatorOptions - Parameters to use for comparison * * @returns {object} An array of filters that were not in existing + * + * @internal */ export const dedupFilters = ( existingFilters: Filter[], diff --git a/packages/kbn-es-query/src/filters/helpers/meta_filter.ts b/packages/kbn-es-query/src/filters/helpers/meta_filter.ts index 91f5186570195..61b89d45d1962 100644 --- a/packages/kbn-es-query/src/filters/helpers/meta_filter.ts +++ b/packages/kbn-es-query/src/filters/helpers/meta_filter.ts @@ -9,10 +9,32 @@ import { omit, get } from 'lodash'; import { Filter, FilterStateStore } from '../build_filters'; +/** + * + * @param filter + * @returns `true` if the filter should be applied to global scope + * + * @public + */ export const isFilterPinned = (filter: Filter) => { return filter.$state && filter.$state.store === FilterStateStore.GLOBAL_STATE; }; +/** + * @param filter + * @returns `true` if the filter is disabled + * + * @public + */ +export const isFilterDisabled = (filter: Filter): boolean => get(filter, 'meta.disabled', false); + +/** + * + * @param filter + * @returns A copy of the filter with a toggled disabled state + * + * @public + */ export const toggleFilterDisabled = (filter: Filter) => { const disabled = !filter.meta.disabled; const meta = { ...filter.meta, disabled }; @@ -20,6 +42,13 @@ export const toggleFilterDisabled = (filter: Filter) => { return { ...filter, meta }; }; +/** + * + * @param filter + * @returns A copy of the filter with a toggled negated state + * + * @public + */ export const toggleFilterNegated = (filter: Filter) => { const negate = !filter.meta.negate; const meta = { ...filter.meta, negate }; @@ -27,6 +56,13 @@ export const toggleFilterNegated = (filter: Filter) => { return { ...filter, meta }; }; +/** + * + * @param filter + * @returns A copy of the filter with a toggled pinned state (toggles store from app to global and vice versa) + * + * @public + */ export const toggleFilterPinned = (filter: Filter) => { const store = isFilterPinned(filter) ? FilterStateStore.APP_STATE : FilterStateStore.GLOBAL_STATE; const $state = { ...filter.$state, store }; @@ -34,18 +70,48 @@ export const toggleFilterPinned = (filter: Filter) => { return { ...filter, $state }; }; +/** + * @param filter + * @returns An enabled copy of the filter + * + * @public + */ export const enableFilter = (filter: Filter) => !filter.meta.disabled ? filter : toggleFilterDisabled(filter); +/** + * @param filter + * @returns A disabled copy of the filter + * + * @public + */ export const disableFilter = (filter: Filter) => filter.meta.disabled ? filter : toggleFilterDisabled(filter); +/** + * @param filter + * @returns A pinned (global) copy of the filter + * + * @public + */ export const pinFilter = (filter: Filter) => isFilterPinned(filter) ? filter : toggleFilterPinned(filter); +/** + * @param filter + * @returns An unpinned (app scoped) copy of the filter + * + * @public + */ export const unpinFilter = (filter: Filter) => !isFilterPinned(filter) ? filter : toggleFilterPinned(filter); +/** + * @param {unknown} filter + * @returns `true` if the given object is a filter + * + * @public + */ export const isFilter = (x: unknown): x is Filter => !!x && typeof x === 'object' && @@ -53,6 +119,12 @@ export const isFilter = (x: unknown): x is Filter => typeof (x as Filter).meta === 'object' && typeof (x as Filter).meta.disabled === 'boolean'; +/** + * @param {unknown} filters + * @returns `true` if the given object is an array of filters + * + * @public + */ export const isFilters = (x: unknown): x is Filter[] => Array.isArray(x) && !x.find((y) => !isFilter(y)); @@ -60,7 +132,7 @@ export const isFilters = (x: unknown): x is Filter[] => * Clean out any invalid attributes from the filters * @param {object} filter The filter to clean * @returns {object} + * + * @public */ export const cleanFilter = (filter: Filter): Filter => omit(filter, ['meta', '$state']) as Filter; - -export const isFilterDisabled = (filter: Filter): boolean => get(filter, 'meta.disabled', false); diff --git a/packages/kbn-es-query/src/filters/helpers/only_disabled.ts b/packages/kbn-es-query/src/filters/helpers/only_disabled.ts index d090c411934f7..d605d8b0be628 100644 --- a/packages/kbn-es-query/src/filters/helpers/only_disabled.ts +++ b/packages/kbn-es-query/src/filters/helpers/only_disabled.ts @@ -14,8 +14,9 @@ const isEnabled = (f: Filter) => f && f.meta && !f.meta.disabled; /** * Checks to see if only disabled filters have been changed - * * @returns {bool} Only disabled filters + * + * @public */ export const onlyDisabledFiltersChanged = (newFilters?: Filter[], oldFilters?: Filter[]) => { // If it's the same - compare only enabled filters diff --git a/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts b/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts index e502cd5dbba5d..1e388ed7a8c96 100644 --- a/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts +++ b/packages/kbn-es-query/src/filters/helpers/uniq_filters.ts @@ -15,8 +15,8 @@ import { dedupFilters } from './dedup_filters'; * * @param {array} filters The filters to remove duplicates from * @param {object} comparatorOptions - Parameters to use for comparison - * @returns {object} The original filters array with duplicates removed + * @public */ export const uniqFilters = (filters: Filter[], comparatorOptions: any = {}) => { let results: Filter[] = []; diff --git a/packages/kbn-es-query/src/filters/index.ts b/packages/kbn-es-query/src/filters/index.ts index 57139dc5110a4..61ee6ce6f0da6 100644 --- a/packages/kbn-es-query/src/filters/index.ts +++ b/packages/kbn-es-query/src/filters/index.ts @@ -59,7 +59,6 @@ export { export { Query, Filter, - FilterState, LatLon, FieldFilter, FilterMeta, diff --git a/packages/kbn-es-query/src/kuery/kuery_syntax_error.ts b/packages/kbn-es-query/src/kuery/kuery_syntax_error.ts index aa4440579eb49..e7ea0b5c2dd34 100644 --- a/packages/kbn-es-query/src/kuery/kuery_syntax_error.ts +++ b/packages/kbn-es-query/src/kuery/kuery_syntax_error.ts @@ -52,6 +52,10 @@ interface KQLSyntaxErrorExpected { type: string; } +/** + * A type of error indicating KQL syntax errors + * @public + */ export class KQLSyntaxError extends Error { shortMessage: string; diff --git a/packages/kbn-es-query/src/kuery/node_types/index.ts b/packages/kbn-es-query/src/kuery/node_types/index.ts index dc284bd64273b..a9298f27d28be 100644 --- a/packages/kbn-es-query/src/kuery/node_types/index.ts +++ b/packages/kbn-es-query/src/kuery/node_types/index.ts @@ -15,6 +15,9 @@ import { NodeTypes } from './types'; export { NodeTypes }; export { nodeBuilder } from './node_builder'; +/** + * @public + */ export const nodeTypes: NodeTypes = { // This requires better typing of the different typings and their return types. // @ts-ignore diff --git a/packages/kbn-es-query/src/kuery/types.ts b/packages/kbn-es-query/src/kuery/types.ts index fe1496ead7ab6..f188eab61c546 100644 --- a/packages/kbn-es-query/src/kuery/types.ts +++ b/packages/kbn-es-query/src/kuery/types.ts @@ -8,13 +8,19 @@ import { NodeTypes } from './node_types'; +/** @public */ export interface KueryNode { type: keyof NodeTypes; [key: string]: any; } +/** + * TODO: Replace with real type + * @public + */ export type DslQuery = any; +/** @internal */ export interface KueryParseOptions { helpers: { [key: string]: any; diff --git a/packages/kbn-es-query/src/utils.ts b/packages/kbn-es-query/src/utils.ts index 5e8d60a4b66fe..48d17e75e346c 100644 --- a/packages/kbn-es-query/src/utils.ts +++ b/packages/kbn-es-query/src/utils.ts @@ -8,6 +8,7 @@ import moment from 'moment-timezone'; +/** @internal */ export function getTimeZoneFromSettings(dateFormatTZ: string) { const detectedTimezone = moment.tz.guess(); diff --git a/packages/kbn-es-query/tsconfig.browser.json b/packages/kbn-es-query/tsconfig.browser.json deleted file mode 100644 index 0a1c21cc8e05b..0000000000000 --- a/packages/kbn-es-query/tsconfig.browser.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../tsconfig.browser.json", - "compilerOptions": { - "incremental": true, - "outDir": "./target_web", - "declaration": false, - "sourceMap": true, - "sourceRoot": "../../../../packages/kbn-es-query/src", - "types": [ - "jest", - "node" - ], - }, - "include": [ - "src/**/*" - ], - "exclude": [ - "**/__fixtures__/**/*", - "**/__mocks__/**/*" - ] -} diff --git a/packages/kbn-es-query/tsconfig.json b/packages/kbn-es-query/tsconfig.json index b48d90373e2cb..78e722884594e 100644 --- a/packages/kbn-es-query/tsconfig.json +++ b/packages/kbn-es-query/tsconfig.json @@ -1,11 +1,11 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "declarationDir": "./target_types", - "outDir": "./target_node", "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "./target_types", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-es-query/src", "types": [ diff --git a/packages/kbn-field-types/.babelrc b/packages/kbn-field-types/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-field-types/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-field-types/BUILD.bazel b/packages/kbn-field-types/BUILD.bazel new file mode 100644 index 0000000000000..829a1b11a0db7 --- /dev/null +++ b/packages/kbn-field-types/BUILD.bazel @@ -0,0 +1,96 @@ + +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") + +PKG_BASE_NAME = "kbn-field-types" +PKG_REQUIRE_NAME = "@kbn/field-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md" +] + +RUNTIME_DEPS = [ + "@npm//jest-styled-components", + "@npm//node-forge", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/node", + "@npm//@types/node-forge", + "@npm//@types/testing-library__jest-dom", + "@npm//resize-observer-polyfill", + "@npm//@emotion/react", + "@npm//jest-styled-components", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), + ) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-field-types/README.md b/packages/kbn-field-types/README.md new file mode 100644 index 0000000000000..b0cd985cede5d --- /dev/null +++ b/packages/kbn-field-types/README.md @@ -0,0 +1,3 @@ +# @kbn/field-types + +Types and utilities for kbn and es field types diff --git a/packages/kbn-field-types/jest.config.js b/packages/kbn-field-types/jest.config.js new file mode 100644 index 0000000000000..f933c41d3cd64 --- /dev/null +++ b/packages/kbn-field-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-field-types'], +}; diff --git a/packages/kbn-field-types/package.json b/packages/kbn-field-types/package.json new file mode 100644 index 0000000000000..c56463e108150 --- /dev/null +++ b/packages/kbn-field-types/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/field-types", + "version": "1.0.0", + "private": true, + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts" +} diff --git a/packages/kbn-field-types/src/index.ts b/packages/kbn-field-types/src/index.ts new file mode 100644 index 0000000000000..77a2e96367d6f --- /dev/null +++ b/packages/kbn-field-types/src/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { KbnFieldType } from './kbn_field_type'; + +export { + castEsToKbnFieldTypeName, + getKbnFieldType, + getKbnTypeNames, + getFilterableKbnTypeNames, +} from './kbn_field_types'; + +export { KBN_FIELD_TYPES, ES_FIELD_TYPES, KbnFieldTypeOptions } from './types'; diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_type.ts b/packages/kbn-field-types/src/kbn_field_type.ts similarity index 100% rename from src/plugins/data/common/kbn_field_types/kbn_field_type.ts rename to packages/kbn-field-types/src/kbn_field_type.ts diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts b/packages/kbn-field-types/src/kbn_field_types.test.ts similarity index 100% rename from src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts rename to packages/kbn-field-types/src/kbn_field_types.test.ts diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types.ts b/packages/kbn-field-types/src/kbn_field_types.ts similarity index 100% rename from src/plugins/data/common/kbn_field_types/kbn_field_types.ts rename to packages/kbn-field-types/src/kbn_field_types.ts diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts b/packages/kbn-field-types/src/kbn_field_types_factory.ts similarity index 100% rename from src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts rename to packages/kbn-field-types/src/kbn_field_types_factory.ts diff --git a/packages/kbn-field-types/src/types.ts b/packages/kbn-field-types/src/types.ts new file mode 100644 index 0000000000000..c14e7e4b03661 --- /dev/null +++ b/packages/kbn-field-types/src/types.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** @public **/ +export interface KbnFieldTypeOptions { + sortable: boolean; + filterable: boolean; + name: string; + esTypes: ES_FIELD_TYPES[]; +} + +/** @public **/ +export enum ES_FIELD_TYPES { + _ID = '_id', + _INDEX = '_index', + _SOURCE = '_source', + _TYPE = '_type', + + STRING = 'string', + TEXT = 'text', + KEYWORD = 'keyword', + VERSION = 'version', + + BOOLEAN = 'boolean', + OBJECT = 'object', + + DATE = 'date', + DATE_NANOS = 'date_nanos', + DATE_RANGE = 'date_range', + + GEO_POINT = 'geo_point', + GEO_SHAPE = 'geo_shape', + + FLOAT = 'float', + HALF_FLOAT = 'half_float', + SCALED_FLOAT = 'scaled_float', + DOUBLE = 'double', + INTEGER = 'integer', + LONG = 'long', + SHORT = 'short', + UNSIGNED_LONG = 'unsigned_long', + + FLOAT_RANGE = 'float_range', + DOUBLE_RANGE = 'double_range', + INTEGER_RANGE = 'integer_range', + LONG_RANGE = 'long_range', + + NESTED = 'nested', + BYTE = 'byte', + IP = 'ip', + IP_RANGE = 'ip_range', + ATTACHMENT = 'attachment', + TOKEN_COUNT = 'token_count', + MURMUR3 = 'murmur3', + + HISTOGRAM = 'histogram', +} + +/** @public **/ +export enum KBN_FIELD_TYPES { + _SOURCE = '_source', + ATTACHMENT = 'attachment', + BOOLEAN = 'boolean', + DATE = 'date', + DATE_RANGE = 'date_range', + GEO_POINT = 'geo_point', + GEO_SHAPE = 'geo_shape', + IP = 'ip', + IP_RANGE = 'ip_range', + MURMUR3 = 'murmur3', + NUMBER = 'number', + NUMBER_RANGE = 'number_range', + STRING = 'string', + UNKNOWN = 'unknown', + CONFLICT = 'conflict', + OBJECT = 'object', + NESTED = 'nested', + HISTOGRAM = 'histogram', + MISSING = 'missing', +} diff --git a/packages/kbn-field-types/tsconfig.json b/packages/kbn-field-types/tsconfig.json new file mode 100644 index 0000000000000..a7270134039be --- /dev/null +++ b/packages/kbn-field-types/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "incremental": false, + "outDir": "./target_types", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-field-types/src" + }, + "include": ["src/**/*"] +} diff --git a/packages/kbn-optimizer/tsconfig.json b/packages/kbn-optimizer/tsconfig.json index 76beaf7689fd4..e7471846beca2 100644 --- a/packages/kbn-optimizer/tsconfig.json +++ b/packages/kbn-optimizer/tsconfig.json @@ -7,7 +7,11 @@ "declarationMap": true, "rootDir": "./src", "sourceMap": true, - "sourceRoot": "../../../../packages/kbn-optimizer/src" + "sourceRoot": "../../../../packages/kbn-optimizer/src", + "types": [ + "jest", + "node" + ] }, "include": [ "src/**/*" diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 2a8c30e3a81ae..f78104be83666 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -94,21 +94,21 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cli__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "run", function() { return _cli__WEBPACK_IMPORTED_MODULE_0__["run"]; }); -/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(563); +/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(562); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildBazelProductionProjects"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; }); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(248); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(247); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return _utils_projects__WEBPACK_IMPORTED_MODULE_2__["getProjects"]; }); -/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(250); +/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(249); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_3__["Project"]; }); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(251); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(250); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return _utils_package_json__WEBPACK_IMPORTED_MODULE_4__["transformDependencies"]; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(562); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(561); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_5__["getProjectPaths"]; }); /* @@ -140,9 +140,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5); /* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(128); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(514); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(246); +/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(127); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(513); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(245); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -532,25 +532,66 @@ module.exports = require("path"); "use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ToolingLogCollectingWriter = exports.parseLogLevel = exports.pickLevelFromFlags = exports.ToolingLogTextWriter = exports.ToolingLog = void 0; -var tooling_log_1 = __webpack_require__(6); -Object.defineProperty(exports, "ToolingLog", { enumerable: true, get: function () { return tooling_log_1.ToolingLog; } }); -var tooling_log_text_writer_1 = __webpack_require__(111); -Object.defineProperty(exports, "ToolingLogTextWriter", { enumerable: true, get: function () { return tooling_log_text_writer_1.ToolingLogTextWriter; } }); -var log_levels_1 = __webpack_require__(126); -Object.defineProperty(exports, "pickLevelFromFlags", { enumerable: true, get: function () { return log_levels_1.pickLevelFromFlags; } }); -Object.defineProperty(exports, "parseLogLevel", { enumerable: true, get: function () { return log_levels_1.parseLogLevel; } }); -var tooling_log_collecting_writer_1 = __webpack_require__(127); -Object.defineProperty(exports, "ToolingLogCollectingWriter", { enumerable: true, get: function () { return tooling_log_collecting_writer_1.ToolingLogCollectingWriter; } }); -//# sourceMappingURL=index.js.map + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ToolingLog", { + enumerable: true, + get: function () { + return _tooling_log.ToolingLog; + } +}); +Object.defineProperty(exports, "ToolingLogTextWriter", { + enumerable: true, + get: function () { + return _tooling_log_text_writer.ToolingLogTextWriter; + } +}); +Object.defineProperty(exports, "ToolingLogTextWriterConfig", { + enumerable: true, + get: function () { + return _tooling_log_text_writer.ToolingLogTextWriterConfig; + } +}); +Object.defineProperty(exports, "pickLevelFromFlags", { + enumerable: true, + get: function () { + return _log_levels.pickLevelFromFlags; + } +}); +Object.defineProperty(exports, "parseLogLevel", { + enumerable: true, + get: function () { + return _log_levels.parseLogLevel; + } +}); +Object.defineProperty(exports, "LogLevel", { + enumerable: true, + get: function () { + return _log_levels.LogLevel; + } +}); +Object.defineProperty(exports, "ParsedLogLevel", { + enumerable: true, + get: function () { + return _log_levels.ParsedLogLevel; + } +}); +Object.defineProperty(exports, "ToolingLogCollectingWriter", { + enumerable: true, + get: function () { + return _tooling_log_collecting_writer.ToolingLogCollectingWriter; + } +}); + +var _tooling_log = __webpack_require__(6); + +var _tooling_log_text_writer = __webpack_require__(110); + +var _log_levels = __webpack_require__(125); + +var _tooling_log_collecting_writer = __webpack_require__(126); /***/ }), /* 6 */ @@ -558,77 +599,101 @@ Object.defineProperty(exports, "ToolingLogCollectingWriter", { enumerable: true, "use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -Object.defineProperty(exports, "__esModule", { value: true }); + +Object.defineProperty(exports, "__esModule", { + value: true +}); exports.ToolingLog = void 0; -const tslib_1 = __webpack_require__(7); -const Rx = tslib_1.__importStar(__webpack_require__(8)); -const tooling_log_text_writer_1 = __webpack_require__(111); + +var Rx = _interopRequireWildcard(__webpack_require__(7)); + +var _tooling_log_text_writer = __webpack_require__(110); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + class ToolingLog { - constructor(writerConfig) { - this.identWidth = 0; - this.writers = writerConfig ? [new tooling_log_text_writer_1.ToolingLogTextWriter(writerConfig)] : []; - this.written$ = new Rx.Subject(); - } - indent(delta = 0) { - this.identWidth = Math.max(this.identWidth + delta, 0); - return this.identWidth; - } - verbose(...args) { - this.sendToWriters('verbose', args); - } - debug(...args) { - this.sendToWriters('debug', args); - } - info(...args) { - this.sendToWriters('info', args); - } - success(...args) { - this.sendToWriters('success', args); - } - warning(...args) { - this.sendToWriters('warning', args); - } - error(error) { - this.sendToWriters('error', [error]); - } - write(...args) { - this.sendToWriters('write', args); - } - getWriters() { - return this.writers.slice(0); - } - setWriters(writers) { - this.writers = [...writers]; - } - getWritten$() { - return this.written$.asObservable(); + constructor(writerConfig) { + _defineProperty(this, "identWidth", 0); + + _defineProperty(this, "writers", void 0); + + _defineProperty(this, "written$", void 0); + + this.writers = writerConfig ? [new _tooling_log_text_writer.ToolingLogTextWriter(writerConfig)] : []; + this.written$ = new Rx.Subject(); + } + + indent(delta = 0) { + this.identWidth = Math.max(this.identWidth + delta, 0); + return this.identWidth; + } + + verbose(...args) { + this.sendToWriters('verbose', args); + } + + debug(...args) { + this.sendToWriters('debug', args); + } + + info(...args) { + this.sendToWriters('info', args); + } + + success(...args) { + this.sendToWriters('success', args); + } + + warning(...args) { + this.sendToWriters('warning', args); + } + + error(error) { + this.sendToWriters('error', [error]); + } + + write(...args) { + this.sendToWriters('write', args); + } + + getWriters() { + return this.writers.slice(0); + } + + setWriters(writers) { + this.writers = [...writers]; + } + + getWritten$() { + return this.written$.asObservable(); + } + + sendToWriters(type, args) { + const msg = { + type, + indent: this.identWidth, + args + }; + let written = false; + + for (const writer of this.writers) { + if (writer.write(msg)) { + written = true; + } } - sendToWriters(type, args) { - const msg = { - type, - indent: this.identWidth, - args, - }; - let written = false; - for (const writer of this.writers) { - if (writer.write(msg)) { - written = true; - } - } - if (written) { - this.written$.next(msg); - } + + if (written) { + this.written$.next(msg); } + } + } + exports.ToolingLog = ToolingLog; -//# sourceMappingURL=tooling_log.js.map /***/ }), /* 7 */ @@ -636,446 +701,179 @@ exports.ToolingLog = ToolingLog; "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__createBinding", function() { return __createBinding; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArray", function() { return __spreadArray; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldGet", function() { return __classPrivateFieldGet; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldSet", function() { return __classPrivateFieldSet; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -function __spreadArray(to, from) { - for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) - to[j] = from[i]; - return to; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - - -/***/ }), -/* 8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]; }); -/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"]; }); -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__["GroupedObservable"]; }); -/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__["observable"]; }); -/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27); +/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]; }); -/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32); +/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]; }); -/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(33); +/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["ReplaySubject"]; }); -/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(50); +/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(49); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["AsyncSubject"]; }); -/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(51); +/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(50); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asapScheduler"]; }); -/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(55); +/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(54); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "async", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["asyncScheduler"]; }); -/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(34); +/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(33); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queueScheduler"]; }); -/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(56); +/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(55); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrameScheduler"]; }); -/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(59); +/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(58); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualTimeScheduler"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualAction"]; }); -/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(40); +/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(39); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["Scheduler"]; }); -/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(17); +/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(16); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["Subscription"]; }); -/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(11); +/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(10); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["Subscriber"]; }); -/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(42); +/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(41); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["NotificationKind"]; }); -/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(24); +/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["pipe"]; }); -/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(60); +/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(59); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["noop"]; }); -/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(25); +/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(24); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["identity"]; }); -/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(61); +/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(60); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["isObservable"]; }); -/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(62); +/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(61); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__["ArgumentOutOfRangeError"]; }); -/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(63); +/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__["EmptyError"]; }); -/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(28); +/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(27); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__["ObjectUnsubscribedError"]; }); -/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(20); +/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(19); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__["UnsubscriptionError"]; }); -/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(64); +/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(63); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__["TimeoutError"]; }); -/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(65); +/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(64); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__["bindCallback"]; }); -/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(67); +/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(66); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__["bindNodeCallback"]; }); -/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(68); +/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(67); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__["combineLatest"]; }); -/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(79); +/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(78); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__["concat"]; }); -/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(91); +/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(90); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__["defer"]; }); -/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(43); +/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(42); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["empty"]; }); -/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(92); +/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(91); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__["forkJoin"]; }); -/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(83); +/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(82); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__["from"]; }); -/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(93); +/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(92); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__["fromEvent"]; }); -/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(94); +/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(93); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__["fromEventPattern"]; }); -/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(95); +/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(94); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__["generate"]; }); -/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(96); +/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(95); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__["iif"]; }); -/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(97); +/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(96); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__["interval"]; }); -/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(99); +/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(98); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__["merge"]; }); -/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(100); +/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(99); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["never"]; }); -/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(44); +/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(43); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__["of"]; }); -/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(101); +/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(100); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(102); +/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(101); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; }); -/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(103); +/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(102); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__["partition"]; }); -/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(106); +/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(105); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__["race"]; }); -/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(107); +/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(106); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__["range"]; }); -/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(49); +/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(48); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__["throwError"]; }); -/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(108); +/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(107); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__["timer"]; }); -/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(109); +/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(108); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__["using"]; }); -/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(110); +/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(109); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__["zip"]; }); -/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(84); +/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(83); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__["scheduled"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["EMPTY"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["NEVER"]; }); -/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(15); +/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(14); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_52__["config"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -1138,17 +936,17 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 9 */ +/* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return Observable; }); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14); /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ @@ -1268,13 +1066,13 @@ function getPromiseCtor(promiseCtor) { /***/ }), -/* 10 */ +/* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canReportError", function() { return canReportError; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); /** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */ function canReportError(observer) { @@ -1296,20 +1094,20 @@ function canReportError(observer) { /***/ }), -/* 11 */ +/* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return Subscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeSubscriber", function() { return SafeSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15); /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ @@ -1546,7 +1344,7 @@ var SafeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 12 */ +/* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1795,7 +1593,7 @@ function __classPrivateFieldSet(receiver, privateMap, value) { /***/ }), -/* 13 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1809,14 +1607,14 @@ function isFunction(x) { /***/ }), -/* 14 */ +/* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ @@ -1837,7 +1635,7 @@ var empty = { /***/ }), -/* 15 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1865,7 +1663,7 @@ var config = { /***/ }), -/* 16 */ +/* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1879,16 +1677,16 @@ function hostReportError(err) { /***/ }), -/* 17 */ +/* 16 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return Subscription; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19); /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */ @@ -2032,7 +1830,7 @@ function flattenUnsubscriptionErrors(errors) { /***/ }), -/* 18 */ +/* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2044,7 +1842,7 @@ var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) /***/ }), -/* 19 */ +/* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2058,7 +1856,7 @@ function isObject(x) { /***/ }), -/* 20 */ +/* 19 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2082,7 +1880,7 @@ var UnsubscriptionError = UnsubscriptionErrorImpl; /***/ }), -/* 21 */ +/* 20 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2100,15 +1898,15 @@ var $$rxSubscriber = rxSubscriber; /***/ }), -/* 22 */ +/* 21 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toSubscriber", function() { return toSubscriber; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); -/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); +/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); /** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */ @@ -2131,7 +1929,7 @@ function toSubscriber(nextOrObserver, error, complete) { /***/ }), -/* 23 */ +/* 22 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2143,14 +1941,14 @@ var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function /***/ }), -/* 24 */ +/* 23 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipeFromArray", function() { return pipeFromArray; }); -/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25); +/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24); /** PURE_IMPORTS_START _identity PURE_IMPORTS_END */ function pipe() { @@ -2175,7 +1973,7 @@ function pipeFromArray(fns) { /***/ }), -/* 25 */ +/* 24 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2189,19 +1987,19 @@ function identity(x) { /***/ }), -/* 26 */ +/* 25 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return ConnectableObservable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectableObservableDescriptor", function() { return connectableObservableDescriptor; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16); +/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29); /** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */ @@ -2347,7 +2145,7 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 27 */ +/* 26 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2355,13 +2153,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscriber", function() { return SubjectSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnonymousSubject", function() { return AnonymousSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(21); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20); /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ @@ -2523,7 +2321,7 @@ var AnonymousSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 28 */ +/* 27 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2545,14 +2343,14 @@ var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; /***/ }), -/* 29 */ +/* 28 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -2588,14 +2386,14 @@ var SubjectSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 30 */ +/* 29 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -2657,18 +2455,18 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 31 */ +/* 30 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return GroupedObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */ @@ -2854,15 +2652,15 @@ var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 32 */ +/* 31 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); /** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ @@ -2909,19 +2707,19 @@ var BehaviorSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 33 */ +/* 32 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(40); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(27); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ @@ -3046,15 +2844,15 @@ var ReplayEvent = /*@__PURE__*/ (function () { /***/ }), -/* 34 */ +/* 33 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return queueScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34); +/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37); /** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */ @@ -3064,14 +2862,14 @@ var queue = queueScheduler; /***/ }), -/* 35 */ +/* 34 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -3116,14 +2914,14 @@ var QueueAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 36 */ +/* 35 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); /** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ @@ -3222,14 +3020,14 @@ var AsyncAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 37 */ +/* 36 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -3251,14 +3049,14 @@ var Action = /*@__PURE__*/ (function (_super) { /***/ }), -/* 38 */ +/* 37 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -3274,14 +3072,14 @@ var QueueScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 39 */ +/* 38 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncScheduler", function() { return AsyncScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); /** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ @@ -3343,7 +3141,7 @@ var AsyncScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 40 */ +/* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3371,7 +3169,7 @@ var Scheduler = /*@__PURE__*/ (function () { /***/ }), -/* 41 */ +/* 40 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3380,9 +3178,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnOperator", function() { return ObserveOnOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnSubscriber", function() { return ObserveOnSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnMessage", function() { return ObserveOnMessage; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -3455,16 +3253,16 @@ var ObserveOnMessage = /*@__PURE__*/ (function () { /***/ }), -/* 42 */ +/* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return NotificationKind; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); /** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ @@ -3544,14 +3342,14 @@ var Notification = /*@__PURE__*/ (function () { /***/ }), -/* 43 */ +/* 42 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return EMPTY; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); }); @@ -3565,15 +3363,15 @@ function emptyScheduled(scheduler) { /***/ }), -/* 44 */ +/* 43 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return of; }); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(45); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); /** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */ @@ -3596,7 +3394,7 @@ function of() { /***/ }), -/* 45 */ +/* 44 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3610,15 +3408,15 @@ function isScheduler(value) { /***/ }), -/* 46 */ +/* 45 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); /** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */ @@ -3635,7 +3433,7 @@ function fromArray(input, scheduler) { /***/ }), -/* 47 */ +/* 46 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3654,14 +3452,14 @@ var subscribeToArray = function (array) { /***/ }), -/* 48 */ +/* 47 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -3686,13 +3484,13 @@ function scheduleArray(input, scheduler) { /***/ }), -/* 49 */ +/* 48 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function throwError(error, scheduler) { @@ -3711,15 +3509,15 @@ function dispatch(_a) { /***/ }), -/* 50 */ +/* 49 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); /** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ @@ -3770,15 +3568,15 @@ var AsyncSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 51 */ +/* 50 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return asapScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(52); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51); +/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); /** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */ @@ -3788,15 +3586,15 @@ var asap = asapScheduler; /***/ }), -/* 52 */ +/* 51 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(52); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35); /** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */ @@ -3839,7 +3637,7 @@ var AsapAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 53 */ +/* 52 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3877,14 +3675,14 @@ var TestTools = { /***/ }), -/* 54 */ +/* 53 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -3921,15 +3719,15 @@ var AsapScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 55 */ +/* 54 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return asyncScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); /** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -3939,15 +3737,15 @@ var async = asyncScheduler; /***/ }), -/* 56 */ +/* 55 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return animationFrameScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58); +/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56); +/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57); /** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */ @@ -3957,14 +3755,14 @@ var animationFrame = animationFrameScheduler; /***/ }), -/* 57 */ +/* 56 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -4006,14 +3804,14 @@ var AnimationFrameAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 58 */ +/* 57 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -4050,16 +3848,16 @@ var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 59 */ +/* 58 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38); /** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -4173,7 +3971,7 @@ var VirtualAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 60 */ +/* 59 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4185,13 +3983,13 @@ function noop() { } /***/ }), -/* 61 */ +/* 60 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function isObservable(obj) { @@ -4201,7 +3999,7 @@ function isObservable(obj) { /***/ }), -/* 62 */ +/* 61 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4223,7 +4021,7 @@ var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; /***/ }), -/* 63 */ +/* 62 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4245,7 +4043,7 @@ var EmptyError = EmptyErrorImpl; /***/ }), -/* 64 */ +/* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4267,18 +4065,18 @@ var TimeoutError = TimeoutErrorImpl; /***/ }), -/* 65 */ +/* 64 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */ @@ -4387,15 +4185,15 @@ function dispatchError(state) { /***/ }), -/* 66 */ +/* 65 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapOperator", function() { return MapOperator; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4444,18 +4242,18 @@ var MapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 67 */ +/* 66 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */ @@ -4572,7 +4370,7 @@ function dispatchError(arg) { /***/ }), -/* 68 */ +/* 67 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4580,12 +4378,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestOperator", function() { return CombineLatestOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestSubscriber", function() { return CombineLatestSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45); /** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */ @@ -4690,14 +4488,14 @@ var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 69 */ +/* 68 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OuterSubscriber", function() { return OuterSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4722,15 +4520,15 @@ var OuterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 70 */ +/* 69 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToResult", function() { return subscribeToResult; }); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71); -/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(70); +/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); /** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */ @@ -4751,14 +4549,14 @@ function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, inne /***/ }), -/* 71 */ +/* 70 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerSubscriber", function() { return InnerSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -4790,21 +4588,21 @@ var InnerSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 72 */ +/* 71 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeTo", function() { return subscribeTo; }); -/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47); -/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73); -/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74); -/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76); -/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77); -/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(78); -/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(75); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(23); +/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46); +/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); +/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73); +/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75); +/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(76); +/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77); +/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(74); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22); /** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ @@ -4839,13 +4637,13 @@ var subscribeTo = function (result) { /***/ }), -/* 73 */ +/* 72 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToPromise", function() { return subscribeToPromise; }); -/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16); +/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */ var subscribeToPromise = function (promise) { @@ -4864,13 +4662,13 @@ var subscribeToPromise = function (promise) { /***/ }), -/* 74 */ +/* 73 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToIterable", function() { return subscribeToIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ var subscribeToIterable = function (iterable) { @@ -4908,7 +4706,7 @@ var subscribeToIterable = function (iterable) { /***/ }), -/* 75 */ +/* 74 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4929,13 +4727,13 @@ var $$iterator = iterator; /***/ }), -/* 76 */ +/* 75 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToObservable", function() { return subscribeToObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ var subscribeToObservable = function (obj) { @@ -4953,7 +4751,7 @@ var subscribeToObservable = function (obj) { /***/ }), -/* 77 */ +/* 76 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4965,7 +4763,7 @@ var isArrayLike = (function (x) { return x && typeof x.length === 'number' && ty /***/ }), -/* 78 */ +/* 77 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4979,14 +4777,14 @@ function isPromise(value) { /***/ }), -/* 79 */ +/* 78 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80); +/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); +/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79); /** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */ @@ -5001,13 +4799,13 @@ function concat() { /***/ }), -/* 80 */ +/* 79 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll; }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80); /** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */ function concatAll() { @@ -5017,14 +4815,14 @@ function concatAll() { /***/ }), -/* 81 */ +/* 80 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); /** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ @@ -5038,7 +4836,7 @@ function mergeAll(concurrent) { /***/ }), -/* 82 */ +/* 81 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5047,10 +4845,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapOperator", function() { return MergeMapOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapSubscriber", function() { return MergeMapSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return flatMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -5155,15 +4953,15 @@ var flatMap = mergeMap; /***/ }), -/* 83 */ +/* 82 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); +/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); /** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */ @@ -5183,20 +4981,20 @@ function from(input, scheduler) { /***/ }), -/* 84 */ +/* 83 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(87); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(88); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(78); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(77); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89); +/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84); +/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85); +/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47); +/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(86); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(88); /** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */ @@ -5227,15 +5025,15 @@ function scheduled(input, scheduler) { /***/ }), -/* 85 */ +/* 84 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */ @@ -5258,14 +5056,14 @@ function scheduleObservable(input, scheduler) { /***/ }), -/* 86 */ +/* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -5289,15 +5087,15 @@ function schedulePromise(input, scheduler) { /***/ }), -/* 87 */ +/* 86 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(75); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */ @@ -5347,13 +5145,13 @@ function scheduleIterable(input, scheduler) { /***/ }), -/* 88 */ +/* 87 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ function isInteropObservable(input) { @@ -5363,13 +5161,13 @@ function isInteropObservable(input) { /***/ }), -/* 89 */ +/* 88 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ function isIterable(input) { @@ -5379,7 +5177,7 @@ function isIterable(input) { /***/ }), -/* 90 */ +/* 89 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5389,10 +5187,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleOuterSubscriber", function() { return SimpleOuterSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComplexOuterSubscriber", function() { return ComplexOuterSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "innerSubscribe", function() { return innerSubscribe; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71); /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_util_subscribeTo PURE_IMPORTS_END */ @@ -5489,15 +5287,15 @@ function innerSubscribe(result, innerSubscriber) { /***/ }), -/* 91 */ +/* 90 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -5520,17 +5318,17 @@ function defer(observableFactory) { /***/ }), -/* 92 */ +/* 91 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return forkJoin; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82); /** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */ @@ -5603,16 +5401,16 @@ function forkJoinInternal(sources, keys) { /***/ }), -/* 93 */ +/* 92 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return fromEvent; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -5679,16 +5477,16 @@ function isEventTarget(sourceObj) { /***/ }), -/* 94 */ +/* 93 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return fromEventPattern; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -5724,15 +5522,15 @@ function fromEventPattern(addHandler, removeHandler, resultSelector) { /***/ }), -/* 95 */ +/* 94 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return generate; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); /** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ @@ -5861,14 +5659,14 @@ function dispatch(state) { /***/ }), -/* 96 */ +/* 95 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return iif; }); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); /** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */ @@ -5885,15 +5683,15 @@ function iif(condition, trueResult, falseResult) { /***/ }), -/* 97 */ +/* 96 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(98); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ @@ -5925,13 +5723,13 @@ function dispatch(state) { /***/ }), -/* 98 */ +/* 97 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; }); -/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); +/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); /** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ function isNumeric(val) { @@ -5941,16 +5739,16 @@ function isNumeric(val) { /***/ }), -/* 99 */ +/* 98 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); +/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); /** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */ @@ -5982,15 +5780,15 @@ function merge() { /***/ }), -/* 100 */ +/* 99 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return NEVER; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59); /** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ @@ -6002,16 +5800,16 @@ function never() { /***/ }), -/* 101 */ +/* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); /** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */ @@ -6042,15 +5840,15 @@ function onErrorResumeNext() { /***/ }), -/* 102 */ +/* 101 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -6093,16 +5891,16 @@ function dispatch(state) { /***/ }), -/* 103 */ +/* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72); -/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(105); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); +/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(104); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8); /** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */ @@ -6118,7 +5916,7 @@ function partition(source, predicate, thisArg) { /***/ }), -/* 104 */ +/* 103 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -6137,14 +5935,14 @@ function not(pred, thisArg) { /***/ }), -/* 105 */ +/* 104 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -6191,7 +5989,7 @@ var FilterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 106 */ +/* 105 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -6199,11 +5997,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceOperator", function() { return RaceOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceSubscriber", function() { return RaceSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); /** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -6285,14 +6083,14 @@ var RaceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 107 */ +/* 106 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function range(start, count, scheduler) { @@ -6344,16 +6142,16 @@ function dispatch(state) { /***/ }), -/* 108 */ +/* 107 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(98); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -6398,15 +6196,15 @@ function dispatch(state) { /***/ }), -/* 109 */ +/* 108 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -6443,7 +6241,7 @@ function using(resourceFactory, observableFactory) { /***/ }), -/* 110 */ +/* 109 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -6451,12 +6249,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipOperator", function() { return ZipOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipSubscriber", function() { return ZipSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); -/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); +/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */ @@ -6677,107 +6475,134 @@ var ZipBufferIterator = /*@__PURE__*/ (function (_super) { /***/ }), -/* 111 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -Object.defineProperty(exports, "__esModule", { value: true }); + +Object.defineProperty(exports, "__esModule", { + value: true +}); exports.ToolingLogTextWriter = void 0; -const tslib_1 = __webpack_require__(7); -const util_1 = __webpack_require__(112); -const chalk_1 = tslib_1.__importDefault(__webpack_require__(113)); -const log_levels_1 = __webpack_require__(126); -const { magentaBright, yellow, red, blue, green, dim } = chalk_1.default; + +var _util = __webpack_require__(111); + +var _chalk = _interopRequireDefault(__webpack_require__(112)); + +var _log_levels = __webpack_require__(125); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const { + magentaBright, + yellow, + red, + blue, + green, + dim +} = _chalk.default; const PREFIX_INDENT = ' '.repeat(6); const MSG_PREFIXES = { - verbose: ` ${magentaBright('sill')} `, - debug: ` ${dim('debg')} `, - info: ` ${blue('info')} `, - success: ` ${green('succ')} `, - warning: ` ${yellow('warn')} `, - error: `${red('ERROR')} `, + verbose: ` ${magentaBright('sill')} `, + debug: ` ${dim('debg')} `, + info: ` ${blue('info')} `, + success: ` ${green('succ')} `, + warning: ` ${yellow('warn')} `, + error: `${red('ERROR')} ` }; + const has = (obj, key) => obj.hasOwnProperty(key); + function shouldWriteType(level, type) { - if (type === 'write') { - return level.name !== 'silent'; - } - return Boolean(level.flags[type === 'success' ? 'info' : type]); + if (type === 'write') { + return level.name !== 'silent'; + } + + return Boolean(level.flags[type === 'success' ? 'info' : type]); } + function stringifyError(error) { - if (typeof error !== 'string' && !(error instanceof Error)) { - error = new Error(`"${error}" thrown`); - } - if (typeof error === 'string') { - return error; - } - return error.stack || error.message || error; + if (typeof error !== 'string' && !(error instanceof Error)) { + error = new Error(`"${error}" thrown`); + } + + if (typeof error === 'string') { + return error; + } + + return error.stack || error.message || error; } + class ToolingLogTextWriter { - constructor(config) { - this.level = log_levels_1.parseLogLevel(config.level); - this.writeTo = config.writeTo; - if (!this.writeTo || typeof this.writeTo.write !== 'function') { - throw new Error('ToolingLogTextWriter requires the `writeTo` option be set to a stream (like process.stdout)'); - } - } - write(msg) { - if (!shouldWriteType(this.level, msg.type)) { - return false; - } - const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : ''; - ToolingLogTextWriter.write(this.writeTo, prefix, msg); - return true; + constructor(config) { + _defineProperty(this, "level", void 0); + + _defineProperty(this, "writeTo", void 0); + + this.level = (0, _log_levels.parseLogLevel)(config.level); + this.writeTo = config.writeTo; + + if (!this.writeTo || typeof this.writeTo.write !== 'function') { + throw new Error('ToolingLogTextWriter requires the `writeTo` option be set to a stream (like process.stdout)'); } - static write(writeTo, prefix, msg) { - const txt = msg.type === 'error' - ? stringifyError(msg.args[0]) - : util_1.format(msg.args[0], ...msg.args.slice(1)); - (prefix + txt).split('\n').forEach((line, i) => { - let lineIndent = ''; - if (msg.indent > 0) { - // if we are indenting write some spaces followed by a symbol - lineIndent += ' '.repeat(msg.indent - 1); - lineIndent += line.startsWith('-') ? '└' : '│'; - } - if (line && prefix && i > 0) { - // apply additional indentation to lines after - // the first if this message gets a prefix - lineIndent += PREFIX_INDENT; - } - writeTo.write(`${lineIndent}${line}\n`); - }); + } + + write(msg) { + if (!shouldWriteType(this.level, msg.type)) { + return false; } + + const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : ''; + ToolingLogTextWriter.write(this.writeTo, prefix, msg); + return true; + } + + static write(writeTo, prefix, msg) { + const txt = msg.type === 'error' ? stringifyError(msg.args[0]) : (0, _util.format)(msg.args[0], ...msg.args.slice(1)); + (prefix + txt).split('\n').forEach((line, i) => { + let lineIndent = ''; + + if (msg.indent > 0) { + // if we are indenting write some spaces followed by a symbol + lineIndent += ' '.repeat(msg.indent - 1); + lineIndent += line.startsWith('-') ? '└' : '│'; + } + + if (line && prefix && i > 0) { + // apply additional indentation to lines after + // the first if this message gets a prefix + lineIndent += PREFIX_INDENT; + } + + writeTo.write(`${lineIndent}${line}\n`); + }); + } + } + exports.ToolingLogTextWriter = ToolingLogTextWriter; -//# sourceMappingURL=tooling_log_text_writer.js.map /***/ }), -/* 112 */ +/* 111 */ /***/ (function(module, exports) { module.exports = require("util"); /***/ }), -/* 113 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiStyles = __webpack_require__(114); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(120); +const ansiStyles = __webpack_require__(113); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(119); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(124); +} = __webpack_require__(123); const {isArray} = Array; @@ -6986,7 +6811,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(125); + template = __webpack_require__(124); } return template(chalk, parts.join('')); @@ -7003,7 +6828,7 @@ module.exports = chalk; /***/ }), -/* 114 */ +/* 113 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7049,7 +6874,7 @@ const setLazyProperty = (object, property, get) => { let colorConvert; const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { if (colorConvert === undefined) { - colorConvert = __webpack_require__(116); + colorConvert = __webpack_require__(115); } const offset = isBackground ? 10 : 0; @@ -7171,10 +6996,10 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 115 */ +/* 114 */ /***/ (function(module, exports) { module.exports = function(module) { @@ -7202,11 +7027,11 @@ module.exports = function(module) { /***/ }), -/* 116 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(117); -const route = __webpack_require__(119); +const conversions = __webpack_require__(116); +const route = __webpack_require__(118); const convert = {}; @@ -7289,12 +7114,12 @@ module.exports = convert; /***/ }), -/* 117 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ /* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(118); +const cssKeywords = __webpack_require__(117); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -8134,7 +7959,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 118 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8293,10 +8118,10 @@ module.exports = { /***/ }), -/* 119 */ +/* 118 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(117); +const conversions = __webpack_require__(116); /* This function routes a model to all other models. @@ -8396,14 +8221,14 @@ module.exports = function (fromModel) { /***/ }), -/* 120 */ +/* 119 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(121); -const tty = __webpack_require__(122); -const hasFlag = __webpack_require__(123); +const os = __webpack_require__(120); +const tty = __webpack_require__(121); +const hasFlag = __webpack_require__(122); const {env} = process; @@ -8542,19 +8367,19 @@ module.exports = { /***/ }), -/* 121 */ +/* 120 */ /***/ (function(module, exports) { module.exports = require("os"); /***/ }), -/* 122 */ +/* 121 */ /***/ (function(module, exports) { module.exports = require("tty"); /***/ }), -/* 123 */ +/* 122 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8569,7 +8394,7 @@ module.exports = (flag, argv = process.argv) => { /***/ }), -/* 124 */ +/* 123 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8615,7 +8440,7 @@ module.exports = { /***/ }), -/* 125 */ +/* 124 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8756,11 +8581,20 @@ module.exports = (chalk, temporary) => { /***/ }), -/* 126 */ +/* 125 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.pickLevelFromFlags = pickLevelFromFlags; +exports.getLogLevelFlagsHelp = getLogLevelFlagsHelp; +exports.parseLogLevel = parseLogLevel; +exports.LOG_LEVEL_FLAGS = exports.DEFAULT_LOG_LEVEL = void 0; + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -8768,85 +8602,111 @@ module.exports = (chalk, temporary) => { * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseLogLevel = exports.pickLevelFromFlags = void 0; const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose']; +const DEFAULT_LOG_LEVEL = 'info'; +exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL; + function pickLevelFromFlags(flags, options = {}) { - if (flags.verbose) - return 'verbose'; - if (flags.debug) - return 'debug'; - if (flags.quiet) - return 'error'; - if (flags.silent) - return 'silent'; - return options.default || 'info'; + if (flags.verbose) return 'verbose'; + if (flags.debug) return 'debug'; + if (flags.info) return 'info'; + if (flags.quiet) return 'error'; + if (flags.silent) return 'silent'; + return options.default || DEFAULT_LOG_LEVEL; +} + +const LOG_LEVEL_FLAGS = [{ + name: 'verbose', + help: '--verbose, -v Log verbosely' +}, { + name: 'info', + help: "--info Don't log debug messages" +}, { + name: 'debug', + help: '--debug Log debug messages (less than verbose)' +}, { + name: 'quiet', + help: '--quiet Only log errors' +}, { + name: 'silent', + help: "--silent Don't log anything" +}]; +exports.LOG_LEVEL_FLAGS = LOG_LEVEL_FLAGS; + +function getLogLevelFlagsHelp(defaultLogLevel = DEFAULT_LOG_LEVEL) { + return LOG_LEVEL_FLAGS.filter(({ + name + }) => name !== defaultLogLevel).map(({ + help + }) => help).join('\n'); } -exports.pickLevelFromFlags = pickLevelFromFlags; + function parseLogLevel(name) { - const i = LEVELS.indexOf(name); - if (i === -1) { - const msg = `Invalid log level "${name}" ` + `(expected one of ${LEVELS.join(',')})`; - throw new Error(msg); - } - const flags = {}; - LEVELS.forEach((level, levelI) => { - flags[level] = levelI <= i; - }); - return { - name, - flags: flags, - }; + const i = LEVELS.indexOf(name); + + if (i === -1) { + const msg = `Invalid log level "${name}" ` + `(expected one of ${LEVELS.join(',')})`; + throw new Error(msg); + } + + const flags = {}; + LEVELS.forEach((level, levelI) => { + flags[level] = levelI <= i; + }); + return { + name, + flags: flags + }; } -exports.parseLogLevel = parseLogLevel; -//# sourceMappingURL=log_levels.js.map /***/ }), -/* 127 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -Object.defineProperty(exports, "__esModule", { value: true }); + +Object.defineProperty(exports, "__esModule", { + value: true +}); exports.ToolingLogCollectingWriter = void 0; -const tooling_log_text_writer_1 = __webpack_require__(111); -class ToolingLogCollectingWriter extends tooling_log_text_writer_1.ToolingLogTextWriter { - constructor(level = 'verbose') { - super({ - level, - writeTo: { - write: (msg) => { - // trim trailing new line - this.messages.push(msg.slice(0, -1)); - }, - }, - }); - this.messages = []; - } + +var _tooling_log_text_writer = __webpack_require__(110); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogTextWriter { + constructor(level = 'verbose') { + super({ + level, + writeTo: { + write: msg => { + // trim trailing new line + this.messages.push(msg.slice(0, -1)); + } + } + }); + + _defineProperty(this, "messages", []); + } + } + exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter; -//# sourceMappingURL=tooling_log_collecting_writer.js.map /***/ }), -/* 128 */ +/* 127 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commands", function() { return commands; }); -/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(129); -/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(478); -/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(479); -/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(511); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(512); -/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(513); +/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(128); +/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(477); +/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(478); +/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(510); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(511); +/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(512); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -8870,7 +8730,7 @@ const commands = { }; /***/ }), -/* 129 */ +/* 128 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -8878,15 +8738,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCommand", function() { return BootstrapCommand; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(246); -/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(247); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(248); -/* harmony import */ var _utils_project_checksums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(364); -/* harmony import */ var _utils_bootstrap_cache_file__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(369); -/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(366); -/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(370); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(372); +/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(129); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(245); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(246); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(247); +/* harmony import */ var _utils_project_checksums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(363); +/* harmony import */ var _utils_bootstrap_cache_file__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(368); +/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(365); +/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(369); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(371); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -9026,7 +8886,7 @@ const BootstrapCommand = { }; /***/ }), -/* 130 */ +/* 129 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -9034,8 +8894,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkProjectExecutables", function() { return linkProjectExecutables; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(131); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(246); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(245); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -9101,7 +8961,7 @@ async function linkProjectExecutables(projectsByName, projectGraph) { } /***/ }), -/* 131 */ +/* 130 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -9118,17 +8978,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createSymlink", function() { return createSymlink; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryRealpath", function() { return tryRealpath; }); -/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(132); +/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(131); /* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cmd_shim__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(134); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(133); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(245); +/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(244); /* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ncp__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(112); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(111); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_5__); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -9249,7 +9109,7 @@ async function tryRealpath(path) { } /***/ }), -/* 132 */ +/* 131 */ /***/ (function(module, exports, __webpack_require__) { // On windows, create a .cmd file. @@ -9265,11 +9125,11 @@ async function tryRealpath(path) { module.exports = cmdShim cmdShim.ifExists = cmdShimIfExists -var fs = __webpack_require__(133) +var fs = __webpack_require__(132) -var mkdir = __webpack_require__(141) +var mkdir = __webpack_require__(140) , path = __webpack_require__(4) - , toBatchSyntax = __webpack_require__(142) + , toBatchSyntax = __webpack_require__(141) , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+=[^ \t]+\s+)*\s*([^ \t]+)(.*)$/ function cmdShimIfExists (from, to, cb) { @@ -9502,15 +9362,15 @@ function times(n, ok, cb) { /***/ }), -/* 133 */ +/* 132 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(134) -var polyfills = __webpack_require__(135) -var legacy = __webpack_require__(137) -var clone = __webpack_require__(139) +var fs = __webpack_require__(133) +var polyfills = __webpack_require__(134) +var legacy = __webpack_require__(136) +var clone = __webpack_require__(138) -var util = __webpack_require__(112) +var util = __webpack_require__(111) /* istanbul ignore next - node 0.x polyfill */ var gracefulQueue @@ -9591,7 +9451,7 @@ if (!fs[gracefulQueue]) { if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { process.on('exit', function() { debug(fs[gracefulQueue]) - __webpack_require__(140).equal(fs[gracefulQueue].length, 0) + __webpack_require__(139).equal(fs[gracefulQueue].length, 0) }) } } @@ -9862,16 +9722,16 @@ function retry () { /***/ }), -/* 134 */ +/* 133 */ /***/ (function(module, exports) { module.exports = require("fs"); /***/ }), -/* 135 */ +/* 134 */ /***/ (function(module, exports, __webpack_require__) { -var constants = __webpack_require__(136) +var constants = __webpack_require__(135) var origCwd = process.cwd var cwd = null @@ -10216,16 +10076,16 @@ function patch (fs) { /***/ }), -/* 136 */ +/* 135 */ /***/ (function(module, exports) { module.exports = require("constants"); /***/ }), -/* 137 */ +/* 136 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(138).Stream +var Stream = __webpack_require__(137).Stream module.exports = legacy @@ -10346,13 +10206,13 @@ function legacy (fs) { /***/ }), -/* 138 */ +/* 137 */ /***/ (function(module, exports) { module.exports = require("stream"); /***/ }), -/* 139 */ +/* 138 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10378,17 +10238,17 @@ function clone (obj) { /***/ }), -/* 140 */ +/* 139 */ /***/ (function(module, exports) { module.exports = require("assert"); /***/ }), -/* 141 */ +/* 140 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(4); -var fs = __webpack_require__(134); +var fs = __webpack_require__(133); var _0777 = parseInt('0777', 8); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; @@ -10489,7 +10349,7 @@ mkdirP.sync = function sync (p, opts, made) { /***/ }), -/* 142 */ +/* 141 */ /***/ (function(module, exports) { exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair @@ -10547,21 +10407,21 @@ function replaceDollarWithPercentPair(value) { /***/ }), -/* 143 */ +/* 142 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); +const {promisify} = __webpack_require__(111); const path = __webpack_require__(4); -const globby = __webpack_require__(144); -const isGlob = __webpack_require__(172); -const slash = __webpack_require__(236); -const gracefulFs = __webpack_require__(133); -const isPathCwd = __webpack_require__(238); -const isPathInside = __webpack_require__(239); -const rimraf = __webpack_require__(240); -const pMap = __webpack_require__(241); +const globby = __webpack_require__(143); +const isGlob = __webpack_require__(171); +const slash = __webpack_require__(235); +const gracefulFs = __webpack_require__(132); +const isPathCwd = __webpack_require__(237); +const isPathInside = __webpack_require__(238); +const rimraf = __webpack_require__(239); +const pMap = __webpack_require__(240); const rimrafP = promisify(rimraf); @@ -10675,19 +10535,19 @@ module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options /***/ }), -/* 144 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const arrayUnion = __webpack_require__(145); -const merge2 = __webpack_require__(146); -const glob = __webpack_require__(147); -const fastGlob = __webpack_require__(163); -const dirGlob = __webpack_require__(232); -const gitignore = __webpack_require__(234); -const {FilterStream, UniqueStream} = __webpack_require__(237); +const fs = __webpack_require__(133); +const arrayUnion = __webpack_require__(144); +const merge2 = __webpack_require__(145); +const glob = __webpack_require__(146); +const fastGlob = __webpack_require__(162); +const dirGlob = __webpack_require__(231); +const gitignore = __webpack_require__(233); +const {FilterStream, UniqueStream} = __webpack_require__(236); const DEFAULT_FILTER = () => false; @@ -10860,7 +10720,7 @@ module.exports.gitignore = gitignore; /***/ }), -/* 145 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10872,7 +10732,7 @@ module.exports = (...arguments_) => { /***/ }), -/* 146 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10884,7 +10744,7 @@ module.exports = (...arguments_) => { * Copyright (c) 2014-2020 Teambition * Licensed under the MIT license. */ -const Stream = __webpack_require__(138) +const Stream = __webpack_require__(137) const PassThrough = Stream.PassThrough const slice = Array.prototype.slice @@ -11023,7 +10883,7 @@ function pauseStreams (streams, options) { /***/ }), -/* 147 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { // Approach: @@ -11068,27 +10928,27 @@ function pauseStreams (streams, options) { module.exports = glob -var fs = __webpack_require__(134) -var rp = __webpack_require__(148) -var minimatch = __webpack_require__(150) +var fs = __webpack_require__(133) +var rp = __webpack_require__(147) +var minimatch = __webpack_require__(149) var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__(154) -var EE = __webpack_require__(156).EventEmitter +var inherits = __webpack_require__(153) +var EE = __webpack_require__(155).EventEmitter var path = __webpack_require__(4) -var assert = __webpack_require__(140) -var isAbsolute = __webpack_require__(157) -var globSync = __webpack_require__(158) -var common = __webpack_require__(159) +var assert = __webpack_require__(139) +var isAbsolute = __webpack_require__(156) +var globSync = __webpack_require__(157) +var common = __webpack_require__(158) var alphasort = common.alphasort var alphasorti = common.alphasorti var setopts = common.setopts var ownProp = common.ownProp -var inflight = __webpack_require__(160) -var util = __webpack_require__(112) +var inflight = __webpack_require__(159) +var util = __webpack_require__(111) var childrenIgnored = common.childrenIgnored var isIgnored = common.isIgnored -var once = __webpack_require__(162) +var once = __webpack_require__(161) function glob (pattern, options, cb) { if (typeof options === 'function') cb = options, options = {} @@ -11819,7 +11679,7 @@ Glob.prototype._stat2 = function (f, abs, er, stat, cb) { /***/ }), -/* 148 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { module.exports = realpath @@ -11829,13 +11689,13 @@ realpath.realpathSync = realpathSync realpath.monkeypatch = monkeypatch realpath.unmonkeypatch = unmonkeypatch -var fs = __webpack_require__(134) +var fs = __webpack_require__(133) var origRealpath = fs.realpath var origRealpathSync = fs.realpathSync var version = process.version var ok = /^v[0-5]\./.test(version) -var old = __webpack_require__(149) +var old = __webpack_require__(148) function newError (er) { return er && er.syscall === 'realpath' && ( @@ -11891,7 +11751,7 @@ function unmonkeypatch () { /***/ }), -/* 149 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -11917,7 +11777,7 @@ function unmonkeypatch () { var pathModule = __webpack_require__(4); var isWindows = process.platform === 'win32'; -var fs = __webpack_require__(134); +var fs = __webpack_require__(133); // JavaScript implementation of realpath, ported from node pre-v6 @@ -12200,7 +12060,7 @@ exports.realpath = function realpath(p, cache, cb) { /***/ }), -/* 150 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { module.exports = minimatch @@ -12212,7 +12072,7 @@ try { } catch (er) {} var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__(151) +var expand = __webpack_require__(150) var plTypes = { '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, @@ -13129,11 +12989,11 @@ function regExpEscape (s) { /***/ }), -/* 151 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { -var concatMap = __webpack_require__(152); -var balanced = __webpack_require__(153); +var concatMap = __webpack_require__(151); +var balanced = __webpack_require__(152); module.exports = expandTop; @@ -13336,7 +13196,7 @@ function expand(str, isTop) { /***/ }), -/* 152 */ +/* 151 */ /***/ (function(module, exports) { module.exports = function (xs, fn) { @@ -13355,7 +13215,7 @@ var isArray = Array.isArray || function (xs) { /***/ }), -/* 153 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13421,22 +13281,22 @@ function range(a, b, str) { /***/ }), -/* 154 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { try { - var util = __webpack_require__(112); + var util = __webpack_require__(111); /* istanbul ignore next */ if (typeof util.inherits !== 'function') throw ''; module.exports = util.inherits; } catch (e) { /* istanbul ignore next */ - module.exports = __webpack_require__(155); + module.exports = __webpack_require__(154); } /***/ }), -/* 155 */ +/* 154 */ /***/ (function(module, exports) { if (typeof Object.create === 'function') { @@ -13469,13 +13329,13 @@ if (typeof Object.create === 'function') { /***/ }), -/* 156 */ +/* 155 */ /***/ (function(module, exports) { module.exports = require("events"); /***/ }), -/* 157 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13502,22 +13362,22 @@ module.exports.win32 = win32; /***/ }), -/* 158 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { module.exports = globSync globSync.GlobSync = GlobSync -var fs = __webpack_require__(134) -var rp = __webpack_require__(148) -var minimatch = __webpack_require__(150) +var fs = __webpack_require__(133) +var rp = __webpack_require__(147) +var minimatch = __webpack_require__(149) var Minimatch = minimatch.Minimatch -var Glob = __webpack_require__(147).Glob -var util = __webpack_require__(112) +var Glob = __webpack_require__(146).Glob +var util = __webpack_require__(111) var path = __webpack_require__(4) -var assert = __webpack_require__(140) -var isAbsolute = __webpack_require__(157) -var common = __webpack_require__(159) +var assert = __webpack_require__(139) +var isAbsolute = __webpack_require__(156) +var common = __webpack_require__(158) var alphasort = common.alphasort var alphasorti = common.alphasorti var setopts = common.setopts @@ -13994,7 +13854,7 @@ GlobSync.prototype._makeAbs = function (f) { /***/ }), -/* 159 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { exports.alphasort = alphasort @@ -14012,8 +13872,8 @@ function ownProp (obj, field) { } var path = __webpack_require__(4) -var minimatch = __webpack_require__(150) -var isAbsolute = __webpack_require__(157) +var minimatch = __webpack_require__(149) +var isAbsolute = __webpack_require__(156) var Minimatch = minimatch.Minimatch function alphasorti (a, b) { @@ -14240,12 +14100,12 @@ function childrenIgnored (self, path) { /***/ }), -/* 160 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(161) +var wrappy = __webpack_require__(160) var reqs = Object.create(null) -var once = __webpack_require__(162) +var once = __webpack_require__(161) module.exports = wrappy(inflight) @@ -14300,7 +14160,7 @@ function slice (args) { /***/ }), -/* 161 */ +/* 160 */ /***/ (function(module, exports) { // Returns a wrapper function that returns a wrapped callback @@ -14339,10 +14199,10 @@ function wrappy (fn, cb) { /***/ }), -/* 162 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(161) +var wrappy = __webpack_require__(160) module.exports = wrappy(once) module.exports.strict = wrappy(onceStrict) @@ -14387,17 +14247,17 @@ function onceStrict (fn) { /***/ }), -/* 163 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(164); -const async_1 = __webpack_require__(193); -const stream_1 = __webpack_require__(228); -const sync_1 = __webpack_require__(229); -const settings_1 = __webpack_require__(231); -const utils = __webpack_require__(165); +const taskManager = __webpack_require__(163); +const async_1 = __webpack_require__(192); +const stream_1 = __webpack_require__(227); +const sync_1 = __webpack_require__(228); +const settings_1 = __webpack_require__(230); +const utils = __webpack_require__(164); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -14461,14 +14321,14 @@ module.exports = FastGlob; /***/ }), -/* 164 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__(165); +const utils = __webpack_require__(164); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -14533,31 +14393,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 165 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__(166); +const array = __webpack_require__(165); exports.array = array; -const errno = __webpack_require__(167); +const errno = __webpack_require__(166); exports.errno = errno; -const fs = __webpack_require__(168); +const fs = __webpack_require__(167); exports.fs = fs; -const path = __webpack_require__(169); +const path = __webpack_require__(168); exports.path = path; -const pattern = __webpack_require__(170); +const pattern = __webpack_require__(169); exports.pattern = pattern; -const stream = __webpack_require__(191); +const stream = __webpack_require__(190); exports.stream = stream; -const string = __webpack_require__(192); +const string = __webpack_require__(191); exports.string = string; /***/ }), -/* 166 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14586,7 +14446,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 167 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14600,7 +14460,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 168 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14626,7 +14486,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 169 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14666,7 +14526,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 170 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14674,9 +14534,9 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __webpack_require__(4); -const globParent = __webpack_require__(171); -const micromatch = __webpack_require__(174); -const picomatch = __webpack_require__(185); +const globParent = __webpack_require__(170); +const micromatch = __webpack_require__(173); +const picomatch = __webpack_require__(184); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -14805,15 +14665,15 @@ exports.matchAny = matchAny; /***/ }), -/* 171 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isGlob = __webpack_require__(172); +var isGlob = __webpack_require__(171); var pathPosixDirname = __webpack_require__(4).posix.dirname; -var isWin32 = __webpack_require__(121).platform() === 'win32'; +var isWin32 = __webpack_require__(120).platform() === 'win32'; var slash = '/'; var backslash = /\\/g; @@ -14854,7 +14714,7 @@ module.exports = function globParent(str, opts) { /***/ }), -/* 172 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -14864,7 +14724,7 @@ module.exports = function globParent(str, opts) { * Released under the MIT License. */ -var isExtglob = __webpack_require__(173); +var isExtglob = __webpack_require__(172); var chars = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; @@ -14908,7 +14768,7 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 173 */ +/* 172 */ /***/ (function(module, exports) { /*! @@ -14934,16 +14794,16 @@ module.exports = function isExtglob(str) { /***/ }), -/* 174 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const util = __webpack_require__(112); -const braces = __webpack_require__(175); -const picomatch = __webpack_require__(185); -const utils = __webpack_require__(188); +const util = __webpack_require__(111); +const braces = __webpack_require__(174); +const picomatch = __webpack_require__(184); +const utils = __webpack_require__(187); const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); /** @@ -15408,16 +15268,16 @@ module.exports = micromatch; /***/ }), -/* 175 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(176); -const compile = __webpack_require__(178); -const expand = __webpack_require__(182); -const parse = __webpack_require__(183); +const stringify = __webpack_require__(175); +const compile = __webpack_require__(177); +const expand = __webpack_require__(181); +const parse = __webpack_require__(182); /** * Expand the given pattern or create a regex-compatible string. @@ -15585,13 +15445,13 @@ module.exports = braces; /***/ }), -/* 176 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(177); +const utils = __webpack_require__(176); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -15624,7 +15484,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 177 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15743,14 +15603,14 @@ exports.flatten = (...args) => { /***/ }), -/* 178 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(179); -const utils = __webpack_require__(177); +const fill = __webpack_require__(178); +const utils = __webpack_require__(176); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -15807,7 +15667,7 @@ module.exports = compile; /***/ }), -/* 179 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15820,8 +15680,8 @@ module.exports = compile; -const util = __webpack_require__(112); -const toRegexRange = __webpack_require__(180); +const util = __webpack_require__(111); +const toRegexRange = __webpack_require__(179); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -16063,7 +15923,7 @@ module.exports = fill; /***/ }), -/* 180 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16076,7 +15936,7 @@ module.exports = fill; -const isNumber = __webpack_require__(181); +const isNumber = __webpack_require__(180); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -16358,7 +16218,7 @@ module.exports = toRegexRange; /***/ }), -/* 181 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16383,15 +16243,15 @@ module.exports = function(num) { /***/ }), -/* 182 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(179); -const stringify = __webpack_require__(176); -const utils = __webpack_require__(177); +const fill = __webpack_require__(178); +const stringify = __webpack_require__(175); +const utils = __webpack_require__(176); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -16503,13 +16363,13 @@ module.exports = expand; /***/ }), -/* 183 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(176); +const stringify = __webpack_require__(175); /** * Constants @@ -16531,7 +16391,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(184); +} = __webpack_require__(183); /** * parse @@ -16843,7 +16703,7 @@ module.exports = parse; /***/ }), -/* 184 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16907,27 +16767,27 @@ module.exports = { /***/ }), -/* 185 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(186); +module.exports = __webpack_require__(185); /***/ }), -/* 186 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const scan = __webpack_require__(187); -const parse = __webpack_require__(190); -const utils = __webpack_require__(188); -const constants = __webpack_require__(189); +const scan = __webpack_require__(186); +const parse = __webpack_require__(189); +const utils = __webpack_require__(187); +const constants = __webpack_require__(188); const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** @@ -17263,13 +17123,13 @@ module.exports = picomatch; /***/ }), -/* 187 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(188); +const utils = __webpack_require__(187); const { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ @@ -17286,7 +17146,7 @@ const { CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __webpack_require__(189); +} = __webpack_require__(188); const isPathSeparator = code => { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; @@ -17653,7 +17513,7 @@ module.exports = scan; /***/ }), -/* 188 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17666,7 +17526,7 @@ const { REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL -} = __webpack_require__(189); +} = __webpack_require__(188); exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); @@ -17724,7 +17584,7 @@ exports.wrapOutput = (input, state = {}, options = {}) => { /***/ }), -/* 189 */ +/* 188 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17910,14 +17770,14 @@ module.exports = { /***/ }), -/* 190 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const constants = __webpack_require__(189); -const utils = __webpack_require__(188); +const constants = __webpack_require__(188); +const utils = __webpack_require__(187); /** * Constants @@ -18995,14 +18855,14 @@ module.exports = parse; /***/ }), -/* 191 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = void 0; -const merge2 = __webpack_require__(146); +const merge2 = __webpack_require__(145); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -19019,7 +18879,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 192 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19037,14 +18897,14 @@ exports.isEmpty = isEmpty; /***/ }), -/* 193 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(194); -const provider_1 = __webpack_require__(221); +const stream_1 = __webpack_require__(193); +const provider_1 = __webpack_require__(220); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -19072,16 +18932,16 @@ exports.default = ProviderAsync; /***/ }), -/* 194 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(138); -const fsStat = __webpack_require__(195); -const fsWalk = __webpack_require__(200); -const reader_1 = __webpack_require__(220); +const stream_1 = __webpack_require__(137); +const fsStat = __webpack_require__(194); +const fsWalk = __webpack_require__(199); +const reader_1 = __webpack_require__(219); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -19134,15 +18994,15 @@ exports.default = ReaderStream; /***/ }), -/* 195 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(196); -const sync = __webpack_require__(197); -const settings_1 = __webpack_require__(198); +const async = __webpack_require__(195); +const sync = __webpack_require__(196); +const settings_1 = __webpack_require__(197); exports.Settings = settings_1.default; function stat(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -19165,7 +19025,7 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 196 */ +/* 195 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19203,7 +19063,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 197 */ +/* 196 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19232,13 +19092,13 @@ exports.read = read; /***/ }), -/* 198 */ +/* 197 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(199); +const fs = __webpack_require__(198); class Settings { constructor(_options = {}) { this._options = _options; @@ -19255,13 +19115,13 @@ exports.default = Settings; /***/ }), -/* 199 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -19278,16 +19138,16 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 200 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(201); -const stream_1 = __webpack_require__(216); -const sync_1 = __webpack_require__(217); -const settings_1 = __webpack_require__(219); +const async_1 = __webpack_require__(200); +const stream_1 = __webpack_require__(215); +const sync_1 = __webpack_require__(216); +const settings_1 = __webpack_require__(218); exports.Settings = settings_1.default; function walk(directory, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -19317,13 +19177,13 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 201 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(202); +const async_1 = __webpack_require__(201); class AsyncProvider { constructor(_root, _settings) { this._root = _root; @@ -19354,17 +19214,17 @@ function callSuccessCallback(callback, entries) { /***/ }), -/* 202 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const events_1 = __webpack_require__(156); -const fsScandir = __webpack_require__(203); -const fastq = __webpack_require__(212); -const common = __webpack_require__(214); -const reader_1 = __webpack_require__(215); +const events_1 = __webpack_require__(155); +const fsScandir = __webpack_require__(202); +const fastq = __webpack_require__(211); +const common = __webpack_require__(213); +const reader_1 = __webpack_require__(214); class AsyncReader extends reader_1.default { constructor(_root, _settings) { super(_root, _settings); @@ -19454,15 +19314,15 @@ exports.default = AsyncReader; /***/ }), -/* 203 */ +/* 202 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__(204); -const sync = __webpack_require__(209); -const settings_1 = __webpack_require__(210); +const async = __webpack_require__(203); +const sync = __webpack_require__(208); +const settings_1 = __webpack_require__(209); exports.Settings = settings_1.default; function scandir(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -19485,16 +19345,16 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 204 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(195); -const rpl = __webpack_require__(205); -const constants_1 = __webpack_require__(206); -const utils = __webpack_require__(207); +const fsStat = __webpack_require__(194); +const rpl = __webpack_require__(204); +const constants_1 = __webpack_require__(205); +const utils = __webpack_require__(206); function read(directory, settings, callback) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings, callback); @@ -19582,7 +19442,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 205 */ +/* 204 */ /***/ (function(module, exports) { module.exports = runParallel @@ -19636,7 +19496,7 @@ function runParallel (tasks, cb) { /***/ }), -/* 206 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19656,18 +19516,18 @@ exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_B /***/ }), -/* 207 */ +/* 206 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(208); +const fs = __webpack_require__(207); exports.fs = fs; /***/ }), -/* 208 */ +/* 207 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19692,15 +19552,15 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 209 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(195); -const constants_1 = __webpack_require__(206); -const utils = __webpack_require__(207); +const fsStat = __webpack_require__(194); +const constants_1 = __webpack_require__(205); +const utils = __webpack_require__(206); function read(directory, settings) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings); @@ -19751,15 +19611,15 @@ exports.readdir = readdir; /***/ }), -/* 210 */ +/* 209 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(195); -const fs = __webpack_require__(211); +const fsStat = __webpack_require__(194); +const fs = __webpack_require__(210); class Settings { constructor(_options = {}) { this._options = _options; @@ -19782,13 +19642,13 @@ exports.default = Settings; /***/ }), -/* 211 */ +/* 210 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -19807,13 +19667,13 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 212 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var reusify = __webpack_require__(213) +var reusify = __webpack_require__(212) function fastqueue (context, worker, concurrency) { if (typeof context === 'function') { @@ -19987,7 +19847,7 @@ module.exports = fastqueue /***/ }), -/* 213 */ +/* 212 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20027,7 +19887,7 @@ module.exports = reusify /***/ }), -/* 214 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20058,13 +19918,13 @@ exports.joinPathSegments = joinPathSegments; /***/ }), -/* 215 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const common = __webpack_require__(214); +const common = __webpack_require__(213); class Reader { constructor(_root, _settings) { this._root = _root; @@ -20076,14 +19936,14 @@ exports.default = Reader; /***/ }), -/* 216 */ +/* 215 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(138); -const async_1 = __webpack_require__(202); +const stream_1 = __webpack_require__(137); +const async_1 = __webpack_require__(201); class StreamProvider { constructor(_root, _settings) { this._root = _root; @@ -20113,13 +19973,13 @@ exports.default = StreamProvider; /***/ }), -/* 217 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(218); +const sync_1 = __webpack_require__(217); class SyncProvider { constructor(_root, _settings) { this._root = _root; @@ -20134,15 +19994,15 @@ exports.default = SyncProvider; /***/ }), -/* 218 */ +/* 217 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsScandir = __webpack_require__(203); -const common = __webpack_require__(214); -const reader_1 = __webpack_require__(215); +const fsScandir = __webpack_require__(202); +const common = __webpack_require__(213); +const reader_1 = __webpack_require__(214); class SyncReader extends reader_1.default { constructor() { super(...arguments); @@ -20200,14 +20060,14 @@ exports.default = SyncReader; /***/ }), -/* 219 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsScandir = __webpack_require__(203); +const fsScandir = __webpack_require__(202); class Settings { constructor(_options = {}) { this._options = _options; @@ -20233,15 +20093,15 @@ exports.default = Settings; /***/ }), -/* 220 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(195); -const utils = __webpack_require__(165); +const fsStat = __webpack_require__(194); +const utils = __webpack_require__(164); class Reader { constructor(_settings) { this._settings = _settings; @@ -20273,17 +20133,17 @@ exports.default = Reader; /***/ }), -/* 221 */ +/* 220 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(222); -const entry_1 = __webpack_require__(225); -const error_1 = __webpack_require__(226); -const entry_2 = __webpack_require__(227); +const deep_1 = __webpack_require__(221); +const entry_1 = __webpack_require__(224); +const error_1 = __webpack_require__(225); +const entry_2 = __webpack_require__(226); class Provider { constructor(_settings) { this._settings = _settings; @@ -20328,14 +20188,14 @@ exports.default = Provider; /***/ }), -/* 222 */ +/* 221 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(165); -const partial_1 = __webpack_require__(223); +const utils = __webpack_require__(164); +const partial_1 = __webpack_require__(222); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -20397,13 +20257,13 @@ exports.default = DeepFilter; /***/ }), -/* 223 */ +/* 222 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(224); +const matcher_1 = __webpack_require__(223); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -20442,13 +20302,13 @@ exports.default = PartialMatcher; /***/ }), -/* 224 */ +/* 223 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(165); +const utils = __webpack_require__(164); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -20499,13 +20359,13 @@ exports.default = Matcher; /***/ }), -/* 225 */ +/* 224 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(165); +const utils = __webpack_require__(164); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -20562,13 +20422,13 @@ exports.default = EntryFilter; /***/ }), -/* 226 */ +/* 225 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(165); +const utils = __webpack_require__(164); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -20584,13 +20444,13 @@ exports.default = ErrorFilter; /***/ }), -/* 227 */ +/* 226 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(165); +const utils = __webpack_require__(164); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -20617,15 +20477,15 @@ exports.default = EntryTransformer; /***/ }), -/* 228 */ +/* 227 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(138); -const stream_2 = __webpack_require__(194); -const provider_1 = __webpack_require__(221); +const stream_1 = __webpack_require__(137); +const stream_2 = __webpack_require__(193); +const provider_1 = __webpack_require__(220); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -20655,14 +20515,14 @@ exports.default = ProviderStream; /***/ }), -/* 229 */ +/* 228 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(230); -const provider_1 = __webpack_require__(221); +const sync_1 = __webpack_require__(229); +const provider_1 = __webpack_require__(220); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -20685,15 +20545,15 @@ exports.default = ProviderSync; /***/ }), -/* 230 */ +/* 229 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(195); -const fsWalk = __webpack_require__(200); -const reader_1 = __webpack_require__(220); +const fsStat = __webpack_require__(194); +const fsWalk = __webpack_require__(199); +const reader_1 = __webpack_require__(219); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -20735,15 +20595,15 @@ exports.default = ReaderSync; /***/ }), -/* 231 */ +/* 230 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__(134); -const os = __webpack_require__(121); +const fs = __webpack_require__(133); +const os = __webpack_require__(120); /** * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 @@ -20799,13 +20659,13 @@ exports.default = Settings; /***/ }), -/* 232 */ +/* 231 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(233); +const pathType = __webpack_require__(232); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -20881,13 +20741,13 @@ module.exports.sync = (input, options) => { /***/ }), -/* 233 */ +/* 232 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(134); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); async function isType(fsStatType, statsMethodName, filePath) { if (typeof filePath !== 'string') { @@ -20931,17 +20791,17 @@ exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 234 */ +/* 233 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(134); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(163); -const gitIgnore = __webpack_require__(235); -const slash = __webpack_require__(236); +const fastGlob = __webpack_require__(162); +const gitIgnore = __webpack_require__(234); +const slash = __webpack_require__(235); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -21055,7 +20915,7 @@ module.exports.sync = options => { /***/ }), -/* 235 */ +/* 234 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -21658,7 +21518,7 @@ if ( /***/ }), -/* 236 */ +/* 235 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21676,12 +21536,12 @@ module.exports = path => { /***/ }), -/* 237 */ +/* 236 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {Transform} = __webpack_require__(138); +const {Transform} = __webpack_require__(137); class ObjectTransform extends Transform { constructor() { @@ -21729,7 +21589,7 @@ module.exports = { /***/ }), -/* 238 */ +/* 237 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21751,7 +21611,7 @@ module.exports = path_ => { /***/ }), -/* 239 */ +/* 238 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21779,15 +21639,15 @@ module.exports = (childPath, parentPath) => { /***/ }), -/* 240 */ +/* 239 */ /***/ (function(module, exports, __webpack_require__) { -const assert = __webpack_require__(140) +const assert = __webpack_require__(139) const path = __webpack_require__(4) -const fs = __webpack_require__(134) +const fs = __webpack_require__(133) let glob = undefined try { - glob = __webpack_require__(147) + glob = __webpack_require__(146) } catch (_err) { // treat glob as optional. } @@ -22145,12 +22005,12 @@ rimraf.sync = rimrafSync /***/ }), -/* 241 */ +/* 240 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(242); +const AggregateError = __webpack_require__(241); module.exports = async ( iterable, @@ -22233,13 +22093,13 @@ module.exports = async ( /***/ }), -/* 242 */ +/* 241 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(243); -const cleanStack = __webpack_require__(244); +const indentString = __webpack_require__(242); +const cleanStack = __webpack_require__(243); const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); @@ -22287,7 +22147,7 @@ module.exports = AggregateError; /***/ }), -/* 243 */ +/* 242 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22329,12 +22189,12 @@ module.exports = (string, count = 1, options) => { /***/ }), -/* 244 */ +/* 243 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(121); +const os = __webpack_require__(120); const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/; const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/; @@ -22376,10 +22236,10 @@ module.exports = (stack, options) => { /***/ }), -/* 245 */ +/* 244 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(134), +var fs = __webpack_require__(133), path = __webpack_require__(4); module.exports = ncp; @@ -22643,7 +22503,7 @@ function ncp (source, dest, options, callback) { /***/ }), -/* 246 */ +/* 245 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22692,7 +22552,7 @@ const log = new Log(); /***/ }), -/* 247 */ +/* 246 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22747,7 +22607,7 @@ async function parallelize(items, fn, concurrency = 4) { } /***/ }), -/* 248 */ +/* 247 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22758,14 +22618,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProjectGraph", function() { return buildProjectGraph; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topologicallyBatchProjects", function() { return topologicallyBatchProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includeTransitiveProjects", function() { return includeTransitiveProjects; }); -/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(147); +/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(146); /* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glob__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(249); -/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(250); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(248); +/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(249); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -22940,7 +22800,7 @@ function includeTransitiveProjects(subsetOfProjects, allProjects, { } /***/ }), -/* 249 */ +/* 248 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22962,22 +22822,22 @@ class CliError extends Error { } /***/ }), -/* 250 */ +/* 249 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return Project; }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(134); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(249); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(246); -/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(251); -/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(318); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(248); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(245); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(250); +/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(317); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -23170,7 +23030,7 @@ function normalizePath(path) { } /***/ }), -/* 251 */ +/* 250 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23181,9 +23041,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinkDependency", function() { return isLinkDependency; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelPackageDependency", function() { return isBazelPackageDependency; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return transformDependencies; }); -/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(252); +/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(251); /* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(read_pkg__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(305); +/* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(304); /* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(write_pkg__WEBPACK_IMPORTED_MODULE_1__); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } @@ -23251,15 +23111,15 @@ function transformDependencies(dependencies = {}) { } /***/ }), -/* 252 */ +/* 251 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(134); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const parseJson = __webpack_require__(253); +const parseJson = __webpack_require__(252); const readFileAsync = promisify(fs.readFile); @@ -23274,7 +23134,7 @@ module.exports = async options => { const json = parseJson(await readFileAsync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(274)(json); + __webpack_require__(273)(json); } return json; @@ -23291,7 +23151,7 @@ module.exports.sync = options => { const json = parseJson(fs.readFileSync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(274)(json); + __webpack_require__(273)(json); } return json; @@ -23299,15 +23159,15 @@ module.exports.sync = options => { /***/ }), -/* 253 */ +/* 252 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const errorEx = __webpack_require__(254); -const fallback = __webpack_require__(256); -const {default: LinesAndColumns} = __webpack_require__(257); -const {codeFrameColumns} = __webpack_require__(258); +const errorEx = __webpack_require__(253); +const fallback = __webpack_require__(255); +const {default: LinesAndColumns} = __webpack_require__(256); +const {codeFrameColumns} = __webpack_require__(257); const JSONError = errorEx('JSONError', { fileName: errorEx.append('in %s'), @@ -23356,14 +23216,14 @@ module.exports = (string, reviver, filename) => { /***/ }), -/* 254 */ +/* 253 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(112); -var isArrayish = __webpack_require__(255); +var util = __webpack_require__(111); +var isArrayish = __webpack_require__(254); var errorEx = function errorEx(name, properties) { if (!name || name.constructor !== String) { @@ -23496,7 +23356,7 @@ module.exports = errorEx; /***/ }), -/* 255 */ +/* 254 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23513,7 +23373,7 @@ module.exports = function isArrayish(obj) { /***/ }), -/* 256 */ +/* 255 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23558,7 +23418,7 @@ function parseJson (txt, reviver, context) { /***/ }), -/* 257 */ +/* 256 */ /***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23622,7 +23482,7 @@ var LinesAndColumns = (function () { /***/ }), -/* 258 */ +/* 257 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23634,7 +23494,7 @@ Object.defineProperty(exports, "__esModule", { exports.codeFrameColumns = codeFrameColumns; exports.default = _default; -var _highlight = _interopRequireWildcard(__webpack_require__(259)); +var _highlight = _interopRequireWildcard(__webpack_require__(258)); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } @@ -23795,7 +23655,7 @@ function _default(rawLines, lineNumber, colNumber, opts = {}) { } /***/ }), -/* 259 */ +/* 258 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23808,11 +23668,11 @@ exports.shouldHighlight = shouldHighlight; exports.getChalk = getChalk; exports.default = highlight; -var jsTokensNs = _interopRequireWildcard(__webpack_require__(260)); +var jsTokensNs = _interopRequireWildcard(__webpack_require__(259)); -var _helperValidatorIdentifier = __webpack_require__(261); +var _helperValidatorIdentifier = __webpack_require__(260); -var _chalk = _interopRequireDefault(__webpack_require__(264)); +var _chalk = _interopRequireDefault(__webpack_require__(263)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -23925,7 +23785,7 @@ function highlight(code, options = {}) { } /***/ }), -/* 260 */ +/* 259 */ /***/ (function(module, exports) { // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell @@ -23954,7 +23814,7 @@ exports.matchToToken = function(match) { /***/ }), -/* 261 */ +/* 260 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24012,12 +23872,12 @@ Object.defineProperty(exports, "isKeyword", { } }); -var _identifier = __webpack_require__(262); +var _identifier = __webpack_require__(261); -var _keyword = __webpack_require__(263); +var _keyword = __webpack_require__(262); /***/ }), -/* 262 */ +/* 261 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24100,7 +23960,7 @@ function isIdentifierName(name) { } /***/ }), -/* 263 */ +/* 262 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24144,16 +24004,16 @@ function isKeyword(word) { } /***/ }), -/* 264 */ +/* 263 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(265); -const ansiStyles = __webpack_require__(266); -const stdoutColor = __webpack_require__(271).stdout; +const escapeStringRegexp = __webpack_require__(264); +const ansiStyles = __webpack_require__(265); +const stdoutColor = __webpack_require__(270).stdout; -const template = __webpack_require__(273); +const template = __webpack_require__(272); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -24379,7 +24239,7 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 265 */ +/* 264 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24397,12 +24257,12 @@ module.exports = function (str) { /***/ }), -/* 266 */ +/* 265 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(267); +const colorConvert = __webpack_require__(266); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -24567,14 +24427,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 267 */ +/* 266 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(268); -var route = __webpack_require__(270); +var conversions = __webpack_require__(267); +var route = __webpack_require__(269); var convert = {}; @@ -24654,11 +24514,11 @@ module.exports = convert; /***/ }), -/* 268 */ +/* 267 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ -var cssKeywords = __webpack_require__(269); +var cssKeywords = __webpack_require__(268); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -25528,7 +25388,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 269 */ +/* 268 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25687,10 +25547,10 @@ module.exports = { /***/ }), -/* 270 */ +/* 269 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(268); +var conversions = __webpack_require__(267); /* this function routes a model to all other models. @@ -25790,13 +25650,13 @@ module.exports = function (fromModel) { /***/ }), -/* 271 */ +/* 270 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(121); -const hasFlag = __webpack_require__(272); +const os = __webpack_require__(120); +const hasFlag = __webpack_require__(271); const env = process.env; @@ -25928,7 +25788,7 @@ module.exports = { /***/ }), -/* 272 */ +/* 271 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25943,7 +25803,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 273 */ +/* 272 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26078,15 +25938,15 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 274 */ +/* 273 */ /***/ (function(module, exports, __webpack_require__) { module.exports = normalize -var fixer = __webpack_require__(275) +var fixer = __webpack_require__(274) normalize.fixer = fixer -var makeWarning = __webpack_require__(303) +var makeWarning = __webpack_require__(302) var fieldsToFix = ['name','version','description','repository','modules','scripts' ,'files','bin','man','bugs','keywords','readme','homepage','license'] @@ -26123,17 +25983,17 @@ function ucFirst (string) { /***/ }), -/* 275 */ +/* 274 */ /***/ (function(module, exports, __webpack_require__) { -var semver = __webpack_require__(276) -var validateLicense = __webpack_require__(277); -var hostedGitInfo = __webpack_require__(282) -var isBuiltinModule = __webpack_require__(286).isCore +var semver = __webpack_require__(275) +var validateLicense = __webpack_require__(276); +var hostedGitInfo = __webpack_require__(281) +var isBuiltinModule = __webpack_require__(285).isCore var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = __webpack_require__(301) -var url = __webpack_require__(283) -var typos = __webpack_require__(302) +var extractDescription = __webpack_require__(300) +var url = __webpack_require__(282) +var typos = __webpack_require__(301) var fixer = module.exports = { // default warning function @@ -26547,7 +26407,7 @@ function bugsTypos(bugs, warn) { /***/ }), -/* 276 */ +/* 275 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -28036,11 +27896,11 @@ function coerce (version) { /***/ }), -/* 277 */ +/* 276 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(278); -var correct = __webpack_require__(280); +var parse = __webpack_require__(277); +var correct = __webpack_require__(279); var genericWarning = ( 'license should be ' + @@ -28126,10 +27986,10 @@ module.exports = function(argument) { /***/ }), -/* 278 */ +/* 277 */ /***/ (function(module, exports, __webpack_require__) { -var parser = __webpack_require__(279).parser +var parser = __webpack_require__(278).parser module.exports = function (argument) { return parser.parse(argument) @@ -28137,7 +27997,7 @@ module.exports = function (argument) { /***/ }), -/* 279 */ +/* 278 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */ @@ -29490,7 +29350,7 @@ exports.main = function commonjsMain(args) { console.log('Usage: '+args[0]+' FILE'); process.exit(1); } - var source = __webpack_require__(134).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8"); + var source = __webpack_require__(133).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8"); return exports.parser.parse(source); }; if ( true && __webpack_require__.c[__webpack_require__.s] === module) { @@ -29498,13 +29358,13 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { } } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 280 */ +/* 279 */ /***/ (function(module, exports, __webpack_require__) { -var licenseIDs = __webpack_require__(281); +var licenseIDs = __webpack_require__(280); function valid(string) { return licenseIDs.indexOf(string) > -1; @@ -29744,20 +29604,20 @@ module.exports = function(identifier) { /***/ }), -/* 281 */ +/* 280 */ /***/ (function(module) { module.exports = JSON.parse("[\"Glide\",\"Abstyles\",\"AFL-1.1\",\"AFL-1.2\",\"AFL-2.0\",\"AFL-2.1\",\"AFL-3.0\",\"AMPAS\",\"APL-1.0\",\"Adobe-Glyph\",\"APAFML\",\"Adobe-2006\",\"AGPL-1.0\",\"Afmparse\",\"Aladdin\",\"ADSL\",\"AMDPLPA\",\"ANTLR-PD\",\"Apache-1.0\",\"Apache-1.1\",\"Apache-2.0\",\"AML\",\"APSL-1.0\",\"APSL-1.1\",\"APSL-1.2\",\"APSL-2.0\",\"Artistic-1.0\",\"Artistic-1.0-Perl\",\"Artistic-1.0-cl8\",\"Artistic-2.0\",\"AAL\",\"Bahyph\",\"Barr\",\"Beerware\",\"BitTorrent-1.0\",\"BitTorrent-1.1\",\"BSL-1.0\",\"Borceux\",\"BSD-2-Clause\",\"BSD-2-Clause-FreeBSD\",\"BSD-2-Clause-NetBSD\",\"BSD-3-Clause\",\"BSD-3-Clause-Clear\",\"BSD-4-Clause\",\"BSD-Protection\",\"BSD-Source-Code\",\"BSD-3-Clause-Attribution\",\"0BSD\",\"BSD-4-Clause-UC\",\"bzip2-1.0.5\",\"bzip2-1.0.6\",\"Caldera\",\"CECILL-1.0\",\"CECILL-1.1\",\"CECILL-2.0\",\"CECILL-2.1\",\"CECILL-B\",\"CECILL-C\",\"ClArtistic\",\"MIT-CMU\",\"CNRI-Jython\",\"CNRI-Python\",\"CNRI-Python-GPL-Compatible\",\"CPOL-1.02\",\"CDDL-1.0\",\"CDDL-1.1\",\"CPAL-1.0\",\"CPL-1.0\",\"CATOSL-1.1\",\"Condor-1.1\",\"CC-BY-1.0\",\"CC-BY-2.0\",\"CC-BY-2.5\",\"CC-BY-3.0\",\"CC-BY-4.0\",\"CC-BY-ND-1.0\",\"CC-BY-ND-2.0\",\"CC-BY-ND-2.5\",\"CC-BY-ND-3.0\",\"CC-BY-ND-4.0\",\"CC-BY-NC-1.0\",\"CC-BY-NC-2.0\",\"CC-BY-NC-2.5\",\"CC-BY-NC-3.0\",\"CC-BY-NC-4.0\",\"CC-BY-NC-ND-1.0\",\"CC-BY-NC-ND-2.0\",\"CC-BY-NC-ND-2.5\",\"CC-BY-NC-ND-3.0\",\"CC-BY-NC-ND-4.0\",\"CC-BY-NC-SA-1.0\",\"CC-BY-NC-SA-2.0\",\"CC-BY-NC-SA-2.5\",\"CC-BY-NC-SA-3.0\",\"CC-BY-NC-SA-4.0\",\"CC-BY-SA-1.0\",\"CC-BY-SA-2.0\",\"CC-BY-SA-2.5\",\"CC-BY-SA-3.0\",\"CC-BY-SA-4.0\",\"CC0-1.0\",\"Crossword\",\"CrystalStacker\",\"CUA-OPL-1.0\",\"Cube\",\"curl\",\"D-FSL-1.0\",\"diffmark\",\"WTFPL\",\"DOC\",\"Dotseqn\",\"DSDP\",\"dvipdfm\",\"EPL-1.0\",\"ECL-1.0\",\"ECL-2.0\",\"eGenix\",\"EFL-1.0\",\"EFL-2.0\",\"MIT-advertising\",\"MIT-enna\",\"Entessa\",\"ErlPL-1.1\",\"EUDatagrid\",\"EUPL-1.0\",\"EUPL-1.1\",\"Eurosym\",\"Fair\",\"MIT-feh\",\"Frameworx-1.0\",\"FreeImage\",\"FTL\",\"FSFAP\",\"FSFUL\",\"FSFULLR\",\"Giftware\",\"GL2PS\",\"Glulxe\",\"AGPL-3.0\",\"GFDL-1.1\",\"GFDL-1.2\",\"GFDL-1.3\",\"GPL-1.0\",\"GPL-2.0\",\"GPL-3.0\",\"LGPL-2.1\",\"LGPL-3.0\",\"LGPL-2.0\",\"gnuplot\",\"gSOAP-1.3b\",\"HaskellReport\",\"HPND\",\"IBM-pibs\",\"IPL-1.0\",\"ICU\",\"ImageMagick\",\"iMatix\",\"Imlib2\",\"IJG\",\"Info-ZIP\",\"Intel-ACPI\",\"Intel\",\"Interbase-1.0\",\"IPA\",\"ISC\",\"JasPer-2.0\",\"JSON\",\"LPPL-1.0\",\"LPPL-1.1\",\"LPPL-1.2\",\"LPPL-1.3a\",\"LPPL-1.3c\",\"Latex2e\",\"BSD-3-Clause-LBNL\",\"Leptonica\",\"LGPLLR\",\"Libpng\",\"libtiff\",\"LAL-1.2\",\"LAL-1.3\",\"LiLiQ-P-1.1\",\"LiLiQ-Rplus-1.1\",\"LiLiQ-R-1.1\",\"LPL-1.02\",\"LPL-1.0\",\"MakeIndex\",\"MTLL\",\"MS-PL\",\"MS-RL\",\"MirOS\",\"MITNFA\",\"MIT\",\"Motosoto\",\"MPL-1.0\",\"MPL-1.1\",\"MPL-2.0\",\"MPL-2.0-no-copyleft-exception\",\"mpich2\",\"Multics\",\"Mup\",\"NASA-1.3\",\"Naumen\",\"NBPL-1.0\",\"NetCDF\",\"NGPL\",\"NOSL\",\"NPL-1.0\",\"NPL-1.1\",\"Newsletr\",\"NLPL\",\"Nokia\",\"NPOSL-3.0\",\"NLOD-1.0\",\"Noweb\",\"NRL\",\"NTP\",\"Nunit\",\"OCLC-2.0\",\"ODbL-1.0\",\"PDDL-1.0\",\"OCCT-PL\",\"OGTSL\",\"OLDAP-2.2.2\",\"OLDAP-1.1\",\"OLDAP-1.2\",\"OLDAP-1.3\",\"OLDAP-1.4\",\"OLDAP-2.0\",\"OLDAP-2.0.1\",\"OLDAP-2.1\",\"OLDAP-2.2\",\"OLDAP-2.2.1\",\"OLDAP-2.3\",\"OLDAP-2.4\",\"OLDAP-2.5\",\"OLDAP-2.6\",\"OLDAP-2.7\",\"OLDAP-2.8\",\"OML\",\"OPL-1.0\",\"OSL-1.0\",\"OSL-1.1\",\"OSL-2.0\",\"OSL-2.1\",\"OSL-3.0\",\"OpenSSL\",\"OSET-PL-2.1\",\"PHP-3.0\",\"PHP-3.01\",\"Plexus\",\"PostgreSQL\",\"psfrag\",\"psutils\",\"Python-2.0\",\"QPL-1.0\",\"Qhull\",\"Rdisc\",\"RPSL-1.0\",\"RPL-1.1\",\"RPL-1.5\",\"RHeCos-1.1\",\"RSCPL\",\"RSA-MD\",\"Ruby\",\"SAX-PD\",\"Saxpath\",\"SCEA\",\"SWL\",\"SMPPL\",\"Sendmail\",\"SGI-B-1.0\",\"SGI-B-1.1\",\"SGI-B-2.0\",\"OFL-1.0\",\"OFL-1.1\",\"SimPL-2.0\",\"Sleepycat\",\"SNIA\",\"Spencer-86\",\"Spencer-94\",\"Spencer-99\",\"SMLNJ\",\"SugarCRM-1.1.3\",\"SISSL\",\"SISSL-1.2\",\"SPL-1.0\",\"Watcom-1.0\",\"TCL\",\"Unlicense\",\"TMate\",\"TORQUE-1.1\",\"TOSL\",\"Unicode-TOU\",\"UPL-1.0\",\"NCSA\",\"Vim\",\"VOSTROM\",\"VSL-1.0\",\"W3C-19980720\",\"W3C\",\"Wsuipa\",\"Xnet\",\"X11\",\"Xerox\",\"XFree86-1.1\",\"xinetd\",\"xpp\",\"XSkat\",\"YPL-1.0\",\"YPL-1.1\",\"Zed\",\"Zend-2.0\",\"Zimbra-1.3\",\"Zimbra-1.4\",\"Zlib\",\"zlib-acknowledgement\",\"ZPL-1.1\",\"ZPL-2.0\",\"ZPL-2.1\",\"BSD-3-Clause-No-Nuclear-License\",\"BSD-3-Clause-No-Nuclear-Warranty\",\"BSD-3-Clause-No-Nuclear-License-2014\",\"eCos-2.0\",\"GPL-2.0-with-autoconf-exception\",\"GPL-2.0-with-bison-exception\",\"GPL-2.0-with-classpath-exception\",\"GPL-2.0-with-font-exception\",\"GPL-2.0-with-GCC-exception\",\"GPL-3.0-with-autoconf-exception\",\"GPL-3.0-with-GCC-exception\",\"StandardML-NJ\",\"WXwindows\"]"); /***/ }), -/* 282 */ +/* 281 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var url = __webpack_require__(283) -var gitHosts = __webpack_require__(284) -var GitHost = module.exports = __webpack_require__(285) +var url = __webpack_require__(282) +var gitHosts = __webpack_require__(283) +var GitHost = module.exports = __webpack_require__(284) var protocolToRepresentationMap = { 'git+ssh:': 'sshurl', @@ -29905,13 +29765,13 @@ function parseGitUrl (giturl) { /***/ }), -/* 283 */ +/* 282 */ /***/ (function(module, exports) { module.exports = require("url"); /***/ }), -/* 284 */ +/* 283 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -29997,12 +29857,12 @@ function formatHashFragment (fragment) { /***/ }), -/* 285 */ +/* 284 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var gitHosts = __webpack_require__(284) +var gitHosts = __webpack_require__(283) /* eslint-disable node/no-deprecated-api */ // copy-pasta util._extend from node's source, to avoid pulling @@ -30160,27 +30020,27 @@ GitHost.prototype.toString = function (opts) { /***/ }), -/* 286 */ +/* 285 */ /***/ (function(module, exports, __webpack_require__) { -var async = __webpack_require__(287); -async.core = __webpack_require__(297); -async.isCore = __webpack_require__(299); -async.sync = __webpack_require__(300); +var async = __webpack_require__(286); +async.core = __webpack_require__(296); +async.isCore = __webpack_require__(298); +async.sync = __webpack_require__(299); module.exports = async; /***/ }), -/* 287 */ +/* 286 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(134); +var fs = __webpack_require__(133); var path = __webpack_require__(4); -var caller = __webpack_require__(288); -var nodeModulesPaths = __webpack_require__(289); -var normalizeOptions = __webpack_require__(291); -var isCore = __webpack_require__(292); +var caller = __webpack_require__(287); +var nodeModulesPaths = __webpack_require__(288); +var normalizeOptions = __webpack_require__(290); +var isCore = __webpack_require__(291); var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; @@ -30477,7 +30337,7 @@ module.exports = function resolve(x, options, callback) { /***/ }), -/* 288 */ +/* 287 */ /***/ (function(module, exports) { module.exports = function () { @@ -30491,11 +30351,11 @@ module.exports = function () { /***/ }), -/* 289 */ +/* 288 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(4); -var parse = path.parse || __webpack_require__(290); +var parse = path.parse || __webpack_require__(289); var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { var prefix = '/'; @@ -30539,7 +30399,7 @@ module.exports = function nodeModulesPaths(start, opts, request) { /***/ }), -/* 290 */ +/* 289 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30621,7 +30481,7 @@ module.exports.win32 = win32.parse; /***/ }), -/* 291 */ +/* 290 */ /***/ (function(module, exports) { module.exports = function (x, opts) { @@ -30637,13 +30497,13 @@ module.exports = function (x, opts) { /***/ }), -/* 292 */ +/* 291 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var has = __webpack_require__(293); +var has = __webpack_require__(292); function specifierIncluded(current, specifier) { var nodeParts = current.split('.'); @@ -30705,7 +30565,7 @@ function versionIncluded(nodeVersion, specifierValue) { return matchesRange(current, specifierValue); } -var data = __webpack_require__(296); +var data = __webpack_require__(295); module.exports = function isCore(x, nodeVersion) { return has(data, x) && versionIncluded(nodeVersion, data[x]); @@ -30713,31 +30573,31 @@ module.exports = function isCore(x, nodeVersion) { /***/ }), -/* 293 */ +/* 292 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var bind = __webpack_require__(294); +var bind = __webpack_require__(293); module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); /***/ }), -/* 294 */ +/* 293 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var implementation = __webpack_require__(295); +var implementation = __webpack_require__(294); module.exports = Function.prototype.bind || implementation; /***/ }), -/* 295 */ +/* 294 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30796,13 +30656,13 @@ module.exports = function bind(that) { /***/ }), -/* 296 */ +/* 295 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"assert/strict\":\">= 15\",\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"diagnostics_channel\":\">= 15.1\",\"dns\":true,\"dns/promises\":\">= 15\",\"domain\":\">= 0.7.12\",\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"stream/promises\":\">= 15\",\"string_decoder\":true,\"sys\":[\">= 0.6 && < 0.7\",\">= 0.8\"],\"timers\":true,\"timers/promises\":\">= 15\",\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); /***/ }), -/* 297 */ +/* 296 */ /***/ (function(module, exports, __webpack_require__) { var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; @@ -30849,7 +30709,7 @@ function versionIncluded(specifierValue) { return matchesRange(specifierValue); } -var data = __webpack_require__(298); +var data = __webpack_require__(297); var core = {}; for (var mod in data) { // eslint-disable-line no-restricted-syntax @@ -30861,16 +30721,16 @@ module.exports = core; /***/ }), -/* 298 */ +/* 297 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"assert/strict\":\">= 15\",\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"diagnostics_channel\":\">= 15.1\",\"dns\":true,\"dns/promises\":\">= 15\",\"domain\":\">= 0.7.12\",\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"stream/promises\":\">= 15\",\"string_decoder\":true,\"sys\":[\">= 0.6 && < 0.7\",\">= 0.8\"],\"timers\":true,\"timers/promises\":\">= 15\",\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); /***/ }), -/* 299 */ +/* 298 */ /***/ (function(module, exports, __webpack_require__) { -var isCoreModule = __webpack_require__(292); +var isCoreModule = __webpack_require__(291); module.exports = function isCore(x) { return isCoreModule(x); @@ -30878,15 +30738,15 @@ module.exports = function isCore(x) { /***/ }), -/* 300 */ +/* 299 */ /***/ (function(module, exports, __webpack_require__) { -var isCore = __webpack_require__(292); -var fs = __webpack_require__(134); +var isCore = __webpack_require__(291); +var fs = __webpack_require__(133); var path = __webpack_require__(4); -var caller = __webpack_require__(288); -var nodeModulesPaths = __webpack_require__(289); -var normalizeOptions = __webpack_require__(291); +var caller = __webpack_require__(287); +var nodeModulesPaths = __webpack_require__(288); +var normalizeOptions = __webpack_require__(290); var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; @@ -31076,7 +30936,7 @@ module.exports = function resolveSync(x, options) { /***/ }), -/* 301 */ +/* 300 */ /***/ (function(module, exports) { module.exports = extractDescription @@ -31096,17 +30956,17 @@ function extractDescription (d) { /***/ }), -/* 302 */ +/* 301 */ /***/ (function(module) { module.exports = JSON.parse("{\"topLevel\":{\"dependancies\":\"dependencies\",\"dependecies\":\"dependencies\",\"depdenencies\":\"dependencies\",\"devEependencies\":\"devDependencies\",\"depends\":\"dependencies\",\"dev-dependencies\":\"devDependencies\",\"devDependences\":\"devDependencies\",\"devDepenencies\":\"devDependencies\",\"devdependencies\":\"devDependencies\",\"repostitory\":\"repository\",\"repo\":\"repository\",\"prefereGlobal\":\"preferGlobal\",\"hompage\":\"homepage\",\"hampage\":\"homepage\",\"autohr\":\"author\",\"autor\":\"author\",\"contributers\":\"contributors\",\"publicationConfig\":\"publishConfig\",\"script\":\"scripts\"},\"bugs\":{\"web\":\"url\",\"name\":\"url\"},\"script\":{\"server\":\"start\",\"tests\":\"test\"}}"); /***/ }), -/* 303 */ +/* 302 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(112) -var messages = __webpack_require__(304) +var util = __webpack_require__(111) +var messages = __webpack_require__(303) module.exports = function() { var args = Array.prototype.slice.call(arguments, 0) @@ -31131,20 +30991,20 @@ function makeTypoWarning (providedName, probableName, field) { /***/ }), -/* 304 */ +/* 303 */ /***/ (function(module) { module.exports = JSON.parse("{\"repositories\":\"'repositories' (plural) Not supported. Please pick one as the 'repository' field\",\"missingRepository\":\"No repository field.\",\"brokenGitUrl\":\"Probably broken git url: %s\",\"nonObjectScripts\":\"scripts must be an object\",\"nonStringScript\":\"script values must be string commands\",\"nonArrayFiles\":\"Invalid 'files' member\",\"invalidFilename\":\"Invalid filename in 'files' list: %s\",\"nonArrayBundleDependencies\":\"Invalid 'bundleDependencies' list. Must be array of package names\",\"nonStringBundleDependency\":\"Invalid bundleDependencies member: %s\",\"nonDependencyBundleDependency\":\"Non-dependency in bundleDependencies: %s\",\"nonObjectDependencies\":\"%s field must be an object\",\"nonStringDependency\":\"Invalid dependency: %s %s\",\"deprecatedArrayDependencies\":\"specifying %s as array is deprecated\",\"deprecatedModules\":\"modules field is deprecated\",\"nonArrayKeywords\":\"keywords should be an array of strings\",\"nonStringKeyword\":\"keywords should be an array of strings\",\"conflictingName\":\"%s is also the name of a node core module.\",\"nonStringDescription\":\"'description' field should be a string\",\"missingDescription\":\"No description\",\"missingReadme\":\"No README data\",\"missingLicense\":\"No license field.\",\"nonEmailUrlBugsString\":\"Bug string field must be url, email, or {email,url}\",\"nonUrlBugsUrlField\":\"bugs.url field must be a string url. Deleted.\",\"nonEmailBugsEmailField\":\"bugs.email field must be a string email. Deleted.\",\"emptyNormalizedBugs\":\"Normalized value of bugs field is an empty object. Deleted.\",\"nonUrlHomepage\":\"homepage field must be a string url. Deleted.\",\"invalidLicense\":\"license should be a valid SPDX license expression\",\"typo\":\"%s should probably be %s.\"}"); /***/ }), -/* 305 */ +/* 304 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const writeJsonFile = __webpack_require__(306); -const sortKeys = __webpack_require__(312); +const writeJsonFile = __webpack_require__(305); +const sortKeys = __webpack_require__(311); const dependencyKeys = new Set([ 'dependencies', @@ -31209,18 +31069,18 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 306 */ +/* 305 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const fs = __webpack_require__(133); -const writeFileAtomic = __webpack_require__(307); -const sortKeys = __webpack_require__(312); -const makeDir = __webpack_require__(314); -const pify = __webpack_require__(315); -const detectIndent = __webpack_require__(317); +const fs = __webpack_require__(132); +const writeFileAtomic = __webpack_require__(306); +const sortKeys = __webpack_require__(311); +const makeDir = __webpack_require__(313); +const pify = __webpack_require__(314); +const detectIndent = __webpack_require__(316); const init = (fn, filePath, data, options) => { if (!filePath) { @@ -31292,7 +31152,7 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 307 */ +/* 306 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31302,9 +31162,9 @@ module.exports.sync = writeFileSync module.exports._getTmpname = getTmpname // for testing module.exports._cleanupOnExit = cleanupOnExit -var fs = __webpack_require__(133) -var MurmurHash3 = __webpack_require__(308) -var onExit = __webpack_require__(309) +var fs = __webpack_require__(132) +var MurmurHash3 = __webpack_require__(307) +var onExit = __webpack_require__(308) var path = __webpack_require__(4) var activeFiles = {} @@ -31312,7 +31172,7 @@ var activeFiles = {} /* istanbul ignore next */ var threadId = (function getId () { try { - var workerThreads = __webpack_require__(311) + var workerThreads = __webpack_require__(310) /// if we are in main thread, this is set to `0` return workerThreads.threadId @@ -31537,7 +31397,7 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 308 */ +/* 307 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -31679,16 +31539,16 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 309 */ +/* 308 */ /***/ (function(module, exports, __webpack_require__) { // Note: since nyc uses this module to output coverage, any lines // that are in the direct sync flow of nyc's outputCoverage are // ignored, since we can never get coverage for them. -var assert = __webpack_require__(140) -var signals = __webpack_require__(310) +var assert = __webpack_require__(139) +var signals = __webpack_require__(309) -var EE = __webpack_require__(156) +var EE = __webpack_require__(155) /* istanbul ignore if */ if (typeof EE !== 'function') { EE = EE.EventEmitter @@ -31842,7 +31702,7 @@ function processEmit (ev, arg) { /***/ }), -/* 310 */ +/* 309 */ /***/ (function(module, exports) { // This is not the set of all possible signals. @@ -31901,18 +31761,18 @@ if (process.platform === 'linux') { /***/ }), -/* 311 */ +/* 310 */ /***/ (function(module, exports) { module.exports = require(undefined); /***/ }), -/* 312 */ +/* 311 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isPlainObj = __webpack_require__(313); +const isPlainObj = __webpack_require__(312); module.exports = (obj, opts) => { if (!isPlainObj(obj)) { @@ -31969,7 +31829,7 @@ module.exports = (obj, opts) => { /***/ }), -/* 313 */ +/* 312 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31983,15 +31843,15 @@ module.exports = function (x) { /***/ }), -/* 314 */ +/* 313 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const pify = __webpack_require__(315); -const semver = __webpack_require__(316); +const pify = __webpack_require__(314); +const semver = __webpack_require__(315); const defaults = { mode: 0o777 & (~process.umask()), @@ -32129,7 +31989,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 315 */ +/* 314 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32204,7 +32064,7 @@ module.exports = (input, options) => { /***/ }), -/* 316 */ +/* 315 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -33693,7 +33553,7 @@ function coerce (version) { /***/ }), -/* 317 */ +/* 316 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33822,7 +33682,7 @@ module.exports = str => { /***/ }), -/* 318 */ +/* 317 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -33830,7 +33690,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installInDir", function() { return installInDir; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackage", function() { return runScriptInPackage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackageStreaming", function() { return runScriptInPackageStreaming; }); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(319); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(318); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -33882,22 +33742,22 @@ function runScriptInPackageStreaming({ } /***/ }), -/* 319 */ +/* 318 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawn", function() { return spawn; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawnStreaming", function() { return spawnStreaming; }); -/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(138); +/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(137); /* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stream__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(113); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(112); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(320); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(319); /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(356); +/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(355); /* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(246); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(245); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -33972,23 +33832,23 @@ function spawnStreaming(command, args, opts, { } /***/ }), -/* 320 */ +/* 319 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const childProcess = __webpack_require__(321); -const crossSpawn = __webpack_require__(322); -const stripFinalNewline = __webpack_require__(335); -const npmRunPath = __webpack_require__(336); -const onetime = __webpack_require__(338); -const makeError = __webpack_require__(340); -const normalizeStdio = __webpack_require__(345); -const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(346); -const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(347); -const {mergePromise, getSpawnedPromise} = __webpack_require__(354); -const {joinCommand, parseCommand} = __webpack_require__(355); +const childProcess = __webpack_require__(320); +const crossSpawn = __webpack_require__(321); +const stripFinalNewline = __webpack_require__(334); +const npmRunPath = __webpack_require__(335); +const onetime = __webpack_require__(337); +const makeError = __webpack_require__(339); +const normalizeStdio = __webpack_require__(344); +const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(345); +const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(346); +const {mergePromise, getSpawnedPromise} = __webpack_require__(353); +const {joinCommand, parseCommand} = __webpack_require__(354); const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; @@ -34235,21 +34095,21 @@ module.exports.node = (scriptPath, args, options = {}) => { /***/ }), -/* 321 */ +/* 320 */ /***/ (function(module, exports) { module.exports = require("child_process"); /***/ }), -/* 322 */ +/* 321 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const cp = __webpack_require__(321); -const parse = __webpack_require__(323); -const enoent = __webpack_require__(334); +const cp = __webpack_require__(320); +const parse = __webpack_require__(322); +const enoent = __webpack_require__(333); function spawn(command, args, options) { // Parse the arguments @@ -34287,16 +34147,16 @@ module.exports._enoent = enoent; /***/ }), -/* 323 */ +/* 322 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const resolveCommand = __webpack_require__(324); -const escape = __webpack_require__(330); -const readShebang = __webpack_require__(331); +const resolveCommand = __webpack_require__(323); +const escape = __webpack_require__(329); +const readShebang = __webpack_require__(330); const isWin = process.platform === 'win32'; const isExecutableRegExp = /\.(?:com|exe)$/i; @@ -34385,15 +34245,15 @@ module.exports = parse; /***/ }), -/* 324 */ +/* 323 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const which = __webpack_require__(325); -const getPathKey = __webpack_require__(329); +const which = __webpack_require__(324); +const getPathKey = __webpack_require__(328); function resolveCommandAttempt(parsed, withoutPathExt) { const env = parsed.options.env || process.env; @@ -34444,7 +34304,7 @@ module.exports = resolveCommand; /***/ }), -/* 325 */ +/* 324 */ /***/ (function(module, exports, __webpack_require__) { const isWindows = process.platform === 'win32' || @@ -34453,7 +34313,7 @@ const isWindows = process.platform === 'win32' || const path = __webpack_require__(4) const COLON = isWindows ? ';' : ':' -const isexe = __webpack_require__(326) +const isexe = __webpack_require__(325) const getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) @@ -34575,15 +34435,15 @@ which.sync = whichSync /***/ }), -/* 326 */ +/* 325 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(134) +var fs = __webpack_require__(133) var core if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(327) + core = __webpack_require__(326) } else { - core = __webpack_require__(328) + core = __webpack_require__(327) } module.exports = isexe @@ -34638,13 +34498,13 @@ function sync (path, options) { /***/ }), -/* 327 */ +/* 326 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe isexe.sync = sync -var fs = __webpack_require__(134) +var fs = __webpack_require__(133) function checkPathExt (path, options) { var pathext = options.pathExt !== undefined ? @@ -34686,13 +34546,13 @@ function sync (path, options) { /***/ }), -/* 328 */ +/* 327 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe isexe.sync = sync -var fs = __webpack_require__(134) +var fs = __webpack_require__(133) function isexe (path, options, cb) { fs.stat(path, function (er, stat) { @@ -34733,7 +34593,7 @@ function checkMode (stat, options) { /***/ }), -/* 329 */ +/* 328 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34756,7 +34616,7 @@ module.exports.default = pathKey; /***/ }), -/* 330 */ +/* 329 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34808,14 +34668,14 @@ module.exports.argument = escapeArgument; /***/ }), -/* 331 */ +/* 330 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const shebangCommand = __webpack_require__(332); +const fs = __webpack_require__(133); +const shebangCommand = __webpack_require__(331); function readShebang(command) { // Read the first 150 bytes from the file @@ -34838,12 +34698,12 @@ module.exports = readShebang; /***/ }), -/* 332 */ +/* 331 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const shebangRegex = __webpack_require__(333); +const shebangRegex = __webpack_require__(332); module.exports = (string = '') => { const match = string.match(shebangRegex); @@ -34864,7 +34724,7 @@ module.exports = (string = '') => { /***/ }), -/* 333 */ +/* 332 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34873,7 +34733,7 @@ module.exports = /^#!(.*)/; /***/ }), -/* 334 */ +/* 333 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34939,7 +34799,7 @@ module.exports = { /***/ }), -/* 335 */ +/* 334 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34962,13 +34822,13 @@ module.exports = input => { /***/ }), -/* 336 */ +/* 335 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathKey = __webpack_require__(337); +const pathKey = __webpack_require__(336); const npmRunPath = options => { options = { @@ -35016,7 +34876,7 @@ module.exports.env = options => { /***/ }), -/* 337 */ +/* 336 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35039,12 +34899,12 @@ module.exports.default = pathKey; /***/ }), -/* 338 */ +/* 337 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const mimicFn = __webpack_require__(339); +const mimicFn = __webpack_require__(338); const calledFunctions = new WeakMap(); @@ -35096,7 +34956,7 @@ module.exports.callCount = fn => { /***/ }), -/* 339 */ +/* 338 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35116,12 +34976,12 @@ module.exports.default = mimicFn; /***/ }), -/* 340 */ +/* 339 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {signalsByName} = __webpack_require__(341); +const {signalsByName} = __webpack_require__(340); const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { if (timedOut) { @@ -35209,14 +35069,14 @@ module.exports = makeError; /***/ }), -/* 341 */ +/* 340 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(121); +Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(120); -var _signals=__webpack_require__(342); -var _realtime=__webpack_require__(344); +var _signals=__webpack_require__(341); +var _realtime=__webpack_require__(343); @@ -35286,14 +35146,14 @@ const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumb //# sourceMappingURL=main.js.map /***/ }), -/* 342 */ +/* 341 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(121); +Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(120); -var _core=__webpack_require__(343); -var _realtime=__webpack_require__(344); +var _core=__webpack_require__(342); +var _realtime=__webpack_require__(343); @@ -35327,7 +35187,7 @@ return{name,number,description,supported,action,forced,standard}; //# sourceMappingURL=signals.js.map /***/ }), -/* 343 */ +/* 342 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35606,7 +35466,7 @@ standard:"other"}];exports.SIGNALS=SIGNALS; //# sourceMappingURL=core.js.map /***/ }), -/* 344 */ +/* 343 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35631,7 +35491,7 @@ const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; //# sourceMappingURL=realtime.js.map /***/ }), -/* 345 */ +/* 344 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35690,13 +35550,13 @@ module.exports.node = opts => { /***/ }), -/* 346 */ +/* 345 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(121); -const onExit = __webpack_require__(309); +const os = __webpack_require__(120); +const onExit = __webpack_require__(308); const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; @@ -35809,14 +35669,14 @@ module.exports = { /***/ }), -/* 347 */ +/* 346 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isStream = __webpack_require__(348); -const getStream = __webpack_require__(349); -const mergeStream = __webpack_require__(353); +const isStream = __webpack_require__(347); +const getStream = __webpack_require__(348); +const mergeStream = __webpack_require__(352); // `input` option const handleInput = (spawned, input) => { @@ -35913,7 +35773,7 @@ module.exports = { /***/ }), -/* 348 */ +/* 347 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35949,13 +35809,13 @@ module.exports = isStream; /***/ }), -/* 349 */ +/* 348 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pump = __webpack_require__(350); -const bufferStream = __webpack_require__(352); +const pump = __webpack_require__(349); +const bufferStream = __webpack_require__(351); class MaxBufferError extends Error { constructor() { @@ -36014,12 +35874,12 @@ module.exports.MaxBufferError = MaxBufferError; /***/ }), -/* 350 */ +/* 349 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(162) -var eos = __webpack_require__(351) -var fs = __webpack_require__(134) // we only need fs to get the ReadStream and WriteStream prototypes +var once = __webpack_require__(161) +var eos = __webpack_require__(350) +var fs = __webpack_require__(133) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} var ancient = /^v?\.0/.test(process.version) @@ -36102,10 +35962,10 @@ module.exports = pump /***/ }), -/* 351 */ +/* 350 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(162); +var once = __webpack_require__(161); var noop = function() {}; @@ -36202,12 +36062,12 @@ module.exports = eos; /***/ }), -/* 352 */ +/* 351 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {PassThrough: PassThroughStream} = __webpack_require__(138); +const {PassThrough: PassThroughStream} = __webpack_require__(137); module.exports = options => { options = {...options}; @@ -36261,13 +36121,13 @@ module.exports = options => { /***/ }), -/* 353 */ +/* 352 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const { PassThrough } = __webpack_require__(138); +const { PassThrough } = __webpack_require__(137); module.exports = function (/*streams...*/) { var sources = [] @@ -36309,7 +36169,7 @@ module.exports = function (/*streams...*/) { /***/ }), -/* 354 */ +/* 353 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36362,7 +36222,7 @@ module.exports = { /***/ }), -/* 355 */ +/* 354 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36407,7 +36267,7 @@ module.exports = { /***/ }), -/* 356 */ +/* 355 */ /***/ (function(module, exports, __webpack_require__) { // Copyright IBM Corp. 2014,2018. All Rights Reserved. @@ -36415,12 +36275,12 @@ module.exports = { // This file is licensed under the Apache License 2.0. // License text available at https://opensource.org/licenses/Apache-2.0 -module.exports = __webpack_require__(357); -module.exports.cli = __webpack_require__(361); +module.exports = __webpack_require__(356); +module.exports.cli = __webpack_require__(360); /***/ }), -/* 357 */ +/* 356 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36431,13 +36291,13 @@ module.exports.cli = __webpack_require__(361); -var stream = __webpack_require__(138); -var util = __webpack_require__(112); -var fs = __webpack_require__(134); +var stream = __webpack_require__(137); +var util = __webpack_require__(111); +var fs = __webpack_require__(133); -var through = __webpack_require__(358); -var duplexer = __webpack_require__(359); -var StringDecoder = __webpack_require__(360).StringDecoder; +var through = __webpack_require__(357); +var duplexer = __webpack_require__(358); +var StringDecoder = __webpack_require__(359).StringDecoder; module.exports = Logger; @@ -36626,10 +36486,10 @@ function lineMerger(host) { /***/ }), -/* 358 */ +/* 357 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(138) +var Stream = __webpack_require__(137) // through // @@ -36740,10 +36600,10 @@ function through (write, end, opts) { /***/ }), -/* 359 */ +/* 358 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(138) +var Stream = __webpack_require__(137) var writeMethods = ["write", "end", "destroy"] var readMethods = ["resume", "pause"] var readEvents = ["data", "close"] @@ -36833,13 +36693,13 @@ function duplex(writer, reader) { /***/ }), -/* 360 */ +/* 359 */ /***/ (function(module, exports) { module.exports = require("string_decoder"); /***/ }), -/* 361 */ +/* 360 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36850,11 +36710,11 @@ module.exports = require("string_decoder"); -var minimist = __webpack_require__(362); +var minimist = __webpack_require__(361); var path = __webpack_require__(4); -var Logger = __webpack_require__(357); -var pkg = __webpack_require__(363); +var Logger = __webpack_require__(356); +var pkg = __webpack_require__(362); module.exports = cli; @@ -36908,7 +36768,7 @@ function usage($0, p) { /***/ }), -/* 362 */ +/* 361 */ /***/ (function(module, exports) { module.exports = function (args, opts) { @@ -37159,27 +37019,27 @@ function isNumber (x) { /***/ }), -/* 363 */ +/* 362 */ /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); /***/ }), -/* 364 */ +/* 363 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllChecksums", function() { return getAllChecksums; }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(134); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(365); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(364); /* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111); /* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(320); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(319); /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(366); +/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(365); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -37367,22 +37227,22 @@ async function getAllChecksums(kbn, log, yarnLock) { } /***/ }), -/* 365 */ +/* 364 */ /***/ (function(module, exports) { module.exports = require("crypto"); /***/ }), -/* 366 */ +/* 365 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(367); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(366); /* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(131); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -37482,7 +37342,7 @@ function resolveDepsForProject({ } /***/ }), -/* 367 */ +/* 366 */ /***/ (function(module, exports, __webpack_require__) { module.exports = @@ -37608,13 +37468,13 @@ exports.default = function (fn) { /* 2 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(112); +module.exports = __webpack_require__(111); /***/ }), /* 3 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(134); +module.exports = __webpack_require__(133); /***/ }), /* 4 */ @@ -39041,7 +38901,7 @@ module.exports = invariant; /* 9 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(365); +module.exports = __webpack_require__(364); /***/ }), /* 10 */, @@ -39467,7 +39327,7 @@ exports.default = Lockfile; /* 17 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(138); +module.exports = __webpack_require__(137); /***/ }), /* 18 */, @@ -39519,7 +39379,7 @@ function nullify(obj = {}) { /* 22 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(140); +module.exports = __webpack_require__(139); /***/ }), /* 23 */ @@ -39706,7 +39566,7 @@ module.exports = {}; /* 36 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(121); +module.exports = __webpack_require__(120); /***/ }), /* 37 */, @@ -39991,7 +39851,7 @@ exports.f = __webpack_require__(33) ? Object.defineProperty : function definePro /* 54 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(156); +module.exports = __webpack_require__(155); /***/ }), /* 55 */ @@ -41365,7 +41225,7 @@ function onceStrict (fn) { /* 63 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(368); +module.exports = __webpack_require__(367); /***/ }), /* 64 */, @@ -42303,7 +42163,7 @@ module.exports.win32 = win32; /* 79 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(122); +module.exports = __webpack_require__(121); /***/ }), /* 80 */, @@ -47760,19 +47620,19 @@ module.exports = process && support(supportLevel); /******/ ]); /***/ }), -/* 368 */ +/* 367 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 369 */ +/* 368 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCacheFile", function() { return BootstrapCacheFile; }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(134); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); @@ -47852,24 +47712,24 @@ class BootstrapCacheFile { } /***/ }), -/* 370 */ +/* 369 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateDependencies", function() { return validateDependencies; }); -/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(367); +/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(366); /* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(131); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(246); -/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(251); -/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(371); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(245); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(250); +/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(370); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -48050,14 +47910,14 @@ function getDevOnlyProductionDepsTree(kbn, projectName) { } /***/ }), -/* 371 */ +/* 370 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderProjectsTree", function() { return renderProjectsTree; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "treeToString", function() { return treeToString; }); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(113); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); @@ -48192,27 +48052,27 @@ function addProjectToTree(tree, pathParts, project) { } /***/ }), -/* 372 */ +/* 371 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373); +/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(372); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "yarnIntegrityFileExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__["yarnIntegrityFileExists"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ensureYarnIntegrityFileExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_0__["ensureYarnIntegrityFileExists"]; }); -/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(374); +/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(373); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__["getBazelDiskCacheFolder"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_1__["getBazelRepositoryCacheFolder"]; }); -/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(375); +/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(374); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_2__["isBazelBinAvailable"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_2__["installBazelTools"]; }); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(376); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(375); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_3__["runBazel"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_3__["runIBazel"]; }); @@ -48230,7 +48090,7 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 373 */ +/* 372 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -48239,7 +48099,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ensureYarnIntegrityFileExists", function() { return ensureYarnIntegrityFileExists; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(131); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -48277,7 +48137,7 @@ async function ensureYarnIntegrityFileExists(nodeModulesPath) { } /***/ }), -/* 374 */ +/* 373 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -48286,7 +48146,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return getBazelRepositoryCacheFolder; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(319); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(318); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -48314,7 +48174,7 @@ async function getBazelRepositoryCacheFolder() { } /***/ }), -/* 375 */ +/* 374 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -48325,9 +48185,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(319); -/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(131); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(246); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(318); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(130); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(245); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -48433,22 +48293,22 @@ async function installBazelTools(repoRootPath) { } /***/ }), -/* 376 */ +/* 375 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return runBazel; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return runIBazel; }); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(113); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112); /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(377); -/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(475); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(376); +/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(474); /* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(319); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(246); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(249); +/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(318); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(245); +/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(248); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -48510,320 +48370,320 @@ async function runIBazel(bazelArgs, offline = false, runOpts = {}) { } /***/ }), -/* 377 */ +/* 376 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(378); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(377); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(379); +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(378); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(380); +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(379); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(381); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(380); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(382); +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(381); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(383); +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(382); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(384); +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(383); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(385); +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(384); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(386); +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(385); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(387); +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(386); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(388); +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(387); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); -/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(80); +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(79); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(389); +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(388); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(390); +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(389); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(391); +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(390); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(392); +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(391); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(393); +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(392); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(394); +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(393); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(395); +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(394); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(397); +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(396); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(398); +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(397); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(399); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(398); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(400); +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(399); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(401); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(400); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(402); +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(401); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(405); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(404); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(406); +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(405); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(407); +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(406); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(408); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(407); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(409); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(408); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); -/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(105); +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(104); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(410); +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(409); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(411); +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(410); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(412); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(411); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(413); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(412); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(31); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(30); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(414); +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(413); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(415); +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(414); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(416); +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(415); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); -/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(66); +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(65); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(418); +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(417); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(419); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(418); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(420); +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(419); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(423); +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(422); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); -/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(81); +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(80); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__["mergeAll"]; }); -/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(82); +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(81); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["flatMap"]; }); -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(424); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(423); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(425); +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(424); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(426); +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(425); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(427); +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(426); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); -/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(41); +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(40); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(428); +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(427); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(429); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(428); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(430); +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(429); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(431); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(430); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(432); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(431); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(433); +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(432); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(434); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(433); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(435); +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(434); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(436); +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(435); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(421); +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(420); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(437); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(436); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(438); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(437); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(439); +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(438); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(440); +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(439); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); -/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(30); +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(29); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(441); +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(440); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(442); +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(441); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(422); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(421); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(443); +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(442); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(444); +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(443); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(445); +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(444); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(446); +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(445); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(447); +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(446); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(448); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(447); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(449); +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(448); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(450); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(449); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(451); +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(450); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(452); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(451); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(454); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(453); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(455); +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(454); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(456); +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(455); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(404); +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(403); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(417); +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(416); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(457); +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(456); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(458); +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(457); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(459); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(458); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(460); +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(459); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(461); +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(460); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(403); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(402); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(462); +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(461); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(463); +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(462); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(464); +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(463); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(465); +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(464); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(466); +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(465); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(467); +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(466); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(468); +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(467); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(469); +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(468); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(470); +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(469); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(471); +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(470); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(472); +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(471); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(473); +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(472); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(474); +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(473); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -48934,14 +48794,14 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 378 */ +/* 377 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49013,15 +48873,15 @@ var AuditSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 379 */ +/* 378 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(378); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(108); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(377); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(107); /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ @@ -49036,14 +48896,14 @@ function auditTime(duration, scheduler) { /***/ }), -/* 380 */ +/* 379 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49083,14 +48943,14 @@ var BufferSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 381 */ +/* 380 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49184,16 +49044,16 @@ var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 382 */ +/* 381 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44); /** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */ @@ -49345,16 +49205,16 @@ function dispatchBufferClose(arg) { /***/ }), -/* 383 */ +/* 382 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); /** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ @@ -49464,15 +49324,15 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 384 */ +/* 383 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_Subscription,_innerSubscribe PURE_IMPORTS_END */ @@ -49557,14 +49417,14 @@ var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 385 */ +/* 384 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49617,13 +49477,13 @@ var CatchSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 386 */ +/* 385 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; }); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67); /** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */ function combineAll(project) { @@ -49633,15 +49493,15 @@ function combineAll(project) { /***/ }), -/* 387 */ +/* 386 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); /** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */ @@ -49665,13 +49525,13 @@ function combineLatest() { /***/ }), -/* 388 */ +/* 387 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); /** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ function concat() { @@ -49685,13 +49545,13 @@ function concat() { /***/ }), -/* 389 */ +/* 388 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function concatMap(project, resultSelector) { @@ -49701,13 +49561,13 @@ function concatMap(project, resultSelector) { /***/ }), -/* 390 */ +/* 389 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(389); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(388); /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ function concatMapTo(innerObservable, resultSelector) { @@ -49717,14 +49577,14 @@ function concatMapTo(innerObservable, resultSelector) { /***/ }), -/* 391 */ +/* 390 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49782,14 +49642,14 @@ var CountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 392 */ +/* 391 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -49867,15 +49727,15 @@ var DebounceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 393 */ +/* 392 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -49943,14 +49803,14 @@ function dispatchNext(subscriber) { /***/ }), -/* 394 */ +/* 393 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -49993,17 +49853,17 @@ var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 395 */ +/* 394 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(396); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(395); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -50100,7 +49960,7 @@ var DelayMessage = /*@__PURE__*/ (function () { /***/ }), -/* 396 */ +/* 395 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50114,17 +49974,17 @@ function isDate(value) { /***/ }), -/* 397 */ +/* 396 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -50260,14 +50120,14 @@ var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 398 */ +/* 397 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50298,15 +50158,15 @@ var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 399 */ +/* 398 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function() { return DistinctSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -50374,14 +50234,14 @@ var DistinctSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 400 */ +/* 399 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50445,13 +50305,13 @@ var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 401 */ +/* 400 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(400); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(399); /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ function distinctUntilKeyChanged(key, compare) { @@ -50461,17 +50321,17 @@ function distinctUntilKeyChanged(key, compare) { /***/ }), -/* 402 */ +/* 401 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(403); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(394); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(404); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(61); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(402); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(393); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(403); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -50493,15 +50353,15 @@ function elementAt(index, defaultValue) { /***/ }), -/* 403 */ +/* 402 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */ @@ -50559,16 +50419,16 @@ function defaultErrorFactory() { /***/ }), -/* 404 */ +/* 403 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -50621,14 +50481,14 @@ var TakeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 405 */ +/* 404 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); /** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */ @@ -50643,14 +50503,14 @@ function endWith() { /***/ }), -/* 406 */ +/* 405 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -50705,14 +50565,14 @@ var EverySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 407 */ +/* 406 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -50759,16 +50619,16 @@ var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 408 */ +/* 407 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -50853,7 +50713,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 409 */ +/* 408 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50861,8 +50721,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandOperator", function() { return ExpandOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandSubscriber", function() { return ExpandSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -50965,15 +50825,15 @@ var ExpandSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 410 */ +/* 409 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */ @@ -51003,7 +50863,7 @@ var FinallySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 411 */ +/* 410 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51011,8 +50871,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueOperator", function() { return FindValueOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueSubscriber", function() { return FindValueSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51075,13 +50935,13 @@ var FindValueSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 412 */ +/* 411 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); -/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(411); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(410); /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ function findIndex(predicate, thisArg) { @@ -51091,18 +50951,18 @@ function findIndex(predicate, thisArg) { /***/ }), -/* 413 */ +/* 412 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(404); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(394); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(403); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(403); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(393); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(402); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -51118,14 +50978,14 @@ function first(predicate, defaultValue) { /***/ }), -/* 414 */ +/* 413 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51155,14 +51015,14 @@ var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 415 */ +/* 414 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51199,18 +51059,18 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 416 */ +/* 415 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(417); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(403); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(394); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(416); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(402); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(393); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -51226,16 +51086,16 @@ function last(predicate, defaultValue) { /***/ }), -/* 417 */ +/* 416 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -51303,14 +51163,14 @@ var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 418 */ +/* 417 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51342,15 +51202,15 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 419 */ +/* 418 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -51392,13 +51252,13 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 420 */ +/* 419 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(420); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -51411,16 +51271,16 @@ function max(comparer) { /***/ }), -/* 421 */ +/* 420 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(422); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(417); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(394); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(416); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(393); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ @@ -51440,14 +51300,14 @@ function reduce(accumulator, seed) { /***/ }), -/* 422 */ +/* 421 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51522,13 +51382,13 @@ var ScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 423 */ +/* 422 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(99); +/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98); /** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */ function merge() { @@ -51542,13 +51402,13 @@ function merge() { /***/ }), -/* 424 */ +/* 423 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function mergeMapTo(innerObservable, resultSelector, concurrent) { @@ -51567,7 +51427,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /***/ }), -/* 425 */ +/* 424 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51575,8 +51435,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanOperator", function() { return MergeScanOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanSubscriber", function() { return MergeScanSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -51676,13 +51536,13 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 426 */ +/* 425 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(420); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -51695,14 +51555,14 @@ function min(comparer) { /***/ }), -/* 427 */ +/* 426 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MulticastOperator", function() { return MulticastOperator; }); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25); /** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ function multicast(subjectOrSubjectFactory, selector) { @@ -51744,17 +51604,17 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 428 */ +/* 427 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNextStatic", function() { return onErrorResumeNextStatic; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_innerSubscribe PURE_IMPORTS_END */ @@ -51834,14 +51694,14 @@ var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 429 */ +/* 428 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -51882,14 +51742,14 @@ var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 430 */ +/* 429 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(104); /** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */ @@ -51905,13 +51765,13 @@ function partition(predicate, thisArg) { /***/ }), -/* 431 */ +/* 430 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65); /** PURE_IMPORTS_START _map PURE_IMPORTS_END */ function pluck() { @@ -51945,14 +51805,14 @@ function plucker(props, length) { /***/ }), -/* 432 */ +/* 431 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(426); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -51965,14 +51825,14 @@ function publish(selector) { /***/ }), -/* 433 */ +/* 432 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); -/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); +/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(426); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -51983,14 +51843,14 @@ function publishBehavior(value) { /***/ }), -/* 434 */ +/* 433 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(426); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -52001,14 +51861,14 @@ function publishLast() { /***/ }), -/* 435 */ +/* 434 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(427); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(426); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -52024,14 +51884,14 @@ function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { /***/ }), -/* 436 */ +/* 435 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); +/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); /** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */ @@ -52051,15 +51911,15 @@ function race() { /***/ }), -/* 437 */ +/* 436 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */ @@ -52116,15 +51976,15 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 438 */ +/* 437 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -52210,14 +52070,14 @@ var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 439 */ +/* 438 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52263,15 +52123,15 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 440 */ +/* 439 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -52349,14 +52209,14 @@ var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 441 */ +/* 440 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -52404,15 +52264,15 @@ var SampleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 442 */ +/* 441 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -52464,7 +52324,7 @@ function dispatchNotification(state) { /***/ }), -/* 443 */ +/* 442 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52472,8 +52332,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualOperator", function() { return SequenceEqualOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualSubscriber", function() { return SequenceEqualSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52587,15 +52447,15 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 444 */ +/* 443 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(427); -/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(426); +/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -52610,13 +52470,13 @@ function share() { /***/ }), -/* 445 */ +/* 444 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); /** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */ function shareReplay(configOrBufferSize, windowTime, scheduler) { @@ -52679,15 +52539,15 @@ function shareReplayOperator(_a) { /***/ }), -/* 446 */ +/* 445 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); /** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */ @@ -52759,14 +52619,14 @@ var SingleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 447 */ +/* 446 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52801,15 +52661,15 @@ var SkipSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 448 */ +/* 447 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */ @@ -52863,14 +52723,14 @@ var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 449 */ +/* 448 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -52920,14 +52780,14 @@ var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 450 */ +/* 449 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -52976,14 +52836,14 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 451 */ +/* 450 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44); /** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -53005,13 +52865,13 @@ function startWith() { /***/ }), -/* 452 */ +/* 451 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); -/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(453); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(452); /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ function subscribeOn(scheduler, delay) { @@ -53036,16 +52896,16 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { /***/ }), -/* 453 */ +/* 452 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubscribeOnObservable", function() { return SubscribeOnObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); -/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(98); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); +/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97); /** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ @@ -53100,14 +52960,14 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { /***/ }), -/* 454 */ +/* 453 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(455); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(454); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -53118,16 +52978,16 @@ function switchAll() { /***/ }), -/* 455 */ +/* 454 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */ @@ -53206,13 +53066,13 @@ var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 456 */ +/* 455 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(455); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(454); /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ function switchMapTo(innerObservable, resultSelector) { @@ -53222,14 +53082,14 @@ function switchMapTo(innerObservable, resultSelector) { /***/ }), -/* 457 */ +/* 456 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -53270,14 +53130,14 @@ var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 458 */ +/* 457 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -53338,16 +53198,16 @@ var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 459 */ +/* 458 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12); /** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ @@ -53426,15 +53286,15 @@ var TapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 460 */ +/* 459 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ @@ -53528,16 +53388,16 @@ var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 461 */ +/* 460 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(460); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(459); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ @@ -53626,17 +53486,17 @@ function dispatchNext(arg) { /***/ }), -/* 462 */ +/* 461 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(422); -/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(421); +/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65); /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ @@ -53670,16 +53530,16 @@ var TimeInterval = /*@__PURE__*/ (function () { /***/ }), -/* 463 */ +/* 462 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(464); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); +/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(463); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48); /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ @@ -53695,16 +53555,16 @@ function timeout(due, scheduler) { /***/ }), -/* 464 */ +/* 463 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(396); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(395); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */ @@ -53774,15 +53634,15 @@ var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 465 */ +/* 464 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timestamp", function() { return Timestamp; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); /** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */ @@ -53804,13 +53664,13 @@ var Timestamp = /*@__PURE__*/ (function () { /***/ }), -/* 466 */ +/* 465 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(421); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(420); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -53827,15 +53687,15 @@ function toArray() { /***/ }), -/* 467 */ +/* 466 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89); /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ @@ -53905,15 +53765,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 468 */ +/* 467 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26); /** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */ @@ -53995,18 +53855,18 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 469 */ +/* 468 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -54165,17 +54025,17 @@ function dispatchWindowClose(state) { /***/ }), -/* 470 */ +/* 469 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69); /** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -54308,16 +54168,16 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 471 */ +/* 470 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69); /** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -54405,15 +54265,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 472 */ +/* 471 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -54500,13 +54360,13 @@ var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 473 */ +/* 472 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(110); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(109); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zip() { @@ -54522,13 +54382,13 @@ function zip() { /***/ }), -/* 474 */ +/* 473 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(110); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(109); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zipAll(project) { @@ -54538,30 +54398,64 @@ function zipAll(project) { /***/ }), -/* 475 */ +/* 474 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = __webpack_require__(7); -tslib_1.__exportStar(__webpack_require__(476), exports); -tslib_1.__exportStar(__webpack_require__(477), exports); -//# sourceMappingURL=index.js.map + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _observe_lines = __webpack_require__(475); + +Object.keys(_observe_lines).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _observe_lines[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _observe_lines[key]; + } + }); +}); + +var _observe_readable = __webpack_require__(476); + +Object.keys(_observe_readable).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _observe_readable[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _observe_readable[key]; + } + }); +}); /***/ }), -/* 476 */ +/* 475 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.observeLines = observeLines; + +var Rx = _interopRequireWildcard(__webpack_require__(7)); + +var _operators = __webpack_require__(376); + +var _observe_readable = __webpack_require__(476); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54569,13 +54463,8 @@ tslib_1.__exportStar(__webpack_require__(477), exports); * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.observeLines = void 0; -const tslib_1 = __webpack_require__(7); -const Rx = tslib_1.__importStar(__webpack_require__(8)); -const operators_1 = __webpack_require__(377); const SEP = /\r?\n/; -const observe_readable_1 = __webpack_require__(477); + /** * Creates an Observable from a Readable Stream that: * - splits data from `readable` into lines @@ -54586,41 +54475,63 @@ const observe_readable_1 = __webpack_require__(477); * @return {Rx.Observable} */ function observeLines(readable) { - const done$ = observe_readable_1.observeReadable(readable).pipe(operators_1.share()); - const scan$ = Rx.fromEvent(readable, 'data').pipe(operators_1.scan(({ buffer }, chunk) => { - buffer += chunk; - const lines = []; - while (true) { - const match = buffer.match(SEP); - if (!match || match.index === undefined) { - break; - } - lines.push(buffer.slice(0, match.index)); - buffer = buffer.slice(match.index + match[0].length); - } - return { buffer, lines }; - }, { buffer: '' }), - // stop if done completes or errors - operators_1.takeUntil(done$.pipe(operators_1.materialize())), operators_1.share()); - return Rx.merge( - // use done$ to provide completion/errors - done$, - // merge in the "lines" from each step - scan$.pipe(operators_1.mergeMap(({ lines }) => lines || [])), - // inject the "unsplit" data at the end - scan$.pipe(operators_1.last(), operators_1.mergeMap(({ buffer }) => (buffer ? [buffer] : [])), - // if there were no lines, last() will error, so catch and complete - operators_1.catchError(() => Rx.empty()))); + const done$ = (0, _observe_readable.observeReadable)(readable).pipe((0, _operators.share)()); + const scan$ = Rx.fromEvent(readable, 'data').pipe((0, _operators.scan)(({ + buffer + }, chunk) => { + buffer += chunk; + const lines = []; + + while (true) { + const match = buffer.match(SEP); + + if (!match || match.index === undefined) { + break; + } + + lines.push(buffer.slice(0, match.index)); + buffer = buffer.slice(match.index + match[0].length); + } + + return { + buffer, + lines + }; + }, { + buffer: '' + }), // stop if done completes or errors + (0, _operators.takeUntil)(done$.pipe((0, _operators.materialize)())), (0, _operators.share)()); + return Rx.merge( // use done$ to provide completion/errors + done$, // merge in the "lines" from each step + scan$.pipe((0, _operators.mergeMap)(({ + lines + }) => lines || [])), // inject the "unsplit" data at the end + scan$.pipe((0, _operators.last)(), (0, _operators.mergeMap)(({ + buffer + }) => buffer ? [buffer] : []), // if there were no lines, last() will error, so catch and complete + (0, _operators.catchError)(() => Rx.empty()))); } -exports.observeLines = observeLines; -//# sourceMappingURL=observe_lines.js.map /***/ }), -/* 477 */ +/* 476 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.observeReadable = observeReadable; + +var Rx = _interopRequireWildcard(__webpack_require__(7)); + +var _operators = __webpack_require__(376); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54628,30 +54539,24 @@ exports.observeLines = observeLines; * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.observeReadable = void 0; -const tslib_1 = __webpack_require__(7); -const Rx = tslib_1.__importStar(__webpack_require__(8)); -const operators_1 = __webpack_require__(377); + /** * Produces an Observable from a ReadableSteam that: * - completes on the first "end" event * - fails on the first "error" event */ function observeReadable(readable) { - return Rx.race(Rx.fromEvent(readable, 'end').pipe(operators_1.first(), operators_1.ignoreElements()), Rx.fromEvent(readable, 'error').pipe(operators_1.first(), operators_1.mergeMap((err) => Rx.throwError(err)))); + return Rx.race(Rx.fromEvent(readable, 'end').pipe((0, _operators.first)(), (0, _operators.ignoreElements)()), Rx.fromEvent(readable, 'error').pipe((0, _operators.first)(), (0, _operators.mergeMap)(err => Rx.throwError(err)))); } -exports.observeReadable = observeReadable; -//# sourceMappingURL=observe_readable.js.map /***/ }), -/* 478 */ +/* 477 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuildCommand", function() { return BuildCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(372); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(371); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54675,7 +54580,7 @@ const BuildCommand = { }; /***/ }), -/* 479 */ +/* 478 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54683,15 +54588,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CleanCommand", function() { return CleanCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(480); +/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(479); /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(246); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(371); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(130); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(245); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -54788,20 +54693,20 @@ const CleanCommand = { }; /***/ }), -/* 480 */ +/* 479 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readline = __webpack_require__(481); -const chalk = __webpack_require__(482); -const cliCursor = __webpack_require__(489); -const cliSpinners = __webpack_require__(491); -const logSymbols = __webpack_require__(493); -const stripAnsi = __webpack_require__(503); -const wcwidth = __webpack_require__(505); -const isInteractive = __webpack_require__(509); -const MuteStream = __webpack_require__(510); +const readline = __webpack_require__(480); +const chalk = __webpack_require__(481); +const cliCursor = __webpack_require__(488); +const cliSpinners = __webpack_require__(490); +const logSymbols = __webpack_require__(492); +const stripAnsi = __webpack_require__(502); +const wcwidth = __webpack_require__(504); +const isInteractive = __webpack_require__(508); +const MuteStream = __webpack_require__(509); const TEXT = Symbol('text'); const PREFIX_TEXT = Symbol('prefixText'); @@ -55154,23 +55059,23 @@ module.exports.promise = (action, options) => { /***/ }), -/* 481 */ +/* 480 */ /***/ (function(module, exports) { module.exports = require("readline"); /***/ }), -/* 482 */ +/* 481 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiStyles = __webpack_require__(483); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(120); +const ansiStyles = __webpack_require__(482); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(119); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(487); +} = __webpack_require__(486); // `supportsColor.level` → `ansiStyles.color[name]` mapping const levelMapping = [ @@ -55371,7 +55276,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(488); + template = __webpack_require__(487); } return template(chalk, parts.join('')); @@ -55400,7 +55305,7 @@ module.exports = chalk; /***/ }), -/* 483 */ +/* 482 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55446,7 +55351,7 @@ const setLazyProperty = (object, property, get) => { let colorConvert; const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { if (colorConvert === undefined) { - colorConvert = __webpack_require__(484); + colorConvert = __webpack_require__(483); } const offset = isBackground ? 10 : 0; @@ -55568,14 +55473,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 484 */ +/* 483 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(485); -const route = __webpack_require__(486); +const conversions = __webpack_require__(484); +const route = __webpack_require__(485); const convert = {}; @@ -55658,12 +55563,12 @@ module.exports = convert; /***/ }), -/* 485 */ +/* 484 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ /* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(118); +const cssKeywords = __webpack_require__(117); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -56503,10 +56408,10 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 486 */ +/* 485 */ /***/ (function(module, exports, __webpack_require__) { -const conversions = __webpack_require__(485); +const conversions = __webpack_require__(484); /* This function routes a model to all other models. @@ -56606,7 +56511,7 @@ module.exports = function (fromModel) { /***/ }), -/* 487 */ +/* 486 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56652,7 +56557,7 @@ module.exports = { /***/ }), -/* 488 */ +/* 487 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56793,12 +56698,12 @@ module.exports = (chalk, temporary) => { /***/ }), -/* 489 */ +/* 488 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const restoreCursor = __webpack_require__(490); +const restoreCursor = __webpack_require__(489); let isHidden = false; @@ -56835,13 +56740,13 @@ exports.toggle = (force, writableStream) => { /***/ }), -/* 490 */ +/* 489 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const onetime = __webpack_require__(338); -const signalExit = __webpack_require__(309); +const onetime = __webpack_require__(337); +const signalExit = __webpack_require__(308); module.exports = onetime(() => { signalExit(() => { @@ -56851,13 +56756,13 @@ module.exports = onetime(() => { /***/ }), -/* 491 */ +/* 490 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const spinners = Object.assign({}, __webpack_require__(492)); +const spinners = Object.assign({}, __webpack_require__(491)); const spinnersList = Object.keys(spinners); @@ -56875,18 +56780,18 @@ module.exports.default = spinners; /***/ }), -/* 492 */ +/* 491 */ /***/ (function(module) { module.exports = JSON.parse("{\"dots\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠹\",\"⠸\",\"⠼\",\"⠴\",\"⠦\",\"⠧\",\"⠇\",\"⠏\"]},\"dots2\":{\"interval\":80,\"frames\":[\"⣾\",\"⣽\",\"⣻\",\"⢿\",\"⡿\",\"⣟\",\"⣯\",\"⣷\"]},\"dots3\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠞\",\"⠖\",\"⠦\",\"⠴\",\"⠲\",\"⠳\",\"⠓\"]},\"dots4\":{\"interval\":80,\"frames\":[\"⠄\",\"⠆\",\"⠇\",\"⠋\",\"⠙\",\"⠸\",\"⠰\",\"⠠\",\"⠰\",\"⠸\",\"⠙\",\"⠋\",\"⠇\",\"⠆\"]},\"dots5\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\"]},\"dots6\":{\"interval\":80,\"frames\":[\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠴\",\"⠲\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠚\",\"⠙\",\"⠉\",\"⠁\"]},\"dots7\":{\"interval\":80,\"frames\":[\"⠈\",\"⠉\",\"⠋\",\"⠓\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠖\",\"⠦\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\"]},\"dots8\":{\"interval\":80,\"frames\":[\"⠁\",\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\",\"⠈\"]},\"dots9\":{\"interval\":80,\"frames\":[\"⢹\",\"⢺\",\"⢼\",\"⣸\",\"⣇\",\"⡧\",\"⡗\",\"⡏\"]},\"dots10\":{\"interval\":80,\"frames\":[\"⢄\",\"⢂\",\"⢁\",\"⡁\",\"⡈\",\"⡐\",\"⡠\"]},\"dots11\":{\"interval\":100,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⡀\",\"⢀\",\"⠠\",\"⠐\",\"⠈\"]},\"dots12\":{\"interval\":80,\"frames\":[\"⢀⠀\",\"⡀⠀\",\"⠄⠀\",\"⢂⠀\",\"⡂⠀\",\"⠅⠀\",\"⢃⠀\",\"⡃⠀\",\"⠍⠀\",\"⢋⠀\",\"⡋⠀\",\"⠍⠁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⢈⠩\",\"⡀⢙\",\"⠄⡙\",\"⢂⠩\",\"⡂⢘\",\"⠅⡘\",\"⢃⠨\",\"⡃⢐\",\"⠍⡐\",\"⢋⠠\",\"⡋⢀\",\"⠍⡁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⠈⠩\",\"⠀⢙\",\"⠀⡙\",\"⠀⠩\",\"⠀⢘\",\"⠀⡘\",\"⠀⠨\",\"⠀⢐\",\"⠀⡐\",\"⠀⠠\",\"⠀⢀\",\"⠀⡀\"]},\"dots8Bit\":{\"interval\":80,\"frames\":[\"⠀\",\"⠁\",\"⠂\",\"⠃\",\"⠄\",\"⠅\",\"⠆\",\"⠇\",\"⡀\",\"⡁\",\"⡂\",\"⡃\",\"⡄\",\"⡅\",\"⡆\",\"⡇\",\"⠈\",\"⠉\",\"⠊\",\"⠋\",\"⠌\",\"⠍\",\"⠎\",\"⠏\",\"⡈\",\"⡉\",\"⡊\",\"⡋\",\"⡌\",\"⡍\",\"⡎\",\"⡏\",\"⠐\",\"⠑\",\"⠒\",\"⠓\",\"⠔\",\"⠕\",\"⠖\",\"⠗\",\"⡐\",\"⡑\",\"⡒\",\"⡓\",\"⡔\",\"⡕\",\"⡖\",\"⡗\",\"⠘\",\"⠙\",\"⠚\",\"⠛\",\"⠜\",\"⠝\",\"⠞\",\"⠟\",\"⡘\",\"⡙\",\"⡚\",\"⡛\",\"⡜\",\"⡝\",\"⡞\",\"⡟\",\"⠠\",\"⠡\",\"⠢\",\"⠣\",\"⠤\",\"⠥\",\"⠦\",\"⠧\",\"⡠\",\"⡡\",\"⡢\",\"⡣\",\"⡤\",\"⡥\",\"⡦\",\"⡧\",\"⠨\",\"⠩\",\"⠪\",\"⠫\",\"⠬\",\"⠭\",\"⠮\",\"⠯\",\"⡨\",\"⡩\",\"⡪\",\"⡫\",\"⡬\",\"⡭\",\"⡮\",\"⡯\",\"⠰\",\"⠱\",\"⠲\",\"⠳\",\"⠴\",\"⠵\",\"⠶\",\"⠷\",\"⡰\",\"⡱\",\"⡲\",\"⡳\",\"⡴\",\"⡵\",\"⡶\",\"⡷\",\"⠸\",\"⠹\",\"⠺\",\"⠻\",\"⠼\",\"⠽\",\"⠾\",\"⠿\",\"⡸\",\"⡹\",\"⡺\",\"⡻\",\"⡼\",\"⡽\",\"⡾\",\"⡿\",\"⢀\",\"⢁\",\"⢂\",\"⢃\",\"⢄\",\"⢅\",\"⢆\",\"⢇\",\"⣀\",\"⣁\",\"⣂\",\"⣃\",\"⣄\",\"⣅\",\"⣆\",\"⣇\",\"⢈\",\"⢉\",\"⢊\",\"⢋\",\"⢌\",\"⢍\",\"⢎\",\"⢏\",\"⣈\",\"⣉\",\"⣊\",\"⣋\",\"⣌\",\"⣍\",\"⣎\",\"⣏\",\"⢐\",\"⢑\",\"⢒\",\"⢓\",\"⢔\",\"⢕\",\"⢖\",\"⢗\",\"⣐\",\"⣑\",\"⣒\",\"⣓\",\"⣔\",\"⣕\",\"⣖\",\"⣗\",\"⢘\",\"⢙\",\"⢚\",\"⢛\",\"⢜\",\"⢝\",\"⢞\",\"⢟\",\"⣘\",\"⣙\",\"⣚\",\"⣛\",\"⣜\",\"⣝\",\"⣞\",\"⣟\",\"⢠\",\"⢡\",\"⢢\",\"⢣\",\"⢤\",\"⢥\",\"⢦\",\"⢧\",\"⣠\",\"⣡\",\"⣢\",\"⣣\",\"⣤\",\"⣥\",\"⣦\",\"⣧\",\"⢨\",\"⢩\",\"⢪\",\"⢫\",\"⢬\",\"⢭\",\"⢮\",\"⢯\",\"⣨\",\"⣩\",\"⣪\",\"⣫\",\"⣬\",\"⣭\",\"⣮\",\"⣯\",\"⢰\",\"⢱\",\"⢲\",\"⢳\",\"⢴\",\"⢵\",\"⢶\",\"⢷\",\"⣰\",\"⣱\",\"⣲\",\"⣳\",\"⣴\",\"⣵\",\"⣶\",\"⣷\",\"⢸\",\"⢹\",\"⢺\",\"⢻\",\"⢼\",\"⢽\",\"⢾\",\"⢿\",\"⣸\",\"⣹\",\"⣺\",\"⣻\",\"⣼\",\"⣽\",\"⣾\",\"⣿\"]},\"line\":{\"interval\":130,\"frames\":[\"-\",\"\\\\\",\"|\",\"/\"]},\"line2\":{\"interval\":100,\"frames\":[\"⠂\",\"-\",\"–\",\"—\",\"–\",\"-\"]},\"pipe\":{\"interval\":100,\"frames\":[\"┤\",\"┘\",\"┴\",\"└\",\"├\",\"┌\",\"┬\",\"┐\"]},\"simpleDots\":{\"interval\":400,\"frames\":[\". \",\".. \",\"...\",\" \"]},\"simpleDotsScrolling\":{\"interval\":200,\"frames\":[\". \",\".. \",\"...\",\" ..\",\" .\",\" \"]},\"star\":{\"interval\":70,\"frames\":[\"✶\",\"✸\",\"✹\",\"✺\",\"✹\",\"✷\"]},\"star2\":{\"interval\":80,\"frames\":[\"+\",\"x\",\"*\"]},\"flip\":{\"interval\":70,\"frames\":[\"_\",\"_\",\"_\",\"-\",\"`\",\"`\",\"'\",\"´\",\"-\",\"_\",\"_\",\"_\"]},\"hamburger\":{\"interval\":100,\"frames\":[\"☱\",\"☲\",\"☴\"]},\"growVertical\":{\"interval\":120,\"frames\":[\"▁\",\"▃\",\"▄\",\"▅\",\"▆\",\"▇\",\"▆\",\"▅\",\"▄\",\"▃\"]},\"growHorizontal\":{\"interval\":120,\"frames\":[\"▏\",\"▎\",\"▍\",\"▌\",\"▋\",\"▊\",\"▉\",\"▊\",\"▋\",\"▌\",\"▍\",\"▎\"]},\"balloon\":{\"interval\":140,\"frames\":[\" \",\".\",\"o\",\"O\",\"@\",\"*\",\" \"]},\"balloon2\":{\"interval\":120,\"frames\":[\".\",\"o\",\"O\",\"°\",\"O\",\"o\",\".\"]},\"noise\":{\"interval\":100,\"frames\":[\"▓\",\"▒\",\"░\"]},\"bounce\":{\"interval\":120,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⠂\"]},\"boxBounce\":{\"interval\":120,\"frames\":[\"▖\",\"▘\",\"▝\",\"▗\"]},\"boxBounce2\":{\"interval\":100,\"frames\":[\"▌\",\"▀\",\"▐\",\"▄\"]},\"triangle\":{\"interval\":50,\"frames\":[\"◢\",\"◣\",\"◤\",\"◥\"]},\"arc\":{\"interval\":100,\"frames\":[\"◜\",\"◠\",\"◝\",\"◞\",\"◡\",\"◟\"]},\"circle\":{\"interval\":120,\"frames\":[\"◡\",\"⊙\",\"◠\"]},\"squareCorners\":{\"interval\":180,\"frames\":[\"◰\",\"◳\",\"◲\",\"◱\"]},\"circleQuarters\":{\"interval\":120,\"frames\":[\"◴\",\"◷\",\"◶\",\"◵\"]},\"circleHalves\":{\"interval\":50,\"frames\":[\"◐\",\"◓\",\"◑\",\"◒\"]},\"squish\":{\"interval\":100,\"frames\":[\"╫\",\"╪\"]},\"toggle\":{\"interval\":250,\"frames\":[\"⊶\",\"⊷\"]},\"toggle2\":{\"interval\":80,\"frames\":[\"▫\",\"▪\"]},\"toggle3\":{\"interval\":120,\"frames\":[\"□\",\"■\"]},\"toggle4\":{\"interval\":100,\"frames\":[\"■\",\"□\",\"▪\",\"▫\"]},\"toggle5\":{\"interval\":100,\"frames\":[\"▮\",\"▯\"]},\"toggle6\":{\"interval\":300,\"frames\":[\"ဝ\",\"၀\"]},\"toggle7\":{\"interval\":80,\"frames\":[\"⦾\",\"⦿\"]},\"toggle8\":{\"interval\":100,\"frames\":[\"◍\",\"◌\"]},\"toggle9\":{\"interval\":100,\"frames\":[\"◉\",\"◎\"]},\"toggle10\":{\"interval\":100,\"frames\":[\"㊂\",\"㊀\",\"㊁\"]},\"toggle11\":{\"interval\":50,\"frames\":[\"⧇\",\"⧆\"]},\"toggle12\":{\"interval\":120,\"frames\":[\"☗\",\"☖\"]},\"toggle13\":{\"interval\":80,\"frames\":[\"=\",\"*\",\"-\"]},\"arrow\":{\"interval\":100,\"frames\":[\"←\",\"↖\",\"↑\",\"↗\",\"→\",\"↘\",\"↓\",\"↙\"]},\"arrow2\":{\"interval\":80,\"frames\":[\"⬆️ \",\"↗️ \",\"➡️ \",\"↘️ \",\"⬇️ \",\"↙️ \",\"⬅️ \",\"↖️ \"]},\"arrow3\":{\"interval\":120,\"frames\":[\"▹▹▹▹▹\",\"▸▹▹▹▹\",\"▹▸▹▹▹\",\"▹▹▸▹▹\",\"▹▹▹▸▹\",\"▹▹▹▹▸\"]},\"bouncingBar\":{\"interval\":80,\"frames\":[\"[ ]\",\"[= ]\",\"[== ]\",\"[=== ]\",\"[ ===]\",\"[ ==]\",\"[ =]\",\"[ ]\",\"[ =]\",\"[ ==]\",\"[ ===]\",\"[====]\",\"[=== ]\",\"[== ]\",\"[= ]\"]},\"bouncingBall\":{\"interval\":80,\"frames\":[\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ●)\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"(● )\"]},\"smiley\":{\"interval\":200,\"frames\":[\"😄 \",\"😝 \"]},\"monkey\":{\"interval\":300,\"frames\":[\"🙈 \",\"🙈 \",\"🙉 \",\"🙊 \"]},\"hearts\":{\"interval\":100,\"frames\":[\"💛 \",\"💙 \",\"💜 \",\"💚 \",\"❤️ \"]},\"clock\":{\"interval\":100,\"frames\":[\"🕛 \",\"🕐 \",\"🕑 \",\"🕒 \",\"🕓 \",\"🕔 \",\"🕕 \",\"🕖 \",\"🕗 \",\"🕘 \",\"🕙 \",\"🕚 \"]},\"earth\":{\"interval\":180,\"frames\":[\"🌍 \",\"🌎 \",\"🌏 \"]},\"material\":{\"interval\":17,\"frames\":[\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"██████████▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"█████████████▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁██████████████▁▁▁▁\",\"▁▁▁██████████████▁▁▁\",\"▁▁▁▁█████████████▁▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁▁█████████████▁▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁▁███████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"]},\"moon\":{\"interval\":80,\"frames\":[\"🌑 \",\"🌒 \",\"🌓 \",\"🌔 \",\"🌕 \",\"🌖 \",\"🌗 \",\"🌘 \"]},\"runner\":{\"interval\":140,\"frames\":[\"🚶 \",\"🏃 \"]},\"pong\":{\"interval\":80,\"frames\":[\"▐⠂ ▌\",\"▐⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂▌\",\"▐ ⠠▌\",\"▐ ⡀▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐⠠ ▌\"]},\"shark\":{\"interval\":120,\"frames\":[\"▐|\\\\____________▌\",\"▐_|\\\\___________▌\",\"▐__|\\\\__________▌\",\"▐___|\\\\_________▌\",\"▐____|\\\\________▌\",\"▐_____|\\\\_______▌\",\"▐______|\\\\______▌\",\"▐_______|\\\\_____▌\",\"▐________|\\\\____▌\",\"▐_________|\\\\___▌\",\"▐__________|\\\\__▌\",\"▐___________|\\\\_▌\",\"▐____________|\\\\▌\",\"▐____________/|▌\",\"▐___________/|_▌\",\"▐__________/|__▌\",\"▐_________/|___▌\",\"▐________/|____▌\",\"▐_______/|_____▌\",\"▐______/|______▌\",\"▐_____/|_______▌\",\"▐____/|________▌\",\"▐___/|_________▌\",\"▐__/|__________▌\",\"▐_/|___________▌\",\"▐/|____________▌\"]},\"dqpb\":{\"interval\":100,\"frames\":[\"d\",\"q\",\"p\",\"b\"]},\"weather\":{\"interval\":100,\"frames\":[\"☀️ \",\"☀️ \",\"☀️ \",\"🌤 \",\"⛅️ \",\"🌥 \",\"☁️ \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"⛈ \",\"🌨 \",\"🌧 \",\"🌨 \",\"☁️ \",\"🌥 \",\"⛅️ \",\"🌤 \",\"☀️ \",\"☀️ \"]},\"christmas\":{\"interval\":400,\"frames\":[\"🌲\",\"🎄\"]},\"grenade\":{\"interval\":80,\"frames\":[\"، \",\"′ \",\" ´ \",\" ‾ \",\" ⸌\",\" ⸊\",\" |\",\" ⁎\",\" ⁕\",\" ෴ \",\" ⁓\",\" \",\" \",\" \"]},\"point\":{\"interval\":125,\"frames\":[\"∙∙∙\",\"●∙∙\",\"∙●∙\",\"∙∙●\",\"∙∙∙\"]},\"layer\":{\"interval\":150,\"frames\":[\"-\",\"=\",\"≡\"]},\"betaWave\":{\"interval\":80,\"frames\":[\"ρββββββ\",\"βρβββββ\",\"ββρββββ\",\"βββρβββ\",\"ββββρββ\",\"βββββρβ\",\"ββββββρ\"]},\"aesthetic\":{\"interval\":80,\"frames\":[\"▰▱▱▱▱▱▱\",\"▰▰▱▱▱▱▱\",\"▰▰▰▱▱▱▱\",\"▰▰▰▰▱▱▱\",\"▰▰▰▰▰▱▱\",\"▰▰▰▰▰▰▱\",\"▰▰▰▰▰▰▰\",\"▰▱▱▱▱▱▱\"]}}"); /***/ }), -/* 493 */ +/* 492 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const chalk = __webpack_require__(494); +const chalk = __webpack_require__(493); const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; @@ -56908,16 +56813,16 @@ module.exports = isSupported ? main : fallbacks; /***/ }), -/* 494 */ +/* 493 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(265); -const ansiStyles = __webpack_require__(495); -const stdoutColor = __webpack_require__(500).stdout; +const escapeStringRegexp = __webpack_require__(264); +const ansiStyles = __webpack_require__(494); +const stdoutColor = __webpack_require__(499).stdout; -const template = __webpack_require__(502); +const template = __webpack_require__(501); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -57143,12 +57048,12 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 495 */ +/* 494 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(496); +const colorConvert = __webpack_require__(495); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -57313,14 +57218,14 @@ Object.defineProperty(module, 'exports', { get: assembleStyles }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(114)(module))) /***/ }), -/* 496 */ +/* 495 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(497); -var route = __webpack_require__(499); +var conversions = __webpack_require__(496); +var route = __webpack_require__(498); var convert = {}; @@ -57400,11 +57305,11 @@ module.exports = convert; /***/ }), -/* 497 */ +/* 496 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ -var cssKeywords = __webpack_require__(498); +var cssKeywords = __webpack_require__(497); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -58274,7 +58179,7 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 498 */ +/* 497 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58433,10 +58338,10 @@ module.exports = { /***/ }), -/* 499 */ +/* 498 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(497); +var conversions = __webpack_require__(496); /* this function routes a model to all other models. @@ -58536,13 +58441,13 @@ module.exports = function (fromModel) { /***/ }), -/* 500 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const os = __webpack_require__(121); -const hasFlag = __webpack_require__(501); +const os = __webpack_require__(120); +const hasFlag = __webpack_require__(500); const env = process.env; @@ -58674,7 +58579,7 @@ module.exports = { /***/ }), -/* 501 */ +/* 500 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58689,7 +58594,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 502 */ +/* 501 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58824,18 +58729,18 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 503 */ +/* 502 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiRegex = __webpack_require__(504); +const ansiRegex = __webpack_require__(503); module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string; /***/ }), -/* 504 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58852,14 +58757,14 @@ module.exports = ({onlyFirst = false} = {}) => { /***/ }), -/* 505 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(506) -var combining = __webpack_require__(508) +var defaults = __webpack_require__(505) +var combining = __webpack_require__(507) var DEFAULTS = { nul: 0, @@ -58958,10 +58863,10 @@ function bisearch(ucs) { /***/ }), -/* 506 */ +/* 505 */ /***/ (function(module, exports, __webpack_require__) { -var clone = __webpack_require__(507); +var clone = __webpack_require__(506); module.exports = function(options, defaults) { options = options || {}; @@ -58976,7 +58881,7 @@ module.exports = function(options, defaults) { }; /***/ }), -/* 507 */ +/* 506 */ /***/ (function(module, exports, __webpack_require__) { var clone = (function() { @@ -59148,7 +59053,7 @@ if ( true && module.exports) { /***/ }), -/* 508 */ +/* 507 */ /***/ (function(module, exports) { module.exports = [ @@ -59204,7 +59109,7 @@ module.exports = [ /***/ }), -/* 509 */ +/* 508 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59220,10 +59125,10 @@ module.exports = ({stream = process.stdout} = {}) => { /***/ }), -/* 510 */ +/* 509 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(138) +var Stream = __webpack_require__(137) module.exports = MuteStream @@ -59371,7 +59276,7 @@ MuteStream.prototype.close = proxy('close') /***/ }), -/* 511 */ +/* 510 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -59379,15 +59284,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResetCommand", function() { return ResetCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(480); +/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(479); /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(246); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(371); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(130); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(245); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59490,7 +59395,7 @@ const ResetCommand = { }; /***/ }), -/* 512 */ +/* 511 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -59498,10 +59403,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RunCommand", function() { return RunCommand; }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(249); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(246); -/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(247); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(248); +/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(248); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(245); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(246); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(247); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59555,13 +59460,13 @@ const RunCommand = { }; /***/ }), -/* 513 */ +/* 512 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WatchCommand", function() { return WatchCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(372); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(371); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59588,19 +59493,19 @@ const WatchCommand = { }; /***/ }), -/* 514 */ +/* 513 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runCommand", function() { return runCommand; }); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(515); +/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(514); /* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(249); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(246); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(248); -/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(371); -/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(558); +/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(248); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(245); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(247); +/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(370); +/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(557); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -59718,11 +59623,31 @@ function toArray(value) { } /***/ }), -/* 515 */ +/* 514 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CiStatsReporter = void 0; + +var _util = __webpack_require__(111); + +var _os = _interopRequireDefault(__webpack_require__(120)); + +var _fs = _interopRequireDefault(__webpack_require__(133)); + +var _path = _interopRequireDefault(__webpack_require__(4)); + +var _axios = _interopRequireDefault(__webpack_require__(515)); + +var _ci_stats_config = __webpack_require__(555); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -59730,194 +59655,223 @@ function toArray(value) { * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CiStatsReporter = void 0; -const tslib_1 = __webpack_require__(7); -const util_1 = __webpack_require__(112); -const os_1 = tslib_1.__importDefault(__webpack_require__(121)); -const fs_1 = tslib_1.__importDefault(__webpack_require__(134)); -const path_1 = tslib_1.__importDefault(__webpack_require__(4)); -const axios_1 = tslib_1.__importDefault(__webpack_require__(516)); -const ci_stats_config_1 = __webpack_require__(556); const BASE_URL = 'https://ci-stats.kibana.dev'; + class CiStatsReporter { - constructor(config, log) { - this.config = config; - this.log = log; + static fromEnv(log) { + return new CiStatsReporter((0, _ci_stats_config.parseConfig)(log), log); + } + + constructor(config, log) { + this.config = config; + this.log = log; + } + + isEnabled() { + return process.env.CI_STATS_DISABLED !== 'true'; + } + + hasBuildConfig() { + var _this$config, _this$config2; + + return this.isEnabled() && !!((_this$config = this.config) !== null && _this$config !== void 0 && _this$config.apiToken) && !!((_this$config2 = this.config) !== null && _this$config2 !== void 0 && _this$config2.buildId); + } + /** + * Report timings data to the ci-stats service. If running in CI then the reporter + * will include the buildId in the report with the access token, otherwise the timings + * data will be recorded as anonymous timing data. + */ + + + async timings(options) { + var _this$config3, _options$upstreamBran, _Os$cpus, _Os$cpus$, _Os$cpus$2; + + if (!this.isEnabled()) { + return; } - static fromEnv(log) { - return new CiStatsReporter(ci_stats_config_1.parseConfig(log), log); + + const buildId = (_this$config3 = this.config) === null || _this$config3 === void 0 ? void 0 : _this$config3.buildId; + const timings = options.timings; + const upstreamBranch = (_options$upstreamBran = options.upstreamBranch) !== null && _options$upstreamBran !== void 0 ? _options$upstreamBran : this.getUpstreamBranch(); + const kibanaUuid = options.kibanaUuid === undefined ? this.getKibanaUuid() : options.kibanaUuid; + const defaultMetadata = { + osPlatform: _os.default.platform(), + osRelease: _os.default.release(), + osArch: _os.default.arch(), + cpuCount: (_Os$cpus = _os.default.cpus()) === null || _Os$cpus === void 0 ? void 0 : _Os$cpus.length, + cpuModel: (_Os$cpus$ = _os.default.cpus()[0]) === null || _Os$cpus$ === void 0 ? void 0 : _Os$cpus$.model, + cpuSpeed: (_Os$cpus$2 = _os.default.cpus()[0]) === null || _Os$cpus$2 === void 0 ? void 0 : _Os$cpus$2.speed, + freeMem: _os.default.freemem(), + totalMem: _os.default.totalmem(), + kibanaUuid + }; + return await this.req({ + auth: !!buildId, + path: '/v1/timings', + body: { + buildId, + upstreamBranch, + timings, + defaultMetadata + }, + bodyDesc: timings.length === 1 ? `${timings.length} timing` : `${timings.length} timings` + }); + } + /** + * Report metrics data to the ci-stats service. If running outside of CI this method + * does nothing as metrics can only be reported when associated with a specific CI build. + */ + + + async metrics(metrics) { + var _this$config4; + + if (!this.hasBuildConfig()) { + return; } - isEnabled() { - return process.env.CI_STATS_DISABLED !== 'true'; + + const buildId = (_this$config4 = this.config) === null || _this$config4 === void 0 ? void 0 : _this$config4.buildId; + + if (!buildId) { + throw new Error(`CiStatsReporter can't be authorized without a buildId`); } - hasBuildConfig() { - var _a, _b; - return this.isEnabled() && !!((_a = this.config) === null || _a === void 0 ? void 0 : _a.apiToken) && !!((_b = this.config) === null || _b === void 0 ? void 0 : _b.buildId); + + return await this.req({ + auth: true, + path: '/v1/metrics', + body: { + buildId, + metrics + }, + bodyDesc: `metrics: ${metrics.map(({ + group, + id, + value + }) => `[${group}/${id}=${value}]`).join(' ')}` + }); + } + /** + * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass + * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm + * we rely on @kbn/utils to find the package.json file. + */ + + + getUpstreamBranch() { + // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm + const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires + + const { + kibanaPackageJson + } = __webpack_require__(556)(hideFromWebpack.join('')); + + return kibanaPackageJson.branch; + } + /** + * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass + * in the kibanaUuid when calling the timings() method. Outside of @kbn/pm + * we rely on @kbn/utils to find the repo root. + */ + + + getKibanaUuid() { + // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm + const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires + + const { + REPO_ROOT + } = __webpack_require__(556)(hideFromWebpack.join('')); + + try { + return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim(); + } catch (error) { + if (error.code === 'ENOENT') { + return undefined; + } + + throw error; } - /** - * Report timings data to the ci-stats service. If running in CI then the reporter - * will include the buildId in the report with the access token, otherwise the timings - * data will be recorded as anonymous timing data. - */ - async timings(options) { - var _a, _b, _c, _d, _e; - if (!this.isEnabled()) { - return; - } - const buildId = (_a = this.config) === null || _a === void 0 ? void 0 : _a.buildId; - const timings = options.timings; - const upstreamBranch = (_b = options.upstreamBranch) !== null && _b !== void 0 ? _b : this.getUpstreamBranch(); - const kibanaUuid = options.kibanaUuid === undefined ? this.getKibanaUuid() : options.kibanaUuid; - const defaultMetadata = { - osPlatform: os_1.default.platform(), - osRelease: os_1.default.release(), - osArch: os_1.default.arch(), - cpuCount: (_c = os_1.default.cpus()) === null || _c === void 0 ? void 0 : _c.length, - cpuModel: (_d = os_1.default.cpus()[0]) === null || _d === void 0 ? void 0 : _d.model, - cpuSpeed: (_e = os_1.default.cpus()[0]) === null || _e === void 0 ? void 0 : _e.speed, - freeMem: os_1.default.freemem(), - totalMem: os_1.default.totalmem(), - kibanaUuid, - }; - return await this.req({ - auth: !!buildId, - path: '/v1/timings', - body: { - buildId, - upstreamBranch, - timings, - defaultMetadata, - }, - bodyDesc: timings.length === 1 ? `${timings.length} timing` : `${timings.length} timings`, - }); + } + + async req({ + auth, + body, + bodyDesc, + path + }) { + let attempt = 0; + const maxAttempts = 5; + let headers; + + if (auth && this.config) { + headers = { + Authorization: `token ${this.config.apiToken}` + }; + } else if (auth) { + throw new Error('this.req() shouldnt be called with auth=true if this.config is defined'); } - /** - * Report metrics data to the ci-stats service. If running outside of CI this method - * does nothing as metrics can only be reported when associated with a specific CI build. - */ - async metrics(metrics) { - var _a; - if (!this.hasBuildConfig()) { - return; - } - const buildId = (_a = this.config) === null || _a === void 0 ? void 0 : _a.buildId; - if (!buildId) { - throw new Error(`CiStatsReporter can't be authorized without a buildId`); - } - return await this.req({ - auth: true, - path: '/v1/metrics', - body: { - buildId, - metrics, - }, - bodyDesc: `metrics: ${metrics - .map(({ group, id, value }) => `[${group}/${id}=${value}]`) - .join(' ')}`, + + while (true) { + attempt += 1; + + try { + await _axios.default.request({ + method: 'POST', + url: path, + baseURL: BASE_URL, + headers, + data: body }); - } - /** - * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass - * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm - * we rely on @kbn/utils to find the package.json file. - */ - getUpstreamBranch() { - // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm - const hideFromWebpack = ['@', 'kbn/utils']; - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { kibanaPackageJson } = __webpack_require__(557)(hideFromWebpack.join('')); - return kibanaPackageJson.branch; - } - /** - * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass - * in the kibanaUuid when calling the timings() method. Outside of @kbn/pm - * we rely on @kbn/utils to find the repo root. - */ - getKibanaUuid() { - // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm - const hideFromWebpack = ['@', 'kbn/utils']; - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { REPO_ROOT } = __webpack_require__(557)(hideFromWebpack.join('')); - try { - return fs_1.default.readFileSync(path_1.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim(); - } - catch (error) { - if (error.code === 'ENOENT') { - return undefined; - } - throw error; - } - } - async req({ auth, body, bodyDesc, path }) { - var _a; - let attempt = 0; - const maxAttempts = 5; - let headers; - if (auth && this.config) { - headers = { - Authorization: `token ${this.config.apiToken}`, - }; - } - else if (auth) { - throw new Error('this.req() shouldnt be called with auth=true if this.config is defined'); + return true; + } catch (error) { + var _error$response; + + if (!(error !== null && error !== void 0 && error.request)) { + // not an axios error, must be a usage error that we should notify user about + throw error; } - while (true) { - attempt += 1; - try { - await axios_1.default.request({ - method: 'POST', - url: path, - baseURL: BASE_URL, - headers, - data: body, - }); - return true; - } - catch (error) { - if (!(error === null || error === void 0 ? void 0 : error.request)) { - // not an axios error, must be a usage error that we should notify user about - throw error; - } - if ((error === null || error === void 0 ? void 0 : error.response) && error.response.status < 502) { - // error response from service was received so warn the user and move on - this.log.warning(`error reporting ${bodyDesc} [status=${error.response.status}] [resp=${util_1.inspect(error.response.data)}]`); - return; - } - if (attempt === maxAttempts) { - this.log.warning(`unable to report ${bodyDesc}, failed to reach ci-stats service too many times`); - return; - } - // we failed to reach the backend and we have remaining attempts, lets retry after a short delay - const reason = ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) ? `${error.response.status} response` - : 'no response'; - this.log.warning(`failed to reach ci-stats service [reason=${reason}], retrying in ${attempt} seconds`); - await new Promise((resolve) => setTimeout(resolve, attempt * 1000)); - } + + if (error !== null && error !== void 0 && error.response && error.response.status < 502) { + // error response from service was received so warn the user and move on + this.log.warning(`error reporting ${bodyDesc} [status=${error.response.status}] [resp=${(0, _util.inspect)(error.response.data)}]`); + return; } + + if (attempt === maxAttempts) { + this.log.warning(`unable to report ${bodyDesc}, failed to reach ci-stats service too many times`); + return; + } // we failed to reach the backend and we have remaining attempts, lets retry after a short delay + + + const reason = error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && _error$response.status ? `${error.response.status} response` : 'no response'; + this.log.warning(`failed to reach ci-stats service [reason=${reason}], retrying in ${attempt} seconds`); + await new Promise(resolve => setTimeout(resolve, attempt * 1000)); + } } + } + } + exports.CiStatsReporter = CiStatsReporter; -//# sourceMappingURL=ci_stats_reporter.js.map /***/ }), -/* 516 */ +/* 515 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(517); +module.exports = __webpack_require__(516); /***/ }), -/* 517 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var bind = __webpack_require__(519); -var Axios = __webpack_require__(520); -var mergeConfig = __webpack_require__(551); -var defaults = __webpack_require__(526); +var utils = __webpack_require__(517); +var bind = __webpack_require__(518); +var Axios = __webpack_require__(519); +var mergeConfig = __webpack_require__(550); +var defaults = __webpack_require__(525); /** * Create an instance of Axios @@ -59950,18 +59904,18 @@ axios.create = function create(instanceConfig) { }; // Expose Cancel & CancelToken -axios.Cancel = __webpack_require__(552); -axios.CancelToken = __webpack_require__(553); -axios.isCancel = __webpack_require__(525); +axios.Cancel = __webpack_require__(551); +axios.CancelToken = __webpack_require__(552); +axios.isCancel = __webpack_require__(524); // Expose all/spread axios.all = function all(promises) { return Promise.all(promises); }; -axios.spread = __webpack_require__(554); +axios.spread = __webpack_require__(553); // Expose isAxiosError -axios.isAxiosError = __webpack_require__(555); +axios.isAxiosError = __webpack_require__(554); module.exports = axios; @@ -59970,13 +59924,13 @@ module.exports.default = axios; /***/ }), -/* 518 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var bind = __webpack_require__(519); +var bind = __webpack_require__(518); /*global toString:true*/ @@ -60328,7 +60282,7 @@ module.exports = { /***/ }), -/* 519 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60346,17 +60300,17 @@ module.exports = function bind(fn, thisArg) { /***/ }), -/* 520 */ +/* 519 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var buildURL = __webpack_require__(521); -var InterceptorManager = __webpack_require__(522); -var dispatchRequest = __webpack_require__(523); -var mergeConfig = __webpack_require__(551); +var utils = __webpack_require__(517); +var buildURL = __webpack_require__(520); +var InterceptorManager = __webpack_require__(521); +var dispatchRequest = __webpack_require__(522); +var mergeConfig = __webpack_require__(550); /** * Create a new instance of Axios @@ -60448,13 +60402,13 @@ module.exports = Axios; /***/ }), -/* 521 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); function encode(val) { return encodeURIComponent(val). @@ -60525,13 +60479,13 @@ module.exports = function buildURL(url, params, paramsSerializer) { /***/ }), -/* 522 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); function InterceptorManager() { this.handlers = []; @@ -60584,16 +60538,16 @@ module.exports = InterceptorManager; /***/ }), -/* 523 */ +/* 522 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var transformData = __webpack_require__(524); -var isCancel = __webpack_require__(525); -var defaults = __webpack_require__(526); +var utils = __webpack_require__(517); +var transformData = __webpack_require__(523); +var isCancel = __webpack_require__(524); +var defaults = __webpack_require__(525); /** * Throws a `Cancel` if cancellation has been requested. @@ -60670,13 +60624,13 @@ module.exports = function dispatchRequest(config) { /***/ }), -/* 524 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); /** * Transform the data for a request or a response @@ -60697,7 +60651,7 @@ module.exports = function transformData(data, headers, fns) { /***/ }), -/* 525 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60709,14 +60663,14 @@ module.exports = function isCancel(value) { /***/ }), -/* 526 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var normalizeHeaderName = __webpack_require__(527); +var utils = __webpack_require__(517); +var normalizeHeaderName = __webpack_require__(526); var DEFAULT_CONTENT_TYPE = { 'Content-Type': 'application/x-www-form-urlencoded' @@ -60732,10 +60686,10 @@ function getDefaultAdapter() { var adapter; if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter - adapter = __webpack_require__(528); + adapter = __webpack_require__(527); } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { // For node use HTTP adapter - adapter = __webpack_require__(538); + adapter = __webpack_require__(537); } return adapter; } @@ -60814,13 +60768,13 @@ module.exports = defaults; /***/ }), -/* 527 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); module.exports = function normalizeHeaderName(headers, normalizedName) { utils.forEach(headers, function processHeader(value, name) { @@ -60833,20 +60787,20 @@ module.exports = function normalizeHeaderName(headers, normalizedName) { /***/ }), -/* 528 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var settle = __webpack_require__(529); -var cookies = __webpack_require__(532); -var buildURL = __webpack_require__(521); -var buildFullPath = __webpack_require__(533); -var parseHeaders = __webpack_require__(536); -var isURLSameOrigin = __webpack_require__(537); -var createError = __webpack_require__(530); +var utils = __webpack_require__(517); +var settle = __webpack_require__(528); +var cookies = __webpack_require__(531); +var buildURL = __webpack_require__(520); +var buildFullPath = __webpack_require__(532); +var parseHeaders = __webpack_require__(535); +var isURLSameOrigin = __webpack_require__(536); +var createError = __webpack_require__(529); module.exports = function xhrAdapter(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { @@ -61019,13 +60973,13 @@ module.exports = function xhrAdapter(config) { /***/ }), -/* 529 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var createError = __webpack_require__(530); +var createError = __webpack_require__(529); /** * Resolve or reject a Promise based on response status. @@ -61051,13 +61005,13 @@ module.exports = function settle(resolve, reject, response) { /***/ }), -/* 530 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var enhanceError = __webpack_require__(531); +var enhanceError = __webpack_require__(530); /** * Create an Error with the specified message, config, error code, request and response. @@ -61076,7 +61030,7 @@ module.exports = function createError(message, config, code, request, response) /***/ }), -/* 531 */ +/* 530 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61125,13 +61079,13 @@ module.exports = function enhanceError(error, config, code, request, response) { /***/ }), -/* 532 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); module.exports = ( utils.isStandardBrowserEnv() ? @@ -61185,14 +61139,14 @@ module.exports = ( /***/ }), -/* 533 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isAbsoluteURL = __webpack_require__(534); -var combineURLs = __webpack_require__(535); +var isAbsoluteURL = __webpack_require__(533); +var combineURLs = __webpack_require__(534); /** * Creates a new URL by combining the baseURL with the requestedURL, @@ -61212,7 +61166,7 @@ module.exports = function buildFullPath(baseURL, requestedURL) { /***/ }), -/* 534 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61233,7 +61187,7 @@ module.exports = function isAbsoluteURL(url) { /***/ }), -/* 535 */ +/* 534 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61254,13 +61208,13 @@ module.exports = function combineURLs(baseURL, relativeURL) { /***/ }), -/* 536 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); // Headers whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers @@ -61314,13 +61268,13 @@ module.exports = function parseHeaders(headers) { /***/ }), -/* 537 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); module.exports = ( utils.isStandardBrowserEnv() ? @@ -61389,25 +61343,25 @@ module.exports = ( /***/ }), -/* 538 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); -var settle = __webpack_require__(529); -var buildFullPath = __webpack_require__(533); -var buildURL = __webpack_require__(521); -var http = __webpack_require__(539); -var https = __webpack_require__(540); -var httpFollow = __webpack_require__(541).http; -var httpsFollow = __webpack_require__(541).https; -var url = __webpack_require__(283); -var zlib = __webpack_require__(549); -var pkg = __webpack_require__(550); -var createError = __webpack_require__(530); -var enhanceError = __webpack_require__(531); +var utils = __webpack_require__(517); +var settle = __webpack_require__(528); +var buildFullPath = __webpack_require__(532); +var buildURL = __webpack_require__(520); +var http = __webpack_require__(538); +var https = __webpack_require__(539); +var httpFollow = __webpack_require__(540).http; +var httpsFollow = __webpack_require__(540).https; +var url = __webpack_require__(282); +var zlib = __webpack_require__(548); +var pkg = __webpack_require__(549); +var createError = __webpack_require__(529); +var enhanceError = __webpack_require__(530); var isHttps = /https:?/; @@ -61699,28 +61653,28 @@ module.exports = function httpAdapter(config) { /***/ }), -/* 539 */ +/* 538 */ /***/ (function(module, exports) { module.exports = require("http"); /***/ }), -/* 540 */ +/* 539 */ /***/ (function(module, exports) { module.exports = require("https"); /***/ }), -/* 541 */ +/* 540 */ /***/ (function(module, exports, __webpack_require__) { -var url = __webpack_require__(283); +var url = __webpack_require__(282); var URL = url.URL; -var http = __webpack_require__(539); -var https = __webpack_require__(540); -var Writable = __webpack_require__(138).Writable; -var assert = __webpack_require__(140); -var debug = __webpack_require__(542); +var http = __webpack_require__(538); +var https = __webpack_require__(539); +var Writable = __webpack_require__(137).Writable; +var assert = __webpack_require__(139); +var debug = __webpack_require__(541); // Create handlers that pass events from native requests var eventHandlers = Object.create(null); @@ -62215,13 +62169,13 @@ module.exports.wrap = wrap; /***/ }), -/* 542 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { var debug; try { /* eslint global-require: off */ - debug = __webpack_require__(543)("follow-redirects"); + debug = __webpack_require__(542)("follow-redirects"); } catch (error) { debug = function () { /* */ }; @@ -62230,7 +62184,7 @@ module.exports = debug; /***/ }), -/* 543 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -62239,14 +62193,14 @@ module.exports = debug; */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(544); + module.exports = __webpack_require__(543); } else { - module.exports = __webpack_require__(547); + module.exports = __webpack_require__(546); } /***/ }), -/* 544 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -62255,7 +62209,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(545); +exports = module.exports = __webpack_require__(544); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -62437,7 +62391,7 @@ function localstorage() { /***/ }), -/* 545 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { @@ -62453,7 +62407,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(546); +exports.humanize = __webpack_require__(545); /** * The currently active debug mode names, and names to skip. @@ -62645,7 +62599,7 @@ function coerce(val) { /***/ }), -/* 546 */ +/* 545 */ /***/ (function(module, exports) { /** @@ -62803,15 +62757,15 @@ function plural(ms, n, name) { /***/ }), -/* 547 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { /** * Module dependencies. */ -var tty = __webpack_require__(122); -var util = __webpack_require__(112); +var tty = __webpack_require__(121); +var util = __webpack_require__(111); /** * This is the Node.js implementation of `debug()`. @@ -62819,7 +62773,7 @@ var util = __webpack_require__(112); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(545); +exports = module.exports = __webpack_require__(544); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -62991,14 +62945,14 @@ function createWritableStdioStream (fd) { break; case 'FILE': - var fs = __webpack_require__(134); + var fs = __webpack_require__(133); stream = new fs.SyncWriteStream(fd, { autoClose: false }); stream._type = 'fs'; break; case 'PIPE': case 'TCP': - var net = __webpack_require__(548); + var net = __webpack_require__(547); stream = new net.Socket({ fd: fd, readable: false, @@ -63057,31 +63011,31 @@ exports.enable(load()); /***/ }), -/* 548 */ +/* 547 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 549 */ +/* 548 */ /***/ (function(module, exports) { module.exports = require("zlib"); /***/ }), -/* 550 */ +/* 549 */ /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"axios\",\"version\":\"0.21.1\",\"description\":\"Promise based HTTP client for the browser and node.js\",\"main\":\"index.js\",\"scripts\":{\"test\":\"grunt test && bundlesize\",\"start\":\"node ./sandbox/server.js\",\"build\":\"NODE_ENV=production grunt build\",\"preversion\":\"npm test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\"postversion\":\"git push && git push --tags\",\"examples\":\"node ./examples/server.js\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"fix\":\"eslint --fix lib/**/*.js\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/axios/axios.git\"},\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"author\":\"Matt Zabriskie\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"homepage\":\"https://github.com/axios/axios\",\"devDependencies\":{\"bundlesize\":\"^0.17.0\",\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.0.2\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^20.1.0\",\"grunt-karma\":\"^2.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^1.0.18\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^1.3.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-coverage\":\"^1.1.1\",\"karma-firefox-launcher\":\"^1.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-opera-launcher\":\"^1.0.0\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.2.0\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^1.7.0\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^5.2.0\",\"sinon\":\"^4.5.0\",\"typescript\":\"^2.8.1\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^1.13.1\",\"webpack-dev-server\":\"^1.14.1\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"jsdelivr\":\"dist/axios.min.js\",\"unpkg\":\"dist/axios.min.js\",\"typings\":\"./index.d.ts\",\"dependencies\":{\"follow-redirects\":\"^1.10.0\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}]}"); /***/ }), -/* 551 */ +/* 550 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(518); +var utils = __webpack_require__(517); /** * Config-specific merge-function which creates a new config-object @@ -63169,7 +63123,7 @@ module.exports = function mergeConfig(config1, config2) { /***/ }), -/* 552 */ +/* 551 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63195,13 +63149,13 @@ module.exports = Cancel; /***/ }), -/* 553 */ +/* 552 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Cancel = __webpack_require__(552); +var Cancel = __webpack_require__(551); /** * A `CancelToken` is an object that can be used to request cancellation of an operation. @@ -63259,7 +63213,7 @@ module.exports = CancelToken; /***/ }), -/* 554 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63293,7 +63247,7 @@ module.exports = function spread(callback) { /***/ }), -/* 555 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63311,11 +63265,17 @@ module.exports = function isAxiosError(payload) { /***/ }), -/* 556 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseConfig = parseConfig; + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -63323,45 +63283,49 @@ module.exports = function isAxiosError(payload) { * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseConfig = void 0; function validateConfig(log, config) { - const validApiToken = typeof config.apiToken === 'string' && config.apiToken.length !== 0; - if (!validApiToken) { - log.warning('KIBANA_CI_STATS_CONFIG is missing a valid api token, stats will not be reported'); - return; - } - const validId = typeof config.buildId === 'string' && config.buildId.length !== 0; - if (!validId) { - log.warning('KIBANA_CI_STATS_CONFIG is missing a valid build id, stats will not be reported'); - return; - } - return config; + const validApiToken = typeof config.apiToken === 'string' && config.apiToken.length !== 0; + + if (!validApiToken) { + log.warning('KIBANA_CI_STATS_CONFIG is missing a valid api token, stats will not be reported'); + return; + } + + const validId = typeof config.buildId === 'string' && config.buildId.length !== 0; + + if (!validId) { + log.warning('KIBANA_CI_STATS_CONFIG is missing a valid build id, stats will not be reported'); + return; + } + + return config; } + function parseConfig(log) { - const configJson = process.env.KIBANA_CI_STATS_CONFIG; - if (!configJson) { - log.debug('KIBANA_CI_STATS_CONFIG environment variable not found, disabling CiStatsReporter'); - return; - } - let config; - try { - config = JSON.parse(configJson); - } - catch (_) { - // handled below - } - if (typeof config === 'object' && config !== null) { - return validateConfig(log, config); - } - log.warning('KIBANA_CI_STATS_CONFIG is invalid, stats will not be reported'); + const configJson = process.env.KIBANA_CI_STATS_CONFIG; + + if (!configJson) { + log.debug('KIBANA_CI_STATS_CONFIG environment variable not found, disabling CiStatsReporter'); return; + } + + let config; + + try { + config = JSON.parse(configJson); + } catch (_) {// handled below + } + + if (typeof config === 'object' && config !== null) { + return validateConfig(log, config); + } + + log.warning('KIBANA_CI_STATS_CONFIG is invalid, stats will not be reported'); + return; } -exports.parseConfig = parseConfig; -//# sourceMappingURL=ci_stats_config.js.map /***/ }), -/* 557 */ +/* 556 */ /***/ (function(module, exports) { function webpackEmptyContext(req) { @@ -63372,10 +63336,10 @@ function webpackEmptyContext(req) { webpackEmptyContext.keys = function() { return []; }; webpackEmptyContext.resolve = webpackEmptyContext; module.exports = webpackEmptyContext; -webpackEmptyContext.id = 557; +webpackEmptyContext.id = 556; /***/ }), -/* 558 */ +/* 557 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -63383,15 +63347,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Kibana", function() { return Kibana; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(134); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(133); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(559); +/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(558); /* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(multimatch__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(239); +/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(238); /* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(is_path_inside__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(366); -/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(248); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(562); +/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(365); +/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(247); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(561); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } @@ -63555,15 +63519,15 @@ class Kibana { } /***/ }), -/* 559 */ +/* 558 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const minimatch = __webpack_require__(150); -const arrayUnion = __webpack_require__(145); -const arrayDiffer = __webpack_require__(560); -const arrify = __webpack_require__(561); +const minimatch = __webpack_require__(149); +const arrayUnion = __webpack_require__(144); +const arrayDiffer = __webpack_require__(559); +const arrify = __webpack_require__(560); module.exports = (list, patterns, options = {}) => { list = arrify(list); @@ -63587,7 +63551,7 @@ module.exports = (list, patterns, options = {}) => { /***/ }), -/* 560 */ +/* 559 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63602,7 +63566,7 @@ module.exports = arrayDiffer; /***/ }), -/* 561 */ +/* 560 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -63632,7 +63596,7 @@ module.exports = arrify; /***/ }), -/* 562 */ +/* 561 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -63692,15 +63656,15 @@ function getProjectPaths({ } /***/ }), -/* 563 */ +/* 562 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(564); +/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(563); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__["buildBazelProductionProjects"]; }); -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(812); +/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(811); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; }); /* @@ -63714,24 +63678,24 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 564 */ +/* 563 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return buildBazelProductionProjects; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(565); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(564); /* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(774); +/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(773); /* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(globby__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(812); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(372); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(246); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(251); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(248); +/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(811); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(371); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(130); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(245); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(250); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(247); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -63821,22 +63785,22 @@ async function applyCorrectPermissions(project, kibanaRoot, buildRoot) { } /***/ }), -/* 565 */ +/* 564 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(156); +const EventEmitter = __webpack_require__(155); const path = __webpack_require__(4); -const os = __webpack_require__(121); -const pMap = __webpack_require__(566); -const arrify = __webpack_require__(561); -const globby = __webpack_require__(569); -const hasGlob = __webpack_require__(758); -const cpFile = __webpack_require__(760); -const junk = __webpack_require__(770); -const pFilter = __webpack_require__(771); -const CpyError = __webpack_require__(773); +const os = __webpack_require__(120); +const pMap = __webpack_require__(565); +const arrify = __webpack_require__(560); +const globby = __webpack_require__(568); +const hasGlob = __webpack_require__(757); +const cpFile = __webpack_require__(759); +const junk = __webpack_require__(769); +const pFilter = __webpack_require__(770); +const CpyError = __webpack_require__(772); const defaultOptions = { ignoreJunk: true @@ -63987,12 +63951,12 @@ module.exports = (source, destination, { /***/ }), -/* 566 */ +/* 565 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(567); +const AggregateError = __webpack_require__(566); module.exports = async ( iterable, @@ -64075,13 +64039,13 @@ module.exports = async ( /***/ }), -/* 567 */ +/* 566 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(568); -const cleanStack = __webpack_require__(244); +const indentString = __webpack_require__(567); +const cleanStack = __webpack_require__(243); const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); @@ -64129,7 +64093,7 @@ module.exports = AggregateError; /***/ }), -/* 568 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64171,17 +64135,17 @@ module.exports = (string, count = 1, options) => { /***/ }), -/* 569 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const arrayUnion = __webpack_require__(570); -const glob = __webpack_require__(147); -const fastGlob = __webpack_require__(572); -const dirGlob = __webpack_require__(751); -const gitignore = __webpack_require__(754); +const fs = __webpack_require__(133); +const arrayUnion = __webpack_require__(569); +const glob = __webpack_require__(146); +const fastGlob = __webpack_require__(571); +const dirGlob = __webpack_require__(750); +const gitignore = __webpack_require__(753); const DEFAULT_FILTER = () => false; @@ -64326,12 +64290,12 @@ module.exports.gitignore = gitignore; /***/ }), -/* 570 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var arrayUniq = __webpack_require__(571); +var arrayUniq = __webpack_require__(570); module.exports = function () { return arrayUniq([].concat.apply([], arguments)); @@ -64339,7 +64303,7 @@ module.exports = function () { /***/ }), -/* 571 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64408,10 +64372,10 @@ if ('Set' in global) { /***/ }), -/* 572 */ +/* 571 */ /***/ (function(module, exports, __webpack_require__) { -const pkg = __webpack_require__(573); +const pkg = __webpack_require__(572); module.exports = pkg.async; module.exports.default = pkg.async; @@ -64424,19 +64388,19 @@ module.exports.generateTasks = pkg.generateTasks; /***/ }), -/* 573 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var optionsManager = __webpack_require__(574); -var taskManager = __webpack_require__(575); -var reader_async_1 = __webpack_require__(722); -var reader_stream_1 = __webpack_require__(746); -var reader_sync_1 = __webpack_require__(747); -var arrayUtils = __webpack_require__(749); -var streamUtils = __webpack_require__(750); +var optionsManager = __webpack_require__(573); +var taskManager = __webpack_require__(574); +var reader_async_1 = __webpack_require__(721); +var reader_stream_1 = __webpack_require__(745); +var reader_sync_1 = __webpack_require__(746); +var arrayUtils = __webpack_require__(748); +var streamUtils = __webpack_require__(749); /** * Synchronous API. */ @@ -64502,7 +64466,7 @@ function isString(source) { /***/ }), -/* 574 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64540,13 +64504,13 @@ exports.prepare = prepare; /***/ }), -/* 575 */ +/* 574 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__(576); +var patternUtils = __webpack_require__(575); /** * Generate tasks based on parent directory of each pattern. */ @@ -64637,16 +64601,16 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 576 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var globParent = __webpack_require__(577); -var isGlob = __webpack_require__(172); -var micromatch = __webpack_require__(580); +var globParent = __webpack_require__(576); +var isGlob = __webpack_require__(171); +var micromatch = __webpack_require__(579); var GLOBSTAR = '**'; /** * Return true for static pattern. @@ -64792,16 +64756,16 @@ exports.matchAny = matchAny; /***/ }), -/* 577 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(4); -var isglob = __webpack_require__(578); -var pathDirname = __webpack_require__(579); -var isWin32 = __webpack_require__(121).platform() === 'win32'; +var isglob = __webpack_require__(577); +var pathDirname = __webpack_require__(578); +var isWin32 = __webpack_require__(120).platform() === 'win32'; module.exports = function globParent(str) { // flip windows path separators @@ -64823,7 +64787,7 @@ module.exports = function globParent(str) { /***/ }), -/* 578 */ +/* 577 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -64833,7 +64797,7 @@ module.exports = function globParent(str) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(173); +var isExtglob = __webpack_require__(172); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -64854,14 +64818,14 @@ module.exports = function isGlob(str) { /***/ }), -/* 579 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(4); -var inspect = __webpack_require__(112).inspect; +var inspect = __webpack_require__(111).inspect; function assertPath(path) { if (typeof path !== 'string') { @@ -65004,7 +64968,7 @@ module.exports.win32 = win32; /***/ }), -/* 580 */ +/* 579 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65014,19 +64978,19 @@ module.exports.win32 = win32; * Module dependencies */ -var util = __webpack_require__(112); -var braces = __webpack_require__(581); -var toRegex = __webpack_require__(582); -var extend = __webpack_require__(690); +var util = __webpack_require__(111); +var braces = __webpack_require__(580); +var toRegex = __webpack_require__(581); +var extend = __webpack_require__(689); /** * Local dependencies */ -var compilers = __webpack_require__(692); -var parsers = __webpack_require__(718); -var cache = __webpack_require__(719); -var utils = __webpack_require__(720); +var compilers = __webpack_require__(691); +var parsers = __webpack_require__(717); +var cache = __webpack_require__(718); +var utils = __webpack_require__(719); var MAX_LENGTH = 1024 * 64; /** @@ -65888,7 +65852,7 @@ module.exports = micromatch; /***/ }), -/* 581 */ +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65898,18 +65862,18 @@ module.exports = micromatch; * Module dependencies */ -var toRegex = __webpack_require__(582); -var unique = __webpack_require__(602); -var extend = __webpack_require__(603); +var toRegex = __webpack_require__(581); +var unique = __webpack_require__(601); +var extend = __webpack_require__(602); /** * Local dependencies */ -var compilers = __webpack_require__(605); -var parsers = __webpack_require__(618); -var Braces = __webpack_require__(623); -var utils = __webpack_require__(606); +var compilers = __webpack_require__(604); +var parsers = __webpack_require__(617); +var Braces = __webpack_require__(622); +var utils = __webpack_require__(605); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -66213,16 +66177,16 @@ module.exports = braces; /***/ }), -/* 582 */ +/* 581 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var safe = __webpack_require__(583); -var define = __webpack_require__(589); -var extend = __webpack_require__(595); -var not = __webpack_require__(599); +var safe = __webpack_require__(582); +var define = __webpack_require__(588); +var extend = __webpack_require__(594); +var not = __webpack_require__(598); var MAX_LENGTH = 1024 * 64; /** @@ -66375,10 +66339,10 @@ module.exports.makeRe = makeRe; /***/ }), -/* 583 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(584); +var parse = __webpack_require__(583); var types = parse.types; module.exports = function (re, opts) { @@ -66424,13 +66388,13 @@ function isRegExp (x) { /***/ }), -/* 584 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(585); -var types = __webpack_require__(586); -var sets = __webpack_require__(587); -var positions = __webpack_require__(588); +var util = __webpack_require__(584); +var types = __webpack_require__(585); +var sets = __webpack_require__(586); +var positions = __webpack_require__(587); module.exports = function(regexpStr) { @@ -66712,11 +66676,11 @@ module.exports.types = types; /***/ }), -/* 585 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(586); -var sets = __webpack_require__(587); +var types = __webpack_require__(585); +var sets = __webpack_require__(586); // All of these are private and only used by randexp. @@ -66829,7 +66793,7 @@ exports.error = function(regexp, msg) { /***/ }), -/* 586 */ +/* 585 */ /***/ (function(module, exports) { module.exports = { @@ -66845,10 +66809,10 @@ module.exports = { /***/ }), -/* 587 */ +/* 586 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(586); +var types = __webpack_require__(585); var INTS = function() { return [{ type: types.RANGE , from: 48, to: 57 }]; @@ -66933,10 +66897,10 @@ exports.anyChar = function() { /***/ }), -/* 588 */ +/* 587 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(586); +var types = __webpack_require__(585); exports.wordBoundary = function() { return { type: types.POSITION, value: 'b' }; @@ -66956,7 +66920,7 @@ exports.end = function() { /***/ }), -/* 589 */ +/* 588 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66969,8 +66933,8 @@ exports.end = function() { -var isobject = __webpack_require__(590); -var isDescriptor = __webpack_require__(591); +var isobject = __webpack_require__(589); +var isDescriptor = __webpack_require__(590); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -67001,7 +66965,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 590 */ +/* 589 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67020,7 +66984,7 @@ module.exports = function isObject(val) { /***/ }), -/* 591 */ +/* 590 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67033,9 +66997,9 @@ module.exports = function isObject(val) { -var typeOf = __webpack_require__(592); -var isAccessor = __webpack_require__(593); -var isData = __webpack_require__(594); +var typeOf = __webpack_require__(591); +var isAccessor = __webpack_require__(592); +var isData = __webpack_require__(593); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -67049,7 +67013,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 592 */ +/* 591 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -67184,7 +67148,7 @@ function isBuffer(val) { /***/ }), -/* 593 */ +/* 592 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67197,7 +67161,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(592); +var typeOf = __webpack_require__(591); // accessor descriptor properties var accessor = { @@ -67260,7 +67224,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 594 */ +/* 593 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67273,7 +67237,7 @@ module.exports = isAccessorDescriptor; -var typeOf = __webpack_require__(592); +var typeOf = __webpack_require__(591); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -67316,14 +67280,14 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 595 */ +/* 594 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(596); -var assignSymbols = __webpack_require__(598); +var isExtendable = __webpack_require__(595); +var assignSymbols = __webpack_require__(597); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -67383,7 +67347,7 @@ function isEnum(obj, key) { /***/ }), -/* 596 */ +/* 595 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67396,7 +67360,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67404,7 +67368,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 597 */ +/* 596 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67417,7 +67381,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(590); +var isObject = __webpack_require__(589); function isObjectObject(o) { return isObject(o) === true @@ -67448,7 +67412,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 598 */ +/* 597 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67495,14 +67459,14 @@ module.exports = function(receiver, objects) { /***/ }), -/* 599 */ +/* 598 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(600); -var safe = __webpack_require__(583); +var extend = __webpack_require__(599); +var safe = __webpack_require__(582); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -67574,14 +67538,14 @@ module.exports = toRegex; /***/ }), -/* 600 */ +/* 599 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(601); -var assignSymbols = __webpack_require__(598); +var isExtendable = __webpack_require__(600); +var assignSymbols = __webpack_require__(597); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -67641,7 +67605,7 @@ function isEnum(obj, key) { /***/ }), -/* 601 */ +/* 600 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67654,7 +67618,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -67662,7 +67626,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 602 */ +/* 601 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67712,13 +67676,13 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 603 */ +/* 602 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(604); +var isObject = __webpack_require__(603); module.exports = function extend(o/*, objects*/) { if (!isObject(o)) { o = {}; } @@ -67752,7 +67716,7 @@ function hasOwn(obj, key) { /***/ }), -/* 604 */ +/* 603 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67772,13 +67736,13 @@ module.exports = function isExtendable(val) { /***/ }), -/* 605 */ +/* 604 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(606); +var utils = __webpack_require__(605); module.exports = function(braces, options) { braces.compiler @@ -68061,25 +68025,25 @@ function hasQueue(node) { /***/ }), -/* 606 */ +/* 605 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(607); +var splitString = __webpack_require__(606); var utils = module.exports; /** * Module dependencies */ -utils.extend = __webpack_require__(603); -utils.flatten = __webpack_require__(610); -utils.isObject = __webpack_require__(590); -utils.fillRange = __webpack_require__(611); -utils.repeat = __webpack_require__(617); -utils.unique = __webpack_require__(602); +utils.extend = __webpack_require__(602); +utils.flatten = __webpack_require__(609); +utils.isObject = __webpack_require__(589); +utils.fillRange = __webpack_require__(610); +utils.repeat = __webpack_require__(616); +utils.unique = __webpack_require__(601); utils.define = function(obj, key, val) { Object.defineProperty(obj, key, { @@ -68411,7 +68375,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 607 */ +/* 606 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68424,7 +68388,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(608); +var extend = __webpack_require__(607); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -68589,14 +68553,14 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 608 */ +/* 607 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(609); -var assignSymbols = __webpack_require__(598); +var isExtendable = __webpack_require__(608); +var assignSymbols = __webpack_require__(597); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -68656,7 +68620,7 @@ function isEnum(obj, key) { /***/ }), -/* 609 */ +/* 608 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68669,7 +68633,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -68677,7 +68641,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 610 */ +/* 609 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68706,7 +68670,7 @@ function flat(arr, res) { /***/ }), -/* 611 */ +/* 610 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68719,11 +68683,11 @@ function flat(arr, res) { -var util = __webpack_require__(112); -var isNumber = __webpack_require__(612); -var extend = __webpack_require__(603); -var repeat = __webpack_require__(615); -var toRegex = __webpack_require__(616); +var util = __webpack_require__(111); +var isNumber = __webpack_require__(611); +var extend = __webpack_require__(602); +var repeat = __webpack_require__(614); +var toRegex = __webpack_require__(615); /** * Return a range of numbers or letters. @@ -68921,7 +68885,7 @@ module.exports = fillRange; /***/ }), -/* 612 */ +/* 611 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68934,7 +68898,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(613); +var typeOf = __webpack_require__(612); module.exports = function isNumber(num) { var type = typeOf(num); @@ -68950,10 +68914,10 @@ module.exports = function isNumber(num) { /***/ }), -/* 613 */ +/* 612 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -69072,7 +69036,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 614 */ +/* 613 */ /***/ (function(module, exports) { /*! @@ -69099,7 +69063,7 @@ function isSlowBuffer (obj) { /***/ }), -/* 615 */ +/* 614 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69176,7 +69140,7 @@ function repeat(str, num) { /***/ }), -/* 616 */ +/* 615 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69189,8 +69153,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(615); -var isNumber = __webpack_require__(612); +var repeat = __webpack_require__(614); +var isNumber = __webpack_require__(611); var cache = {}; function toRegexRange(min, max, options) { @@ -69477,7 +69441,7 @@ module.exports = toRegexRange; /***/ }), -/* 617 */ +/* 616 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -69502,14 +69466,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 618 */ +/* 617 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(619); -var utils = __webpack_require__(606); +var Node = __webpack_require__(618); +var utils = __webpack_require__(605); /** * Braces parsers @@ -69869,15 +69833,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 619 */ +/* 618 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(590); -var define = __webpack_require__(620); -var utils = __webpack_require__(621); +var isObject = __webpack_require__(589); +var define = __webpack_require__(619); +var utils = __webpack_require__(620); var ownNames; /** @@ -70368,7 +70332,7 @@ exports = module.exports = Node; /***/ }), -/* 620 */ +/* 619 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -70381,7 +70345,7 @@ exports = module.exports = Node; -var isDescriptor = __webpack_require__(591); +var isDescriptor = __webpack_require__(590); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -70406,13 +70370,13 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 621 */ +/* 620 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(622); +var typeOf = __webpack_require__(621); var utils = module.exports; /** @@ -71432,10 +71396,10 @@ function assert(val, message) { /***/ }), -/* 622 */ +/* 621 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -71554,17 +71518,17 @@ module.exports = function kindOf(val) { /***/ }), -/* 623 */ +/* 622 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(603); -var Snapdragon = __webpack_require__(624); -var compilers = __webpack_require__(605); -var parsers = __webpack_require__(618); -var utils = __webpack_require__(606); +var extend = __webpack_require__(602); +var Snapdragon = __webpack_require__(623); +var compilers = __webpack_require__(604); +var parsers = __webpack_require__(617); +var utils = __webpack_require__(605); /** * Customize Snapdragon parser and renderer @@ -71665,17 +71629,17 @@ module.exports = Braces; /***/ }), -/* 624 */ +/* 623 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(625); -var define = __webpack_require__(653); -var Compiler = __webpack_require__(664); -var Parser = __webpack_require__(687); -var utils = __webpack_require__(667); +var Base = __webpack_require__(624); +var define = __webpack_require__(652); +var Compiler = __webpack_require__(663); +var Parser = __webpack_require__(686); +var utils = __webpack_require__(666); var regexCache = {}; var cache = {}; @@ -71846,20 +71810,20 @@ module.exports.Parser = Parser; /***/ }), -/* 625 */ +/* 624 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(112); -var define = __webpack_require__(626); -var CacheBase = __webpack_require__(627); -var Emitter = __webpack_require__(628); -var isObject = __webpack_require__(590); -var merge = __webpack_require__(647); -var pascal = __webpack_require__(650); -var cu = __webpack_require__(651); +var util = __webpack_require__(111); +var define = __webpack_require__(625); +var CacheBase = __webpack_require__(626); +var Emitter = __webpack_require__(627); +var isObject = __webpack_require__(589); +var merge = __webpack_require__(646); +var pascal = __webpack_require__(649); +var cu = __webpack_require__(650); /** * Optionally define a custom `cache` namespace to use. @@ -72288,7 +72252,7 @@ module.exports.namespace = namespace; /***/ }), -/* 626 */ +/* 625 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72301,7 +72265,7 @@ module.exports.namespace = namespace; -var isDescriptor = __webpack_require__(591); +var isDescriptor = __webpack_require__(590); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -72326,21 +72290,21 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 627 */ +/* 626 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(590); -var Emitter = __webpack_require__(628); -var visit = __webpack_require__(629); -var toPath = __webpack_require__(632); -var union = __webpack_require__(634); -var del = __webpack_require__(638); -var get = __webpack_require__(636); -var has = __webpack_require__(643); -var set = __webpack_require__(646); +var isObject = __webpack_require__(589); +var Emitter = __webpack_require__(627); +var visit = __webpack_require__(628); +var toPath = __webpack_require__(631); +var union = __webpack_require__(633); +var del = __webpack_require__(637); +var get = __webpack_require__(635); +var has = __webpack_require__(642); +var set = __webpack_require__(645); /** * Create a `Cache` constructor that when instantiated will @@ -72594,7 +72558,7 @@ module.exports.namespace = namespace; /***/ }), -/* 628 */ +/* 627 */ /***/ (function(module, exports, __webpack_require__) { @@ -72763,7 +72727,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 629 */ +/* 628 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72776,8 +72740,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(630); -var mapVisit = __webpack_require__(631); +var visit = __webpack_require__(629); +var mapVisit = __webpack_require__(630); module.exports = function(collection, method, val) { var result; @@ -72800,7 +72764,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 630 */ +/* 629 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72813,7 +72777,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(590); +var isObject = __webpack_require__(589); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -72840,14 +72804,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 631 */ +/* 630 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(112); -var visit = __webpack_require__(630); +var util = __webpack_require__(111); +var visit = __webpack_require__(629); /** * Map `visit` over an array of objects. @@ -72884,7 +72848,7 @@ function isObject(val) { /***/ }), -/* 632 */ +/* 631 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72897,7 +72861,7 @@ function isObject(val) { -var typeOf = __webpack_require__(633); +var typeOf = __webpack_require__(632); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -72924,10 +72888,10 @@ function filter(arr) { /***/ }), -/* 633 */ +/* 632 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -73046,16 +73010,16 @@ module.exports = function kindOf(val) { /***/ }), -/* 634 */ +/* 633 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(604); -var union = __webpack_require__(635); -var get = __webpack_require__(636); -var set = __webpack_require__(637); +var isObject = __webpack_require__(603); +var union = __webpack_require__(634); +var get = __webpack_require__(635); +var set = __webpack_require__(636); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -73083,7 +73047,7 @@ function arrayify(val) { /***/ }), -/* 635 */ +/* 634 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73119,7 +73083,7 @@ module.exports = function union(init) { /***/ }), -/* 636 */ +/* 635 */ /***/ (function(module, exports) { /*! @@ -73175,7 +73139,7 @@ function toString(val) { /***/ }), -/* 637 */ +/* 636 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73188,10 +73152,10 @@ function toString(val) { -var split = __webpack_require__(607); -var extend = __webpack_require__(603); -var isPlainObject = __webpack_require__(597); -var isObject = __webpack_require__(604); +var split = __webpack_require__(606); +var extend = __webpack_require__(602); +var isPlainObject = __webpack_require__(596); +var isObject = __webpack_require__(603); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -73237,7 +73201,7 @@ function isValidKey(key) { /***/ }), -/* 638 */ +/* 637 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73250,8 +73214,8 @@ function isValidKey(key) { -var isObject = __webpack_require__(590); -var has = __webpack_require__(639); +var isObject = __webpack_require__(589); +var has = __webpack_require__(638); module.exports = function unset(obj, prop) { if (!isObject(obj)) { @@ -73276,7 +73240,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 639 */ +/* 638 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73289,9 +73253,9 @@ module.exports = function unset(obj, prop) { -var isObject = __webpack_require__(640); -var hasValues = __webpack_require__(642); -var get = __webpack_require__(636); +var isObject = __webpack_require__(639); +var hasValues = __webpack_require__(641); +var get = __webpack_require__(635); module.exports = function(obj, prop, noZero) { if (isObject(obj)) { @@ -73302,7 +73266,7 @@ module.exports = function(obj, prop, noZero) { /***/ }), -/* 640 */ +/* 639 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73315,7 +73279,7 @@ module.exports = function(obj, prop, noZero) { -var isArray = __webpack_require__(641); +var isArray = __webpack_require__(640); module.exports = function isObject(val) { return val != null && typeof val === 'object' && isArray(val) === false; @@ -73323,7 +73287,7 @@ module.exports = function isObject(val) { /***/ }), -/* 641 */ +/* 640 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -73334,7 +73298,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 642 */ +/* 641 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73377,7 +73341,7 @@ module.exports = function hasValue(o, noZero) { /***/ }), -/* 643 */ +/* 642 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73390,9 +73354,9 @@ module.exports = function hasValue(o, noZero) { -var isObject = __webpack_require__(590); -var hasValues = __webpack_require__(644); -var get = __webpack_require__(636); +var isObject = __webpack_require__(589); +var hasValues = __webpack_require__(643); +var get = __webpack_require__(635); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -73400,7 +73364,7 @@ module.exports = function(val, prop) { /***/ }), -/* 644 */ +/* 643 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73413,8 +73377,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(645); -var isNumber = __webpack_require__(612); +var typeOf = __webpack_require__(644); +var isNumber = __webpack_require__(611); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -73467,10 +73431,10 @@ module.exports = function hasValue(val) { /***/ }), -/* 645 */ +/* 644 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -73592,7 +73556,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 646 */ +/* 645 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73605,10 +73569,10 @@ module.exports = function kindOf(val) { -var split = __webpack_require__(607); -var extend = __webpack_require__(603); -var isPlainObject = __webpack_require__(597); -var isObject = __webpack_require__(604); +var split = __webpack_require__(606); +var extend = __webpack_require__(602); +var isPlainObject = __webpack_require__(596); +var isObject = __webpack_require__(603); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -73654,14 +73618,14 @@ function isValidKey(key) { /***/ }), -/* 647 */ +/* 646 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(648); -var forIn = __webpack_require__(649); +var isExtendable = __webpack_require__(647); +var forIn = __webpack_require__(648); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -73725,7 +73689,7 @@ module.exports = mixinDeep; /***/ }), -/* 648 */ +/* 647 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73738,7 +73702,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -73746,7 +73710,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 649 */ +/* 648 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -73769,7 +73733,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 650 */ +/* 649 */ /***/ (function(module, exports) { /*! @@ -73796,14 +73760,14 @@ module.exports = pascalcase; /***/ }), -/* 651 */ +/* 650 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var util = __webpack_require__(112); -var utils = __webpack_require__(652); +var util = __webpack_require__(111); +var utils = __webpack_require__(651); /** * Expose class utils @@ -74168,7 +74132,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 652 */ +/* 651 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74182,10 +74146,10 @@ var utils = {}; * Lazily required module dependencies */ -utils.union = __webpack_require__(635); -utils.define = __webpack_require__(653); -utils.isObj = __webpack_require__(590); -utils.staticExtend = __webpack_require__(660); +utils.union = __webpack_require__(634); +utils.define = __webpack_require__(652); +utils.isObj = __webpack_require__(589); +utils.staticExtend = __webpack_require__(659); /** @@ -74196,7 +74160,7 @@ module.exports = utils; /***/ }), -/* 653 */ +/* 652 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74209,7 +74173,7 @@ module.exports = utils; -var isDescriptor = __webpack_require__(654); +var isDescriptor = __webpack_require__(653); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -74234,7 +74198,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 654 */ +/* 653 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74247,9 +74211,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(655); -var isAccessor = __webpack_require__(656); -var isData = __webpack_require__(658); +var typeOf = __webpack_require__(654); +var isAccessor = __webpack_require__(655); +var isData = __webpack_require__(657); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -74263,7 +74227,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 655 */ +/* 654 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -74416,7 +74380,7 @@ function isBuffer(val) { /***/ }), -/* 656 */ +/* 655 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74429,7 +74393,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(657); +var typeOf = __webpack_require__(656); // accessor descriptor properties var accessor = { @@ -74492,10 +74456,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 657 */ +/* 656 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -74614,7 +74578,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 658 */ +/* 657 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74627,7 +74591,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(659); +var typeOf = __webpack_require__(658); // data descriptor properties var data = { @@ -74676,10 +74640,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 659 */ +/* 658 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -74798,7 +74762,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 660 */ +/* 659 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74811,9 +74775,9 @@ module.exports = function kindOf(val) { -var copy = __webpack_require__(661); -var define = __webpack_require__(653); -var util = __webpack_require__(112); +var copy = __webpack_require__(660); +var define = __webpack_require__(652); +var util = __webpack_require__(111); /** * Returns a function for extending the static properties, @@ -74895,15 +74859,15 @@ module.exports = extend; /***/ }), -/* 661 */ +/* 660 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(662); -var copyDescriptor = __webpack_require__(663); -var define = __webpack_require__(653); +var typeOf = __webpack_require__(661); +var copyDescriptor = __webpack_require__(662); +var define = __webpack_require__(652); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -75076,10 +75040,10 @@ module.exports.has = has; /***/ }), -/* 662 */ +/* 661 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(614); +var isBuffer = __webpack_require__(613); var toString = Object.prototype.toString; /** @@ -75198,7 +75162,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 663 */ +/* 662 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75286,16 +75250,16 @@ function isObject(val) { /***/ }), -/* 664 */ +/* 663 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(665); -var define = __webpack_require__(653); -var debug = __webpack_require__(543)('snapdragon:compiler'); -var utils = __webpack_require__(667); +var use = __webpack_require__(664); +var define = __webpack_require__(652); +var debug = __webpack_require__(542)('snapdragon:compiler'); +var utils = __webpack_require__(666); /** * Create a new `Compiler` with the given `options`. @@ -75449,7 +75413,7 @@ Compiler.prototype = { // source map support if (opts.sourcemap) { - var sourcemaps = __webpack_require__(686); + var sourcemaps = __webpack_require__(685); sourcemaps(this); this.mapVisit(this.ast.nodes); this.applySourceMaps(); @@ -75470,7 +75434,7 @@ module.exports = Compiler; /***/ }), -/* 665 */ +/* 664 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75483,7 +75447,7 @@ module.exports = Compiler; -var utils = __webpack_require__(666); +var utils = __webpack_require__(665); module.exports = function base(app, opts) { if (!utils.isObject(app) && typeof app !== 'function') { @@ -75598,7 +75562,7 @@ module.exports = function base(app, opts) { /***/ }), -/* 666 */ +/* 665 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75612,8 +75576,8 @@ var utils = {}; * Lazily required module dependencies */ -utils.define = __webpack_require__(653); -utils.isObject = __webpack_require__(590); +utils.define = __webpack_require__(652); +utils.isObject = __webpack_require__(589); utils.isString = function(val) { @@ -75628,7 +75592,7 @@ module.exports = utils; /***/ }), -/* 667 */ +/* 666 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75638,9 +75602,9 @@ module.exports = utils; * Module dependencies */ -exports.extend = __webpack_require__(603); -exports.SourceMap = __webpack_require__(668); -exports.sourceMapResolve = __webpack_require__(679); +exports.extend = __webpack_require__(602); +exports.SourceMap = __webpack_require__(667); +exports.sourceMapResolve = __webpack_require__(678); /** * Convert backslash in the given string to forward slashes @@ -75683,7 +75647,7 @@ exports.last = function(arr, n) { /***/ }), -/* 668 */ +/* 667 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -75691,13 +75655,13 @@ exports.last = function(arr, n) { * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */ -exports.SourceMapGenerator = __webpack_require__(669).SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__(675).SourceMapConsumer; -exports.SourceNode = __webpack_require__(678).SourceNode; +exports.SourceMapGenerator = __webpack_require__(668).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(674).SourceMapConsumer; +exports.SourceNode = __webpack_require__(677).SourceNode; /***/ }), -/* 669 */ +/* 668 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -75707,10 +75671,10 @@ exports.SourceNode = __webpack_require__(678).SourceNode; * http://opensource.org/licenses/BSD-3-Clause */ -var base64VLQ = __webpack_require__(670); -var util = __webpack_require__(672); -var ArraySet = __webpack_require__(673).ArraySet; -var MappingList = __webpack_require__(674).MappingList; +var base64VLQ = __webpack_require__(669); +var util = __webpack_require__(671); +var ArraySet = __webpack_require__(672).ArraySet; +var MappingList = __webpack_require__(673).MappingList; /** * An instance of the SourceMapGenerator represents a source map which is @@ -76119,7 +76083,7 @@ exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/* 670 */ +/* 669 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76159,7 +76123,7 @@ exports.SourceMapGenerator = SourceMapGenerator; * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var base64 = __webpack_require__(671); +var base64 = __webpack_require__(670); // A single base 64 digit can contain 6 bits of data. For the base 64 variable // length quantities we use in the source map spec, the first bit is the sign, @@ -76265,7 +76229,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { /***/ }), -/* 671 */ +/* 670 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76338,7 +76302,7 @@ exports.decode = function (charCode) { /***/ }), -/* 672 */ +/* 671 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76761,7 +76725,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate /***/ }), -/* 673 */ +/* 672 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76771,7 +76735,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(672); +var util = __webpack_require__(671); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; @@ -76888,7 +76852,7 @@ exports.ArraySet = ArraySet; /***/ }), -/* 674 */ +/* 673 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76898,7 +76862,7 @@ exports.ArraySet = ArraySet; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(672); +var util = __webpack_require__(671); /** * Determine whether mappingB is after mappingA with respect to generated @@ -76973,7 +76937,7 @@ exports.MappingList = MappingList; /***/ }), -/* 675 */ +/* 674 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -76983,11 +76947,11 @@ exports.MappingList = MappingList; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(672); -var binarySearch = __webpack_require__(676); -var ArraySet = __webpack_require__(673).ArraySet; -var base64VLQ = __webpack_require__(670); -var quickSort = __webpack_require__(677).quickSort; +var util = __webpack_require__(671); +var binarySearch = __webpack_require__(675); +var ArraySet = __webpack_require__(672).ArraySet; +var base64VLQ = __webpack_require__(669); +var quickSort = __webpack_require__(676).quickSort; function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; @@ -78061,7 +78025,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; /***/ }), -/* 676 */ +/* 675 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -78178,7 +78142,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { /***/ }), -/* 677 */ +/* 676 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -78298,7 +78262,7 @@ exports.quickSort = function (ary, comparator) { /***/ }), -/* 678 */ +/* 677 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -78308,8 +78272,8 @@ exports.quickSort = function (ary, comparator) { * http://opensource.org/licenses/BSD-3-Clause */ -var SourceMapGenerator = __webpack_require__(669).SourceMapGenerator; -var util = __webpack_require__(672); +var SourceMapGenerator = __webpack_require__(668).SourceMapGenerator; +var util = __webpack_require__(671); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). @@ -78717,17 +78681,17 @@ exports.SourceNode = SourceNode; /***/ }), -/* 679 */ +/* 678 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = __webpack_require__(680) -var resolveUrl = __webpack_require__(681) -var decodeUriComponent = __webpack_require__(682) -var urix = __webpack_require__(684) -var atob = __webpack_require__(685) +var sourceMappingURL = __webpack_require__(679) +var resolveUrl = __webpack_require__(680) +var decodeUriComponent = __webpack_require__(681) +var urix = __webpack_require__(683) +var atob = __webpack_require__(684) @@ -79025,7 +78989,7 @@ module.exports = { /***/ }), -/* 680 */ +/* 679 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell @@ -79088,13 +79052,13 @@ void (function(root, factory) { /***/ }), -/* 681 */ +/* 680 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var url = __webpack_require__(283) +var url = __webpack_require__(282) function resolveUrl(/* ...urls */) { return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { @@ -79106,13 +79070,13 @@ module.exports = resolveUrl /***/ }), -/* 682 */ +/* 681 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var decodeUriComponent = __webpack_require__(683) +var decodeUriComponent = __webpack_require__(682) function customDecodeUriComponent(string) { // `decodeUriComponent` turns `+` into ` `, but that's not wanted. @@ -79123,7 +79087,7 @@ module.exports = customDecodeUriComponent /***/ }), -/* 683 */ +/* 682 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79224,7 +79188,7 @@ module.exports = function (encodedURI) { /***/ }), -/* 684 */ +/* 683 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -79247,7 +79211,7 @@ module.exports = urix /***/ }), -/* 685 */ +/* 684 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79261,16 +79225,16 @@ module.exports = atob.atob = atob; /***/ }), -/* 686 */ +/* 685 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var fs = __webpack_require__(134); +var fs = __webpack_require__(133); var path = __webpack_require__(4); -var define = __webpack_require__(653); -var utils = __webpack_require__(667); +var define = __webpack_require__(652); +var utils = __webpack_require__(666); /** * Expose `mixin()`. @@ -79413,19 +79377,19 @@ exports.comment = function(node) { /***/ }), -/* 687 */ +/* 686 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(665); -var util = __webpack_require__(112); -var Cache = __webpack_require__(688); -var define = __webpack_require__(653); -var debug = __webpack_require__(543)('snapdragon:parser'); -var Position = __webpack_require__(689); -var utils = __webpack_require__(667); +var use = __webpack_require__(664); +var util = __webpack_require__(111); +var Cache = __webpack_require__(687); +var define = __webpack_require__(652); +var debug = __webpack_require__(542)('snapdragon:parser'); +var Position = __webpack_require__(688); +var utils = __webpack_require__(666); /** * Create a new `Parser` with the given `input` and `options`. @@ -79953,7 +79917,7 @@ module.exports = Parser; /***/ }), -/* 688 */ +/* 687 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80060,13 +80024,13 @@ MapCache.prototype.del = function mapDelete(key) { /***/ }), -/* 689 */ +/* 688 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(653); +var define = __webpack_require__(652); /** * Store position for a node @@ -80081,14 +80045,14 @@ module.exports = function Position(start, parser) { /***/ }), -/* 690 */ +/* 689 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(691); -var assignSymbols = __webpack_require__(598); +var isExtendable = __webpack_require__(690); +var assignSymbols = __webpack_require__(597); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -80148,7 +80112,7 @@ function isEnum(obj, key) { /***/ }), -/* 691 */ +/* 690 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80161,7 +80125,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -80169,14 +80133,14 @@ module.exports = function isExtendable(val) { /***/ }), -/* 692 */ +/* 691 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var nanomatch = __webpack_require__(693); -var extglob = __webpack_require__(707); +var nanomatch = __webpack_require__(692); +var extglob = __webpack_require__(706); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -80253,7 +80217,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 693 */ +/* 692 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80263,18 +80227,18 @@ function escapeExtglobs(compiler) { * Module dependencies */ -var util = __webpack_require__(112); -var toRegex = __webpack_require__(582); -var extend = __webpack_require__(694); +var util = __webpack_require__(111); +var toRegex = __webpack_require__(581); +var extend = __webpack_require__(693); /** * Local dependencies */ -var compilers = __webpack_require__(696); -var parsers = __webpack_require__(697); -var cache = __webpack_require__(700); -var utils = __webpack_require__(702); +var compilers = __webpack_require__(695); +var parsers = __webpack_require__(696); +var cache = __webpack_require__(699); +var utils = __webpack_require__(701); var MAX_LENGTH = 1024 * 64; /** @@ -81098,14 +81062,14 @@ module.exports = nanomatch; /***/ }), -/* 694 */ +/* 693 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(695); -var assignSymbols = __webpack_require__(598); +var isExtendable = __webpack_require__(694); +var assignSymbols = __webpack_require__(597); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -81165,7 +81129,7 @@ function isEnum(obj, key) { /***/ }), -/* 695 */ +/* 694 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81178,7 +81142,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(597); +var isPlainObject = __webpack_require__(596); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -81186,7 +81150,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 696 */ +/* 695 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81532,15 +81496,15 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 697 */ +/* 696 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regexNot = __webpack_require__(599); -var toRegex = __webpack_require__(582); -var isOdd = __webpack_require__(698); +var regexNot = __webpack_require__(598); +var toRegex = __webpack_require__(581); +var isOdd = __webpack_require__(697); /** * Characters to use in negation regex (we want to "not" match @@ -81926,7 +81890,7 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 698 */ +/* 697 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81939,7 +81903,7 @@ module.exports.not = NOT_REGEX; -var isNumber = __webpack_require__(699); +var isNumber = __webpack_require__(698); module.exports = function isOdd(i) { if (!isNumber(i)) { @@ -81953,7 +81917,7 @@ module.exports = function isOdd(i) { /***/ }), -/* 699 */ +/* 698 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81981,14 +81945,14 @@ module.exports = function isNumber(num) { /***/ }), -/* 700 */ +/* 699 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(701))(); +module.exports = new (__webpack_require__(700))(); /***/ }), -/* 701 */ +/* 700 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82001,7 +81965,7 @@ module.exports = new (__webpack_require__(701))(); -var MapCache = __webpack_require__(688); +var MapCache = __webpack_require__(687); /** * Create a new `FragmentCache` with an optional object to use for `caches`. @@ -82123,7 +82087,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 702 */ +/* 701 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82136,14 +82100,14 @@ var path = __webpack_require__(4); * Module dependencies */ -var isWindows = __webpack_require__(703)(); -var Snapdragon = __webpack_require__(624); -utils.define = __webpack_require__(704); -utils.diff = __webpack_require__(705); -utils.extend = __webpack_require__(694); -utils.pick = __webpack_require__(706); -utils.typeOf = __webpack_require__(592); -utils.unique = __webpack_require__(602); +var isWindows = __webpack_require__(702)(); +var Snapdragon = __webpack_require__(623); +utils.define = __webpack_require__(703); +utils.diff = __webpack_require__(704); +utils.extend = __webpack_require__(693); +utils.pick = __webpack_require__(705); +utils.typeOf = __webpack_require__(591); +utils.unique = __webpack_require__(601); /** * Returns true if the given value is effectively an empty string @@ -82509,7 +82473,7 @@ utils.unixify = function(options) { /***/ }), -/* 703 */ +/* 702 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -82537,7 +82501,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 704 */ +/* 703 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82550,8 +82514,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ -var isobject = __webpack_require__(590); -var isDescriptor = __webpack_require__(591); +var isobject = __webpack_require__(589); +var isDescriptor = __webpack_require__(590); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -82582,7 +82546,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 705 */ +/* 704 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82636,7 +82600,7 @@ function diffArray(one, two) { /***/ }), -/* 706 */ +/* 705 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82649,7 +82613,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(590); +var isObject = __webpack_require__(589); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -82678,7 +82642,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 707 */ +/* 706 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82688,18 +82652,18 @@ module.exports = function pick(obj, keys) { * Module dependencies */ -var extend = __webpack_require__(603); -var unique = __webpack_require__(602); -var toRegex = __webpack_require__(582); +var extend = __webpack_require__(602); +var unique = __webpack_require__(601); +var toRegex = __webpack_require__(581); /** * Local dependencies */ -var compilers = __webpack_require__(708); -var parsers = __webpack_require__(714); -var Extglob = __webpack_require__(717); -var utils = __webpack_require__(716); +var compilers = __webpack_require__(707); +var parsers = __webpack_require__(713); +var Extglob = __webpack_require__(716); +var utils = __webpack_require__(715); var MAX_LENGTH = 1024 * 64; /** @@ -83016,13 +82980,13 @@ module.exports = extglob; /***/ }), -/* 708 */ +/* 707 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(709); +var brackets = __webpack_require__(708); /** * Extglob compilers @@ -83192,7 +83156,7 @@ module.exports = function(extglob) { /***/ }), -/* 709 */ +/* 708 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83202,17 +83166,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(710); -var parsers = __webpack_require__(712); +var compilers = __webpack_require__(709); +var parsers = __webpack_require__(711); /** * Module dependencies */ -var debug = __webpack_require__(543)('expand-brackets'); -var extend = __webpack_require__(603); -var Snapdragon = __webpack_require__(624); -var toRegex = __webpack_require__(582); +var debug = __webpack_require__(542)('expand-brackets'); +var extend = __webpack_require__(602); +var Snapdragon = __webpack_require__(623); +var toRegex = __webpack_require__(581); /** * Parses the given POSIX character class `pattern` and returns a @@ -83410,13 +83374,13 @@ module.exports = brackets; /***/ }), -/* 710 */ +/* 709 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(711); +var posix = __webpack_require__(710); module.exports = function(brackets) { brackets.compiler @@ -83504,7 +83468,7 @@ module.exports = function(brackets) { /***/ }), -/* 711 */ +/* 710 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83533,14 +83497,14 @@ module.exports = { /***/ }), -/* 712 */ +/* 711 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(713); -var define = __webpack_require__(653); +var utils = __webpack_require__(712); +var define = __webpack_require__(652); /** * Text regex @@ -83759,14 +83723,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 713 */ +/* 712 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(582); -var regexNot = __webpack_require__(599); +var toRegex = __webpack_require__(581); +var regexNot = __webpack_require__(598); var cached; /** @@ -83800,15 +83764,15 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 714 */ +/* 713 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(709); -var define = __webpack_require__(715); -var utils = __webpack_require__(716); +var brackets = __webpack_require__(708); +var define = __webpack_require__(714); +var utils = __webpack_require__(715); /** * Characters to use in text regex (we want to "not" match @@ -83963,7 +83927,7 @@ module.exports = parsers; /***/ }), -/* 715 */ +/* 714 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83976,7 +83940,7 @@ module.exports = parsers; -var isDescriptor = __webpack_require__(591); +var isDescriptor = __webpack_require__(590); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -84001,14 +83965,14 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 716 */ +/* 715 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regex = __webpack_require__(599); -var Cache = __webpack_require__(701); +var regex = __webpack_require__(598); +var Cache = __webpack_require__(700); /** * Utils @@ -84077,7 +84041,7 @@ utils.createRegex = function(str) { /***/ }), -/* 717 */ +/* 716 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84087,16 +84051,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(624); -var define = __webpack_require__(715); -var extend = __webpack_require__(603); +var Snapdragon = __webpack_require__(623); +var define = __webpack_require__(714); +var extend = __webpack_require__(602); /** * Local dependencies */ -var compilers = __webpack_require__(708); -var parsers = __webpack_require__(714); +var compilers = __webpack_require__(707); +var parsers = __webpack_require__(713); /** * Customize Snapdragon parser and renderer @@ -84162,16 +84126,16 @@ module.exports = Extglob; /***/ }), -/* 718 */ +/* 717 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(707); -var nanomatch = __webpack_require__(693); -var regexNot = __webpack_require__(599); -var toRegex = __webpack_require__(582); +var extglob = __webpack_require__(706); +var nanomatch = __webpack_require__(692); +var regexNot = __webpack_require__(598); +var toRegex = __webpack_require__(581); var not; /** @@ -84252,14 +84216,14 @@ function textRegex(pattern) { /***/ }), -/* 719 */ +/* 718 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(701))(); +module.exports = new (__webpack_require__(700))(); /***/ }), -/* 720 */ +/* 719 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84272,13 +84236,13 @@ var path = __webpack_require__(4); * Module dependencies */ -var Snapdragon = __webpack_require__(624); -utils.define = __webpack_require__(721); -utils.diff = __webpack_require__(705); -utils.extend = __webpack_require__(690); -utils.pick = __webpack_require__(706); -utils.typeOf = __webpack_require__(592); -utils.unique = __webpack_require__(602); +var Snapdragon = __webpack_require__(623); +utils.define = __webpack_require__(720); +utils.diff = __webpack_require__(704); +utils.extend = __webpack_require__(689); +utils.pick = __webpack_require__(705); +utils.typeOf = __webpack_require__(591); +utils.unique = __webpack_require__(601); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -84575,7 +84539,7 @@ utils.unixify = function(options) { /***/ }), -/* 721 */ +/* 720 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84588,8 +84552,8 @@ utils.unixify = function(options) { -var isobject = __webpack_require__(590); -var isDescriptor = __webpack_require__(591); +var isobject = __webpack_require__(589); +var isDescriptor = __webpack_require__(590); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -84620,7 +84584,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 722 */ +/* 721 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84639,9 +84603,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(723); -var reader_1 = __webpack_require__(736); -var fs_stream_1 = __webpack_require__(740); +var readdir = __webpack_require__(722); +var reader_1 = __webpack_require__(735); +var fs_stream_1 = __webpack_require__(739); var ReaderAsync = /** @class */ (function (_super) { __extends(ReaderAsync, _super); function ReaderAsync() { @@ -84702,15 +84666,15 @@ exports.default = ReaderAsync; /***/ }), -/* 723 */ +/* 722 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(724); -const readdirAsync = __webpack_require__(732); -const readdirStream = __webpack_require__(735); +const readdirSync = __webpack_require__(723); +const readdirAsync = __webpack_require__(731); +const readdirStream = __webpack_require__(734); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -84794,7 +84758,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 724 */ +/* 723 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -84802,11 +84766,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(725); +const DirectoryReader = __webpack_require__(724); let syncFacade = { - fs: __webpack_require__(730), - forEach: __webpack_require__(731), + fs: __webpack_require__(729), + forEach: __webpack_require__(730), sync: true }; @@ -84835,18 +84799,18 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 725 */ +/* 724 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const Readable = __webpack_require__(138).Readable; -const EventEmitter = __webpack_require__(156).EventEmitter; +const Readable = __webpack_require__(137).Readable; +const EventEmitter = __webpack_require__(155).EventEmitter; const path = __webpack_require__(4); -const normalizeOptions = __webpack_require__(726); -const stat = __webpack_require__(728); -const call = __webpack_require__(729); +const normalizeOptions = __webpack_require__(725); +const stat = __webpack_require__(727); +const call = __webpack_require__(728); /** * Asynchronously reads the contents of a directory and streams the results @@ -85222,14 +85186,14 @@ module.exports = DirectoryReader; /***/ }), -/* 726 */ +/* 725 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const globToRegExp = __webpack_require__(727); +const globToRegExp = __webpack_require__(726); module.exports = normalizeOptions; @@ -85406,7 +85370,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 727 */ +/* 726 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -85543,13 +85507,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 728 */ +/* 727 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(729); +const call = __webpack_require__(728); module.exports = stat; @@ -85624,7 +85588,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 729 */ +/* 728 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85685,14 +85649,14 @@ function callOnce (fn) { /***/ }), -/* 730 */ +/* 729 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const call = __webpack_require__(729); +const fs = __webpack_require__(133); +const call = __webpack_require__(728); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -85756,7 +85720,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 731 */ +/* 730 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85785,7 +85749,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 732 */ +/* 731 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85793,12 +85757,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(733); -const DirectoryReader = __webpack_require__(725); +const maybe = __webpack_require__(732); +const DirectoryReader = __webpack_require__(724); let asyncFacade = { - fs: __webpack_require__(134), - forEach: __webpack_require__(734), + fs: __webpack_require__(133), + forEach: __webpack_require__(733), async: true }; @@ -85840,7 +85804,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 733 */ +/* 732 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85867,7 +85831,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 734 */ +/* 733 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85903,7 +85867,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 735 */ +/* 734 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -85911,11 +85875,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(725); +const DirectoryReader = __webpack_require__(724); let streamFacade = { - fs: __webpack_require__(134), - forEach: __webpack_require__(734), + fs: __webpack_require__(133), + forEach: __webpack_require__(733), async: true }; @@ -85935,16 +85899,16 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 736 */ +/* 735 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(4); -var deep_1 = __webpack_require__(737); -var entry_1 = __webpack_require__(739); -var pathUtil = __webpack_require__(738); +var deep_1 = __webpack_require__(736); +var entry_1 = __webpack_require__(738); +var pathUtil = __webpack_require__(737); var Reader = /** @class */ (function () { function Reader(options) { this.options = options; @@ -86010,14 +85974,14 @@ exports.default = Reader; /***/ }), -/* 737 */ +/* 736 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(738); -var patternUtils = __webpack_require__(576); +var pathUtils = __webpack_require__(737); +var patternUtils = __webpack_require__(575); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { this.options = options; @@ -86100,7 +86064,7 @@ exports.default = DeepFilter; /***/ }), -/* 738 */ +/* 737 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86131,14 +86095,14 @@ exports.makeAbsolute = makeAbsolute; /***/ }), -/* 739 */ +/* 738 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(738); -var patternUtils = __webpack_require__(576); +var pathUtils = __webpack_require__(737); +var patternUtils = __webpack_require__(575); var EntryFilter = /** @class */ (function () { function EntryFilter(options, micromatchOptions) { this.options = options; @@ -86223,7 +86187,7 @@ exports.default = EntryFilter; /***/ }), -/* 740 */ +/* 739 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86242,9 +86206,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(138); -var fsStat = __webpack_require__(741); -var fs_1 = __webpack_require__(745); +var stream = __webpack_require__(137); +var fsStat = __webpack_require__(740); +var fs_1 = __webpack_require__(744); var FileSystemStream = /** @class */ (function (_super) { __extends(FileSystemStream, _super); function FileSystemStream() { @@ -86294,14 +86258,14 @@ exports.default = FileSystemStream; /***/ }), -/* 741 */ +/* 740 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__(742); -const statProvider = __webpack_require__(744); +const optionsManager = __webpack_require__(741); +const statProvider = __webpack_require__(743); /** * Asynchronous API. */ @@ -86332,13 +86296,13 @@ exports.statSync = statSync; /***/ }), -/* 742 */ +/* 741 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__(743); +const fsAdapter = __webpack_require__(742); function prepare(opts) { const options = Object.assign({ fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), @@ -86351,13 +86315,13 @@ exports.prepare = prepare; /***/ }), -/* 743 */ +/* 742 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); exports.FILE_SYSTEM_ADAPTER = { lstat: fs.lstat, stat: fs.stat, @@ -86374,7 +86338,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter; /***/ }), -/* 744 */ +/* 743 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86426,7 +86390,7 @@ exports.isFollowedSymlink = isFollowedSymlink; /***/ }), -/* 745 */ +/* 744 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86457,7 +86421,7 @@ exports.default = FileSystem; /***/ }), -/* 746 */ +/* 745 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86476,10 +86440,10 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(138); -var readdir = __webpack_require__(723); -var reader_1 = __webpack_require__(736); -var fs_stream_1 = __webpack_require__(740); +var stream = __webpack_require__(137); +var readdir = __webpack_require__(722); +var reader_1 = __webpack_require__(735); +var fs_stream_1 = __webpack_require__(739); var TransformStream = /** @class */ (function (_super) { __extends(TransformStream, _super); function TransformStream(reader) { @@ -86547,7 +86511,7 @@ exports.default = ReaderStream; /***/ }), -/* 747 */ +/* 746 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86566,9 +86530,9 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(723); -var reader_1 = __webpack_require__(736); -var fs_sync_1 = __webpack_require__(748); +var readdir = __webpack_require__(722); +var reader_1 = __webpack_require__(735); +var fs_sync_1 = __webpack_require__(747); var ReaderSync = /** @class */ (function (_super) { __extends(ReaderSync, _super); function ReaderSync() { @@ -86628,7 +86592,7 @@ exports.default = ReaderSync; /***/ }), -/* 748 */ +/* 747 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86647,8 +86611,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__(741); -var fs_1 = __webpack_require__(745); +var fsStat = __webpack_require__(740); +var fs_1 = __webpack_require__(744); var FileSystemSync = /** @class */ (function (_super) { __extends(FileSystemSync, _super); function FileSystemSync() { @@ -86694,7 +86658,7 @@ exports.default = FileSystemSync; /***/ }), -/* 749 */ +/* 748 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86710,13 +86674,13 @@ exports.flatten = flatten; /***/ }), -/* 750 */ +/* 749 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__(146); +var merge2 = __webpack_require__(145); /** * Merge multiple streams and propagate their errors into one stream in parallel. */ @@ -86731,13 +86695,13 @@ exports.merge = merge; /***/ }), -/* 751 */ +/* 750 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(752); +const pathType = __webpack_require__(751); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -86803,13 +86767,13 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 752 */ +/* 751 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const pify = __webpack_require__(753); +const fs = __webpack_require__(133); +const pify = __webpack_require__(752); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -86852,7 +86816,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 753 */ +/* 752 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -86943,17 +86907,17 @@ module.exports = (obj, opts) => { /***/ }), -/* 754 */ +/* 753 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(572); -const gitIgnore = __webpack_require__(755); -const pify = __webpack_require__(756); -const slash = __webpack_require__(757); +const fastGlob = __webpack_require__(571); +const gitIgnore = __webpack_require__(754); +const pify = __webpack_require__(755); +const slash = __webpack_require__(756); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -87051,7 +87015,7 @@ module.exports.sync = options => { /***/ }), -/* 755 */ +/* 754 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -87520,7 +87484,7 @@ module.exports = options => new IgnoreBase(options) /***/ }), -/* 756 */ +/* 755 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87595,7 +87559,7 @@ module.exports = (input, options) => { /***/ }), -/* 757 */ +/* 756 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87613,7 +87577,7 @@ module.exports = input => { /***/ }), -/* 758 */ +/* 757 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -87626,7 +87590,7 @@ module.exports = input => { -var isGlob = __webpack_require__(759); +var isGlob = __webpack_require__(758); module.exports = function hasGlob(val) { if (val == null) return false; @@ -87646,7 +87610,7 @@ module.exports = function hasGlob(val) { /***/ }), -/* 759 */ +/* 758 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -87656,7 +87620,7 @@ module.exports = function hasGlob(val) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(173); +var isExtglob = __webpack_require__(172); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -87677,17 +87641,17 @@ module.exports = function isGlob(str) { /***/ }), -/* 760 */ +/* 759 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const {constants: fsConstants} = __webpack_require__(134); -const pEvent = __webpack_require__(761); -const CpFileError = __webpack_require__(764); -const fs = __webpack_require__(766); -const ProgressEmitter = __webpack_require__(769); +const {constants: fsConstants} = __webpack_require__(133); +const pEvent = __webpack_require__(760); +const CpFileError = __webpack_require__(763); +const fs = __webpack_require__(765); +const ProgressEmitter = __webpack_require__(768); const cpFileAsync = async (source, destination, options, progressEmitter) => { let readError; @@ -87801,12 +87765,12 @@ module.exports.sync = (source, destination, options) => { /***/ }), -/* 761 */ +/* 760 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pTimeout = __webpack_require__(762); +const pTimeout = __webpack_require__(761); const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; @@ -88097,12 +88061,12 @@ module.exports.iterator = (emitter, event, options) => { /***/ }), -/* 762 */ +/* 761 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pFinally = __webpack_require__(763); +const pFinally = __webpack_require__(762); class TimeoutError extends Error { constructor(message) { @@ -88148,7 +88112,7 @@ module.exports.TimeoutError = TimeoutError; /***/ }), -/* 763 */ +/* 762 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -88170,12 +88134,12 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 764 */ +/* 763 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(765); +const NestedError = __webpack_require__(764); class CpFileError extends NestedError { constructor(message, nested) { @@ -88189,10 +88153,10 @@ module.exports = CpFileError; /***/ }), -/* 765 */ +/* 764 */ /***/ (function(module, exports, __webpack_require__) { -var inherits = __webpack_require__(112).inherits; +var inherits = __webpack_require__(111).inherits; var NestedError = function (message, nested) { this.nested = nested; @@ -88245,16 +88209,16 @@ module.exports = NestedError; /***/ }), -/* 766 */ +/* 765 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(133); -const makeDir = __webpack_require__(767); -const pEvent = __webpack_require__(761); -const CpFileError = __webpack_require__(764); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(132); +const makeDir = __webpack_require__(766); +const pEvent = __webpack_require__(760); +const CpFileError = __webpack_require__(763); const stat = promisify(fs.stat); const lstat = promisify(fs.lstat); @@ -88351,15 +88315,15 @@ exports.copyFileSync = (source, destination, flags) => { /***/ }), -/* 767 */ +/* 766 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const {promisify} = __webpack_require__(112); -const semver = __webpack_require__(768); +const {promisify} = __webpack_require__(111); +const semver = __webpack_require__(767); const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); @@ -88514,7 +88478,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 768 */ +/* 767 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -90116,12 +90080,12 @@ function coerce (version, options) { /***/ }), -/* 769 */ +/* 768 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(156); +const EventEmitter = __webpack_require__(155); const written = new WeakMap(); @@ -90157,7 +90121,7 @@ module.exports = ProgressEmitter; /***/ }), -/* 770 */ +/* 769 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90203,12 +90167,12 @@ exports.default = module.exports; /***/ }), -/* 771 */ +/* 770 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pMap = __webpack_require__(772); +const pMap = __webpack_require__(771); const pFilter = async (iterable, filterer, options) => { const values = await pMap( @@ -90225,7 +90189,7 @@ module.exports.default = pFilter; /***/ }), -/* 772 */ +/* 771 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90304,12 +90268,12 @@ module.exports.default = pMap; /***/ }), -/* 773 */ +/* 772 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(765); +const NestedError = __webpack_require__(764); class CpyError extends NestedError { constructor(message, nested) { @@ -90323,18 +90287,18 @@ module.exports = CpyError; /***/ }), -/* 774 */ +/* 773 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__(134); -const arrayUnion = __webpack_require__(145); -const merge2 = __webpack_require__(146); -const fastGlob = __webpack_require__(775); -const dirGlob = __webpack_require__(232); -const gitignore = __webpack_require__(810); -const {FilterStream, UniqueStream} = __webpack_require__(811); +const fs = __webpack_require__(133); +const arrayUnion = __webpack_require__(144); +const merge2 = __webpack_require__(145); +const fastGlob = __webpack_require__(774); +const dirGlob = __webpack_require__(231); +const gitignore = __webpack_require__(809); +const {FilterStream, UniqueStream} = __webpack_require__(810); const DEFAULT_FILTER = () => false; @@ -90511,17 +90475,17 @@ module.exports.gitignore = gitignore; /***/ }), -/* 775 */ +/* 774 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(776); -const async_1 = __webpack_require__(796); -const stream_1 = __webpack_require__(806); -const sync_1 = __webpack_require__(807); -const settings_1 = __webpack_require__(809); -const utils = __webpack_require__(777); +const taskManager = __webpack_require__(775); +const async_1 = __webpack_require__(795); +const stream_1 = __webpack_require__(805); +const sync_1 = __webpack_require__(806); +const settings_1 = __webpack_require__(808); +const utils = __webpack_require__(776); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -90585,14 +90549,14 @@ module.exports = FastGlob; /***/ }), -/* 776 */ +/* 775 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__(777); +const utils = __webpack_require__(776); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -90657,31 +90621,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 777 */ +/* 776 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__(778); +const array = __webpack_require__(777); exports.array = array; -const errno = __webpack_require__(779); +const errno = __webpack_require__(778); exports.errno = errno; -const fs = __webpack_require__(780); +const fs = __webpack_require__(779); exports.fs = fs; -const path = __webpack_require__(781); +const path = __webpack_require__(780); exports.path = path; -const pattern = __webpack_require__(782); +const pattern = __webpack_require__(781); exports.pattern = pattern; -const stream = __webpack_require__(794); +const stream = __webpack_require__(793); exports.stream = stream; -const string = __webpack_require__(795); +const string = __webpack_require__(794); exports.string = string; /***/ }), -/* 778 */ +/* 777 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90710,7 +90674,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 779 */ +/* 778 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90724,7 +90688,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 780 */ +/* 779 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90750,7 +90714,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 781 */ +/* 780 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90790,7 +90754,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 782 */ +/* 781 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -90798,9 +90762,9 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __webpack_require__(4); -const globParent = __webpack_require__(171); -const micromatch = __webpack_require__(783); -const picomatch = __webpack_require__(185); +const globParent = __webpack_require__(170); +const micromatch = __webpack_require__(782); +const picomatch = __webpack_require__(184); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -90929,16 +90893,16 @@ exports.matchAny = matchAny; /***/ }), -/* 783 */ +/* 782 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const util = __webpack_require__(112); -const braces = __webpack_require__(784); -const picomatch = __webpack_require__(185); -const utils = __webpack_require__(188); +const util = __webpack_require__(111); +const braces = __webpack_require__(783); +const picomatch = __webpack_require__(184); +const utils = __webpack_require__(187); const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); /** @@ -91403,16 +91367,16 @@ module.exports = micromatch; /***/ }), -/* 784 */ +/* 783 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(785); -const compile = __webpack_require__(787); -const expand = __webpack_require__(791); -const parse = __webpack_require__(792); +const stringify = __webpack_require__(784); +const compile = __webpack_require__(786); +const expand = __webpack_require__(790); +const parse = __webpack_require__(791); /** * Expand the given pattern or create a regex-compatible string. @@ -91580,13 +91544,13 @@ module.exports = braces; /***/ }), -/* 785 */ +/* 784 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(786); +const utils = __webpack_require__(785); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -91619,7 +91583,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 786 */ +/* 785 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -91738,14 +91702,14 @@ exports.flatten = (...args) => { /***/ }), -/* 787 */ +/* 786 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(788); -const utils = __webpack_require__(786); +const fill = __webpack_require__(787); +const utils = __webpack_require__(785); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -91802,7 +91766,7 @@ module.exports = compile; /***/ }), -/* 788 */ +/* 787 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -91815,8 +91779,8 @@ module.exports = compile; -const util = __webpack_require__(112); -const toRegexRange = __webpack_require__(789); +const util = __webpack_require__(111); +const toRegexRange = __webpack_require__(788); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -92058,7 +92022,7 @@ module.exports = fill; /***/ }), -/* 789 */ +/* 788 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92071,7 +92035,7 @@ module.exports = fill; -const isNumber = __webpack_require__(790); +const isNumber = __webpack_require__(789); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -92353,7 +92317,7 @@ module.exports = toRegexRange; /***/ }), -/* 790 */ +/* 789 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92378,15 +92342,15 @@ module.exports = function(num) { /***/ }), -/* 791 */ +/* 790 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(788); -const stringify = __webpack_require__(785); -const utils = __webpack_require__(786); +const fill = __webpack_require__(787); +const stringify = __webpack_require__(784); +const utils = __webpack_require__(785); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -92498,13 +92462,13 @@ module.exports = expand; /***/ }), -/* 792 */ +/* 791 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(785); +const stringify = __webpack_require__(784); /** * Constants @@ -92526,7 +92490,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(793); +} = __webpack_require__(792); /** * parse @@ -92838,7 +92802,7 @@ module.exports = parse; /***/ }), -/* 793 */ +/* 792 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92902,14 +92866,14 @@ module.exports = { /***/ }), -/* 794 */ +/* 793 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = void 0; -const merge2 = __webpack_require__(146); +const merge2 = __webpack_require__(145); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -92926,7 +92890,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 795 */ +/* 794 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -92944,14 +92908,14 @@ exports.isEmpty = isEmpty; /***/ }), -/* 796 */ +/* 795 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(797); -const provider_1 = __webpack_require__(799); +const stream_1 = __webpack_require__(796); +const provider_1 = __webpack_require__(798); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -92979,16 +92943,16 @@ exports.default = ProviderAsync; /***/ }), -/* 797 */ +/* 796 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(138); -const fsStat = __webpack_require__(195); -const fsWalk = __webpack_require__(200); -const reader_1 = __webpack_require__(798); +const stream_1 = __webpack_require__(137); +const fsStat = __webpack_require__(194); +const fsWalk = __webpack_require__(199); +const reader_1 = __webpack_require__(797); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -93041,15 +93005,15 @@ exports.default = ReaderStream; /***/ }), -/* 798 */ +/* 797 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(195); -const utils = __webpack_require__(777); +const fsStat = __webpack_require__(194); +const utils = __webpack_require__(776); class Reader { constructor(_settings) { this._settings = _settings; @@ -93081,17 +93045,17 @@ exports.default = Reader; /***/ }), -/* 799 */ +/* 798 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(800); -const entry_1 = __webpack_require__(803); -const error_1 = __webpack_require__(804); -const entry_2 = __webpack_require__(805); +const deep_1 = __webpack_require__(799); +const entry_1 = __webpack_require__(802); +const error_1 = __webpack_require__(803); +const entry_2 = __webpack_require__(804); class Provider { constructor(_settings) { this._settings = _settings; @@ -93136,14 +93100,14 @@ exports.default = Provider; /***/ }), -/* 800 */ +/* 799 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(777); -const partial_1 = __webpack_require__(801); +const utils = __webpack_require__(776); +const partial_1 = __webpack_require__(800); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -93205,13 +93169,13 @@ exports.default = DeepFilter; /***/ }), -/* 801 */ +/* 800 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(802); +const matcher_1 = __webpack_require__(801); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -93250,13 +93214,13 @@ exports.default = PartialMatcher; /***/ }), -/* 802 */ +/* 801 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(777); +const utils = __webpack_require__(776); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -93307,13 +93271,13 @@ exports.default = Matcher; /***/ }), -/* 803 */ +/* 802 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(777); +const utils = __webpack_require__(776); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -93370,13 +93334,13 @@ exports.default = EntryFilter; /***/ }), -/* 804 */ +/* 803 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(777); +const utils = __webpack_require__(776); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -93392,13 +93356,13 @@ exports.default = ErrorFilter; /***/ }), -/* 805 */ +/* 804 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(777); +const utils = __webpack_require__(776); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -93425,15 +93389,15 @@ exports.default = EntryTransformer; /***/ }), -/* 806 */ +/* 805 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(138); -const stream_2 = __webpack_require__(797); -const provider_1 = __webpack_require__(799); +const stream_1 = __webpack_require__(137); +const stream_2 = __webpack_require__(796); +const provider_1 = __webpack_require__(798); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -93463,14 +93427,14 @@ exports.default = ProviderStream; /***/ }), -/* 807 */ +/* 806 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(808); -const provider_1 = __webpack_require__(799); +const sync_1 = __webpack_require__(807); +const provider_1 = __webpack_require__(798); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -93493,15 +93457,15 @@ exports.default = ProviderSync; /***/ }), -/* 808 */ +/* 807 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(195); -const fsWalk = __webpack_require__(200); -const reader_1 = __webpack_require__(798); +const fsStat = __webpack_require__(194); +const fsWalk = __webpack_require__(199); +const reader_1 = __webpack_require__(797); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -93543,15 +93507,15 @@ exports.default = ReaderSync; /***/ }), -/* 809 */ +/* 808 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__(134); -const os = __webpack_require__(121); +const fs = __webpack_require__(133); +const os = __webpack_require__(120); /** * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 @@ -93607,17 +93571,17 @@ exports.default = Settings; /***/ }), -/* 810 */ +/* 809 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(134); +const {promisify} = __webpack_require__(111); +const fs = __webpack_require__(133); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(775); -const gitIgnore = __webpack_require__(235); -const slash = __webpack_require__(236); +const fastGlob = __webpack_require__(774); +const gitIgnore = __webpack_require__(234); +const slash = __webpack_require__(235); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -93734,12 +93698,12 @@ module.exports.sync = options => { /***/ }), -/* 811 */ +/* 810 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {Transform} = __webpack_require__(138); +const {Transform} = __webpack_require__(137); class ObjectTransform extends Transform { constructor() { @@ -93787,7 +93751,7 @@ module.exports = { /***/ }), -/* 812 */ +/* 811 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -93795,17 +93759,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return buildNonBazelProductionProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProductionProjects", function() { return getProductionProjects; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProject", function() { return buildProject; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(565); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(564); /* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142); /* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(562); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(131); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(246); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(251); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(248); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(561); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(245); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(250); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(247); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License diff --git a/packages/kbn-server-http-tools/tsconfig.json b/packages/kbn-server-http-tools/tsconfig.json index 034cbd2334919..e1d3d61644bfe 100644 --- a/packages/kbn-server-http-tools/tsconfig.json +++ b/packages/kbn-server-http-tools/tsconfig.json @@ -7,7 +7,11 @@ "declarationMap": true, "rootDir": "src", "sourceMap": true, - "sourceRoot": "../../../../packages/kbn-server-http-tools/src" + "sourceRoot": "../../../../packages/kbn-server-http-tools/src", + "types": [ + "jest", + "node" + ] }, "include": [ "src/**/*" diff --git a/packages/kbn-std/.babelrc b/packages/kbn-std/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-std/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-std/BUILD.bazel b/packages/kbn-std/BUILD.bazel index e60577f0f0853..bcc5a87a1e795 100644 --- a/packages/kbn-std/BUILD.bazel +++ b/packages/kbn-std/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-std" PKG_REQUIRE_NAME = "@kbn/std" @@ -23,7 +24,7 @@ NPM_MODULE_EXTRA_FILES = [ "README.md" ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "//packages/kbn-utility-types", "@npm//lodash", "@npm//query-string", @@ -32,12 +33,20 @@ SRC_DEPS = [ ] TYPES_DEPS = [ + "//packages/kbn-utility-types", + "@npm//query-string", + "@npm//rxjs", + "@npm//tslib", "@npm//@types/jest", "@npm//@types/lodash", "@npm//@types/node", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -48,14 +57,15 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - incremental = True, - out_dir = "target", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, root_dir = "src", tsconfig = ":tsconfig", @@ -64,7 +74,7 @@ ts_project( js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = PKG_REQUIRE_NAME, visibility = ["//visibility:public"], ) diff --git a/packages/kbn-std/package.json b/packages/kbn-std/package.json index d88422ec1aa81..cb4d6ad0d8aaf 100644 --- a/packages/kbn-std/package.json +++ b/packages/kbn-std/package.json @@ -1,7 +1,7 @@ { "name": "@kbn/std", - "main": "./target/index.js", - "types": "./target/index.d.ts", + "main": "./target_node/index.js", + "types": "./target_types/index.d.ts", "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0", "private": true diff --git a/packages/kbn-std/tsconfig.json b/packages/kbn-std/tsconfig.json index dec2d2df64086..3cff7fbd258a6 100644 --- a/packages/kbn-std/tsconfig.json +++ b/packages/kbn-std/tsconfig.json @@ -1,14 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "outDir": "./target", - "stripInternal": true, "declaration": true, "declarationMap": true, + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "./target_types", "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-std/src", + "stripInternal": true, "types": [ "jest", "node" diff --git a/packages/kbn-telemetry-tools/BUILD.bazel b/packages/kbn-telemetry-tools/BUILD.bazel index ef1316cec75a3..cf71b3e197dad 100644 --- a/packages/kbn-telemetry-tools/BUILD.bazel +++ b/packages/kbn-telemetry-tools/BUILD.bazel @@ -32,7 +32,6 @@ SRC_DEPS = [ "//packages/kbn-dev-utils", "//packages/kbn-utility-types", "@npm//glob", - "@npm//jest-styled-components", "@npm//listr", "@npm//normalize-path", "@npm//tslib", diff --git a/packages/kbn-telemetry-tools/tsconfig.json b/packages/kbn-telemetry-tools/tsconfig.json index 926ebff17f639..3c0e04ded359d 100644 --- a/packages/kbn-telemetry-tools/tsconfig.json +++ b/packages/kbn-telemetry-tools/tsconfig.json @@ -8,7 +8,11 @@ "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-telemetry-tools/src", - "isolatedModules": true + "isolatedModules": true, + "types": [ + "jest", + "node" + ], }, "include": [ "src/**/*", diff --git a/packages/kbn-test/BUILD.bazel b/packages/kbn-test/BUILD.bazel index 432778f888e7a..923d9859f43b9 100644 --- a/packages/kbn-test/BUILD.bazel +++ b/packages/kbn-test/BUILD.bazel @@ -53,6 +53,7 @@ SRC_DEPS = [ "@npm//jest", "@npm//jest-cli", "@npm//jest-snapshot", + "@npm//jest-styled-components", "@npm//@jest/reporters", "@npm//joi", "@npm//mustache", diff --git a/packages/kbn-utility-types/.babelrc b/packages/kbn-utility-types/.babelrc new file mode 100644 index 0000000000000..7da72d1779128 --- /dev/null +++ b/packages/kbn-utility-types/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@kbn/babel-preset/node_preset"] +} diff --git a/packages/kbn-utility-types/BUILD.bazel b/packages/kbn-utility-types/BUILD.bazel index 46843b97e746f..047cbd77f81c0 100644 --- a/packages/kbn-utility-types/BUILD.bazel +++ b/packages/kbn-utility-types/BUILD.bazel @@ -1,12 +1,13 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") +load("//src/dev/bazel:index.bzl", "jsts_transpiler") PKG_BASE_NAME = "kbn-utility-types" PKG_REQUIRE_NAME = "@kbn/utility-types" SOURCE_FILES = glob([ - "jest/index.ts", - "index.ts" + "src/jest/index.ts", + "src/index.ts" ]) SRCS = SOURCE_FILES @@ -22,16 +23,21 @@ NPM_MODULE_EXTRA_FILES = [ "README.md", ] -SRC_DEPS = [ +RUNTIME_DEPS = [ "@npm//utility-types", ] TYPES_DEPS = [ + "@npm//utility-types", "@npm//@types/node", "@npm//@types/jest", ] -DEPS = SRC_DEPS + TYPES_DEPS +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) ts_config( name = "tsconfig", @@ -42,23 +48,24 @@ ts_config( ) ts_project( - name = "tsc", + name = "tsc_types", args = ['--pretty'], srcs = SRCS, - deps = DEPS, + deps = TYPES_DEPS, declaration = True, declaration_map = True, - incremental = True, - out_dir = "target", + emit_declaration_only = True, + incremental = False, + out_dir = "target_types", source_map = True, - root_dir = ".", + root_dir = "src", tsconfig = ":tsconfig", ) js_library( name = PKG_BASE_NAME, srcs = NPM_MODULE_EXTRA_FILES, - deps = DEPS + [":tsc"], + deps = RUNTIME_DEPS + [":target_node", ":tsc_types"], package_name = "@kbn/utility-types", visibility = ["//visibility:public"], ) diff --git a/packages/kbn-utility-types/jest/package.json b/packages/kbn-utility-types/jest/package.json index 9f92fc5e94528..a5d6c9ef48887 100644 --- a/packages/kbn-utility-types/jest/package.json +++ b/packages/kbn-utility-types/jest/package.json @@ -1,3 +1,3 @@ { - "types": "../target/jest/index.d.ts" + "types": "../target_types/jest/index.d.ts" } diff --git a/packages/kbn-utility-types/package.json b/packages/kbn-utility-types/package.json index 95fbd5d00f395..61f5cd42c4f8b 100644 --- a/packages/kbn-utility-types/package.json +++ b/packages/kbn-utility-types/package.json @@ -3,12 +3,12 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "target/index.js", - "types": "target/index.d.ts", + "main": "target_node/index.js", + "types": "target_types/index.d.ts", "kibana": { "devOnly": false }, "scripts": { - "test": "../../node_modules/.bin/tsd tsd_tests" + "test": "../../node_modules/.bin/tsd src/tsd_tests" } } \ No newline at end of file diff --git a/packages/kbn-utility-types/index.ts b/packages/kbn-utility-types/src/index.ts similarity index 100% rename from packages/kbn-utility-types/index.ts rename to packages/kbn-utility-types/src/index.ts diff --git a/packages/kbn-utility-types/jest/index.ts b/packages/kbn-utility-types/src/jest/index.ts similarity index 100% rename from packages/kbn-utility-types/jest/index.ts rename to packages/kbn-utility-types/src/jest/index.ts diff --git a/packages/kbn-utility-types/tsd_tests/empty.d.ts b/packages/kbn-utility-types/src/tsd_tests/empty.d.ts similarity index 100% rename from packages/kbn-utility-types/tsd_tests/empty.d.ts rename to packages/kbn-utility-types/src/tsd_tests/empty.d.ts diff --git a/packages/kbn-utility-types/tsd_tests/package.json b/packages/kbn-utility-types/src/tsd_tests/package.json similarity index 81% rename from packages/kbn-utility-types/tsd_tests/package.json rename to packages/kbn-utility-types/src/tsd_tests/package.json index fb549abca3197..4a5d21166e2f8 100644 --- a/packages/kbn-utility-types/tsd_tests/package.json +++ b/packages/kbn-utility-types/src/tsd_tests/package.json @@ -3,7 +3,7 @@ "tsd": { "directory": "test_d", "compilerOptions": { - "rootDir": "../" + "rootDir": ".." } } } \ No newline at end of file diff --git a/packages/kbn-utility-types/tsd_tests/test_d/method_keys_of.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/method_keys_of.ts similarity index 93% rename from packages/kbn-utility-types/tsd_tests/test_d/method_keys_of.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/method_keys_of.ts index 6169f2d92f81b..8438fd1a41dac 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/method_keys_of.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/method_keys_of.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectType } from 'tsd'; -import { MethodKeysOf } from '../../index'; +import { MethodKeysOf } from '../..'; class Test { public name: string = ''; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/public_contract.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/public_contract.ts similarity index 93% rename from packages/kbn-utility-types/tsd_tests/test_d/public_contract.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/public_contract.ts index ef488f42805ee..f0b5507a6f63d 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/public_contract.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/public_contract.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectType } from 'tsd'; -import { PublicContract } from '../../index'; +import { PublicContract } from '../..'; class Test { public str: string = ''; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/public_keys.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/public_keys.ts similarity index 93% rename from packages/kbn-utility-types/tsd_tests/test_d/public_keys.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/public_keys.ts index 1674520daffba..1916c7c0b7a02 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/public_keys.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/public_keys.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectType } from 'tsd'; -import { PublicKeys } from '../../index'; +import { PublicKeys } from '../..'; class Test { public str: string = ''; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/public_methods_of.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/public_methods_of.ts similarity index 95% rename from packages/kbn-utility-types/tsd_tests/test_d/public_methods_of.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/public_methods_of.ts index 5db1117bf47f3..fc2626179e7c8 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/public_methods_of.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/public_methods_of.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable, expectNotAssignable } from 'tsd'; -import { PublicMethodsOf } from '../../index'; +import { PublicMethodsOf } from '../..'; class Test { public name: string = ''; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/shallow_promise.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/shallow_promise.ts similarity index 94% rename from packages/kbn-utility-types/tsd_tests/test_d/shallow_promise.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/shallow_promise.ts index 712189f43bfe2..4bfd5b1826fba 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/shallow_promise.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/shallow_promise.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectType } from 'tsd'; -import { ShallowPromise } from '../../index'; +import { ShallowPromise } from '../..'; type P1 = ShallowPromise; type P2 = ShallowPromise>; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/union_to_intersection.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/union_to_intersection.ts similarity index 92% rename from packages/kbn-utility-types/tsd_tests/test_d/union_to_intersection.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/union_to_intersection.ts index a37cdc5160edb..776da8838ef52 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/union_to_intersection.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/union_to_intersection.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable } from 'tsd'; -import { UnionToIntersection } from '../../index'; +import { UnionToIntersection } from '../..'; type INTERSECTED = UnionToIntersection<{ foo: 'bar' } | { baz: 'qux' }>; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/unwrap_observable.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_observable.ts similarity index 89% rename from packages/kbn-utility-types/tsd_tests/test_d/unwrap_observable.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_observable.ts index beaf692341615..6f76fc7cf40fb 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/unwrap_observable.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_observable.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable } from 'tsd'; -import { UnwrapObservable, ObservableLike } from '../../index'; +import { UnwrapObservable, ObservableLike } from '../..'; type STRING = UnwrapObservable>; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/unwrap_promise.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_promise.ts similarity index 93% rename from packages/kbn-utility-types/tsd_tests/test_d/unwrap_promise.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_promise.ts index 6491555b883bf..adb6c9a0018b9 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/unwrap_promise.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/unwrap_promise.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable } from 'tsd'; -import { UnwrapPromise } from '../../index'; +import { UnwrapPromise } from '../..'; type STRING = UnwrapPromise>; type TUPLE = UnwrapPromise>; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/values.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/values.ts similarity index 95% rename from packages/kbn-utility-types/tsd_tests/test_d/values.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/values.ts index aeb867b78e13d..5e9e0d73f5b91 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/values.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/values.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable } from 'tsd'; -import { Values } from '../../index'; +import { Values } from '../..'; // Arrays type STRING = Values; diff --git a/packages/kbn-utility-types/tsd_tests/test_d/writable.ts b/packages/kbn-utility-types/src/tsd_tests/test_d/writable.ts similarity index 94% rename from packages/kbn-utility-types/tsd_tests/test_d/writable.ts rename to packages/kbn-utility-types/src/tsd_tests/test_d/writable.ts index cfaba555a7980..db3f6460d1b32 100644 --- a/packages/kbn-utility-types/tsd_tests/test_d/writable.ts +++ b/packages/kbn-utility-types/src/tsd_tests/test_d/writable.ts @@ -8,7 +8,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies import { expectAssignable } from 'tsd'; -import { Writable } from '../../index'; +import { Writable } from '../..'; type WritableArray = Writable; expectAssignable(['1']); diff --git a/packages/kbn-utility-types/tsconfig.json b/packages/kbn-utility-types/tsconfig.json index 50fa71155bee8..92fd810b389c8 100644 --- a/packages/kbn-utility-types/tsconfig.json +++ b/packages/kbn-utility-types/tsconfig.json @@ -1,22 +1,21 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": true, - "outDir": "./target", - "stripInternal": true, "declaration": true, "declarationMap": true, - "rootDir": "./", + "emitDeclarationOnly": true, + "incremental": false, + "outDir": "./target_types", + "rootDir": "./src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-utility-types", + "stripInternal": true, "types": [ "jest", "node" ] }, "include": [ - "index.ts", - "jest/**/*", - "tsd_tests/**/*" + "src/**/*", ] } diff --git a/scripts/register_git_hook.js b/scripts/register_git_hook.js index 9114229859ee5..fec1f9755338a 100644 --- a/scripts/register_git_hook.js +++ b/scripts/register_git_hook.js @@ -7,4 +7,4 @@ */ require('../src/setup_node_env/no_transpilation'); -require('@kbn/dev-utils/target/precommit_hook/cli'); +require('@kbn/dev-utils/target_node/precommit_hook/cli'); diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index fb748d1e76661..1f6b549c0110c 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -228,6 +228,7 @@ export class DocLinksService { indexManagement: `${ELASTICSEARCH_DOCS}index-mgmt.html`, kibanaSearchSettings: `${KIBANA_DOCS}advanced-options.html#kibana-search-settings`, visualizationSettings: `${KIBANA_DOCS}advanced-options.html#kibana-visualization-settings`, + timelionSettings: `${KIBANA_DOCS}advanced-options.html#kibana-timelion-settings`, }, ml: { guide: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/index.html`, diff --git a/src/core/public/fatal_errors/fatal_errors_service.tsx b/src/core/public/fatal_errors/fatal_errors_service.tsx index 52ec32b1d2d3d..975c0160d83b2 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.tsx +++ b/src/core/public/fatal_errors/fatal_errors_service.tsx @@ -51,7 +51,7 @@ export interface FatalErrorsSetup { */ export type FatalErrorsStart = FatalErrorsSetup; -/** @interal */ +/** @internal */ export class FatalErrorsService { private readonly errorInfo$ = new Rx.ReplaySubject(); private fatalErrors?: FatalErrorsSetup; diff --git a/src/core/public/i18n/i18n_eui_mapping.tsx b/src/core/public/i18n/i18n_eui_mapping.tsx index dafbebbb87f46..0a6c7a05e1c75 100644 --- a/src/core/public/i18n/i18n_eui_mapping.tsx +++ b/src/core/public/i18n/i18n_eui_mapping.tsx @@ -689,11 +689,13 @@ export const getEuiContextMapping = (): EuiTokensObject => { defaultMessage: 'Next page, {page}', values: { page }, }), - 'euiPagination.pageOfTotalCompressed': ({ page, total }: EuiValues) => - i18n.translate('core.euiPagination.pageOfTotalCompressed', { - defaultMessage: '{page} of {total}', - values: { page, total }, - }), + 'euiPagination.pageOfTotalCompressed': ({ page, total }: EuiValues) => ( + + ), 'euiPagination.previousPage': ({ page }: EuiValues) => i18n.translate('core.euiPagination.previousPage', { defaultMessage: 'Previous page, {page}', diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.ts b/src/core/server/saved_objects/migrations/core/document_migrator.ts index de8adc23996fd..23f5d075d72e3 100644 --- a/src/core/server/saved_objects/migrations/core/document_migrator.ts +++ b/src/core/server/saved_objects/migrations/core/document_migrator.ts @@ -667,6 +667,7 @@ function wrapWithTry( log: new MigrationLogger(log), migrationVersion: version, convertToMultiNamespaceTypeVersion: type.convertToMultiNamespaceTypeVersion, + isSingleNamespaceType: type.namespaceType === 'single', }); return function tryTransformDoc(doc: SavedObjectUnsanitizedDoc) { diff --git a/src/core/server/saved_objects/migrations/mocks.ts b/src/core/server/saved_objects/migrations/mocks.ts index 4a62fcc95997b..ef806aa5f0fca 100644 --- a/src/core/server/saved_objects/migrations/mocks.ts +++ b/src/core/server/saved_objects/migrations/mocks.ts @@ -24,14 +24,17 @@ export const createSavedObjectsMigrationLoggerMock = (): jest.Mocked => { const mock = { log: createSavedObjectsMigrationLoggerMock(), migrationVersion, convertToMultiNamespaceTypeVersion, + isSingleNamespaceType, }; return mock; }; diff --git a/src/core/server/saved_objects/migrations/types.ts b/src/core/server/saved_objects/migrations/types.ts index 570315e780ebe..fe5a79dac12c3 100644 --- a/src/core/server/saved_objects/migrations/types.ts +++ b/src/core/server/saved_objects/migrations/types.ts @@ -65,6 +65,10 @@ export interface SavedObjectMigrationContext { * The version in which this object type is being converted to a multi-namespace type */ readonly convertToMultiNamespaceTypeVersion?: string; + /** + * Whether this is a single-namespace type or not + */ + readonly isSingleNamespaceType: boolean; } /** diff --git a/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts b/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts index 627a20148f943..bd021b7f073eb 100644 --- a/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts +++ b/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts @@ -24,7 +24,8 @@ async function removeLogFile() { await unlink(logFilePath).catch(() => void 0); } -describe('migration from 7.7.2-xpack with 100k objects', () => { +// FLAKY: https://github.com/elastic/kibana/issues/96895 +describe.skip('migration from 7.7.2-xpack with 100k objects', () => { let esServer: kbnTestServer.TestElasticsearchUtils; let root: Root; let coreStart: InternalCoreStart; diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts index 00fc039ff005f..45794e25d00a6 100644 --- a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts @@ -8,7 +8,7 @@ import { mockRawDocExistsInNamespace } from './collect_multi_namespace_references.test.mock'; -import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; import type { ElasticsearchClient } from 'src/core/server/elasticsearch'; import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts index 489432a4ab169..11dbe6149878c 100644 --- a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts +++ b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts @@ -12,7 +12,7 @@ import { mockRawDocExistsInNamespace, } from './update_objects_spaces.test.mock'; -import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; import type { ElasticsearchClient } from 'src/core/server/elasticsearch'; import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 47782c2f98d3a..fbc51acfdc8ef 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -2268,6 +2268,7 @@ export interface SavedObjectExportBaseOptions { // @public export interface SavedObjectMigrationContext { readonly convertToMultiNamespaceTypeVersion?: string; + readonly isSingleNamespaceType: boolean; readonly log: SavedObjectsMigrationLogger; readonly migrationVersion: string; } diff --git a/src/plugins/advanced_settings/kibana.json b/src/plugins/advanced_settings/kibana.json index 68b133f382c35..e524d78a53e80 100644 --- a/src/plugins/advanced_settings/kibana.json +++ b/src/plugins/advanced_settings/kibana.json @@ -5,5 +5,9 @@ "ui": true, "requiredPlugins": ["management"], "optionalPlugins": ["home", "usageCollection"], - "requiredBundles": ["kibanaReact", "kibanaUtils", "home"] + "requiredBundles": ["kibanaReact", "kibanaUtils", "home"], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/src/plugins/apm_oss/kibana.json b/src/plugins/apm_oss/kibana.json index 46fecb09c7fb6..4907be3580be8 100644 --- a/src/plugins/apm_oss/kibana.json +++ b/src/plugins/apm_oss/kibana.json @@ -1,11 +1,13 @@ { "id": "apmOss", + "owner": { + "name": "APM UI", + "gitHubTeam": "apm-ui" + }, "version": "8.0.0", "server": true, "kibanaVersion": "kibana", - "configPath": [ - "apm_oss" - ], + "configPath": ["apm_oss"], "ui": true, "requiredPlugins": ["home"] } diff --git a/src/plugins/bfetch/public/streaming/inflate_response.ts b/src/plugins/bfetch/public/streaming/inflate_response.ts index 73cb52285987c..860b77016cd00 100644 --- a/src/plugins/bfetch/public/streaming/inflate_response.ts +++ b/src/plugins/bfetch/public/streaming/inflate_response.ts @@ -7,9 +7,10 @@ */ import { unzlibSync, strFromU8 } from 'fflate'; +import { toByteArray } from 'base64-js'; export function inflateResponse(response: string) { - const buff = Buffer.from(response, 'base64'); + const buff = toByteArray(response); const unzip = unzlibSync(buff); return strFromU8(unzip); } diff --git a/src/plugins/charts/kibana.json b/src/plugins/charts/kibana.json index 4510a1ea7d065..799173fed094f 100644 --- a/src/plugins/charts/kibana.json +++ b/src/plugins/charts/kibana.json @@ -3,5 +3,9 @@ "version": "kibana", "server": true, "ui": true, - "requiredPlugins": ["expressions"] + "requiredPlugins": ["expressions"], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/src/plugins/charts/public/services/theme/theme.test.tsx b/src/plugins/charts/public/services/theme/theme.test.tsx index 07e28a7cfabc3..079acbb5fefbc 100644 --- a/src/plugins/charts/public/services/theme/theme.test.tsx +++ b/src/plugins/charts/public/services/theme/theme.test.tsx @@ -6,9 +6,11 @@ * Side Public License, v 1. */ +import React from 'react'; import { BehaviorSubject } from 'rxjs'; import { take } from 'rxjs/operators'; import { renderHook, act } from '@testing-library/react-hooks'; +import { render, act as renderAct } from '@testing-library/react'; import { EUI_CHARTS_THEME_DARK, EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; @@ -105,6 +107,30 @@ describe('ThemeService', () => { act(() => darkMode$.next(false)); expect(result.current).toBe(EUI_CHARTS_THEME_LIGHT.theme); }); + + it('should not rerender when emitting the same value', () => { + const darkMode$ = new BehaviorSubject(false); + setupMockUiSettings.get$.mockReturnValue(darkMode$); + const themeService = new ThemeService(); + themeService.init(setupMockUiSettings); + const { useChartsTheme } = themeService; + + const renderCounter = jest.fn(); + const Wrapper = () => { + useChartsTheme(); + renderCounter(); + return null; + }; + + render(); + expect(renderCounter).toHaveBeenCalledTimes(1); + renderAct(() => darkMode$.next(true)); + expect(renderCounter).toHaveBeenCalledTimes(2); + renderAct(() => darkMode$.next(true)); + renderAct(() => darkMode$.next(true)); + renderAct(() => darkMode$.next(true)); + expect(renderCounter).toHaveBeenCalledTimes(2); + }); }); describe('useBaseChartTheme', () => { @@ -123,5 +149,29 @@ describe('ThemeService', () => { act(() => darkMode$.next(false)); expect(result.current).toBe(LIGHT_THEME); }); + + it('should not rerender when emitting the same value', () => { + const darkMode$ = new BehaviorSubject(false); + setupMockUiSettings.get$.mockReturnValue(darkMode$); + const themeService = new ThemeService(); + themeService.init(setupMockUiSettings); + const { useChartsBaseTheme } = themeService; + + const renderCounter = jest.fn(); + const Wrapper = () => { + useChartsBaseTheme(); + renderCounter(); + return null; + }; + + render(); + expect(renderCounter).toHaveBeenCalledTimes(1); + renderAct(() => darkMode$.next(true)); + expect(renderCounter).toHaveBeenCalledTimes(2); + renderAct(() => darkMode$.next(true)); + renderAct(() => darkMode$.next(true)); + renderAct(() => darkMode$.next(true)); + expect(renderCounter).toHaveBeenCalledTimes(2); + }); }); }); diff --git a/src/plugins/charts/public/services/theme/theme.ts b/src/plugins/charts/public/services/theme/theme.ts index 694922ca6f958..dfea367327e7a 100644 --- a/src/plugins/charts/public/services/theme/theme.ts +++ b/src/plugins/charts/public/services/theme/theme.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { useEffect, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { Observable, BehaviorSubject } from 'rxjs'; import { CoreSetup } from 'kibana/public'; @@ -54,11 +54,18 @@ export class ThemeService { /** A React hook for consuming the charts theme */ public useChartsTheme = (): PartialTheme => { // eslint-disable-next-line react-hooks/rules-of-hooks - const [value, update] = useState(this.chartsDefaultTheme); + const [value, update] = useState(this._chartsTheme$.getValue()); + // eslint-disable-next-line react-hooks/rules-of-hooks + const ref = useRef(value); // eslint-disable-next-line react-hooks/rules-of-hooks useEffect(() => { - const s = this.chartsTheme$.subscribe(update); + const s = this.chartsTheme$.subscribe((val) => { + if (val !== ref.current) { + ref.current = val; + update(val); + } + }); return () => s.unsubscribe(); }, []); @@ -68,11 +75,18 @@ export class ThemeService { /** A React hook for consuming the charts theme */ public useChartsBaseTheme = (): Theme => { // eslint-disable-next-line react-hooks/rules-of-hooks - const [value, update] = useState(this.chartsDefaultBaseTheme); + const [value, update] = useState(this._chartsBaseTheme$.getValue()); + // eslint-disable-next-line react-hooks/rules-of-hooks + const ref = useRef(value); // eslint-disable-next-line react-hooks/rules-of-hooks useEffect(() => { - const s = this.chartsBaseTheme$.subscribe(update); + const s = this.chartsBaseTheme$.subscribe((val) => { + if (val !== ref.current) { + ref.current = val; + update(val); + } + }); return () => s.unsubscribe(); }, []); diff --git a/src/plugins/data/common/field_formats/converters/boolean.ts b/src/plugins/data/common/field_formats/converters/boolean.ts index 6a19dc70250e6..d70501bf0f9d5 100644 --- a/src/plugins/data/common/field_formats/converters/boolean.ts +++ b/src/plugins/data/common/field_formats/converters/boolean.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; import { asPrettyString } from '../utils'; diff --git a/src/plugins/data/common/field_formats/converters/color.tsx b/src/plugins/data/common/field_formats/converters/color.tsx index 98f25fdf81811..f653c6a4f82a2 100644 --- a/src/plugins/data/common/field_formats/converters/color.tsx +++ b/src/plugins/data/common/field_formats/converters/color.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import ReactDOM from 'react-dom/server'; import { findLast, cloneDeep, escape } from 'lodash'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { HtmlContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; import { asPrettyString } from '../utils'; diff --git a/src/plugins/data/common/field_formats/converters/duration.ts b/src/plugins/data/common/field_formats/converters/duration.ts index 71ac022ba5e5c..926f907af8fe9 100644 --- a/src/plugins/data/common/field_formats/converters/duration.ts +++ b/src/plugins/data/common/field_formats/converters/duration.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import moment, { unitOfTime, Duration } from 'moment'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; diff --git a/src/plugins/data/common/field_formats/converters/histogram.ts b/src/plugins/data/common/field_formats/converters/histogram.ts index 9f6b8c5cfd1da..0812dcc795dc9 100644 --- a/src/plugins/data/common/field_formats/converters/histogram.ts +++ b/src/plugins/data/common/field_formats/converters/histogram.ts @@ -7,8 +7,8 @@ */ import { i18n } from '@kbn/i18n'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; import { BytesFormat } from './bytes'; import { NumberFormat } from './number'; diff --git a/src/plugins/data/common/field_formats/converters/ip.ts b/src/plugins/data/common/field_formats/converters/ip.ts index d64c9bddf1558..76fe4404e2418 100644 --- a/src/plugins/data/common/field_formats/converters/ip.ts +++ b/src/plugins/data/common/field_formats/converters/ip.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; diff --git a/src/plugins/data/common/field_formats/converters/numeral.ts b/src/plugins/data/common/field_formats/converters/numeral.ts index 12c10f54357dd..9d8b7ba1c369d 100644 --- a/src/plugins/data/common/field_formats/converters/numeral.ts +++ b/src/plugins/data/common/field_formats/converters/numeral.ts @@ -10,7 +10,7 @@ import numeral from '@elastic/numeral'; // @ts-ignore import numeralLanguages from '@elastic/numeral/languages'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert } from '../types'; import { UI_SETTINGS } from '../../constants'; diff --git a/src/plugins/data/common/field_formats/converters/relative_date.ts b/src/plugins/data/common/field_formats/converters/relative_date.ts index 5792bada7686e..c54e32452f267 100644 --- a/src/plugins/data/common/field_formats/converters/relative_date.ts +++ b/src/plugins/data/common/field_formats/converters/relative_date.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; diff --git a/src/plugins/data/common/field_formats/converters/source.tsx b/src/plugins/data/common/field_formats/converters/source.tsx index d6176b321f3f3..de77736503f86 100644 --- a/src/plugins/data/common/field_formats/converters/source.tsx +++ b/src/plugins/data/common/field_formats/converters/source.tsx @@ -9,8 +9,8 @@ import React, { Fragment } from 'react'; import ReactDOM from 'react-dom/server'; import { escape, keys } from 'lodash'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { shortenDottedString } from '../../utils'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, HtmlContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; import { UI_SETTINGS } from '../../constants'; diff --git a/src/plugins/data/common/field_formats/converters/static_lookup.ts b/src/plugins/data/common/field_formats/converters/static_lookup.ts index 17ce902a8a18b..63d3506dda0bb 100644 --- a/src/plugins/data/common/field_formats/converters/static_lookup.ts +++ b/src/plugins/data/common/field_formats/converters/static_lookup.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; diff --git a/src/plugins/data/common/field_formats/converters/string.ts b/src/plugins/data/common/field_formats/converters/string.ts index 28dd714abaf41..c6aba38cf376d 100644 --- a/src/plugins/data/common/field_formats/converters/string.ts +++ b/src/plugins/data/common/field_formats/converters/string.ts @@ -6,10 +6,10 @@ * Side Public License, v 1. */ -import escape from 'lodash/escape'; +import { escape } from 'lodash'; import { i18n } from '@kbn/i18n'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { asPrettyString, getHighlightHtml } from '../utils'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS, HtmlContextTypeConvert } from '../types'; import { shortenDottedString } from '../../utils'; @@ -95,7 +95,9 @@ export class StringFormat extends FieldFormat { private base64Decode(val: string) { try { - return Buffer.from(val, 'base64').toString('utf8'); + if (window && window.atob) return window.atob(val); + // referencing from `global` tricks webpack to not include `Buffer` polyfill into this bundle + return global.Buffer.from(val, 'base64').toString('utf8'); } catch (e) { return asPrettyString(val); } diff --git a/src/plugins/data/common/field_formats/converters/truncate.ts b/src/plugins/data/common/field_formats/converters/truncate.ts index 9fa0272cb59b0..4c68a4c056b82 100644 --- a/src/plugins/data/common/field_formats/converters/truncate.ts +++ b/src/plugins/data/common/field_formats/converters/truncate.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import { truncate } from 'lodash'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; diff --git a/src/plugins/data/common/field_formats/converters/url.ts b/src/plugins/data/common/field_formats/converters/url.ts index 3495701ef5200..3e808d90f0409 100644 --- a/src/plugins/data/common/field_formats/converters/url.ts +++ b/src/plugins/data/common/field_formats/converters/url.ts @@ -8,8 +8,8 @@ import { i18n } from '@kbn/i18n'; import { escape, memoize } from 'lodash'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { getHighlightHtml } from '../utils'; -import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, diff --git a/src/plugins/data/common/field_formats/field_formats_registry.ts b/src/plugins/data/common/field_formats/field_formats_registry.ts index 996cf05a9faa9..9e96f5cc1a6bd 100644 --- a/src/plugins/data/common/field_formats/field_formats_registry.ts +++ b/src/plugins/data/common/field_formats/field_formats_registry.ts @@ -8,6 +8,7 @@ // eslint-disable-next-line max-classes-per-file import { forOwn, isFunction, memoize, identity } from 'lodash'; +import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; import { FieldFormatsGetConfigFn, @@ -20,7 +21,6 @@ import { import { baseFormatters } from './constants/base_formatters'; import { FieldFormat } from './field_format'; import { FormatFactory } from './utils'; -import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '../kbn_field_types/types'; import { UI_SETTINGS } from '../constants'; import { FieldFormatNotFoundError } from '../field_formats'; import { SerializedFieldFormat } from '../../../expressions/common/types'; diff --git a/src/plugins/data/common/kbn_field_types/index.ts b/src/plugins/data/common/kbn_field_types/index.ts index 0a19a7f91f923..69ee9737d0f80 100644 --- a/src/plugins/data/common/kbn_field_types/index.ts +++ b/src/plugins/data/common/kbn_field_types/index.ts @@ -6,11 +6,43 @@ * Side Public License, v 1. */ -export { KbnFieldType } from './kbn_field_type'; +// NOTE: trick to mark exports as deprecated (only for constants and types, but not for interfaces, classes or enums) +import { + castEsToKbnFieldTypeName as oldCastEsToKbnFieldTypeName, + getFilterableKbnTypeNames as oldGetFilterableKbnTypeNames, + getKbnFieldType as oldGetKbnFieldType, + getKbnTypeNames as oldGetKbnTypeNames, + KbnFieldType, +} from '@kbn/field-types'; + +/** + * @deprecated Import from the "@kbn/field-types" package directly instead. + * @removeBy 8.0 + */ +const castEsToKbnFieldTypeName = oldCastEsToKbnFieldTypeName; + +/** + * @deprecated Import from the "@kbn/field-types" package directly instead. + * @removeBy 8.0 + */ +const getFilterableKbnTypeNames = oldGetFilterableKbnTypeNames; + +/** + * @deprecated Import from the "@kbn/field-types" package directly instead. + * @removeBy 8.0 + */ +const getKbnFieldType = oldGetKbnFieldType; + +/** + * @deprecated Import from the "@kbn/field-types" package directly instead. + * @removeBy 8.0 + */ +const getKbnTypeNames = oldGetKbnTypeNames; export { castEsToKbnFieldTypeName, getKbnFieldType, getKbnTypeNames, getFilterableKbnTypeNames, -} from './kbn_field_types'; + KbnFieldType, +}; diff --git a/src/plugins/data/common/kbn_field_types/types.ts b/src/plugins/data/common/kbn_field_types/types.ts index c14e7e4b03661..cea35a53e9da1 100644 --- a/src/plugins/data/common/kbn_field_types/types.ts +++ b/src/plugins/data/common/kbn_field_types/types.ts @@ -6,80 +6,6 @@ * Side Public License, v 1. */ -/** @public **/ -export interface KbnFieldTypeOptions { - sortable: boolean; - filterable: boolean; - name: string; - esTypes: ES_FIELD_TYPES[]; -} +import { KbnFieldTypeOptions, ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; -/** @public **/ -export enum ES_FIELD_TYPES { - _ID = '_id', - _INDEX = '_index', - _SOURCE = '_source', - _TYPE = '_type', - - STRING = 'string', - TEXT = 'text', - KEYWORD = 'keyword', - VERSION = 'version', - - BOOLEAN = 'boolean', - OBJECT = 'object', - - DATE = 'date', - DATE_NANOS = 'date_nanos', - DATE_RANGE = 'date_range', - - GEO_POINT = 'geo_point', - GEO_SHAPE = 'geo_shape', - - FLOAT = 'float', - HALF_FLOAT = 'half_float', - SCALED_FLOAT = 'scaled_float', - DOUBLE = 'double', - INTEGER = 'integer', - LONG = 'long', - SHORT = 'short', - UNSIGNED_LONG = 'unsigned_long', - - FLOAT_RANGE = 'float_range', - DOUBLE_RANGE = 'double_range', - INTEGER_RANGE = 'integer_range', - LONG_RANGE = 'long_range', - - NESTED = 'nested', - BYTE = 'byte', - IP = 'ip', - IP_RANGE = 'ip_range', - ATTACHMENT = 'attachment', - TOKEN_COUNT = 'token_count', - MURMUR3 = 'murmur3', - - HISTOGRAM = 'histogram', -} - -/** @public **/ -export enum KBN_FIELD_TYPES { - _SOURCE = '_source', - ATTACHMENT = 'attachment', - BOOLEAN = 'boolean', - DATE = 'date', - DATE_RANGE = 'date_range', - GEO_POINT = 'geo_point', - GEO_SHAPE = 'geo_shape', - IP = 'ip', - IP_RANGE = 'ip_range', - MURMUR3 = 'murmur3', - NUMBER = 'number', - NUMBER_RANGE = 'number_range', - STRING = 'string', - UNKNOWN = 'unknown', - CONFLICT = 'conflict', - OBJECT = 'object', - NESTED = 'nested', - HISTOGRAM = 'histogram', - MISSING = 'missing', -} +export { KbnFieldTypeOptions, ES_FIELD_TYPES, KBN_FIELD_TYPES }; diff --git a/src/plugins/data/common/search/search_source/mocks.ts b/src/plugins/data/common/search/search_source/mocks.ts index c8769141a71d6..a0897a2dacf2a 100644 --- a/src/plugins/data/common/search/search_source/mocks.ts +++ b/src/plugins/data/common/search/search_source/mocks.ts @@ -42,13 +42,17 @@ export const searchSourceCommonMock: jest.Mocked = { createEmpty: jest.fn().mockReturnValue(searchSourceInstanceMock), }; -export const createSearchSourceMock = (fields?: SearchSourceFields) => +export const createSearchSourceMock = (fields?: SearchSourceFields, response?: any) => new SearchSource(fields, { getConfig: uiSettingsServiceMock.createStartContract().get, - search: jest - .fn() - .mockReturnValue( - of({ rawResponse: { hits: { hits: [], total: 0 } }, isPartial: false, isRunning: false }) - ), + search: jest.fn().mockReturnValue( + of( + response ?? { + rawResponse: { hits: { hits: [], total: 0 } }, + isPartial: false, + isRunning: false, + } + ) + ), onResponse: jest.fn().mockImplementation((req, res) => res), }); diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index e896fb9a5d4e2..e3ecacfbda5ad 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -6,19 +6,15 @@ * Side Public License, v 1. */ -/* - * esQuery and esKuery: - */ - import { PluginInitializerContext } from '../../../core/public'; import { ConfigSchema } from '../config'; +export * from './deprecated'; + /* * Filters: */ -export * from './deprecated'; - export { getEsQueryConfig } from '../common'; export { FilterLabel, FilterItem } from './ui'; export { getDisplayValueFromFilter, generateFilters, extractTimeRange } from './query'; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index a3b308798938d..7409163c5d766 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -26,6 +26,7 @@ import { DetailedPeerCertificate } from 'tls'; import { Ensure } from '@kbn/utility-types'; import { EnvironmentMode } from '@kbn/config'; import { ErrorToastOptions } from 'src/core/public/notifications'; +import { ES_FIELD_TYPES } from '@kbn/field-types'; import { EsQueryConfig as EsQueryConfig_2 } from '@kbn/es-query'; import { estypes } from '@elastic/elasticsearch'; import { EuiBreadcrumb } from '@elastic/eui'; @@ -60,6 +61,7 @@ import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; import { ISearchSource as ISearchSource_2 } from 'src/plugins/data/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { IUiSettingsClient } from 'src/core/public'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; import { KibanaExecutionContext } from 'src/core/public'; import { KueryNode as KueryNode_3 } from '@kbn/es-query'; @@ -608,8 +610,8 @@ export enum BUCKET_TYPES { // Warning: (ae-missing-release-tag) "castEsToKbnFieldTypeName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public -export const castEsToKbnFieldTypeName: (esType: ES_FIELD_TYPES | string) => KBN_FIELD_TYPES; +// @public @deprecated (undocumented) +export const castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES; // Warning: (ae-forgotten-export) The symbol "QuerySetup" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "BaseStateContainer" needs to be exported by the entry point index.d.ts @@ -715,79 +717,7 @@ export class DuplicateIndexPatternError extends Error { constructor(message: string); } -// @public (undocumented) -export enum ES_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - BYTE = "byte", - // (undocumented) - DATE = "date", - // (undocumented) - DATE_NANOS = "date_nanos", - // (undocumented) - DATE_RANGE = "date_range", - // (undocumented) - DOUBLE = "double", - // (undocumented) - DOUBLE_RANGE = "double_range", - // (undocumented) - FLOAT = "float", - // (undocumented) - FLOAT_RANGE = "float_range", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - HALF_FLOAT = "half_float", - // (undocumented) - HISTOGRAM = "histogram", - // (undocumented) - _ID = "_id", - // (undocumented) - _INDEX = "_index", - // (undocumented) - INTEGER = "integer", - // (undocumented) - INTEGER_RANGE = "integer_range", - // (undocumented) - IP = "ip", - // (undocumented) - IP_RANGE = "ip_range", - // (undocumented) - KEYWORD = "keyword", - // (undocumented) - LONG = "long", - // (undocumented) - LONG_RANGE = "long_range", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - OBJECT = "object", - // (undocumented) - SCALED_FLOAT = "scaled_float", - // (undocumented) - SHORT = "short", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - TEXT = "text", - // (undocumented) - TOKEN_COUNT = "token_count", - // (undocumented) - _TYPE = "_type", - // (undocumented) - UNSIGNED_LONG = "unsigned_long", - // (undocumented) - VERSION = "version" -} +export { ES_FIELD_TYPES } // Warning: (ae-missing-release-tag) "ES_SEARCH_STRATEGY" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -820,18 +750,18 @@ export const esFilters: { FILTERS: typeof import("@kbn/es-query").FILTERS; FilterStateStore: typeof FilterStateStore; buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: any[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; + buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: any, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; + buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; buildQueryFilter: (query: any, index: string, alias: string) => import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; - isPhraseFilter: (filter: any) => filter is import("@kbn/es-query").PhraseFilter; - isExistsFilter: (filter: any) => filter is import("@kbn/es-query").ExistsFilter; - isPhrasesFilter: (filter: any) => filter is import("@kbn/es-query").PhrasesFilter; - isRangeFilter: (filter: any) => filter is import("@kbn/es-query").RangeFilter; - isMatchAllFilter: (filter: any) => filter is import("@kbn/es-query").MatchAllFilter; - isMissingFilter: (filter: any) => filter is import("@kbn/es-query").MissingFilter; - isQueryStringFilter: (filter: any) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; + isPhraseFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhraseFilter; + isExistsFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").ExistsFilter; + isPhrasesFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").PhrasesFilter; + isRangeFilter: (filter?: import("@kbn/es-query").ExistsFilter | import("@kbn/es-query").GeoPolygonFilter | import("@kbn/es-query").PhrasesFilter | import("@kbn/es-query").PhraseFilter | import("@kbn/es-query").MatchAllFilter | import("@kbn/es-query").MissingFilter | import("@kbn/es-query").RangeFilter | import("@kbn/es-query").GeoBoundingBoxFilter | undefined) => filter is import("@kbn/es-query").RangeFilter; + isMatchAllFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MatchAllFilter; + isMissingFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query").MissingFilter; + isQueryStringFilter: (filter: import("@kbn/es-query").FieldFilter) => filter is import("@kbn/es-query/target_types/filters/build_filters").QueryStringFilter; isFilterPinned: (filter: import("@kbn/es-query").Filter) => boolean | undefined; toggleFilterNegated: (filter: import("@kbn/es-query").Filter) => { meta: { @@ -846,7 +776,9 @@ export const esFilters: { params?: any; value?: string | undefined; }; - $state?: import("@kbn/es-query").FilterState | undefined; + $state?: { + store: FilterStateStore; + } | undefined; query?: any; }; disableFilter: (filter: import("@kbn/es-query").Filter) => import("@kbn/es-query").Filter; @@ -1182,7 +1114,7 @@ export function getEsQueryConfig(config: KibanaConfig): EsQueryConfig_2; // Warning: (ae-missing-release-tag) "getKbnTypeNames" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public +// @public @deprecated (undocumented) export const getKbnTypeNames: () => string[]; // Warning: (ae-forgotten-export) The symbol "ISearchRequestParams" needs to be exported by the entry point index.d.ts @@ -1873,47 +1805,7 @@ export const isQuery: (x: unknown) => x is Query; // @public (undocumented) export const isTimeRange: (x: unknown) => x is TimeRange; -// @public (undocumented) -export enum KBN_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - CONFLICT = "conflict", - // (undocumented) - DATE = "date", - // (undocumented) - DATE_RANGE = "date_range", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - HISTOGRAM = "histogram", - // (undocumented) - IP = "ip", - // (undocumented) - IP_RANGE = "ip_range", - // (undocumented) - MISSING = "missing", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - NUMBER = "number", - // (undocumented) - NUMBER_RANGE = "number_range", - // (undocumented) - OBJECT = "object", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - UNKNOWN = "unknown" -} +export { KBN_FIELD_TYPES } // Warning: (ae-missing-release-tag) "KibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -2730,41 +2622,41 @@ export interface WaitUntilNextSessionCompletesOptions { // src/plugins/data/public/deprecated.ts:93:23 - (ae-forgotten-export) The symbol "convertRangeFilterToTimeRangeString" needs to be exported by the entry point index.d.ts // src/plugins/data/public/deprecated.ts:93:23 - (ae-forgotten-export) The symbol "extractTimeFilter" needs to be exported by the entry point index.d.ts // src/plugins/data/public/field_formats/field_formats_service.ts:51:3 - (ae-forgotten-export) The symbol "FormatFactory" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "FieldFormatsRegistry" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "BoolFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "BytesFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "ColorFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "DurationFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "IpFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "NumberFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "PercentFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "RelativeDateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "SourceFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "StaticLookupFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:57:26 - (ae-forgotten-export) The symbol "HistogramFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:100:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:127:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:127:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:127:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:127:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:127:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:298:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:298:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:298:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:300:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:301:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:310:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:311:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:312:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:313:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:317:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:318:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:321:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:322:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:325:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "FieldFormatsRegistry" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "BoolFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "BytesFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "ColorFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "DurationFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "IpFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "NumberFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "PercentFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "RelativeDateFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "SourceFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "StaticLookupFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:53:26 - (ae-forgotten-export) The symbol "HistogramFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:96:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:123:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:123:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:123:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:123:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:123:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:294:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:294:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:294:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:296:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:297:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:306:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:307:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:308:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:309:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:313:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:314:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:317:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:318:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:321:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts // src/plugins/data/public/search/session/session_service.ts:62:5 - (ae-forgotten-export) The symbol "UrlGeneratorStateMapping" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/src/plugins/data/public/search/expressions/esdsl.test.ts b/src/plugins/data/public/search/expressions/esdsl.test.ts index 197957442cf30..f39b33c252ded 100644 --- a/src/plugins/data/public/search/expressions/esdsl.test.ts +++ b/src/plugins/data/public/search/expressions/esdsl.test.ts @@ -7,7 +7,7 @@ */ import { getEsdsl } from './esdsl'; -import { MockedKeys } from '@kbn/utility-types/target/jest'; +import { MockedKeys } from '@kbn/utility-types/jest'; import { EsdslExpressionFunctionDefinition } from '../../../common/search/expressions'; import { StartServicesAccessor } from 'kibana/public'; import { DataPublicPluginStart, DataStartDependencies } from '../../types'; diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index 4b5f55a003ca9..2700cb1ebc659 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -23,6 +23,7 @@ import { ElasticsearchClient as ElasticsearchClient_2 } from 'kibana/server'; import { Ensure } from '@kbn/utility-types'; import { EnvironmentMode } from '@kbn/config'; import { ErrorToastOptions } from 'src/core/public/notifications'; +import { ES_FIELD_TYPES } from '@kbn/field-types'; import { EsQueryConfig as EsQueryConfig_2 } from '@kbn/es-query'; import { estypes } from '@elastic/elasticsearch'; import { EventEmitter } from 'events'; @@ -43,6 +44,7 @@ import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; import { ISearchSource } from 'src/plugins/data/public'; import { IUiSettingsClient } from 'src/core/server'; import { IUiSettingsClient as IUiSettingsClient_3 } from 'kibana/server'; +import { KBN_FIELD_TYPES } from '@kbn/field-types'; import { KibanaExecutionContext } from 'src/core/public'; import { KibanaRequest } from 'src/core/server'; import { KibanaRequest as KibanaRequest_2 } from 'kibana/server'; @@ -353,8 +355,8 @@ export const buildQueryFromFilters: (filters: Filter_2[] | undefined, indexPatte // Warning: (ae-missing-release-tag) "castEsToKbnFieldTypeName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public -export const castEsToKbnFieldTypeName: (esType: ES_FIELD_TYPES | string) => KBN_FIELD_TYPES; +// @public @deprecated (undocumented) +export const castEsToKbnFieldTypeName: (esType: string) => import("@kbn/field-types").KBN_FIELD_TYPES; // Warning: (ae-forgotten-export) The symbol "PluginConfigDescriptor" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "ConfigSchema" needs to be exported by the entry point index.d.ts @@ -369,79 +371,7 @@ export interface DataRequestHandlerContext extends RequestHandlerContext { search: SearchRequestHandlerContext; } -// @public (undocumented) -export enum ES_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - BYTE = "byte", - // (undocumented) - DATE = "date", - // (undocumented) - DATE_NANOS = "date_nanos", - // (undocumented) - DATE_RANGE = "date_range", - // (undocumented) - DOUBLE = "double", - // (undocumented) - DOUBLE_RANGE = "double_range", - // (undocumented) - FLOAT = "float", - // (undocumented) - FLOAT_RANGE = "float_range", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - HALF_FLOAT = "half_float", - // (undocumented) - HISTOGRAM = "histogram", - // (undocumented) - _ID = "_id", - // (undocumented) - _INDEX = "_index", - // (undocumented) - INTEGER = "integer", - // (undocumented) - INTEGER_RANGE = "integer_range", - // (undocumented) - IP = "ip", - // (undocumented) - IP_RANGE = "ip_range", - // (undocumented) - KEYWORD = "keyword", - // (undocumented) - LONG = "long", - // (undocumented) - LONG_RANGE = "long_range", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - OBJECT = "object", - // (undocumented) - SCALED_FLOAT = "scaled_float", - // (undocumented) - SHORT = "short", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - TEXT = "text", - // (undocumented) - TOKEN_COUNT = "token_count", - // (undocumented) - _TYPE = "_type", - // (undocumented) - UNSIGNED_LONG = "unsigned_long", - // (undocumented) - VERSION = "version" -} +export { ES_FIELD_TYPES } // Warning: (ae-missing-release-tag) "ES_SEARCH_STRATEGY" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -465,8 +395,8 @@ export const esFilters: { buildEmptyFilter: (isPinned: boolean, index?: string | undefined) => import("@kbn/es-query").Filter; buildExistsFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").ExistsFilter; buildFilter: typeof import("@kbn/es-query").buildFilter; - buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: any, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; - buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: any[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; + buildPhraseFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, value: string | number | boolean, indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhraseFilter; + buildPhrasesFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: string[], indexPattern: import("@kbn/es-query").IndexPatternBase) => import("@kbn/es-query").PhrasesFilter; buildRangeFilter: (field: import("@kbn/es-query").IndexPatternFieldBase, params: import("@kbn/es-query").RangeFilterParams, indexPattern: import("@kbn/es-query").IndexPatternBase, formattedValue?: string | undefined) => import("@kbn/es-query").RangeFilter; isFilterDisabled: (filter: import("@kbn/es-query").Filter) => boolean; }; @@ -1081,47 +1011,7 @@ export interface ISearchStrategy Observable; } -// @public (undocumented) -export enum KBN_FIELD_TYPES { - // (undocumented) - ATTACHMENT = "attachment", - // (undocumented) - BOOLEAN = "boolean", - // (undocumented) - CONFLICT = "conflict", - // (undocumented) - DATE = "date", - // (undocumented) - DATE_RANGE = "date_range", - // (undocumented) - GEO_POINT = "geo_point", - // (undocumented) - GEO_SHAPE = "geo_shape", - // (undocumented) - HISTOGRAM = "histogram", - // (undocumented) - IP = "ip", - // (undocumented) - IP_RANGE = "ip_range", - // (undocumented) - MISSING = "missing", - // (undocumented) - MURMUR3 = "murmur3", - // (undocumented) - NESTED = "nested", - // (undocumented) - NUMBER = "number", - // (undocumented) - NUMBER_RANGE = "number_range", - // (undocumented) - OBJECT = "object", - // (undocumented) - _SOURCE = "_source", - // (undocumented) - STRING = "string", - // (undocumented) - UNKNOWN = "unknown" -} +export { KBN_FIELD_TYPES } // Warning: (ae-missing-release-tag) "KibanaContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/src/plugins/discover/public/__mocks__/index_pattern_with_timefield.ts b/src/plugins/discover/public/__mocks__/index_pattern_with_timefield.ts index f1c3c537dd5e1..0262bb942b8a5 100644 --- a/src/plugins/discover/public/__mocks__/index_pattern_with_timefield.ts +++ b/src/plugins/discover/public/__mocks__/index_pattern_with_timefield.ts @@ -71,6 +71,7 @@ const indexPattern = ({ getSourceFiltering: () => ({}), getFieldByName: (name: string) => fields.getByName(name), timeFieldName: 'timestamp', + getFormatterForField: () => ({ convert: () => 'formatted' }), } as unknown) as IndexPattern; indexPattern.flattenHit = indexPatterns.flattenHitWrapper(indexPattern, indexPattern.metaFields); diff --git a/src/plugins/discover/public/__mocks__/saved_search.ts b/src/plugins/discover/public/__mocks__/saved_search.ts index 6f48c56b0810e..c2d9bfeb1b4b5 100644 --- a/src/plugins/discover/public/__mocks__/saved_search.ts +++ b/src/plugins/discover/public/__mocks__/saved_search.ts @@ -9,6 +9,7 @@ import { SavedSearch } from '../saved_searches'; import { createSearchSourceMock } from '../../../data/public/mocks'; import { indexPatternMock } from './index_pattern'; +import { indexPatternWithTimefieldMock } from './index_pattern_with_timefield'; export const savedSearchMock = ({ id: 'the-saved-search-id', @@ -31,3 +32,25 @@ export const savedSearchMock = ({ error: undefined, searchSource: createSearchSourceMock({ index: indexPatternMock }), } as unknown) as SavedSearch; + +export const savedSearchMockWithTimeField = ({ + id: 'the-saved-search-id-with-timefield', + type: 'search', + attributes: { + title: 'the-saved-search-title', + kibanaSavedObjectMeta: { + searchSourceJSON: + '{"highlightAll":true,"version":true,"query":{"query":"foo : \\"bar\\" ","language":"kuery"},"filter":[],"indexRefName":"kibanaSavedObjectMeta.searchSourceJSON.index"}', + }, + }, + references: [ + { + name: 'kibanaSavedObjectMeta.searchSourceJSON.index', + type: 'index-pattern', + id: 'the-index-pattern-id', + }, + ], + migrationVersion: { search: '7.5.0' }, + error: undefined, + searchSource: createSearchSourceMock({ index: indexPatternWithTimefieldMock }), +} as unknown) as SavedSearch; diff --git a/src/plugins/discover/public/__mocks__/services.ts b/src/plugins/discover/public/__mocks__/services.ts index 8a047625303d2..e137955674457 100644 --- a/src/plugins/discover/public/__mocks__/services.ts +++ b/src/plugins/discover/public/__mocks__/services.ts @@ -5,10 +5,15 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import { EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; import { DiscoverServices } from '../build_services'; import { dataPluginMock } from '../../../data/public/mocks'; import { chromeServiceMock, coreMock, docLinksServiceMock } from '../../../../core/public/mocks'; -import { DEFAULT_COLUMNS_SETTING } from '../../common'; +import { + DEFAULT_COLUMNS_SETTING, + SAMPLE_SIZE_SETTING, + SORT_DEFAULT_ORDER_SETTING, +} from '../../common'; import { savedSearchMock } from './saved_search'; import { UI_SETTINGS } from '../../../data/common'; import { TopNavMenu } from '../../../navigation/public'; @@ -44,8 +49,15 @@ export const discoverServiceMock = ({ return []; } else if (key === UI_SETTINGS.META_FIELDS) { return []; + } else if (key === SAMPLE_SIZE_SETTING) { + return 250; + } else if (key === SORT_DEFAULT_ORDER_SETTING) { + return 'desc'; } }, + isDefault: (key: string) => { + return true; + }, }, indexPatternFieldEditor: { openEditor: jest.fn(), @@ -60,4 +72,8 @@ export const discoverServiceMock = ({ metadata: { branch: 'test', }, + theme: { + useChartsTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), + useChartsBaseTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), + }, } as unknown) as DiscoverServices; diff --git a/src/plugins/discover/public/application/angular/doc_table/components/table_header/table_header.test.tsx b/src/plugins/discover/public/application/angular/doc_table/components/table_header/table_header.test.tsx index 85980ab96b647..48ea7ffc46384 100644 --- a/src/plugins/discover/public/application/angular/doc_table/components/table_header/table_header.test.tsx +++ b/src/plugins/discover/public/application/angular/doc_table/components/table_header/table_header.test.tsx @@ -11,7 +11,7 @@ import { mountWithIntl } from '@kbn/test/jest'; import { TableHeader } from './table_header'; import { findTestSubject } from '@elastic/eui/lib/test'; import { SortOrder } from './helpers'; -import { IndexPattern, IFieldType } from '../../../../../kibana_services'; +import { IndexPattern, IndexPatternField } from '../../../../../kibana_services'; function getMockIndexPattern() { return ({ @@ -29,7 +29,7 @@ function getMockIndexPattern() { aggregatable: false, searchable: true, sortable: true, - } as IFieldType; + } as IndexPatternField; } else { return { name, @@ -38,7 +38,7 @@ function getMockIndexPattern() { aggregatable: false, searchable: true, sortable: false, - } as IFieldType; + } as IndexPatternField; } }, } as unknown) as IndexPattern; diff --git a/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx b/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx index 681418c1bd7cf..73a67310bf4be 100644 --- a/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx +++ b/src/plugins/discover/public/application/angular/doc_table/create_doc_table_react.tsx @@ -12,7 +12,7 @@ import React, { useRef, useEffect, useState, useCallback } from 'react'; import type { estypes } from '@elastic/elasticsearch'; import { EuiButtonEmpty } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import { getServices, IIndexPattern } from '../../../kibana_services'; +import { getServices, IndexPattern } from '../../../kibana_services'; import { IndexPatternField } from '../../../../../data/common'; import { SkipBottomButton } from '../../apps/main/components/skip_bottom_button'; @@ -22,7 +22,7 @@ export interface DocTableLegacyProps { searchTitle?: string; onFilter: (field: IndexPatternField | string, value: string, type: '+' | '-') => void; rows: estypes.SearchHit[]; - indexPattern: IIndexPattern; + indexPattern: IndexPattern; minimumVisibleRows?: number; onAddColumn?: (column: string) => void; onBackToTop: () => void; diff --git a/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.test.tsx b/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.test.tsx new file mode 100644 index 0000000000000..7a13f18997b86 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.test.tsx @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { Subject, BehaviorSubject } from 'rxjs'; +import { mountWithIntl } from '@kbn/test/jest'; +import { setHeaderActionMenuMounter } from '../../../../../kibana_services'; +import { esHits } from '../../../../../__mocks__/es_hits'; +import { savedSearchMock } from '../../../../../__mocks__/saved_search'; +import { createSearchSourceMock } from '../../../../../../../data/common/search/search_source/mocks'; +import { GetStateReturn } from '../../services/discover_state'; +import { DataCharts$, DataTotalHits$ } from '../../services/use_saved_search'; +import { discoverServiceMock } from '../../../../../__mocks__/services'; +import { FetchStatus } from '../../../../types'; +import { Chart } from './point_series'; +import { DiscoverChart } from './discover_chart'; + +setHeaderActionMenuMounter(jest.fn()); + +function getProps(timefield?: string) { + const searchSourceMock = createSearchSourceMock({}); + const services = discoverServiceMock; + services.data.query.timefilter.timefilter.getTime = () => { + return { from: '2020-05-14T11:05:13.590', to: '2020-05-14T11:20:13.590' }; + }; + + const totalHits$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: Number(esHits.length), + }) as DataTotalHits$; + + const chartData = ({ + xAxisOrderedValues: [ + 1623880800000, + 1623967200000, + 1624053600000, + 1624140000000, + 1624226400000, + 1624312800000, + 1624399200000, + 1624485600000, + 1624572000000, + 1624658400000, + 1624744800000, + 1624831200000, + 1624917600000, + 1625004000000, + 1625090400000, + ], + xAxisFormat: { id: 'date', params: { pattern: 'YYYY-MM-DD' } }, + xAxisLabel: 'order_date per day', + yAxisFormat: { id: 'number' }, + ordered: { + date: true, + interval: { + asMilliseconds: jest.fn(), + }, + intervalESUnit: 'd', + intervalESValue: 1, + min: '2021-03-18T08:28:56.411Z', + max: '2021-07-01T07:28:56.411Z', + }, + yAxisLabel: 'Count', + values: [ + { x: 1623880800000, y: 134 }, + { x: 1623967200000, y: 152 }, + { x: 1624053600000, y: 141 }, + { x: 1624140000000, y: 138 }, + { x: 1624226400000, y: 142 }, + { x: 1624312800000, y: 157 }, + { x: 1624399200000, y: 149 }, + { x: 1624485600000, y: 146 }, + { x: 1624572000000, y: 170 }, + { x: 1624658400000, y: 137 }, + { x: 1624744800000, y: 150 }, + { x: 1624831200000, y: 144 }, + { x: 1624917600000, y: 147 }, + { x: 1625004000000, y: 137 }, + { x: 1625090400000, y: 66 }, + ], + } as unknown) as Chart; + + const charts$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval: { + scaled: true, + description: 'test', + scale: 2, + }, + }) as DataCharts$; + + return { + isLegacy: false, + resetQuery: jest.fn(), + savedSearch: savedSearchMock, + savedSearchDataChart$: charts$, + savedSearchDataTotalHits$: totalHits$, + savedSearchRefetch$: new Subject(), + searchSource: searchSourceMock, + services, + state: { columns: [] }, + stateContainer: {} as GetStateReturn, + timefield, + }; +} + +describe('Discover chart', () => { + test('render without timefield', () => { + const component = mountWithIntl(); + expect(component.find('[data-test-subj="discoverChartToggle"]').exists()).toBeFalsy(); + }); + test('render with filefield', () => { + const component = mountWithIntl(); + expect(component.find('[data-test-subj="discoverChartToggle"]').exists()).toBeTruthy(); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.tsx b/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.tsx index f1967d5b10b3e..165f708bf7083 100644 --- a/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.tsx +++ b/src/plugins/discover/public/application/apps/main/components/chart/discover_chart.tsx @@ -5,48 +5,43 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import React, { useCallback, useEffect, useRef } from 'react'; +import React, { useCallback, useEffect, useRef, memo } from 'react'; import moment from 'moment'; import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty, EuiSpacer } from '@elastic/eui'; -import { IUiSettingsClient } from 'kibana/public'; import { i18n } from '@kbn/i18n'; import { HitsCounter } from '../hits_counter'; -import { DataPublicPluginStart, IndexPattern, search } from '../../../../../../../data/public'; +import { search } from '../../../../../../../data/public'; import { TimechartHeader } from '../timechart_header'; import { SavedSearch } from '../../../../../saved_searches'; import { AppState, GetStateReturn } from '../../services/discover_state'; -import { TimechartBucketInterval } from '../timechart_header/timechart_header'; -import { Chart as IChart } from './point_series'; import { DiscoverHistogram } from './histogram'; +import { DataCharts$, DataTotalHits$ } from '../../services/use_saved_search'; +import { DiscoverServices } from '../../../../../build_services'; -const TimechartHeaderMemoized = React.memo(TimechartHeader); -const DiscoverHistogramMemoized = React.memo(DiscoverHistogram); +const TimechartHeaderMemoized = memo(TimechartHeader); +const DiscoverHistogramMemoized = memo(DiscoverHistogram); export function DiscoverChart({ - config, - data, - bucketInterval, - chartData, - hits, isLegacy, resetQuery, savedSearch, + savedSearchDataChart$, + savedSearchDataTotalHits$, + services, state, stateContainer, timefield, }: { - config: IUiSettingsClient; - data: DataPublicPluginStart; - bucketInterval?: TimechartBucketInterval; - chartData?: IChart; - hits?: number; - indexPattern: IndexPattern; isLegacy: boolean; resetQuery: () => void; savedSearch: SavedSearch; + savedSearchDataChart$: DataCharts$; + savedSearchDataTotalHits$: DataTotalHits$; + services: DiscoverServices; state: AppState; stateContainer: GetStateReturn; timefield?: string; }) { + const { data, uiSettings: config } = services; const chartRef = useRef<{ element: HTMLElement | null; moveFocus: boolean }>({ element: null, moveFocus: false, @@ -93,7 +88,7 @@ export function DiscoverChart({ className="dscResuntCount__title eui-textTruncate eui-textNoWrap" > @@ -106,7 +101,7 @@ export function DiscoverChart({ options={search.aggs.intervalOptions} onChangeInterval={onChangeInterval} stateInterval={state.interval || ''} - bucketInterval={bucketInterval} + savedSearchData$={savedSearchDataChart$} /> )} @@ -130,7 +125,7 @@ export function DiscoverChart({ )} - {!state.hideChart && chartData && ( + {timefield && !state.hideChart && (

(chartRef.current.element = element)} @@ -145,8 +140,9 @@ export function DiscoverChart({ data-test-subj="discoverChart" >
diff --git a/src/plugins/discover/public/application/apps/main/components/chart/histogram.scss b/src/plugins/discover/public/application/apps/main/components/chart/histogram.scss new file mode 100644 index 0000000000000..10bec21a937ad --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/components/chart/histogram.scss @@ -0,0 +1,9 @@ +.dscChart__loading { + display: flex; + flex-direction: column; + justify-content: center; + flex: 1 0 100%; + text-align: center; + height: 100%; + width: 100%; +} diff --git a/src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx b/src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx index 92b212d5739b5..df63c4c94ae86 100644 --- a/src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx +++ b/src/plugins/discover/public/application/apps/main/components/chart/histogram.tsx @@ -5,45 +5,41 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - +import './histogram.scss'; import moment, { unitOfTime } from 'moment-timezone'; -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; +import React, { useCallback } from 'react'; +import { EuiLoadingChart, EuiSpacer, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; import { Axis, + BrushEndListener, Chart, + ElementClickListener, HistogramBarSeries, Position, ScaleType, Settings, TooltipType, - ElementClickListener, XYChartElementEvent, - BrushEndListener, - Theme, } from '@elastic/charts'; import { IUiSettingsClient } from 'kibana/public'; -import { EuiChartThemeType } from '@elastic/eui/dist/eui_charts_theme'; -import { Subscription, combineLatest } from 'rxjs'; -import { getServices } from '../../../../../kibana_services'; -import { Chart as IChart } from './point_series'; import { CurrentTime, Endzones, getAdjustedInterval, renderEndzoneTooltip, } from '../../../../../../../charts/public'; +import { DataCharts$, DataChartsMessage } from '../../services/use_saved_search'; +import { FetchStatus } from '../../../../types'; +import { DiscoverServices } from '../../../../../build_services'; +import { useDataState } from '../../utils/use_data_state'; export interface DiscoverHistogramProps { - chartData: IChart; + savedSearchData$: DataCharts$; timefilterUpdateHandler: (ranges: { from: number; to: number }) => void; -} - -interface DiscoverHistogramState { - chartsTheme: EuiChartThemeType['theme']; - chartsBaseTheme: Theme; + services: DiscoverServices; } function getTimezone(uiSettings: IUiSettingsClient) { @@ -56,154 +52,149 @@ function getTimezone(uiSettings: IUiSettingsClient) { } } -export class DiscoverHistogram extends Component { - public static propTypes = { - chartData: PropTypes.object, - timefilterUpdateHandler: PropTypes.func, - }; - - private subscription?: Subscription; - public state = { - chartsTheme: getServices().theme.chartsDefaultTheme, - chartsBaseTheme: getServices().theme.chartsDefaultBaseTheme, - }; - - componentDidMount() { - this.subscription = combineLatest([ - getServices().theme.chartsTheme$, - getServices().theme.chartsBaseTheme$, - ]).subscribe(([chartsTheme, chartsBaseTheme]) => - this.setState({ chartsTheme, chartsBaseTheme }) +export function DiscoverHistogram({ + savedSearchData$, + timefilterUpdateHandler, + services, +}: DiscoverHistogramProps) { + const chartTheme = services.theme.useChartsTheme(); + const chartBaseTheme = services.theme.useChartsBaseTheme(); + + const dataState: DataChartsMessage = useDataState(savedSearchData$); + + const uiSettings = services.uiSettings; + const timeZone = getTimezone(uiSettings); + const { chartData, fetchStatus } = dataState; + + const onBrushEnd: BrushEndListener = useCallback( + ({ x }) => { + if (!x) { + return; + } + const [from, to] = x; + timefilterUpdateHandler({ from, to }); + }, + [timefilterUpdateHandler] + ); + + const onElementClick = useCallback( + (xInterval: number): ElementClickListener => ([elementData]) => { + const startRange = (elementData as XYChartElementEvent)[0].x; + + const range = { + from: startRange, + to: startRange + xInterval, + }; + + timefilterUpdateHandler(range); + }, + [timefilterUpdateHandler] + ); + + if (!chartData && fetchStatus === FetchStatus.LOADING) { + return ( +
+ + + + + +
); } - componentWillUnmount() { - if (this.subscription) { - this.subscription.unsubscribe(); - } + if (!chartData) { + return null; } - public onBrushEnd: BrushEndListener = ({ x }) => { - if (!x) { - return; - } - const [from, to] = x; - this.props.timefilterUpdateHandler({ from, to }); + const formatXValue = (val: string) => { + const xAxisFormat = chartData.xAxisFormat.params!.pattern; + return moment(val).format(xAxisFormat); }; - public onElementClick = (xInterval: number): ElementClickListener => ([elementData]) => { - const startRange = (elementData as XYChartElementEvent)[0].x; - - const range = { - from: startRange, - to: startRange + xInterval, - }; - - this.props.timefilterUpdateHandler(range); + const data = chartData.values; + const isDarkMode = uiSettings.get('theme:darkMode'); + + /* + * Deprecation: [interval] on [date_histogram] is deprecated, use [fixed_interval] or [calendar_interval]. + * see https://github.com/elastic/kibana/issues/27410 + * TODO: Once the Discover query has been update, we should change the below to use the new field + */ + const { intervalESValue, intervalESUnit, interval } = chartData.ordered; + const xInterval = interval.asMilliseconds(); + + const xValues = chartData.xAxisOrderedValues; + const lastXValue = xValues[xValues.length - 1]; + + const domain = chartData.ordered; + const domainStart = domain.min.valueOf(); + const domainEnd = domain.max.valueOf(); + + const domainMin = Math.min(data[0]?.x, domainStart); + const domainMax = Math.max(domainEnd - xInterval, lastXValue); + + const xDomain = { + min: domainMin, + max: domainMax, + minInterval: getAdjustedInterval( + xValues, + intervalESValue, + intervalESUnit as unitOfTime.Base, + timeZone + ), }; - - public formatXValue = (val: string) => { - const xAxisFormat = this.props.chartData.xAxisFormat.params!.pattern; - - return moment(val).format(xAxisFormat); + const tooltipProps = { + headerFormatter: renderEndzoneTooltip(xInterval, domainStart, domainEnd, formatXValue), + type: TooltipType.VerticalCursor, }; - public render() { - const uiSettings = getServices().uiSettings; - const timeZone = getTimezone(uiSettings); - const { chartData } = this.props; - const { chartsTheme, chartsBaseTheme } = this.state; - - if (!chartData) { - return null; - } - - const data = chartData.values; - const isDarkMode = uiSettings.get('theme:darkMode'); - - /* - * Deprecation: [interval] on [date_histogram] is deprecated, use [fixed_interval] or [calendar_interval]. - * see https://github.com/elastic/kibana/issues/27410 - * TODO: Once the Discover query has been update, we should change the below to use the new field - */ - const { intervalESValue, intervalESUnit, interval } = chartData.ordered; - const xInterval = interval.asMilliseconds(); - - const xValues = chartData.xAxisOrderedValues; - const lastXValue = xValues[xValues.length - 1]; - - const domain = chartData.ordered; - const domainStart = domain.min.valueOf(); - const domainEnd = domain.max.valueOf(); - - const domainMin = Math.min(data[0]?.x, domainStart); - const domainMax = Math.max(domainEnd - xInterval, lastXValue); - - const xDomain = { - min: domainMin, - max: domainMax, - minInterval: getAdjustedInterval( - xValues, - intervalESValue, - intervalESUnit as unitOfTime.Base, - timeZone - ), - }; - const tooltipProps = { - headerFormatter: renderEndzoneTooltip(xInterval, domainStart, domainEnd, this.formatXValue), - type: TooltipType.VerticalCursor, - }; - - const xAxisFormatter = getServices().data.fieldFormats.deserialize( - this.props.chartData.yAxisFormat - ); - - return ( - - - xAxisFormatter.convert(value)} - /> - - - - - - ); - } + const xAxisFormatter = services.data.fieldFormats.deserialize(chartData.yAxisFormat); + + return ( + + + xAxisFormatter.convert(value)} + /> + + + + + + ); } diff --git a/src/plugins/discover/public/application/apps/main/components/chart/point_series.test.ts b/src/plugins/discover/public/application/apps/main/components/chart/point_series.test.ts new file mode 100644 index 0000000000000..37fa894f7f671 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/components/chart/point_series.test.ts @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { buildPointSeriesData } from './point_series'; +import moment from 'moment'; +import { Unit } from '@elastic/datemath'; + +describe('buildPointSeriesData', () => { + test('with valid data', () => { + const table = { + type: 'datatable', + columns: [ + { + id: 'col-0-2', + name: 'order_date per 30 days', + meta: { + type: 'date', + field: 'order_date', + index: 'kibana_sample_data_ecommerce', + params: { id: 'date', params: { pattern: 'YYYY-MM-DD' } }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + id: '2', + enabled: true, + type: 'date_histogram', + params: { + field: 'order_date', + timeRange: { from: 'now-15y', to: 'now' }, + useNormalizedEsInterval: true, + scaleMetricValues: false, + interval: 'auto', + used_interval: '30d', + drop_partials: false, + min_doc_count: 1, + extended_bounds: {}, + }, + schema: 'segment', + }, + }, + }, + { + id: 'col-1-1', + name: 'Count', + meta: { + type: 'number', + index: 'kibana_sample_data_ecommerce', + params: { id: 'number' }, + source: 'esaggs', + sourceParams: { + indexPatternId: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + id: '1', + enabled: true, + type: 'count', + params: {}, + schema: 'metric', + }, + }, + }, + ], + rows: [{ 'col-0-2': 1625176800000, 'col-1-1': 2139 }], + }; + const dimensions = { + x: { + accessor: 0, + label: 'order_date per 30 days', + format: { id: 'date', params: { pattern: 'YYYY-MM-DD' } }, + params: { + date: true, + interval: moment.duration(30, 'd'), + intervalESValue: 30, + intervalESUnit: 'd' as Unit, + format: 'YYYY-MM-DD', + bounds: { + min: moment('2006-07-29T11:08:13.078Z'), + max: moment('2021-07-29T11:08:13.078Z'), + }, + }, + }, + y: { accessor: 1, format: { id: 'number' }, label: 'Count' }, + } as const; + expect(buildPointSeriesData(table, dimensions)).toMatchInlineSnapshot(` + Object { + "ordered": Object { + "date": true, + "interval": "P30D", + "intervalESUnit": "d", + "intervalESValue": 30, + "max": "2021-07-29T11:08:13.078Z", + "min": "2006-07-29T11:08:13.078Z", + }, + "values": Array [ + Object { + "x": 1625176800000, + "y": 2139, + }, + ], + "xAxisFormat": Object { + "id": "date", + "params": Object { + "pattern": "YYYY-MM-DD", + }, + }, + "xAxisLabel": "order_date per 30 days", + "xAxisOrderedValues": Array [ + 1625176800000, + ], + "yAxisFormat": Object { + "id": "number", + }, + "yAxisLabel": "Count", + } + `); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.test.tsx b/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.test.tsx index 6434863dfc416..02644fbf507dd 100644 --- a/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.test.tsx @@ -11,6 +11,9 @@ import { mountWithIntl } from '@kbn/test/jest'; import { ReactWrapper } from 'enzyme'; import { HitsCounter, HitsCounterProps } from './hits_counter'; import { findTestSubject } from '@elastic/eui/lib/test'; +import { BehaviorSubject } from 'rxjs'; +import { FetchStatus } from '../../../../types'; +import { DataTotalHits$ } from '../../services/use_saved_search'; describe('hits counter', function () { let props: HitsCounterProps; @@ -20,7 +23,10 @@ describe('hits counter', function () { props = { onResetQuery: jest.fn(), showResetButton: true, - hits: 2, + savedSearchData$: new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: 2, + }) as DataTotalHits$, }; }); @@ -30,9 +36,7 @@ describe('hits counter', function () { }); it('HitsCounter not renders a button when the showResetButton property is false', () => { - component = mountWithIntl( - - ); + component = mountWithIntl(); expect(findTestSubject(component, 'resetSavedSearch').length).toBe(0); }); @@ -43,8 +47,17 @@ describe('hits counter', function () { }); it('expect to render 1,899 hits if 1899 hits given', function () { + const data$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: 1899, + }) as DataTotalHits$; component = mountWithIntl( - + ); const hits = findTestSubject(component, 'discoverQueryHits'); expect(hits.text()).toBe('1,899'); diff --git a/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.tsx b/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.tsx index 0850a8ff03d96..ab6617cbe79de 100644 --- a/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.tsx +++ b/src/plugins/discover/public/application/apps/main/components/hits_counter/hits_counter.tsx @@ -7,18 +7,21 @@ */ import './hits_counter.scss'; - import React from 'react'; -import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiText, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { FormattedMessage, FormattedNumber } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { formatNumWithCommas } from '../../../../helpers'; +import { DataTotalHits$, DataTotalHitsMsg } from '../../services/use_saved_search'; +import { FetchStatus } from '../../../../types'; +import { useDataState } from '../../utils/use_data_state'; export interface HitsCounterProps { - /** - * the number of query hits - */ - hits?: number; /** * displays the reset button */ @@ -27,52 +30,81 @@ export interface HitsCounterProps { * resets the query */ onResetQuery: () => void; + /** + * saved search data observable + */ + savedSearchData$: DataTotalHits$; } -export function HitsCounter({ hits, showResetButton, onResetQuery }: HitsCounterProps) { - if (typeof hits === 'undefined') { +export function HitsCounter({ showResetButton, onResetQuery, savedSearchData$ }: HitsCounterProps) { + const data: DataTotalHitsMsg = useDataState(savedSearchData$); + + const hits = data.result || 0; + if (!hits && data.fetchStatus === FetchStatus.LOADING) { return null; } + + const formattedHits = ( + + + + ); + return ( - - - - - {formatNumWithCommas(hits)}{' '} + + + + {data.fetchStatus === FetchStatus.PARTIAL && ( + + )} + {data.fetchStatus !== FetchStatus.PARTIAL && ( - + )} + + + {data.fetchStatus === FetchStatus.PARTIAL && ( + + + + )} + {showResetButton && ( + + + + - {showResetButton && ( - - - - - - )} - - + )} + ); } diff --git a/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.test.tsx b/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.test.tsx new file mode 100644 index 0000000000000..1136b693c9e74 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.test.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { BehaviorSubject } from 'rxjs'; +import { mountWithIntl } from '@kbn/test/jest'; +import { setHeaderActionMenuMounter } from '../../../../../kibana_services'; +import { esHits } from '../../../../../__mocks__/es_hits'; +import { savedSearchMock } from '../../../../../__mocks__/saved_search'; +import { GetStateReturn } from '../../services/discover_state'; +import { DataDocuments$ } from '../../services/use_saved_search'; +import { discoverServiceMock } from '../../../../../__mocks__/services'; +import { FetchStatus } from '../../../../types'; +import { DiscoverDocuments } from './discover_documents'; +import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; +import { indexPatternMock } from '../../../../../__mocks__/index_pattern'; + +setHeaderActionMenuMounter(jest.fn()); + +function getProps(fetchStatus: FetchStatus, hits: ElasticSearchHit[]) { + const services = discoverServiceMock; + services.data.query.timefilter.timefilter.getTime = () => { + return { from: '2020-05-14T11:05:13.590', to: '2020-05-14T11:20:13.590' }; + }; + + const documents$ = new BehaviorSubject({ + fetchStatus, + result: hits, + }) as DataDocuments$; + + return { + expandedDoc: undefined, + indexPattern: indexPatternMock, + isMobile: jest.fn(() => false), + onAddFilter: jest.fn(), + savedSearch: savedSearchMock, + documents$, + searchSource: documents$, + services, + setExpandedDoc: jest.fn(), + state: { columns: [] }, + stateContainer: {} as GetStateReturn, + navigateTo: jest.fn(), + }; +} + +describe('Discover documents layout', () => { + test('render loading when loading and no documents', () => { + const component = mountWithIntl(); + expect(component.find('.dscDocuments__loading').exists()).toBeTruthy(); + expect(component.find('.dscTable').exists()).toBeFalsy(); + }); + + test('render complete when loading but documents were already fetched', () => { + const component = mountWithIntl( + + ); + expect(component.find('.dscDocuments__loading').exists()).toBeFalsy(); + expect(component.find('.dscTable').exists()).toBeTruthy(); + }); + + test('render complete', () => { + const component = mountWithIntl( + + ); + expect(component.find('.dscDocuments__loading').exists()).toBeFalsy(); + expect(component.find('.dscTable').exists()).toBeTruthy(); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.tsx new file mode 100644 index 0000000000000..13cf021ff2573 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/components/layout/discover_documents.tsx @@ -0,0 +1,194 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React, { useRef, useMemo, useCallback, memo } from 'react'; +import { EuiFlexItem, EuiSpacer, EuiText, EuiLoadingSpinner } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { DocTableLegacy } from '../../../../angular/doc_table/create_doc_table_react'; +import { SortPairArr } from '../../../../angular/doc_table/lib/get_sort'; +import { DocViewFilterFn, ElasticSearchHit } from '../../../../doc_views/doc_views_types'; +import { DiscoverGrid } from '../../../../components/discover_grid/discover_grid'; +import { FetchStatus } from '../../../../types'; +import { + DOC_HIDE_TIME_COLUMN_SETTING, + DOC_TABLE_LEGACY, + SAMPLE_SIZE_SETTING, + SEARCH_FIELDS_FROM_SOURCE, +} from '../../../../../../common'; +import { useDataGridColumns } from '../../../../helpers/use_data_grid_columns'; +import { IndexPattern } from '../../../../../../../data/common'; +import { SavedSearch } from '../../../../../saved_searches'; +import { DataDocumentsMsg, DataDocuments$ } from '../../services/use_saved_search'; +import { DiscoverServices } from '../../../../../build_services'; +import { AppState, GetStateReturn } from '../../services/discover_state'; +import { useDataState } from '../../utils/use_data_state'; + +const DocTableLegacyMemoized = React.memo(DocTableLegacy); +const DataGridMemoized = React.memo(DiscoverGrid); + +function DiscoverDocumentsComponent({ + documents$, + expandedDoc, + indexPattern, + isMobile, + onAddFilter, + savedSearch, + services, + setExpandedDoc, + state, + stateContainer, +}: { + documents$: DataDocuments$; + expandedDoc?: ElasticSearchHit; + indexPattern: IndexPattern; + isMobile: () => boolean; + navigateTo: (url: string) => void; + onAddFilter: DocViewFilterFn; + savedSearch: SavedSearch; + services: DiscoverServices; + setExpandedDoc: (doc: ElasticSearchHit | undefined) => void; + state: AppState; + stateContainer: GetStateReturn; +}) { + const { capabilities, indexPatterns, uiSettings } = services; + const useNewFieldsApi = useMemo(() => !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE), [uiSettings]); + + const scrollableDesktop = useRef(null); + const isLegacy = useMemo(() => uiSettings.get(DOC_TABLE_LEGACY), [uiSettings]); + const sampleSize = useMemo(() => uiSettings.get(SAMPLE_SIZE_SETTING), [uiSettings]); + + const documentState: DataDocumentsMsg = useDataState(documents$); + + const rows = useMemo(() => documentState.result || [], [documentState.result]); + + const { columns, onAddColumn, onRemoveColumn, onMoveColumn, onSetColumns } = useDataGridColumns({ + capabilities, + config: uiSettings, + indexPattern, + indexPatterns, + setAppState: stateContainer.setAppState, + state, + useNewFieldsApi, + }); + + /** + * Legacy function, remove once legacy grid is removed + */ + const onBackToTop = useCallback(() => { + if (scrollableDesktop && scrollableDesktop.current) { + scrollableDesktop.current.focus(); + } + // Only the desktop one needs to target a specific container + if (!isMobile() && scrollableDesktop.current) { + scrollableDesktop.current.scrollTo(0, 0); + } else if (window) { + window.scrollTo(0, 0); + } + }, [scrollableDesktop, isMobile]); + + const onResize = useCallback( + (colSettings: { columnId: string; width: number }) => { + const grid = { ...state.grid } || {}; + const newColumns = { ...grid.columns } || {}; + newColumns[colSettings.columnId] = { + width: colSettings.width, + }; + const newGrid = { ...grid, columns: newColumns }; + stateContainer.setAppState({ grid: newGrid }); + }, + [stateContainer, state] + ); + + const onSort = useCallback( + (sort: string[][]) => { + stateContainer.setAppState({ sort }); + }, + [stateContainer] + ); + + const showTimeCol = useMemo( + () => !uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false) && !!indexPattern.timeFieldName, + [uiSettings, indexPattern.timeFieldName] + ); + + if ( + (!documentState.result || documentState.result.length === 0) && + documentState.fetchStatus === FetchStatus.LOADING + ) { + return ( +
+ + + + + +
+ ); + } + + return ( + +
+

+ +

+ {isLegacy && rows && rows.length && ( + + )} + {!isLegacy && ( +
+ +
+ )} +
+
+ ); +} + +export const DiscoverDocuments = memo(DiscoverDocumentsComponent); diff --git a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.scss b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.scss index 8ca11e9e044e8..b3a4453425ac5 100644 --- a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.scss +++ b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.scss @@ -103,3 +103,12 @@ discover-app { padding: $euiSizeXS $euiSizeS; text-align: center; } + +.dscDocuments__loading { + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + height: 100%; + width: 100%; +} diff --git a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.test.tsx b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.test.tsx index 57a9d518f838e..7343760f32d13 100644 --- a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.test.tsx @@ -20,9 +20,17 @@ import { SavedObject } from '../../../../../../../../core/types'; import { indexPatternWithTimefieldMock } from '../../../../../__mocks__/index_pattern_with_timefield'; import { GetStateReturn } from '../../services/discover_state'; import { DiscoverLayoutProps } from './types'; -import { SavedSearchDataSubject } from '../../services/use_saved_search'; +import { + DataCharts$, + DataDocuments$, + DataMain$, + DataTotalHits$, +} from '../../services/use_saved_search'; import { discoverServiceMock } from '../../../../../__mocks__/services'; import { FetchStatus } from '../../../../types'; +import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; +import { RequestAdapter } from '../../../../../../../inspector'; +import { Chart } from '../chart/point_series'; setHeaderActionMenuMounter(jest.fn()); @@ -37,23 +45,99 @@ function getProps(indexPattern: IndexPattern): DiscoverLayoutProps { return { ...ip, ...{ attributes: { title: ip.title } } }; }) as unknown) as Array>; - const savedSearch$ = new BehaviorSubject({ - state: FetchStatus.COMPLETE, - rows: esHits, - fetchCounter: 1, - fieldCounts: {}, - hits: Number(esHits.length), - }) as SavedSearchDataSubject; + const main$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + foundDocuments: true, + }) as DataMain$; + + const documents$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: esHits as ElasticSearchHit[], + }) as DataDocuments$; + + const totalHits$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: Number(esHits.length), + }) as DataTotalHits$; + + const chartData = ({ + xAxisOrderedValues: [ + 1623880800000, + 1623967200000, + 1624053600000, + 1624140000000, + 1624226400000, + 1624312800000, + 1624399200000, + 1624485600000, + 1624572000000, + 1624658400000, + 1624744800000, + 1624831200000, + 1624917600000, + 1625004000000, + 1625090400000, + ], + xAxisFormat: { id: 'date', params: { pattern: 'YYYY-MM-DD' } }, + xAxisLabel: 'order_date per day', + yAxisFormat: { id: 'number' }, + ordered: { + date: true, + interval: { + asMilliseconds: jest.fn(), + }, + intervalESUnit: 'd', + intervalESValue: 1, + min: '2021-03-18T08:28:56.411Z', + max: '2021-07-01T07:28:56.411Z', + }, + yAxisLabel: 'Count', + values: [ + { x: 1623880800000, y: 134 }, + { x: 1623967200000, y: 152 }, + { x: 1624053600000, y: 141 }, + { x: 1624140000000, y: 138 }, + { x: 1624226400000, y: 142 }, + { x: 1624312800000, y: 157 }, + { x: 1624399200000, y: 149 }, + { x: 1624485600000, y: 146 }, + { x: 1624572000000, y: 170 }, + { x: 1624658400000, y: 137 }, + { x: 1624744800000, y: 150 }, + { x: 1624831200000, y: 144 }, + { x: 1624917600000, y: 147 }, + { x: 1625004000000, y: 137 }, + { x: 1625090400000, y: 66 }, + ], + } as unknown) as Chart; + + const charts$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval: { + scaled: true, + description: 'test', + scale: 2, + }, + }) as DataCharts$; + + const savedSearchData$ = { + main$, + documents$, + totalHits$, + charts$, + }; return { indexPattern, indexPatternList, + inspectorAdapters: { requests: new RequestAdapter() }, navigateTo: jest.fn(), onChangeIndexPattern: jest.fn(), onUpdateQuery: jest.fn(), resetQuery: jest.fn(), savedSearch: savedSearchMock, - savedSearchData$: savedSearch$, + savedSearchData$, savedSearchRefetch$: new Subject(), searchSource: searchSourceMock, services, diff --git a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx index 8cc3be810a7ee..785cde6fd311d 100644 --- a/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx +++ b/src/plugins/discover/public/application/apps/main/components/layout/discover_layout.tsx @@ -20,11 +20,10 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { METRIC_TYPE } from '@kbn/analytics'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; +import { I18nProvider } from '@kbn/i18n/react'; import classNames from 'classnames'; import { DiscoverNoResults } from '../no_results'; import { LoadingSpinner } from '../loading_spinner/loading_spinner'; -import { DocTableLegacy } from '../../../../angular/doc_table/create_doc_table_react'; import { esFilters, IndexPatternField, @@ -32,42 +31,28 @@ import { } from '../../../../../../../data/public'; import { DiscoverSidebarResponsive } from '../sidebar'; import { DiscoverLayoutProps } from './types'; -import { SortPairArr } from '../../../../angular/doc_table/lib/get_sort'; -import { - DOC_HIDE_TIME_COLUMN_SETTING, - DOC_TABLE_LEGACY, - SAMPLE_SIZE_SETTING, - SEARCH_FIELDS_FROM_SOURCE, -} from '../../../../../../common'; +import { DOC_TABLE_LEGACY, SEARCH_FIELDS_FROM_SOURCE } from '../../../../../../common'; import { popularizeField } from '../../../../helpers/popularize_field'; -import { DocViewFilterFn } from '../../../../doc_views/doc_views_types'; -import { DiscoverGrid } from '../../../../components/discover_grid/discover_grid'; import { DiscoverTopNav } from '../top_nav/discover_topnav'; -import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; +import { DocViewFilterFn, ElasticSearchHit } from '../../../../doc_views/doc_views_types'; import { DiscoverChart } from '../chart'; import { getResultState } from '../../utils/get_result_state'; import { InspectorSession } from '../../../../../../../inspector/public'; import { DiscoverUninitialized } from '../uninitialized/uninitialized'; -import { SavedSearchDataMessage } from '../../services/use_saved_search'; +import { DataMainMsg } from '../../services/use_saved_search'; import { useDataGridColumns } from '../../../../helpers/use_data_grid_columns'; +import { DiscoverDocuments } from './discover_documents'; import { FetchStatus } from '../../../../types'; +import { useDataState } from '../../utils/use_data_state'; -const DocTableLegacyMemoized = React.memo(DocTableLegacy); const SidebarMemoized = React.memo(DiscoverSidebarResponsive); -const DataGridMemoized = React.memo(DiscoverGrid); const TopNavMemoized = React.memo(DiscoverTopNav); const DiscoverChartMemoized = React.memo(DiscoverChart); -interface DiscoverLayoutFetchState extends SavedSearchDataMessage { - state: FetchStatus; - fetchCounter: number; - fieldCounts: Record; - rows: ElasticSearchHit[]; -} - export function DiscoverLayout({ indexPattern, indexPatternList, + inspectorAdapters, navigateTo, onChangeIndexPattern, onUpdateQuery, @@ -82,38 +67,22 @@ export function DiscoverLayout({ }: DiscoverLayoutProps) { const { trackUiMetric, capabilities, indexPatterns, data, uiSettings, filterManager } = services; - const sampleSize = useMemo(() => uiSettings.get(SAMPLE_SIZE_SETTING), [uiSettings]); const [expandedDoc, setExpandedDoc] = useState(undefined); const [inspectorSession, setInspectorSession] = useState(undefined); - const scrollableDesktop = useRef(null); const collapseIcon = useRef(null); + const fetchCounter = useRef(0); + const { main$, charts$, totalHits$ } = savedSearchData$; - const [fetchState, setFetchState] = useState({ - state: savedSearchData$.getValue().state, - fetchCounter: 0, - fieldCounts: {}, - rows: [], - }); - const { state: fetchStatus, fetchCounter, inspectorAdapters, rows } = fetchState; + const dataState: DataMainMsg = useDataState(main$); useEffect(() => { - const subscription = savedSearchData$.subscribe((next) => { - if ( - (next.state && next.state !== fetchState.state) || - (next.fetchCounter && next.fetchCounter !== fetchState.fetchCounter) || - (next.rows && next.rows !== fetchState.rows) || - (next.chartData && next.chartData !== fetchState.chartData) - ) { - setFetchState({ ...fetchState, ...next }); - } - }); - return () => { - subscription.unsubscribe(); - }; - }, [savedSearchData$, fetchState]); + if (dataState.fetchStatus === FetchStatus.LOADING) { + fetchCounter.current++; + } + }, [dataState.fetchStatus]); // collapse icon isn't displayed in mobile view, use it to detect which view is displayed - const isMobile = () => collapseIcon && !collapseIcon.current; + const isMobile = useCallback(() => collapseIcon && !collapseIcon.current, []); const timeField = useMemo(() => { return indexPatternsUtils.isDefault(indexPattern) ? indexPattern.timeFieldName : undefined; }, [indexPattern]); @@ -122,27 +91,18 @@ export function DiscoverLayout({ const isLegacy = useMemo(() => uiSettings.get(DOC_TABLE_LEGACY), [uiSettings]); const useNewFieldsApi = useMemo(() => !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE), [uiSettings]); - const resultState = useMemo(() => getResultState(fetchStatus, rows!), [fetchStatus, rows]); - - const { columns, onAddColumn, onRemoveColumn, onMoveColumn, onSetColumns } = useDataGridColumns({ - capabilities, - config: uiSettings, - indexPattern, - indexPatterns, - setAppState: stateContainer.setAppState, - state, - useNewFieldsApi, - }); + const resultState = useMemo( + () => getResultState(dataState.fetchStatus, dataState.foundDocuments!), + [dataState.fetchStatus, dataState.foundDocuments] + ); const onOpenInspector = useCallback(() => { // prevent overlapping - if (inspectorAdapters) { - setExpandedDoc(undefined); - const session = services.inspector.open(inspectorAdapters, { - title: savedSearch.title, - }); - setInspectorSession(session); - } + setExpandedDoc(undefined); + const session = services.inspector.open(inspectorAdapters, { + title: savedSearch.title, + }); + setInspectorSession(session); }, [setExpandedDoc, inspectorAdapters, savedSearch, services.inspector]); useEffect(() => { @@ -154,12 +114,15 @@ export function DiscoverLayout({ }; }, [inspectorSession]); - const onSort = useCallback( - (sort: string[][]) => { - stateContainer.setAppState({ sort }); - }, - [stateContainer] - ); + const { columns, onAddColumn, onRemoveColumn } = useDataGridColumns({ + capabilities, + config: uiSettings, + indexPattern, + indexPatterns, + setAppState: stateContainer.setAppState, + state, + useNewFieldsApi, + }); const onAddFilter = useCallback( (field: IndexPatternField | string, values: string, operation: '+' | '-') => { @@ -179,33 +142,6 @@ export function DiscoverLayout({ }, [filterManager, indexPattern, indexPatterns, trackUiMetric] ); - /** - * Legacy function, remove once legacy grid is removed - */ - const onBackToTop = useCallback(() => { - if (scrollableDesktop && scrollableDesktop.current) { - scrollableDesktop.current.focus(); - } - // Only the desktop one needs to target a specific container - if (!isMobile() && scrollableDesktop.current) { - scrollableDesktop.current.scrollTo(0, 0); - } else if (window) { - window.scrollTo(0, 0); - } - }, [scrollableDesktop]); - - const onResize = useCallback( - (colSettings: { columnId: string; width: number }) => { - const grid = { ...state.grid } || {}; - const newColumns = { ...grid.columns } || {}; - newColumns[colSettings.columnId] = { - width: colSettings.width, - }; - const newGrid = { ...grid, columns: newColumns }; - stateContainer.setAppState({ grid: newGrid }); - }, - [stateContainer, state] - ); const onEditRuntimeField = useCallback(() => { savedSearchRefetch$.next('reset'); @@ -219,14 +155,10 @@ export function DiscoverLayout({ }, [filterManager]); const contentCentered = resultState === 'uninitialized' || resultState === 'none'; - const showTimeCol = useMemo( - () => !uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false) && !!indexPattern.timeFieldName, - [uiSettings, indexPattern.timeFieldName] - ); return ( - + !f.meta.disabled).length > 0 @@ -320,82 +251,31 @@ export function DiscoverLayout({ > - - -
-

- -

- {isLegacy && rows && rows.length && ( - - )} - {!isLegacy && rows && rows.length && ( -
- -
- )} -
-
+ )} diff --git a/src/plugins/discover/public/application/apps/main/components/layout/types.ts b/src/plugins/discover/public/application/apps/main/components/layout/types.ts index 04744c56d14d4..03d4471db94b6 100644 --- a/src/plugins/discover/public/application/apps/main/components/layout/types.ts +++ b/src/plugins/discover/public/application/apps/main/components/layout/types.ts @@ -15,20 +15,22 @@ import { } from '../../../../../../../data/common'; import { ISearchSource } from '../../../../../../../data/public'; import { AppState, GetStateReturn } from '../../services/discover_state'; -import { SavedSearchRefetchSubject, SavedSearchDataSubject } from '../../services/use_saved_search'; +import { DataRefetch$, SavedSearchData } from '../../services/use_saved_search'; import { DiscoverServices } from '../../../../../build_services'; import { SavedSearch } from '../../../../../saved_searches'; +import { RequestAdapter } from '../../../../../../../inspector'; export interface DiscoverLayoutProps { indexPattern: IndexPattern; indexPatternList: Array>; + inspectorAdapters: { requests: RequestAdapter }; navigateTo: (url: string) => void; onChangeIndexPattern: (id: string) => void; onUpdateQuery: (payload: { dateRange: TimeRange; query?: Query }, isUpdate?: boolean) => void; resetQuery: () => void; savedSearch: SavedSearch; - savedSearchData$: SavedSearchDataSubject; - savedSearchRefetch$: SavedSearchRefetchSubject; + savedSearchData$: SavedSearchData; + savedSearchRefetch$: DataRefetch$; searchSource: ISearchSource; services: DiscoverServices; state: AppState; diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx index 304ab05516f92..1e00e81f788e6 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.test.tsx @@ -63,7 +63,7 @@ function getCompProps(): DiscoverSidebarProps { return { columns: ['extension'], fieldCounts, - hits, + documents: hits, indexPatternList, onChangeIndexPattern: jest.fn(), onAddFilter: jest.fn(), diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.tsx index 7f8866a2ee369..938b0a49b29a7 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar.tsx @@ -36,13 +36,14 @@ import { FieldFilterState, getDefaultFieldFilter, setFieldFilterProp } from './l import { getIndexPatternFieldList } from './lib/get_index_pattern_field_list'; import { DiscoverSidebarResponsiveProps } from './discover_sidebar_responsive'; import { DiscoverIndexPatternManagement } from './discover_index_pattern_management'; +import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; /** * Default number of available fields displayed and added on scroll */ const FIELDS_PER_PAGE = 50; -export interface DiscoverSidebarProps extends DiscoverSidebarResponsiveProps { +export interface DiscoverSidebarProps extends Omit { /** * Current state of the field filter, filtering fields by name, type, ... */ @@ -64,6 +65,15 @@ export interface DiscoverSidebarProps extends DiscoverSidebarResponsiveProps { setFieldEditorRef?: (ref: () => void | undefined) => void; editField: (fieldName?: string) => void; + + /** + * a statistics of the distribution of fields in the given hits + */ + fieldCounts: Record; + /** + * hits fetched from ES, displayed in the doc table + */ + documents: ElasticSearchHit[]; } export function DiscoverSidebar({ @@ -71,7 +81,7 @@ export function DiscoverSidebar({ columns, fieldCounts, fieldFilter, - hits, + documents, indexPatternList, onAddField, onAddFilter, @@ -101,7 +111,7 @@ export function DiscoverSidebar({ useEffect(() => { const newFields = getIndexPatternFieldList(selectedIndexPattern, fieldCounts); setFields(newFields); - }, [selectedIndexPattern, fieldCounts, hits]); + }, [selectedIndexPattern, fieldCounts, documents]); const scrollDimensions = useResizeObserver(scrollContainer); @@ -115,8 +125,8 @@ export function DiscoverSidebar({ ); const getDetailsByField = useCallback( - (ipField: IndexPatternField) => getDetails(ipField, hits, columns, selectedIndexPattern), - [hits, columns, selectedIndexPattern] + (ipField: IndexPatternField) => getDetails(ipField, documents, columns, selectedIndexPattern), + [documents, columns, selectedIndexPattern] ); const popularLimit = useMemo(() => services.uiSettings.get(FIELDS_LIMIT_SETTING), [ diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx index 6973221fd3624..32f7656c73762 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.test.tsx @@ -7,6 +7,7 @@ */ import { each, cloneDeep } from 'lodash'; +import { BehaviorSubject } from 'rxjs'; import { ReactWrapper } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; // @ts-expect-error @@ -25,6 +26,8 @@ import { } from './discover_sidebar_responsive'; import { DiscoverServices } from '../../../../../build_services'; import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; +import { FetchStatus } from '../../../../types'; +import { DataDocuments$ } from '../../services/use_saved_search'; const mockServices = ({ history: () => ({ @@ -86,8 +89,10 @@ function getCompProps(): DiscoverSidebarResponsiveProps { } return { columns: ['extension'], - fieldCounts, - hits, + documents$: new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + result: hits as ElasticSearchHit[], + }) as DataDocuments$, indexPatternList, onChangeIndexPattern: jest.fn(), onAddFilter: jest.fn(), diff --git a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx index 003bb22599e48..bbc2328e057d3 100644 --- a/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/apps/main/components/sidebar/discover_sidebar_responsive.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import React, { useEffect, useRef, useState } from 'react'; +import React, { useEffect, useRef, useState, useCallback } from 'react'; import { sortBy } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -33,9 +33,10 @@ import { IndexPatternField, IndexPattern } from '../../../../../../../data/publi import { getDefaultFieldFilter } from './lib/field_filter'; import { DiscoverSidebar } from './discover_sidebar'; import { DiscoverServices } from '../../../../../build_services'; -import { ElasticSearchHit } from '../../../../doc_views/doc_views_types'; import { AppState } from '../../services/discover_state'; import { DiscoverIndexPatternManagement } from './discover_index_pattern_management'; +import { DataDocuments$ } from '../../services/use_saved_search'; +import { calcFieldCounts } from '../../utils/calc_field_counts'; export interface DiscoverSidebarResponsiveProps { /** @@ -46,14 +47,10 @@ export interface DiscoverSidebarResponsiveProps { * the selected columns displayed in the doc table in discover */ columns: string[]; - /** - * a statistics of the distribution of fields in the given hits - */ - fieldCounts: Record; /** * hits fetched from ES, displayed in the doc table */ - hits: ElasticSearchHit[]; + documents$: DataDocuments$; /** * List of available index patterns */ @@ -119,6 +116,36 @@ export interface DiscoverSidebarResponsiveProps { export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) { const [fieldFilter, setFieldFilter] = useState(getDefaultFieldFilter()); const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + /** + * needed for merging new with old field counts, high likely legacy, but kept this behavior + * because not 100% sure in this case + */ + const fieldCounts = useRef>( + calcFieldCounts({}, props.documents$.getValue().result, props.selectedIndexPattern) + ); + + const [documentState, setDocumentState] = useState(props.documents$.getValue()); + useEffect(() => { + const subscription = props.documents$.subscribe((next) => { + if (next.fetchStatus !== documentState.fetchStatus) { + if (next.result) { + fieldCounts.current = calcFieldCounts( + next.result.length ? fieldCounts.current : {}, + next.result, + props.selectedIndexPattern! + ); + } + setDocumentState({ ...documentState, ...next }); + } + }); + return () => subscription.unsubscribe(); + }, [props.documents$, props.selectedIndexPattern, documentState, setDocumentState]); + + useEffect(() => { + // when index pattern changes fieldCounts needs to be cleaned up to prevent displaying + // fields of the previous index pattern + fieldCounts.current = {}; + }, [props.selectedIndexPattern]); const closeFieldEditor = useRef<() => void | undefined>(); @@ -134,17 +161,17 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) }; }, []); - if (!props.selectedIndexPattern) { - return null; - } - - const setFieldEditorRef = (ref: () => void | undefined) => { + const setFieldEditorRef = useCallback((ref: () => void | undefined) => { closeFieldEditor.current = ref; - }; + }, []); - const closeFlyout = () => { + const closeFlyout = useCallback(() => { setIsFlyoutVisible(false); - }; + }, []); + + if (!props.selectedIndexPattern) { + return null; + } const { indexPatternFieldEditor } = props.services; const indexPatternFieldEditPermission = indexPatternFieldEditor?.userPermissions.editIndexPattern(); @@ -177,7 +204,9 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) @@ -262,6 +291,8 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps)
; @@ -48,11 +102,16 @@ describe('timechart header', function () { }, ], onChangeInterval: jest.fn(), - bucketInterval: { - scaled: undefined, - description: 'second', - scale: undefined, - }, + + savedSearchData$: new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval: { + scaled: false, + description: 'second', + scale: undefined, + }, + }) as DataCharts$, }; }); @@ -62,7 +121,15 @@ describe('timechart header', function () { }); it('TimechartHeader renders an info when bucketInterval.scale is set to true', () => { - props.bucketInterval!.scaled = true; + props.savedSearchData$ = new BehaviorSubject({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval: { + scaled: true, + description: 'second', + scale: undefined, + }, + }) as DataCharts$; component = mountWithIntl(); expect(component.find(EuiIconTip).length).toBe(1); }); diff --git a/src/plugins/discover/public/application/apps/main/components/timechart_header/timechart_header.tsx b/src/plugins/discover/public/application/apps/main/components/timechart_header/timechart_header.tsx index ec94679ece675..5c0b12cfe2534 100644 --- a/src/plugins/discover/public/application/apps/main/components/timechart_header/timechart_header.tsx +++ b/src/plugins/discover/public/application/apps/main/components/timechart_header/timechart_header.tsx @@ -20,6 +20,8 @@ import { i18n } from '@kbn/i18n'; import dateMath from '@elastic/datemath'; import './timechart_header.scss'; import { DataPublicPluginStart } from '../../../../../../../data/public'; +import { DataCharts$, DataChartsMessage } from '../../services/use_saved_search'; +import { useDataState } from '../../utils/use_data_state'; export interface TimechartBucketInterval { scaled?: boolean; @@ -32,10 +34,7 @@ export interface TimechartHeaderProps { * Format of date to be displayed */ dateFormat?: string; - /** - * Interval for the buckets of the recent request - */ - bucketInterval?: TimechartBucketInterval; + data: DataPublicPluginStart; /** * Interval Options @@ -49,17 +48,23 @@ export interface TimechartHeaderProps { * selected interval */ stateInterval: string; + + savedSearchData$: DataCharts$; } export function TimechartHeader({ - bucketInterval, dateFormat, - data, + data: dataPluginStart, options, onChangeInterval, stateInterval, + savedSearchData$, }: TimechartHeaderProps) { - const { timefilter } = data.query.timefilter; + const { timefilter } = dataPluginStart.query.timefilter; + + const data: DataChartsMessage = useDataState(savedSearchData$); + + const { bucketInterval } = data; const { from, to } = timefilter.getTime(); const timeRange = { from: dateMath.parse(from), diff --git a/src/plugins/discover/public/application/apps/main/discover_main_app.tsx b/src/plugins/discover/public/application/apps/main/discover_main_app.tsx index 07939fff6e7f4..0195421fd568d 100644 --- a/src/plugins/discover/public/application/apps/main/discover_main_app.tsx +++ b/src/plugins/discover/public/application/apps/main/discover_main_app.tsx @@ -58,6 +58,7 @@ export function DiscoverMainApp(props: DiscoverMainProps) { const { data$, indexPattern, + inspectorAdapters, onChangeIndexPattern, onUpdateQuery, refetch$, @@ -105,6 +106,7 @@ export function DiscoverMainApp(props: DiscoverMainProps) { ; /** - * Function starting state sync when Discover main is loaded + * Initialize state with filters and query, start state syncing */ initializeAndSync: ( indexPattern: IndexPattern, diff --git a/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts b/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts index 3c736f09a8296..1bf9710def03c 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_discover_state.ts @@ -41,7 +41,7 @@ export function useDiscoverState({ const [indexPattern, setIndexPattern] = useState(initialIndexPattern); const [savedSearch, setSavedSearch] = useState(initialSavedSearch); const useNewFieldsApi = useMemo(() => !config.get(SEARCH_FIELDS_FROM_SOURCE), [config]); - const timefilter = data.query.timefilter.timefilter; + const { timefilter } = data.query.timefilter; const searchSource = useMemo(() => { savedSearch.searchSource.setField('index', indexPattern); @@ -88,8 +88,7 @@ export function useDiscoverState({ /** * Data fetching logic */ - const { data$, refetch$, reset } = useSavedSearchData({ - indexPattern, + const { data$, refetch$, reset, inspectorAdapters } = useSavedSearchData({ initialFetchStatus, searchSessionManager, searchSource, @@ -100,9 +99,7 @@ export function useDiscoverState({ useEffect(() => { const stopSync = stateContainer.initializeAndSync(indexPattern, filterManager, data); - return () => { - stopSync(); - }; + return () => stopSync(); }, [stateContainer, filterManager, data, indexPattern]); /** @@ -138,8 +135,11 @@ export function useDiscoverState({ setState(nextState); }); return () => unsubscribe(); - }, [config, indexPatterns, appStateContainer, setState, state, refetch$, data$, reset]); + }, [config, indexPatterns, appStateContainer, setState, state, refetch$, reset]); + /** + * function to revert any changes to a given saved search + */ const resetSavedSearch = useCallback( async (id?: string) => { const newSavedSearch = await services.getSavedSearchById(id); @@ -201,11 +201,12 @@ export function useDiscoverState({ if (initialFetchStatus === FetchStatus.LOADING) { refetch$.next(); } - }, [initialFetchStatus, refetch$, indexPattern, data$]); + }, [initialFetchStatus, refetch$, indexPattern]); return { data$, indexPattern, + inspectorAdapters, refetch$, resetSavedSearch, onChangeIndexPattern, diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts index 128c94f284f56..f4d05e551a4a4 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search.test.ts @@ -28,7 +28,6 @@ describe('test useSavedSearch', () => { const { result } = renderHook(() => { return useSavedSearch({ - indexPattern: indexPatternMock, initialFetchStatus: FetchStatus.LOADING, searchSessionManager, searchSource: savedSearchMock.searchSource.createCopy(), @@ -39,11 +38,10 @@ describe('test useSavedSearch', () => { }); expect(result.current.refetch$).toBeInstanceOf(Subject); - expect(result.current.data$.value).toMatchInlineSnapshot(` - Object { - "state": "loading", - } - `); + expect(result.current.data$.main$.getValue().fetchStatus).toBe(FetchStatus.LOADING); + expect(result.current.data$.documents$.getValue().fetchStatus).toBe(FetchStatus.LOADING); + expect(result.current.data$.totalHits$.getValue().fetchStatus).toBe(FetchStatus.LOADING); + expect(result.current.data$.charts$.getValue().fetchStatus).toBe(FetchStatus.LOADING); }); test('refetch$ triggers a search', async () => { const { history, searchSessionManager } = createSearchSessionMock(); @@ -68,7 +66,6 @@ describe('test useSavedSearch', () => { const { result, waitForValueToChange } = renderHook(() => { return useSavedSearch({ - indexPattern: indexPatternMock, initialFetchStatus: FetchStatus.LOADING, searchSessionManager, searchSource: resultState.current.searchSource, @@ -81,11 +78,11 @@ describe('test useSavedSearch', () => { result.current.refetch$.next(); await waitForValueToChange(() => { - return result.current.data$.value.state === 'complete'; + return result.current.data$.main$.value.fetchStatus === 'complete'; }); - expect(result.current.data$.value.hits).toBe(0); - expect(result.current.data$.value.rows).toEqual([]); + expect(result.current.data$.totalHits$.value.result).toBe(0); + expect(result.current.data$.documents$.value.result).toEqual([]); }); test('reset sets back to initial state', async () => { @@ -111,7 +108,6 @@ describe('test useSavedSearch', () => { const { result, waitForValueToChange } = renderHook(() => { return useSavedSearch({ - indexPattern: indexPatternMock, initialFetchStatus: FetchStatus.LOADING, searchSessionManager, searchSource: resultState.current.searchSource, @@ -124,10 +120,10 @@ describe('test useSavedSearch', () => { result.current.refetch$.next(); await waitForValueToChange(() => { - return result.current.data$.value.state === FetchStatus.COMPLETE; + return result.current.data$.main$.value.fetchStatus === FetchStatus.COMPLETE; }); result.current.reset(); - expect(result.current.data$.value.state).toBe(FetchStatus.LOADING); + expect(result.current.data$.main$.value.fetchStatus).toBe(FetchStatus.LOADING); }); }); diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search.ts index b449d35dca9ad..8ed6667f8acce 100644 --- a/src/plugins/discover/public/application/apps/main/services/use_saved_search.ts +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search.ts @@ -5,53 +5,71 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { useEffect, useRef, useCallback } from 'react'; -import { i18n } from '@kbn/i18n'; -import { merge, Subject, BehaviorSubject } from 'rxjs'; -import { debounceTime, tap, filter } from 'rxjs/operators'; +import { useCallback, useEffect, useMemo, useRef } from 'react'; +import { BehaviorSubject, merge, Subject } from 'rxjs'; +import { debounceTime, filter, tap } from 'rxjs/operators'; import { DiscoverServices } from '../../../../build_services'; import { DiscoverSearchSessionManager } from './discover_search_session'; -import { - IndexPattern, - isCompleteResponse, - SearchSource, - tabifyAggResponse, -} from '../../../../../../data/common'; +import { SearchSource } from '../../../../../../data/common'; import { GetStateReturn } from './discover_state'; import { ElasticSearchHit } from '../../../doc_views/doc_views_types'; import { RequestAdapter } from '../../../../../../inspector/public'; -import { AutoRefreshDoneFn, search } from '../../../../../../data/public'; -import { calcFieldCounts } from '../utils/calc_field_counts'; +import { AutoRefreshDoneFn } from '../../../../../../data/public'; import { validateTimeRange } from '../utils/validate_time_range'; -import { updateSearchSource } from '../utils/update_search_source'; -import { SortOrder } from '../../../../saved_searches/types'; -import { getDimensions, getChartAggConfigs } from '../utils'; -import { buildPointSeriesData, Chart } from '../components/chart/point_series'; +import { Chart } from '../components/chart/point_series'; import { TimechartBucketInterval } from '../components/timechart_header/timechart_header'; import { useSingleton } from '../utils/use_singleton'; import { FetchStatus } from '../../../types'; -export type SavedSearchDataSubject = BehaviorSubject; -export type SavedSearchRefetchSubject = Subject; +import { fetchAll } from '../utils/fetch_all'; +import { useBehaviorSubject } from '../utils/use_behavior_subject'; +import { sendResetMsg } from './use_saved_search_messages'; + +export interface SavedSearchData { + main$: DataMain$; + documents$: DataDocuments$; + totalHits$: DataTotalHits$; + charts$: DataCharts$; +} + +export type DataMain$ = BehaviorSubject; +export type DataDocuments$ = BehaviorSubject; +export type DataTotalHits$ = BehaviorSubject; +export type DataCharts$ = BehaviorSubject; + +export type DataRefetch$ = Subject; export interface UseSavedSearch { - refetch$: SavedSearchRefetchSubject; - data$: SavedSearchDataSubject; + refetch$: DataRefetch$; + data$: SavedSearchData; reset: () => void; + inspectorAdapters: { requests: RequestAdapter }; } -export type SavedSearchRefetchMsg = 'reset' | undefined; +export type DataRefetchMsg = 'reset' | undefined; + +export interface DataMsg { + fetchStatus: FetchStatus; + error?: Error; +} + +export interface DataMainMsg extends DataMsg { + foundDocuments?: boolean; +} -export interface SavedSearchDataMessage { +export interface DataDocumentsMsg extends DataMsg { + result?: ElasticSearchHit[]; +} + +export interface DataTotalHitsMsg extends DataMsg { + fetchStatus: FetchStatus; + error?: Error; + result?: number; +} + +export interface DataChartsMessage extends DataMsg { bucketInterval?: TimechartBucketInterval; chartData?: Chart; - fetchCounter?: number; - fetchError?: Error; - fieldCounts?: Record; - hits?: number; - inspectorAdapters?: { requests: RequestAdapter }; - rows?: ElasticSearchHit[]; - state: FetchStatus; } /** @@ -59,7 +77,6 @@ export interface SavedSearchDataMessage { * to the data fetching */ export const useSavedSearch = ({ - indexPattern, initialFetchStatus, searchSessionManager, searchSource, @@ -67,244 +84,148 @@ export const useSavedSearch = ({ stateContainer, useNewFieldsApi, }: { - indexPattern: IndexPattern; initialFetchStatus: FetchStatus; searchSessionManager: DiscoverSearchSessionManager; searchSource: SearchSource; services: DiscoverServices; stateContainer: GetStateReturn; useNewFieldsApi: boolean; -}): UseSavedSearch => { +}) => { const { data, filterManager } = services; const timefilter = data.query.timefilter.timefilter; + const inspectorAdapters = useMemo(() => ({ requests: new RequestAdapter() }), []); + /** - * The observable the UI (aka React component) subscribes to get notified about + * The observables the UI (aka React component) subscribes to get notified about * the changes in the data fetching process (high level: fetching started, data was received) */ - const data$: SavedSearchDataSubject = useSingleton( - () => - new BehaviorSubject({ - state: initialFetchStatus, - }) - ); + const main$: DataMain$ = useBehaviorSubject({ fetchStatus: initialFetchStatus }); + + const documents$: DataDocuments$ = useBehaviorSubject({ fetchStatus: initialFetchStatus }); + + const totalHits$: DataTotalHits$ = useBehaviorSubject({ fetchStatus: initialFetchStatus }); + + const charts$: DataCharts$ = useBehaviorSubject({ fetchStatus: initialFetchStatus }); + + const dataSubjects = useMemo(() => { + return { + main$, + documents$, + totalHits$, + charts$, + }; + }, [main$, charts$, documents$, totalHits$]); + /** * The observable to trigger data fetching in UI * By refetch$.next('reset') rows and fieldcounts are reset to allow e.g. editing of runtime fields * to be processed correctly */ - const refetch$ = useSingleton(() => new Subject()); + const refetch$ = useSingleton(() => new Subject()); /** * Values that shouldn't trigger re-rendering when changed */ const refs = useRef<{ abortController?: AbortController; - /** - * handler emitted by `timefilter.getAutoRefreshFetch$()` - * to notify when data completed loading and to start a new autorefresh loop - */ - autoRefreshDoneCb?: AutoRefreshDoneFn; - /** - * Number of fetches used for functional testing - */ - fetchCounter: number; - /** - * needed to right auto refresh behavior, a new auto refresh shouldnt be triggered when - * loading is still ongoing - */ - fetchStatus: FetchStatus; - /** - * needed for merging new with old field counts, high likely legacy, but kept this behavior - * because not 100% sure in this case - */ - fieldCounts: Record; - }>({ - fetchCounter: 0, - fieldCounts: {}, - fetchStatus: initialFetchStatus, - }); - - /** - * Resets the fieldCounts cache and sends a reset message - * It is set to initial state (no documents, fetchCounter to 0) - * Needed when index pattern is switched or a new runtime field is added - */ - const sendResetMsg = useCallback( - (fetchStatus?: FetchStatus) => { - refs.current.fieldCounts = {}; - refs.current.fetchStatus = fetchStatus ?? initialFetchStatus; - data$.next({ - state: initialFetchStatus, - fetchCounter: 0, - rows: [], - fieldCounts: {}, - chartData: undefined, - bucketInterval: undefined, - }); - }, - [data$, initialFetchStatus] - ); - /** - * Function to fetch data from ElasticSearch - */ - const fetchAll = useCallback( - (reset = false) => { - if (!validateTimeRange(timefilter.getTime(), services.toastNotifications)) { - return Promise.reject(); - } - const inspectorAdapters = { requests: new RequestAdapter() }; - - if (refs.current.abortController) refs.current.abortController.abort(); - refs.current.abortController = new AbortController(); - const sessionId = searchSessionManager.getNextSearchSessionId(); - - if (reset) { - sendResetMsg(FetchStatus.LOADING); - } else { - // Let the UI know, data fetching started - data$.next({ - state: FetchStatus.LOADING, - fetchCounter: ++refs.current.fetchCounter, - }); - refs.current.fetchStatus = FetchStatus.LOADING; - } - - const { sort, hideChart, interval } = stateContainer.appStateContainer.getState(); - updateSearchSource(searchSource, false, { - indexPattern, - services, - sort: sort as SortOrder[], - useNewFieldsApi, - }); - const chartAggConfigs = - indexPattern.timeFieldName && !hideChart && interval - ? getChartAggConfigs(searchSource, interval, data) - : undefined; - - if (!chartAggConfigs) { - searchSource.removeField('aggs'); - } else { - searchSource.setField('aggs', chartAggConfigs.toDsl()); - } - - const searchSourceFetch$ = searchSource.fetch$({ - abortSignal: refs.current.abortController.signal, - sessionId, - inspector: { - adapter: inspectorAdapters.requests, - title: i18n.translate('discover.inspectorRequestDataTitle', { - defaultMessage: 'data', - }), - description: i18n.translate('discover.inspectorRequestDescriptionDocument', { - defaultMessage: 'This request queries Elasticsearch to fetch the data for the search.', - }), - }, - }); - - searchSourceFetch$.pipe(filter((res) => isCompleteResponse(res))).subscribe( - (res) => { - const documents = res.rawResponse.hits.hits; - - const message: SavedSearchDataMessage = { - state: FetchStatus.COMPLETE, - rows: documents, - inspectorAdapters, - fieldCounts: calcFieldCounts(refs.current.fieldCounts, documents, indexPattern), - hits: res.rawResponse.hits.total as number, - }; - - if (chartAggConfigs) { - const bucketAggConfig = chartAggConfigs.aggs[1]; - const tabifiedData = tabifyAggResponse(chartAggConfigs, res.rawResponse); - const dimensions = getDimensions(chartAggConfigs, data); - if (dimensions) { - if (bucketAggConfig && search.aggs.isDateHistogramBucketAggConfig(bucketAggConfig)) { - message.bucketInterval = bucketAggConfig.buckets?.getInterval(); - } - message.chartData = buildPointSeriesData(tabifiedData, dimensions); - } - } - refs.current.fieldCounts = message.fieldCounts!; - refs.current.fetchStatus = message.state; - data$.next(message); - }, - (error) => { - if (error instanceof Error && error.name === 'AbortError') return; - data.search.showError(error); - refs.current.fetchStatus = FetchStatus.ERROR; - data$.next({ - state: FetchStatus.ERROR, - inspectorAdapters, - fetchError: error, - }); - }, - () => { - refs.current.autoRefreshDoneCb?.(); - refs.current.autoRefreshDoneCb = undefined; - } - ); - }, - [ - timefilter, - services, - searchSessionManager, - stateContainer.appStateContainer, - searchSource, - indexPattern, - useNewFieldsApi, - data, - sendResetMsg, - data$, - ] - ); + }>({}); /** * This part takes care of triggering the data fetching by creating and subscribing * to an observable of various possible changes in state */ useEffect(() => { + /** + * handler emitted by `timefilter.getAutoRefreshFetch$()` + * to notify when data completed loading and to start a new autorefresh loop + */ + let autoRefreshDoneCb: AutoRefreshDoneFn | undefined; const fetch$ = merge( refetch$, filterManager.getFetches$(), timefilter.getFetch$(), timefilter.getAutoRefreshFetch$().pipe( tap((done) => { - refs.current.autoRefreshDoneCb = done; + autoRefreshDoneCb = done; }), - filter(() => refs.current.fetchStatus !== FetchStatus.LOADING) + filter(() => { + /** + * filter to prevent auto-refresh triggered fetch when + * loading is still ongoing + */ + const currentFetchStatus = main$.getValue().fetchStatus; + return ( + currentFetchStatus !== FetchStatus.LOADING && currentFetchStatus !== FetchStatus.PARTIAL + ); + }) ), data.query.queryString.getUpdates$(), searchSessionManager.newSearchSessionIdFromURL$.pipe(filter((sessionId) => !!sessionId)) ).pipe(debounceTime(100)); const subscription = fetch$.subscribe((val) => { + if (!validateTimeRange(timefilter.getTime(), services.toastNotifications)) { + return; + } + inspectorAdapters.requests.reset(); + + refs.current.abortController?.abort(); + refs.current.abortController = new AbortController(); try { - fetchAll(val === 'reset'); + fetchAll(dataSubjects, searchSource, val === 'reset', { + abortController: refs.current.abortController, + appStateContainer: stateContainer.appStateContainer, + inspectorAdapters, + data, + initialFetchStatus, + searchSessionId: searchSessionManager.getNextSearchSessionId(), + services, + useNewFieldsApi, + }).subscribe({ + complete: () => { + // if this function was set and is executed, another refresh fetch can be triggered + autoRefreshDoneCb?.(); + autoRefreshDoneCb = undefined; + }, + }); } catch (error) { - data$.next({ - state: FetchStatus.ERROR, - fetchError: error, + main$.next({ + fetchStatus: FetchStatus.ERROR, + error, }); } }); - return () => { - subscription.unsubscribe(); - }; + return () => subscription.unsubscribe(); }, [ - data$, + data, data.query.queryString, + dataSubjects, filterManager, + initialFetchStatus, + inspectorAdapters, + main$, refetch$, + searchSessionManager, searchSessionManager.newSearchSessionIdFromURL$, + searchSource, + services, + services.toastNotifications, + stateContainer.appStateContainer, timefilter, - fetchAll, + useNewFieldsApi, + ]); + + const reset = useCallback(() => sendResetMsg(dataSubjects, initialFetchStatus), [ + dataSubjects, + initialFetchStatus, ]); return { refetch$, - data$, - reset: sendResetMsg, + data$: dataSubjects, + reset, + inspectorAdapters, }; }; diff --git a/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts new file mode 100644 index 0000000000000..b42d699f344cc --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/services/use_saved_search_messages.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { FetchStatus } from '../../../types'; +import { + DataCharts$, + DataDocuments$, + DataMain$, + DataTotalHits$, + SavedSearchData, +} from './use_saved_search'; + +/** + * Send COMPLETE message via main observable used when + * 1.) first fetch resolved, and there are no documents + * 2.) all fetches resolved, and there are documents + */ +export function sendCompleteMsg(main$: DataMain$, foundDocuments = true) { + if (main$.getValue().fetchStatus === FetchStatus.COMPLETE) { + return; + } + main$.next({ + fetchStatus: FetchStatus.COMPLETE, + foundDocuments, + }); +} + +/** + * Send PARTIAL message via main observable when first result is returned + */ +export function sendPartialMsg(main$: DataMain$) { + if (main$.getValue().fetchStatus === FetchStatus.LOADING) { + main$.next({ + fetchStatus: FetchStatus.PARTIAL, + }); + } +} + +/** + * Send LOADING message via main observable + */ +export function sendLoadingMsg(data$: DataMain$ | DataDocuments$ | DataTotalHits$ | DataCharts$) { + if (data$.getValue().fetchStatus !== FetchStatus.LOADING) { + data$.next({ + fetchStatus: FetchStatus.LOADING, + }); + } +} + +/** + * Send ERROR message + */ +export function sendErrorMsg( + data$: DataMain$ | DataDocuments$ | DataTotalHits$ | DataCharts$, + error: Error +) { + data$.next({ + fetchStatus: FetchStatus.ERROR, + error, + }); +} + +/** + * Sends a RESET message to all data subjects + * Needed when index pattern is switched or a new runtime field is added + */ +export function sendResetMsg(data: SavedSearchData, initialFetchStatus: FetchStatus) { + data.main$.next({ + fetchStatus: initialFetchStatus, + foundDocuments: undefined, + }); + data.documents$.next({ + fetchStatus: initialFetchStatus, + result: [], + }); + data.charts$.next({ + fetchStatus: initialFetchStatus, + chartData: undefined, + bucketInterval: undefined, + }); + data.totalHits$.next({ + fetchStatus: initialFetchStatus, + result: undefined, + }); +} diff --git a/src/plugins/discover/public/application/apps/main/utils/calc_field_counts.ts b/src/plugins/discover/public/application/apps/main/utils/calc_field_counts.ts index 43c9a57a70f22..57178776a97d4 100644 --- a/src/plugins/discover/public/application/apps/main/utils/calc_field_counts.ts +++ b/src/plugins/discover/public/application/apps/main/utils/calc_field_counts.ts @@ -15,9 +15,12 @@ import { ElasticSearchHit } from '../../../doc_views/doc_views_types'; */ export function calcFieldCounts( counts = {} as Record, - rows: ElasticSearchHit[], - indexPattern: IndexPattern + rows?: ElasticSearchHit[], + indexPattern?: IndexPattern ) { + if (!rows || !indexPattern) { + return {}; + } for (const hit of rows) { const fields = Object.keys(indexPattern.flattenHit(hit)); for (const fieldName of fields) { diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_all.test.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_all.test.ts new file mode 100644 index 0000000000000..88830b2946b5f --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_all.test.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { FetchStatus } from '../../../types'; +import { BehaviorSubject } from 'rxjs'; +import { RequestAdapter } from '../../../../../../inspector'; +import { savedSearchMock } from '../../../../__mocks__/saved_search'; +import { ReduxLikeStateContainer } from '../../../../../../kibana_utils/common'; +import { AppState } from '../services/discover_state'; +import { discoverServiceMock } from '../../../../__mocks__/services'; +import { fetchAll } from './fetch_all'; + +describe('test fetchAll', () => { + test('changes of fetchStatus when starting with FetchStatus.UNINITIALIZED', async (done) => { + const subjects = { + main$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + documents$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + totalHits$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + charts$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + }; + const deps = { + appStateContainer: { + getState: () => { + return { interval: 'auto' }; + }, + } as ReduxLikeStateContainer, + abortController: new AbortController(), + data: discoverServiceMock.data, + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + initialFetchStatus: FetchStatus.UNINITIALIZED, + useNewFieldsApi: true, + services: discoverServiceMock, + }; + + const stateArr: FetchStatus[] = []; + + subjects.main$.subscribe((value) => stateArr.push(value.fetchStatus)); + + const parentSearchSource = savedSearchMock.searchSource; + const childSearchSource = parentSearchSource.createChild(); + + fetchAll(subjects, childSearchSource, false, deps).subscribe({ + complete: () => { + expect(stateArr).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.COMPLETE, + ]); + done(); + }, + }); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_all.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_all.ts new file mode 100644 index 0000000000000..53d13ee547b0f --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_all.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { forkJoin, of } from 'rxjs'; +import { + sendCompleteMsg, + sendErrorMsg, + sendLoadingMsg, + sendPartialMsg, + sendResetMsg, +} from '../services/use_saved_search_messages'; +import { updateSearchSource } from './update_search_source'; +import { SortOrder } from '../../../../saved_searches/types'; +import { fetchDocuments } from './fetch_documents'; +import { fetchTotalHits } from './fetch_total_hits'; +import { fetchChart } from './fetch_chart'; +import { SearchSource } from '../../../../../../data/common'; +import { Adapters } from '../../../../../../inspector'; +import { AppState } from '../services/discover_state'; +import { FetchStatus } from '../../../types'; +import { DataPublicPluginStart } from '../../../../../../data/public'; +import { SavedSearchData } from '../services/use_saved_search'; +import { DiscoverServices } from '../../../../build_services'; +import { ReduxLikeStateContainer } from '../../../../../../kibana_utils/common'; + +export function fetchAll( + dataSubjects: SavedSearchData, + searchSource: SearchSource, + reset = false, + fetchDeps: { + abortController: AbortController; + appStateContainer: ReduxLikeStateContainer; + inspectorAdapters: Adapters; + data: DataPublicPluginStart; + initialFetchStatus: FetchStatus; + searchSessionId: string; + services: DiscoverServices; + useNewFieldsApi: boolean; + } +) { + const { initialFetchStatus, appStateContainer, services, useNewFieldsApi, data } = fetchDeps; + + const indexPattern = searchSource.getField('index')!; + + if (reset) { + sendResetMsg(dataSubjects, initialFetchStatus); + } + + sendLoadingMsg(dataSubjects.main$); + + const { hideChart, sort } = appStateContainer.getState(); + // Update the base searchSource, base for all child fetches + updateSearchSource(searchSource, false, { + indexPattern, + services, + sort: sort as SortOrder[], + useNewFieldsApi, + }); + + const subFetchDeps = { + ...fetchDeps, + onResults: (foundDocuments: boolean) => { + if (!foundDocuments) { + sendCompleteMsg(dataSubjects.main$, foundDocuments); + } else { + sendPartialMsg(dataSubjects.main$); + } + }, + }; + + const all = forkJoin({ + documents: fetchDocuments(dataSubjects, searchSource.createCopy(), subFetchDeps), + totalHits: + hideChart || !indexPattern.timeFieldName + ? fetchTotalHits(dataSubjects, searchSource.createCopy(), subFetchDeps) + : of(null), + chart: + !hideChart && indexPattern.timeFieldName + ? fetchChart(dataSubjects, searchSource.createCopy(), subFetchDeps) + : of(null), + }); + + all.subscribe( + () => sendCompleteMsg(dataSubjects.main$, true), + (error) => { + if (error instanceof Error && error.name === 'AbortError') return; + data.search.showError(error); + sendErrorMsg(dataSubjects.main$, error); + } + ); + return all; +} diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_chart.test.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_chart.test.ts new file mode 100644 index 0000000000000..07228bf0e4c62 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_chart.test.ts @@ -0,0 +1,174 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { FetchStatus } from '../../../types'; +import { BehaviorSubject, of, throwError as throwErrorRx } from 'rxjs'; +import { RequestAdapter } from '../../../../../../inspector'; +import { savedSearchMockWithTimeField } from '../../../../__mocks__/saved_search'; +import { fetchChart, updateSearchSource } from './fetch_chart'; +import { ReduxLikeStateContainer } from '../../../../../../kibana_utils/common'; +import { AppState } from '../services/discover_state'; +import { discoverServiceMock } from '../../../../__mocks__/services'; +import { calculateBounds, IKibanaSearchResponse } from '../../../../../../data/common'; +import { estypes } from '@elastic/elasticsearch'; + +function getDataSubjects() { + return { + main$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + documents$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + totalHits$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + charts$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + }; +} + +describe('test fetchCharts', () => { + test('updateSearchSource helper function', () => { + const chartAggConfigs = updateSearchSource( + savedSearchMockWithTimeField.searchSource, + 'auto', + discoverServiceMock.data + ); + expect(chartAggConfigs.aggs).toMatchInlineSnapshot(` + Array [ + Object { + "enabled": true, + "id": "1", + "params": Object {}, + "schema": "metric", + "type": "count", + }, + Object { + "enabled": true, + "id": "2", + "params": Object { + "drop_partials": false, + "extended_bounds": Object {}, + "field": "timestamp", + "interval": "auto", + "min_doc_count": 1, + "scaleMetricValues": false, + "useNormalizedEsInterval": true, + "used_interval": "0ms", + }, + "schema": "segment", + "type": "date_histogram", + }, + ] + `); + }); + + test('changes of fetchStatus when starting with FetchStatus.UNINITIALIZED', async (done) => { + const subjects = getDataSubjects(); + const deps = { + appStateContainer: { + getState: () => { + return { interval: 'auto' }; + }, + } as ReduxLikeStateContainer, + abortController: new AbortController(), + data: discoverServiceMock.data, + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + }; + deps.data.query.timefilter.timefilter.getTime = () => { + return { from: '2021-07-07T00:05:13.590', to: '2021-07-07T11:20:13.590' }; + }; + + deps.data.query.timefilter.timefilter.calculateBounds = (timeRange) => + calculateBounds(timeRange); + + const stateArrChart: FetchStatus[] = []; + const stateArrHits: FetchStatus[] = []; + + subjects.charts$.subscribe((value) => stateArrChart.push(value.fetchStatus)); + subjects.totalHits$.subscribe((value) => stateArrHits.push(value.fetchStatus)); + + savedSearchMockWithTimeField.searchSource.fetch$ = () => + of(({ + id: 'Fjk5bndxTHJWU2FldVRVQ0tYR0VqOFEcRWtWNDhOdG5SUzJYcFhONVVZVTBJQToxMDMwOQ==', + rawResponse: { + took: 2, + timed_out: false, + _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, + hits: { max_score: null, hits: [] }, + aggregations: { + '2': { + buckets: [ + { + key_as_string: '2021-07-07T06:36:00.000+02:00', + key: 1625632560000, + doc_count: 1, + }, + ], + }, + }, + }, + isPartial: false, + isRunning: false, + total: 1, + loaded: 1, + isRestored: false, + } as unknown) as IKibanaSearchResponse>); + + fetchChart(subjects, savedSearchMockWithTimeField.searchSource, deps).subscribe({ + complete: () => { + expect(stateArrChart).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.COMPLETE, + ]); + expect(stateArrHits).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.COMPLETE, + ]); + done(); + }, + }); + }); + test('change of fetchStatus on fetch error', async (done) => { + const subjects = getDataSubjects(); + + const deps = { + appStateContainer: { + getState: () => { + return { interval: 'auto' }; + }, + } as ReduxLikeStateContainer, + abortController: new AbortController(), + data: discoverServiceMock.data, + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + }; + + savedSearchMockWithTimeField.searchSource.fetch$ = () => throwErrorRx({ msg: 'Oh noes!' }); + + const stateArrChart: FetchStatus[] = []; + const stateArrHits: FetchStatus[] = []; + + subjects.charts$.subscribe((value) => stateArrChart.push(value.fetchStatus)); + subjects.totalHits$.subscribe((value) => stateArrHits.push(value.fetchStatus)); + + fetchChart(subjects, savedSearchMockWithTimeField.searchSource, deps).subscribe({ + error: () => { + expect(stateArrChart).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.ERROR, + ]); + expect(stateArrHits).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.ERROR, + ]); + done(); + }, + }); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_chart.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_chart.ts new file mode 100644 index 0000000000000..25a2a964a778f --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_chart.ts @@ -0,0 +1,121 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { i18n } from '@kbn/i18n'; +import { filter } from 'rxjs/operators'; +import { + DataPublicPluginStart, + isCompleteResponse, + search, + SearchSource, +} from '../../../../../../data/public'; +import { Adapters } from '../../../../../../inspector'; +import { getChartAggConfigs, getDimensions } from './index'; +import { tabifyAggResponse } from '../../../../../../data/common'; +import { buildPointSeriesData } from '../components/chart/point_series'; +import { FetchStatus } from '../../../types'; +import { SavedSearchData } from '../services/use_saved_search'; +import { AppState } from '../services/discover_state'; +import { ReduxLikeStateContainer } from '../../../../../../kibana_utils/common'; +import { sendErrorMsg, sendLoadingMsg } from '../services/use_saved_search_messages'; + +export function fetchChart( + data$: SavedSearchData, + searchSource: SearchSource, + { + abortController, + appStateContainer, + data, + inspectorAdapters, + onResults, + searchSessionId, + }: { + abortController: AbortController; + appStateContainer: ReduxLikeStateContainer; + data: DataPublicPluginStart; + inspectorAdapters: Adapters; + onResults: (foundDocuments: boolean) => void; + searchSessionId: string; + } +) { + const { charts$, totalHits$ } = data$; + + const interval = appStateContainer.getState().interval ?? 'auto'; + const chartAggConfigs = updateSearchSource(searchSource, interval, data); + + sendLoadingMsg(charts$); + sendLoadingMsg(totalHits$); + + const fetch$ = searchSource + .fetch$({ + abortSignal: abortController.signal, + sessionId: searchSessionId, + inspector: { + adapter: inspectorAdapters.requests, + title: i18n.translate('discover.inspectorRequestDataTitleChart', { + defaultMessage: 'Chart data', + }), + description: i18n.translate('discover.inspectorRequestDescriptionChart', { + defaultMessage: + 'This request queries Elasticsearch to fetch the aggregation data for the chart.', + }), + }, + }) + .pipe(filter((res) => isCompleteResponse(res))); + + fetch$.subscribe( + (res) => { + try { + const totalHitsNr = res.rawResponse.hits.total as number; + totalHits$.next({ fetchStatus: FetchStatus.COMPLETE, result: totalHitsNr }); + onResults(totalHitsNr > 0); + + const bucketAggConfig = chartAggConfigs.aggs[1]; + const tabifiedData = tabifyAggResponse(chartAggConfigs, res.rawResponse); + const dimensions = getDimensions(chartAggConfigs, data); + const bucketInterval = search.aggs.isDateHistogramBucketAggConfig(bucketAggConfig) + ? bucketAggConfig?.buckets?.getInterval() + : undefined; + const chartData = buildPointSeriesData(tabifiedData, dimensions!); + charts$.next({ + fetchStatus: FetchStatus.COMPLETE, + chartData, + bucketInterval, + }); + } catch (e) { + charts$.next({ + fetchStatus: FetchStatus.ERROR, + error: e, + }); + } + }, + (error) => { + if (error instanceof Error && error.name === 'AbortError') { + return; + } + sendErrorMsg(charts$, error); + sendErrorMsg(totalHits$, error); + } + ); + return fetch$; +} + +export function updateSearchSource( + searchSource: SearchSource, + interval: string, + data: DataPublicPluginStart +) { + const indexPattern = searchSource.getField('index')!; + searchSource.setField('filter', data.query.timefilter.timefilter.createFilter(indexPattern)); + searchSource.setField('size', 0); + searchSource.setField('trackTotalHits', true); + const chartAggConfigs = getChartAggConfigs(searchSource, interval, data); + searchSource.setField('aggs', chartAggConfigs.toDsl()); + searchSource.removeField('sort'); + searchSource.removeField('fields'); + return chartAggConfigs; +} diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_documents.test.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_documents.test.ts new file mode 100644 index 0000000000000..6c6c7595b166e --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_documents.test.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { fetchDocuments } from './fetch_documents'; +import { FetchStatus } from '../../../types'; +import { BehaviorSubject, throwError as throwErrorRx } from 'rxjs'; +import { RequestAdapter } from '../../../../../../inspector'; +import { savedSearchMock } from '../../../../__mocks__/saved_search'; +import { discoverServiceMock } from '../../../../__mocks__/services'; + +function getDataSubjects() { + return { + main$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + documents$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + totalHits$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + charts$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + }; +} + +describe('test fetchDocuments', () => { + test('changes of fetchStatus are correct when starting with FetchStatus.UNINITIALIZED', async (done) => { + const subjects = getDataSubjects(); + const { documents$ } = subjects; + const deps = { + abortController: new AbortController(), + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + services: discoverServiceMock, + }; + + const stateArr: FetchStatus[] = []; + + documents$.subscribe((value) => stateArr.push(value.fetchStatus)); + + fetchDocuments(subjects, savedSearchMock.searchSource, deps).subscribe({ + complete: () => { + expect(stateArr).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.COMPLETE, + ]); + done(); + }, + }); + }); + test('change of fetchStatus on fetch error', async (done) => { + const subjects = getDataSubjects(); + const { documents$ } = subjects; + const deps = { + abortController: new AbortController(), + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + services: discoverServiceMock, + }; + + savedSearchMock.searchSource.fetch$ = () => throwErrorRx({ msg: 'Oh noes!' }); + + const stateArr: FetchStatus[] = []; + + documents$.subscribe((value) => stateArr.push(value.fetchStatus)); + + fetchDocuments(subjects, savedSearchMock.searchSource, deps).subscribe({ + error: () => { + expect(stateArr).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.ERROR, + ]); + done(); + }, + }); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_documents.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_documents.ts new file mode 100644 index 0000000000000..edaf86cef6874 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_documents.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { i18n } from '@kbn/i18n'; +import { filter } from 'rxjs/operators'; +import { Adapters } from '../../../../../../inspector/common'; +import { isCompleteResponse, SearchSource } from '../../../../../../data/common'; +import { FetchStatus } from '../../../types'; +import { SavedSearchData } from '../services/use_saved_search'; +import { sendErrorMsg, sendLoadingMsg } from '../services/use_saved_search_messages'; +import { SAMPLE_SIZE_SETTING } from '../../../../../common'; +import { DiscoverServices } from '../../../../build_services'; + +export const fetchDocuments = ( + data$: SavedSearchData, + searchSource: SearchSource, + { + abortController, + inspectorAdapters, + onResults, + searchSessionId, + services, + }: { + abortController: AbortController; + inspectorAdapters: Adapters; + onResults: (foundDocuments: boolean) => void; + searchSessionId: string; + services: DiscoverServices; + } +) => { + const { documents$, totalHits$ } = data$; + + searchSource.setField('size', services.uiSettings.get(SAMPLE_SIZE_SETTING)); + searchSource.setField('trackTotalHits', false); + searchSource.setField('highlightAll', true); + searchSource.setField('version', true); + + sendLoadingMsg(documents$); + + const fetch$ = searchSource + .fetch$({ + abortSignal: abortController.signal, + sessionId: searchSessionId, + inspector: { + adapter: inspectorAdapters.requests, + title: i18n.translate('discover.inspectorRequestDataTitleDocuments', { + defaultMessage: 'Documents', + }), + description: i18n.translate('discover.inspectorRequestDescriptionDocument', { + defaultMessage: 'This request queries Elasticsearch to fetch the documents.', + }), + }, + }) + .pipe(filter((res) => isCompleteResponse(res))); + + fetch$.subscribe( + (res) => { + const documents = res.rawResponse.hits.hits; + + // If the total hits query is still loading for hits, emit a partial + // hit count that's at least our document count + if (totalHits$.getValue().fetchStatus === FetchStatus.LOADING) { + totalHits$.next({ + fetchStatus: FetchStatus.PARTIAL, + result: documents.length, + }); + } + + documents$.next({ + fetchStatus: FetchStatus.COMPLETE, + result: documents, + }); + onResults(documents.length > 0); + }, + (error) => { + if (error instanceof Error && error.name === 'AbortError') { + return; + } + + sendErrorMsg(documents$, error); + } + ); + return fetch$; +}; diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.test.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.test.ts new file mode 100644 index 0000000000000..82a3a2fee6912 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.test.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { FetchStatus } from '../../../types'; +import { BehaviorSubject, throwError as throwErrorRx } from 'rxjs'; +import { RequestAdapter } from '../../../../../../inspector'; +import { savedSearchMock } from '../../../../__mocks__/saved_search'; +import { fetchTotalHits } from './fetch_total_hits'; +import { discoverServiceMock } from '../../../../__mocks__/services'; + +function getDataSubjects() { + return { + main$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + documents$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + totalHits$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + charts$: new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED }), + }; +} + +describe('test fetchTotalHits', () => { + test('changes of fetchStatus are correct when starting with FetchStatus.UNINITIALIZED', async (done) => { + const subjects = getDataSubjects(); + const { totalHits$ } = subjects; + + const deps = { + abortController: new AbortController(), + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + data: discoverServiceMock.data, + }; + + const stateArr: FetchStatus[] = []; + + totalHits$.subscribe((value) => stateArr.push(value.fetchStatus)); + + fetchTotalHits(subjects, savedSearchMock.searchSource, deps).subscribe({ + complete: () => { + expect(stateArr).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.COMPLETE, + ]); + done(); + }, + }); + }); + test('change of fetchStatus on fetch error', async (done) => { + const subjects = getDataSubjects(); + const { totalHits$ } = subjects; + const deps = { + abortController: new AbortController(), + inspectorAdapters: { requests: new RequestAdapter() }, + onResults: jest.fn(), + searchSessionId: '123', + data: discoverServiceMock.data, + }; + + savedSearchMock.searchSource.fetch$ = () => throwErrorRx({ msg: 'Oh noes!' }); + + const stateArr: FetchStatus[] = []; + + totalHits$.subscribe((value) => stateArr.push(value.fetchStatus)); + + fetchTotalHits(subjects, savedSearchMock.searchSource, deps).subscribe({ + error: () => { + expect(stateArr).toEqual([ + FetchStatus.UNINITIALIZED, + FetchStatus.LOADING, + FetchStatus.ERROR, + ]); + done(); + }, + }); + }); +}); diff --git a/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.ts b/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.ts new file mode 100644 index 0000000000000..4fb43652f28c3 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/fetch_total_hits.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { filter } from 'rxjs/operators'; +import { + DataPublicPluginStart, + isCompleteResponse, + SearchSource, +} from '../../../../../../data/public'; +import { Adapters } from '../../../../../../inspector/common'; +import { FetchStatus } from '../../../types'; +import { SavedSearchData } from '../services/use_saved_search'; +import { sendErrorMsg, sendLoadingMsg } from '../services/use_saved_search_messages'; + +export function fetchTotalHits( + data$: SavedSearchData, + searchSource: SearchSource, + { + abortController, + data, + inspectorAdapters, + onResults, + searchSessionId, + }: { + abortController: AbortController; + data: DataPublicPluginStart; + onResults: (foundDocuments: boolean) => void; + inspectorAdapters: Adapters; + searchSessionId: string; + } +) { + const { totalHits$ } = data$; + const indexPattern = searchSource.getField('index'); + searchSource.setField('trackTotalHits', true); + searchSource.setField('filter', data.query.timefilter.timefilter.createFilter(indexPattern!)); + searchSource.setField('size', 0); + searchSource.removeField('sort'); + searchSource.removeField('fields'); + searchSource.removeField('aggs'); + + sendLoadingMsg(totalHits$); + + const fetch$ = searchSource + .fetch$({ + inspector: { + adapter: inspectorAdapters.requests, + title: i18n.translate('discover.inspectorRequestDataTitleTotalHits', { + defaultMessage: 'Total hits', + }), + description: i18n.translate('discover.inspectorRequestDescriptionTotalHits', { + defaultMessage: 'This request queries Elasticsearch to fetch the total hits.', + }), + }, + abortSignal: abortController.signal, + sessionId: searchSessionId, + }) + .pipe(filter((res) => isCompleteResponse(res))); + + fetch$.subscribe( + (res) => { + const totalHitsNr = res.rawResponse.hits.total as number; + totalHits$.next({ fetchStatus: FetchStatus.COMPLETE, result: totalHitsNr }); + onResults(totalHitsNr > 0); + }, + (error) => { + if (error instanceof Error && error.name === 'AbortError') { + return; + } + sendErrorMsg(totalHits$, error); + } + ); + + return fetch$; +} diff --git a/src/plugins/discover/public/application/apps/main/utils/get_result_state.test.ts b/src/plugins/discover/public/application/apps/main/utils/get_result_state.test.ts index 512bc4240352c..7066d22d6aac7 100644 --- a/src/plugins/discover/public/application/apps/main/utils/get_result_state.test.ts +++ b/src/plugins/discover/public/application/apps/main/utils/get_result_state.test.ts @@ -6,40 +6,36 @@ * Side Public License, v 1. */ import { getResultState, resultStatuses } from './get_result_state'; -import { ElasticSearchHit } from '../../../doc_views/doc_views_types'; import { FetchStatus } from '../../../types'; describe('getResultState', () => { test('fetching uninitialized', () => { - const actual = getResultState(FetchStatus.UNINITIALIZED, []); + const actual = getResultState(FetchStatus.UNINITIALIZED, false); expect(actual).toBe(resultStatuses.UNINITIALIZED); }); test('fetching complete with no records', () => { - const actual = getResultState(FetchStatus.COMPLETE, []); + const actual = getResultState(FetchStatus.COMPLETE, false); expect(actual).toBe(resultStatuses.NO_RESULTS); }); test('fetching ongoing aka loading', () => { - const actual = getResultState(FetchStatus.LOADING, []); + const actual = getResultState(FetchStatus.LOADING, false); expect(actual).toBe(resultStatuses.LOADING); }); test('fetching ready', () => { - const record = ({ _id: 123 } as unknown) as ElasticSearchHit; - const actual = getResultState(FetchStatus.COMPLETE, [record]); + const actual = getResultState(FetchStatus.COMPLETE, true); expect(actual).toBe(resultStatuses.READY); }); test('re-fetching after already data is available', () => { - const record = ({ _id: 123 } as unknown) as ElasticSearchHit; - const actual = getResultState(FetchStatus.LOADING, [record]); + const actual = getResultState(FetchStatus.LOADING, true); expect(actual).toBe(resultStatuses.READY); }); test('after a fetch error when data was successfully fetched before ', () => { - const record = ({ _id: 123 } as unknown) as ElasticSearchHit; - const actual = getResultState(FetchStatus.ERROR, [record]); + const actual = getResultState(FetchStatus.ERROR, true); expect(actual).toBe(resultStatuses.READY); }); }); diff --git a/src/plugins/discover/public/application/apps/main/utils/get_result_state.ts b/src/plugins/discover/public/application/apps/main/utils/get_result_state.ts index 80d25566ea578..424d2feabd830 100644 --- a/src/plugins/discover/public/application/apps/main/utils/get_result_state.ts +++ b/src/plugins/discover/public/application/apps/main/utils/get_result_state.ts @@ -5,7 +5,6 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { ElasticSearchHit } from '../../../doc_views/doc_views_types'; import { FetchStatus } from '../../../types'; export const resultStatuses = { @@ -19,13 +18,13 @@ export const resultStatuses = { * Returns the current state of the result, depends on fetchStatus and the given fetched rows * Determines what is displayed in Discover main view (loading view, data view, empty data view, ...) */ -export function getResultState(fetchStatus: FetchStatus, rows: ElasticSearchHit[]) { +export function getResultState(fetchStatus: FetchStatus, foundDocuments: boolean = false) { if (fetchStatus === FetchStatus.UNINITIALIZED) { return resultStatuses.UNINITIALIZED; } - const rowsEmpty = !Array.isArray(rows) || rows.length === 0; - if (rowsEmpty && fetchStatus === FetchStatus.LOADING) return resultStatuses.LOADING; - else if (!rowsEmpty) return resultStatuses.READY; + if (!foundDocuments && fetchStatus === FetchStatus.LOADING) return resultStatuses.LOADING; + else if (foundDocuments) return resultStatuses.READY; + else if (fetchStatus === FetchStatus.PARTIAL) return resultStatuses.READY; else return resultStatuses.NO_RESULTS; } diff --git a/src/plugins/discover/public/application/apps/main/utils/update_search_source.test.ts b/src/plugins/discover/public/application/apps/main/utils/update_search_source.test.ts index 9deabf96732b1..945140e0586ab 100644 --- a/src/plugins/discover/public/application/apps/main/utils/update_search_source.test.ts +++ b/src/plugins/discover/public/application/apps/main/utils/update_search_source.test.ts @@ -9,39 +9,21 @@ import { updateSearchSource } from './update_search_source'; import { createSearchSourceMock } from '../../../../../../data/common/search/search_source/mocks'; import { indexPatternMock } from '../../../../__mocks__/index_pattern'; -import { IUiSettingsClient } from 'kibana/public'; -import { DiscoverServices } from '../../../../build_services'; -import { dataPluginMock } from '../../../../../../data/public/mocks'; -import { SAMPLE_SIZE_SETTING } from '../../../../../common'; import { SortOrder } from '../../../../saved_searches/types'; +import { discoverServiceMock } from '../../../../__mocks__/services'; describe('updateSearchSource', () => { test('updates a given search source', async () => { const persistentSearchSourceMock = createSearchSourceMock({}); const volatileSearchSourceMock = createSearchSourceMock({}); volatileSearchSourceMock.setParent(persistentSearchSourceMock); - const sampleSize = 250; updateSearchSource(volatileSearchSourceMock, false, { indexPattern: indexPatternMock, - services: ({ - data: dataPluginMock.createStartContract(), - timefilter: { - createFilter: jest.fn(), - }, - uiSettings: ({ - get: (key: string) => { - if (key === SAMPLE_SIZE_SETTING) { - return sampleSize; - } - return false; - }, - } as unknown) as IUiSettingsClient, - } as unknown) as DiscoverServices, + services: discoverServiceMock, sort: [] as SortOrder[], useNewFieldsApi: false, }); expect(persistentSearchSourceMock.getField('index')).toEqual(indexPatternMock); - expect(volatileSearchSourceMock.getField('size')).toEqual(sampleSize); expect(volatileSearchSourceMock.getField('fields')).toBe(undefined); }); @@ -49,28 +31,13 @@ describe('updateSearchSource', () => { const persistentSearchSourceMock = createSearchSourceMock({}); const volatileSearchSourceMock = createSearchSourceMock({}); volatileSearchSourceMock.setParent(persistentSearchSourceMock); - const sampleSize = 250; updateSearchSource(volatileSearchSourceMock, false, { indexPattern: indexPatternMock, - services: ({ - data: dataPluginMock.createStartContract(), - timefilter: { - createFilter: jest.fn(), - }, - uiSettings: ({ - get: (key: string) => { - if (key === SAMPLE_SIZE_SETTING) { - return sampleSize; - } - return false; - }, - } as unknown) as IUiSettingsClient, - } as unknown) as DiscoverServices, + services: discoverServiceMock, sort: [] as SortOrder[], useNewFieldsApi: true, }); expect(persistentSearchSourceMock.getField('index')).toEqual(indexPatternMock); - expect(volatileSearchSourceMock.getField('size')).toEqual(sampleSize); expect(volatileSearchSourceMock.getField('fields')).toEqual([ { field: '*', include_unmapped: 'true' }, ]); @@ -81,28 +48,13 @@ describe('updateSearchSource', () => { const persistentSearchSourceMock = createSearchSourceMock({}); const volatileSearchSourceMock = createSearchSourceMock({}); volatileSearchSourceMock.setParent(persistentSearchSourceMock); - const sampleSize = 250; updateSearchSource(volatileSearchSourceMock, false, { indexPattern: indexPatternMock, - services: ({ - data: dataPluginMock.createStartContract(), - timefilter: { - createFilter: jest.fn(), - }, - uiSettings: ({ - get: (key: string) => { - if (key === SAMPLE_SIZE_SETTING) { - return sampleSize; - } - return false; - }, - } as unknown) as IUiSettingsClient, - } as unknown) as DiscoverServices, + services: discoverServiceMock, sort: [] as SortOrder[], useNewFieldsApi: true, }); expect(persistentSearchSourceMock.getField('index')).toEqual(indexPatternMock); - expect(volatileSearchSourceMock.getField('size')).toEqual(sampleSize); expect(volatileSearchSourceMock.getField('fields')).toEqual([ { field: '*', include_unmapped: 'true' }, ]); @@ -113,28 +65,13 @@ describe('updateSearchSource', () => { const persistentSearchSourceMock = createSearchSourceMock({}); const volatileSearchSourceMock = createSearchSourceMock({}); volatileSearchSourceMock.setParent(persistentSearchSourceMock); - const sampleSize = 250; updateSearchSource(volatileSearchSourceMock, false, { indexPattern: indexPatternMock, - services: ({ - data: dataPluginMock.createStartContract(), - timefilter: { - createFilter: jest.fn(), - }, - uiSettings: ({ - get: (key: string) => { - if (key === SAMPLE_SIZE_SETTING) { - return sampleSize; - } - return false; - }, - } as unknown) as IUiSettingsClient, - } as unknown) as DiscoverServices, + services: discoverServiceMock, sort: [] as SortOrder[], useNewFieldsApi: false, }); expect(persistentSearchSourceMock.getField('index')).toEqual(indexPatternMock); - expect(volatileSearchSourceMock.getField('size')).toEqual(sampleSize); expect(volatileSearchSourceMock.getField('fields')).toEqual(undefined); expect(volatileSearchSourceMock.getField('fieldsFromSource')).toBe(undefined); }); diff --git a/src/plugins/discover/public/application/apps/main/utils/update_search_source.ts b/src/plugins/discover/public/application/apps/main/utils/update_search_source.ts index c72e207102e81..3fac75a198d53 100644 --- a/src/plugins/discover/public/application/apps/main/utils/update_search_source.ts +++ b/src/plugins/discover/public/application/apps/main/utils/update_search_source.ts @@ -7,7 +7,7 @@ */ import { getSortForSearchSource } from '../../../angular/doc_table'; -import { SAMPLE_SIZE_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; +import { SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; import { IndexPattern, ISearchSource } from '../../../../../../data/common'; import { SortOrder } from '../../../../saved_searches/types'; import { DiscoverServices } from '../../../../build_services'; @@ -32,25 +32,22 @@ export function updateSearchSource( } ) { const { uiSettings, data } = services; - const usedSort = getSortForSearchSource( - sort, - indexPattern, - uiSettings.get(SORT_DEFAULT_ORDER_SETTING) - ); - const usedSearchSource = persist ? searchSource : searchSource.getParent()!; + const parentSearchSource = persist ? searchSource : searchSource.getParent()!; - usedSearchSource + parentSearchSource .setField('index', indexPattern) .setField('query', data.query.queryString.getQuery() || null) .setField('filter', data.query.filterManager.getFilters()); if (!persist) { + const usedSort = getSortForSearchSource( + sort, + indexPattern, + uiSettings.get(SORT_DEFAULT_ORDER_SETTING) + ); searchSource .setField('trackTotalHits', true) - .setField('size', uiSettings.get(SAMPLE_SIZE_SETTING)) .setField('sort', usedSort) - .setField('highlightAll', true) - .setField('version', true) // Even when searching rollups, we want to use the default strategy so that we get back a // document-like response. .setPreferredSearchStrategyId('default'); diff --git a/src/plugins/discover/public/application/apps/main/utils/use_behavior_subject.ts b/src/plugins/discover/public/application/apps/main/utils/use_behavior_subject.ts new file mode 100644 index 0000000000000..5be6bd3266c7b --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/use_behavior_subject.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { useRef } from 'react'; +import { BehaviorSubject } from 'rxjs'; + +export function useBehaviorSubject(props: T): BehaviorSubject { + const ref = useRef | null>(null); + + if (ref.current === null) { + ref.current = new BehaviorSubject(props); + } + + return ref.current; +} diff --git a/src/plugins/discover/public/application/apps/main/utils/use_data_state.ts b/src/plugins/discover/public/application/apps/main/utils/use_data_state.ts new file mode 100644 index 0000000000000..2fd571a0dfcb9 --- /dev/null +++ b/src/plugins/discover/public/application/apps/main/utils/use_data_state.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { useState, useEffect } from 'react'; +import { BehaviorSubject } from 'rxjs'; +import { DataMsg } from '../services/use_saved_search'; + +export function useDataState(data$: BehaviorSubject) { + const [fetchState, setFetchState] = useState(data$.getValue()); + + useEffect(() => { + const subscription = data$.subscribe((next) => { + if (next.fetchStatus !== fetchState.fetchStatus) { + setFetchState({ ...fetchState, ...next }); + } + }); + return () => subscription.unsubscribe(); + }, [data$, fetchState, setFetchState]); + return fetchState; +} diff --git a/src/plugins/discover/public/application/components/doc/use_es_doc_search.test.tsx b/src/plugins/discover/public/application/components/doc/use_es_doc_search.test.tsx index 9fdb564cb518d..1ff623dc0e317 100644 --- a/src/plugins/discover/public/application/components/doc/use_es_doc_search.test.tsx +++ b/src/plugins/discover/public/application/components/doc/use_es_doc_search.test.tsx @@ -55,6 +55,7 @@ describe('Test of helper / hook', () => { }, "script_fields": Array [], "stored_fields": Array [], + "version": true, }, } `); @@ -84,6 +85,7 @@ describe('Test of helper / hook', () => { "runtime_mappings": Object {}, "script_fields": Array [], "stored_fields": Array [], + "version": true, }, } `); @@ -114,6 +116,7 @@ describe('Test of helper / hook', () => { "runtime_mappings": Object {}, "script_fields": Array [], "stored_fields": Array [], + "version": true, }, } `); @@ -162,6 +165,7 @@ describe('Test of helper / hook', () => { }, "script_fields": Array [], "stored_fields": Array [], + "version": true, }, } `); diff --git a/src/plugins/discover/public/application/components/doc/use_es_doc_search.ts b/src/plugins/discover/public/application/components/doc/use_es_doc_search.ts index 71a32b758aca7..ce039aeadc063 100644 --- a/src/plugins/discover/public/application/components/doc/use_es_doc_search.ts +++ b/src/plugins/discover/public/application/components/doc/use_es_doc_search.ts @@ -37,6 +37,7 @@ export function buildSearchBody( }, stored_fields: computedFields.storedFields, script_fields: computedFields.scriptFields, + version: true, }, }; if (!request.body) { diff --git a/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx index c885cb92e7649..098c7f55fbd9f 100644 --- a/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/application/embeddable/saved_search_embeddable.tsx @@ -22,7 +22,7 @@ import { Query, TimeRange, Filter, - IFieldType, + IndexPatternField, IndexPattern, ISearchSource, } from '../../../../data/common'; @@ -50,7 +50,7 @@ export interface SearchProps extends Partial { sharedItemTitle?: string; inspectorAdapters?: Adapters; - filter?: (field: IFieldType, value: string[], operator: string) => void; + filter?: (field: IndexPatternField, value: string[], operator: string) => void; hits?: ElasticSearchHit[]; totalHitCount?: number; onMoveColumn?: (column: string, index: number) => void; diff --git a/src/plugins/discover/public/application/embeddable/types.ts b/src/plugins/discover/public/application/embeddable/types.ts index c550e8c57f3ff..642c65c4b2a55 100644 --- a/src/plugins/discover/public/application/embeddable/types.ts +++ b/src/plugins/discover/public/application/embeddable/types.ts @@ -13,7 +13,7 @@ import { IEmbeddable, } from 'src/plugins/embeddable/public'; import { SortOrder } from '../angular/doc_table/components/table_header/helpers'; -import { Filter, IIndexPattern, TimeRange, Query } from '../../../../data/public'; +import { Filter, IndexPattern, TimeRange, Query } from '../../../../data/public'; import { SavedSearch } from '../..'; export interface SearchInput extends EmbeddableInput { @@ -27,7 +27,7 @@ export interface SearchInput extends EmbeddableInput { export interface SearchOutput extends EmbeddableOutput { editUrl: string; - indexPatterns?: IIndexPattern[]; + indexPatterns?: IndexPattern[]; editable: boolean; } diff --git a/src/plugins/discover/public/application/types.ts b/src/plugins/discover/public/application/types.ts index 4d7f47182e98a..798e0f350cc5f 100644 --- a/src/plugins/discover/public/application/types.ts +++ b/src/plugins/discover/public/application/types.ts @@ -9,6 +9,7 @@ export enum FetchStatus { UNINITIALIZED = 'uninitialized', LOADING = 'loading', + PARTIAL = 'partial', COMPLETE = 'complete', ERROR = 'error', } diff --git a/src/plugins/discover/public/kibana_services.ts b/src/plugins/discover/public/kibana_services.ts index c2ab4ae34c958..11bc61c9b261a 100644 --- a/src/plugins/discover/public/kibana_services.ts +++ b/src/plugins/discover/public/kibana_services.ts @@ -98,10 +98,9 @@ export { formatMsg, formatStack, subscribeWithScope } from '../../kibana_legacy/ // EXPORT types export { IndexPatternsContract, - IIndexPattern, IndexPattern, indexPatterns, - IFieldType, + IndexPatternField, ISearchSource, EsQuerySortValue, SortDirection, diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.test.tsx index ac10957d68a47..fabc6ec69b0ee 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { IndexPatternCreationConfig } from '../../../../../../../plugins/index_pattern_management/public'; -import { IFieldType } from '../../../../../../../plugins/data/public'; +import { IndexPatternField } from '../../../../../../../plugins/data/public'; import { mockManagementPlugin } from '../../../../mocks'; import { createComponentWithContext } from '../../../test_utils'; @@ -20,7 +20,7 @@ jest.mock('./components/advanced_options', () => ({ AdvancedOptions: 'AdvancedOp jest.mock('./components/action_buttons', () => ({ ActionButtons: 'ActionButtons' })); jest.mock('./../../lib', () => ({ extractTimeFields: jest.requireActual('./../../lib').extractTimeFields, - ensureMinimumTime: async (fields: IFieldType) => Promise.resolve(fields), + ensureMinimumTime: async (fields: IndexPatternField) => Promise.resolve(fields), })); const mockIndexPatternCreationType = new IndexPatternCreationConfig({ diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.test.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.test.ts index 90070c37995af..071c21d229524 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.test.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.test.ts @@ -7,13 +7,14 @@ */ import { extractTimeFields } from './extract_time_fields'; +import type { IndexPatternField } from 'src/plugins/data/public'; describe('extractTimeFields', () => { it('should handle no date fields', () => { const fields = [ { type: 'text', name: 'name' }, { type: 'text', name: 'name' }, - ]; + ] as IndexPatternField[]; expect(extractTimeFields(fields)).toEqual([ { display: `The indices which match this index pattern don't contain any time fields.` }, @@ -21,7 +22,7 @@ describe('extractTimeFields', () => { }); it('should add extra options', () => { - const fields = [{ type: 'date', name: '@timestamp' }]; + const fields = [{ type: 'date', name: '@timestamp' }] as IndexPatternField[]; expect(extractTimeFields(fields)).toEqual([ { display: '@timestamp', fieldName: '@timestamp' }, diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.ts index 1d7e25638412e..e2af9339e57a3 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/extract_time_fields.ts @@ -7,9 +7,9 @@ */ import { i18n } from '@kbn/i18n'; -import { IFieldType } from '../../../../../../plugins/data/public'; +import { IndexPatternField } from '../../../../../../plugins/data/public'; -export function extractTimeFields(fields: IFieldType[]) { +export function extractTimeFields(fields: IndexPatternField[]) { const dateFields = fields.filter((field) => field.type === 'date'); const label = i18n.translate( 'indexPatternManagement.createIndexPattern.stepTime.noTimeFieldsLabel', diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap index fc436faa6c755..95acb14282ba5 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap @@ -138,7 +138,6 @@ exports[`Table should render normally 1`] = ` Object { "displayName": "Elastic", "excluded": false, - "format": "", "hasRuntime": false, "info": Array [], "isMapped": true, @@ -150,7 +149,6 @@ exports[`Table should render normally 1`] = ` Object { "displayName": "timestamp", "excluded": false, - "format": "YYYY-MM-DD", "hasRuntime": false, "info": Array [], "isMapped": true, @@ -161,7 +159,6 @@ exports[`Table should render normally 1`] = ` Object { "displayName": "conflictingField", "excluded": false, - "format": "", "hasRuntime": false, "info": Array [], "isMapped": true, diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx index 163152b52e80b..5fb2ba46882cc 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx @@ -25,7 +25,6 @@ const items: IndexedFieldItem[] = [ type: 'name', kbnType: 'string', excluded: false, - format: '', isMapped: true, hasRuntime: false, }, @@ -36,7 +35,6 @@ const items: IndexedFieldItem[] = [ kbnType: 'date', info: [], excluded: false, - format: 'YYYY-MM-DD', isMapped: true, hasRuntime: false, }, @@ -47,7 +45,6 @@ const items: IndexedFieldItem[] = [ kbnType: 'conflict', info: [], excluded: false, - format: '', isMapped: true, hasRuntime: false, }, diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/types.ts b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/types.ts index 4454651eff30a..662134a003eb6 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/types.ts +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/types.ts @@ -6,9 +6,12 @@ * Side Public License, v 1. */ -import { IFieldType } from '../../../../../../plugins/data/public'; +import { IndexPatternFieldBase } from '@kbn/es-query'; +import { IndexPatternField } from '../../../../../../plugins/data/public'; -export interface IndexedFieldItem extends IFieldType { +type IndexedFieldItemBase = Partial & IndexPatternFieldBase; + +export interface IndexedFieldItem extends IndexedFieldItemBase { info: string[]; excluded: boolean; kbnType: string; diff --git a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx index fc55e8a36c99e..b5c0186cd998c 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx @@ -39,10 +39,9 @@ import { getSupportedScriptingLanguages, } from '../../scripting_languages'; import { - IndexPatternField, FieldFormatInstanceType, IndexPattern, - IFieldType, + IndexPatternField, KBN_FIELD_TYPES, ES_FIELD_TYPES, DataPublicPluginStart, @@ -145,7 +144,7 @@ export class FieldEditor extends PureComponent f.name), + existingFieldNames: indexPattern.fields.getAll().map((f: IndexPatternField) => f.name), fieldFormatId: undefined, fieldFormatParams: {}, showScriptingHelp: false, diff --git a/src/plugins/input_control_vis/public/components/editor/control_editor.tsx b/src/plugins/input_control_vis/public/components/editor/control_editor.tsx index f7635f55aaee4..ec606b19c77d1 100644 --- a/src/plugins/input_control_vis/public/components/editor/control_editor.tsx +++ b/src/plugins/input_control_vis/public/components/editor/control_editor.tsx @@ -22,7 +22,7 @@ import { import { RangeControlEditor } from './range_control_editor'; import { ListControlEditor } from './list_control_editor'; import { getTitle, ControlParams, CONTROL_TYPES, ControlParamsOptions } from '../../editor_utils'; -import { IIndexPattern } from '../../../../data/public'; +import { IndexPattern } from '../../../../data/public'; import { InputControlVisDependencies } from '../../plugin'; import './control_editor.scss'; @@ -35,7 +35,7 @@ interface ControlEditorUiProps { handleRemoveControl: (controlIndex: number) => void; handleIndexPatternChange: (controlIndex: number, indexPatternId: string) => void; handleFieldNameChange: (controlIndex: number, fieldName: string) => void; - getIndexPattern: (indexPatternId: string) => Promise; + getIndexPattern: (indexPatternId: string) => Promise; handleOptionsChange: ( controlIndex: number, optionName: T, diff --git a/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx b/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx index 8afd2f198d297..c6921b48e6020 100644 --- a/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx +++ b/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx @@ -20,7 +20,7 @@ import { } from '@elastic/eui'; import { VisEditorOptionsProps } from 'src/plugins/visualizations/public'; -import { IIndexPattern } from 'src/plugins/data/public'; +import { IndexPattern } from 'src/plugins/data/public'; import { ControlEditor } from './control_editor'; import { addControl, @@ -49,7 +49,7 @@ class ControlsTab extends PureComponent { type: CONTROL_TYPES.LIST, }; - getIndexPattern = async (indexPatternId: string): Promise => { + getIndexPattern = async (indexPatternId: string): Promise => { const [, startDeps] = await this.props.deps.core.getStartServices(); return await startDeps.data.indexPatterns.get(indexPatternId); }; diff --git a/src/plugins/input_control_vis/public/components/editor/field_select.tsx b/src/plugins/input_control_vis/public/components/editor/field_select.tsx index 0815b3bbe08ae..5d3f2ef81bf08 100644 --- a/src/plugins/input_control_vis/public/components/editor/field_select.tsx +++ b/src/plugins/input_control_vis/public/components/editor/field_select.tsx @@ -12,7 +12,7 @@ import React, { Component } from 'react'; import { injectI18n, FormattedMessage, InjectedIntlProps } from '@kbn/i18n/react'; import { EuiFormRow, EuiComboBox, EuiComboBoxOptionOption } from '@elastic/eui'; -import { IIndexPattern, IFieldType } from '../../../../data/public'; +import { IndexPattern, IFieldType } from '../../../../data/public'; interface FieldSelectUiState { isLoading: boolean; @@ -21,7 +21,7 @@ interface FieldSelectUiState { } export type FieldSelectUiProps = InjectedIntlProps & { - getIndexPattern: (indexPatternId: string) => Promise; + getIndexPattern: (indexPatternId: string) => Promise; indexPatternId: string; onChange: (value: any) => void; fieldName?: string; @@ -74,7 +74,7 @@ class FieldSelectUi extends Component { return; } - let indexPattern: IIndexPattern; + let indexPattern: IndexPattern; try { indexPattern = await this.props.getIndexPattern(indexPatternId); } catch (err) { diff --git a/src/plugins/input_control_vis/public/components/editor/list_control_editor.tsx b/src/plugins/input_control_vis/public/components/editor/list_control_editor.tsx index 61f7dd031d34b..474238d01e4c8 100644 --- a/src/plugins/input_control_vis/public/components/editor/list_control_editor.tsx +++ b/src/plugins/input_control_vis/public/components/editor/list_control_editor.tsx @@ -14,7 +14,7 @@ import { EuiFormRow, EuiFieldNumber, EuiSwitch, EuiSelect } from '@elastic/eui'; import { IndexPatternSelectFormRow } from './index_pattern_select_form_row'; import { FieldSelect } from './field_select'; import { ControlParams, ControlParamsOptions } from '../../editor_utils'; -import { IIndexPattern, IFieldType, IndexPatternSelectProps } from '../../../../data/public'; +import { IndexPattern, IFieldType, IndexPatternSelectProps } from '../../../../data/public'; import { InputControlVisDependencies } from '../../plugin'; interface ListControlEditorState { @@ -25,7 +25,7 @@ interface ListControlEditorState { } interface ListControlEditorProps { - getIndexPattern: (indexPatternId: string) => Promise; + getIndexPattern: (indexPatternId: string) => Promise; controlIndex: number; controlParams: ControlParams; handleFieldNameChange: (fieldName: string) => void; @@ -104,7 +104,7 @@ export class ListControlEditor extends PureComponent< return; } - let indexPattern: IIndexPattern; + let indexPattern: IndexPattern; try { indexPattern = await this.props.getIndexPattern(this.props.controlParams.indexPattern); } catch (err) { diff --git a/src/plugins/input_control_vis/public/components/editor/range_control_editor.tsx b/src/plugins/input_control_vis/public/components/editor/range_control_editor.tsx index 0f1e61bde2813..8be9e176cecc9 100644 --- a/src/plugins/input_control_vis/public/components/editor/range_control_editor.tsx +++ b/src/plugins/input_control_vis/public/components/editor/range_control_editor.tsx @@ -14,13 +14,13 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { IndexPatternSelectFormRow } from './index_pattern_select_form_row'; import { FieldSelect } from './field_select'; import { ControlParams, ControlParamsOptions } from '../../editor_utils'; -import { IIndexPattern, IFieldType, IndexPatternSelectProps } from '../../../../data/public'; +import { IndexPattern, IFieldType, IndexPatternSelectProps } from '../../../../data/public'; import { InputControlVisDependencies } from '../../plugin'; interface RangeControlEditorProps { controlIndex: number; controlParams: ControlParams; - getIndexPattern: (indexPatternId: string) => Promise; + getIndexPattern: (indexPatternId: string) => Promise; handleFieldNameChange: (fieldName: string) => void; handleIndexPatternChange: (indexPatternId: string) => void; handleOptionsChange: ( diff --git a/src/plugins/input_control_vis/public/test_utils/get_index_pattern_mock.ts b/src/plugins/input_control_vis/public/test_utils/get_index_pattern_mock.ts index 57bce49da763a..122800198f092 100644 --- a/src/plugins/input_control_vis/public/test_utils/get_index_pattern_mock.ts +++ b/src/plugins/input_control_vis/public/test_utils/get_index_pattern_mock.ts @@ -6,12 +6,12 @@ * Side Public License, v 1. */ -import { IIndexPattern } from 'src/plugins/data/public'; +import { IndexPattern } from 'src/plugins/data/public'; /** * Returns forced **Partial** IndexPattern for use in tests */ -export const getIndexPatternMock = (): Promise => { +export const getIndexPatternMock = (): Promise => { return Promise.resolve({ id: 'mockIndexPattern', title: 'mockIndexPattern', @@ -20,5 +20,5 @@ export const getIndexPatternMock = (): Promise => { { name: 'textField', type: 'string', aggregatable: false }, { name: 'numberField', type: 'number', aggregatable: true }, ], - } as IIndexPattern); + } as IndexPattern); }; diff --git a/src/plugins/kibana_legacy/kibana.json b/src/plugins/kibana_legacy/kibana.json index e96b4859a36d0..b9c808101b391 100644 --- a/src/plugins/kibana_legacy/kibana.json +++ b/src/plugins/kibana_legacy/kibana.json @@ -2,5 +2,9 @@ "id": "kibanaLegacy", "version": "kibana", "server": true, - "ui": true + "ui": true, + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts index a7dd5461adf46..ace26dc9e6295 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts @@ -80,6 +80,10 @@ export const stackManagementSchema: MakeSchemaFrom = { type: 'text', _meta: { description: 'Non-default value of setting.' }, }, + 'timelion:legacyChartsLibrary': { + type: 'boolean', + _meta: { description: 'Non-default value of setting.' }, + }, 'timelion:target_buckets': { type: 'long', _meta: { description: 'Non-default value of setting.' }, diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts index a47acf25a2cc1..95faaee88fa61 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts @@ -45,6 +45,7 @@ export interface UsageStats { 'visualization:tileMap:maxPrecision': number; 'csv:separator': string; 'visualization:tileMap:WMSdefaults': string; + 'timelion:legacyChartsLibrary': boolean; 'timelion:target_buckets': number; 'timelion:max_buckets': number; 'timelion:es.timefield': string; diff --git a/src/plugins/management/kibana.json b/src/plugins/management/kibana.json index 44c3f861709ce..ad1d6d01f1409 100644 --- a/src/plugins/management/kibana.json +++ b/src/plugins/management/kibana.json @@ -4,5 +4,9 @@ "server": true, "ui": true, "optionalPlugins": ["home", "share"], - "requiredBundles": ["kibanaReact", "kibanaUtils", "home"] + "requiredBundles": ["kibanaReact", "kibanaUtils", "home"], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx index f6c8d5fb69408..8f4940ffb05c9 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx @@ -34,7 +34,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { OverlayStart, HttpStart, IBasePath } from 'src/core/public'; import { IndexPatternsContract, - IIndexPattern, + IndexPattern, DataPublicPluginStart, } from '../../../../../data/public'; import { @@ -86,7 +86,7 @@ export interface FlyoutState { error?: string; file?: File; importCount: number; - indexPatterns?: IIndexPattern[]; + indexPatterns?: IndexPattern[]; importMode: ImportMode; loadingMessage?: string; isLegacyFile: boolean; diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index a5d4668a4296f..6947b6cc3ce38 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -7258,6 +7258,12 @@ "description": "Non-default value of setting." } }, + "timelion:legacyChartsLibrary": { + "type": "boolean", + "_meta": { + "description": "Non-default value of setting." + } + }, "timelion:target_buckets": { "type": "long", "_meta": { diff --git a/src/plugins/timelion/kibana.json b/src/plugins/timelion/kibana.json index 3134cc265fba1..b6513c46f8062 100644 --- a/src/plugins/timelion/kibana.json +++ b/src/plugins/timelion/kibana.json @@ -15,5 +15,9 @@ "visTypeTimelion", "savedObjects", "kibanaLegacy" - ] + ], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/src/plugins/timelion/public/app.js b/src/plugins/timelion/public/app.js index 6db88ad65a1d1..4a4b2be679dd3 100644 --- a/src/plugins/timelion/public/app.js +++ b/src/plugins/timelion/public/app.js @@ -21,7 +21,7 @@ import { registerListenEventListener, watchMultiDecorator, } from '../../kibana_legacy/public'; -import { getTimezone } from '../../vis_type_timelion/public'; +import { _LEGACY_ as visTypeTimelion } from '../../vis_type_timelion/public'; import { initCellsDirective } from './directives/cells/cells'; import { initFullscreenDirective } from './directives/fullscreen/fullscreen'; import { initFixedElementDirective } from './directives/fixed_element'; @@ -144,7 +144,7 @@ export function initTimelionApp(app, deps) { $scope.updatedSheets = []; const savedVisualizations = deps.plugins.visualizations.savedVisualizationsLoader; - const timezone = getTimezone(deps.core.uiSettings); + const timezone = visTypeTimelion.getTimezone(deps.core.uiSettings); const defaultExpression = '.es(*)'; diff --git a/src/plugins/timelion/public/directives/timelion_expression_input_helpers.js b/src/plugins/timelion/public/directives/timelion_expression_input_helpers.js index 2abfd2b1e7c7a..0bc5897c49d6f 100644 --- a/src/plugins/timelion/public/directives/timelion_expression_input_helpers.js +++ b/src/plugins/timelion/public/directives/timelion_expression_input_helpers.js @@ -7,7 +7,7 @@ */ import _ from 'lodash'; -import { parseTimelionExpressionAsync } from '../../../vis_type_timelion/public'; +import { _LEGACY_ as visTypeTimelion } from '../../../vis_type_timelion/public'; export const SUGGESTION_TYPE = { ARGUMENTS: 'arguments', @@ -180,7 +180,7 @@ async function extractSuggestionsFromParsedResult( export async function suggest(expression, functionList, cursorPosition, argValueSuggestions) { try { - const result = await parseTimelionExpressionAsync(expression); + const result = await visTypeTimelion.parseTimelionExpressionAsync(expression); return await extractSuggestionsFromParsedResult( result, cursorPosition, diff --git a/src/plugins/timelion/public/index.scss b/src/plugins/timelion/public/index.scss index b93e99bf9bcc4..7a4259b2a17c8 100644 --- a/src/plugins/timelion/public/index.scss +++ b/src/plugins/timelion/public/index.scss @@ -15,4 +15,4 @@ // styles for timelion visualization are lazy loaded only while a vis is opened // this will duplicate styles only if both Timelion app and timelion visualization are loaded // could be left here as it is since the Timelion app is deprecated -@import '../../vis_type_timelion/public/components/timelion_vis.scss'; +@import '../../vis_type_timelion/public/legacy/timelion_vis.scss'; diff --git a/src/plugins/timelion/public/panels/timechart/schema.ts b/src/plugins/timelion/public/panels/timechart/schema.ts index 7178ba135c4c5..dc26adc6ea5f5 100644 --- a/src/plugins/timelion/public/panels/timechart/schema.ts +++ b/src/plugins/timelion/public/panels/timechart/schema.ts @@ -11,13 +11,7 @@ import $ from 'jquery'; import moment from 'moment-timezone'; // @ts-ignore import observeResize from '../../lib/observe_resize'; -import { - calculateInterval, - DEFAULT_TIME_FORMAT, - tickFormatters, - xaxisFormatterProvider, - generateTicksProvider, -} from '../../../../vis_type_timelion/public'; +import { _LEGACY_ as visTypeTimelion } from '../../../../vis_type_timelion/public'; import { TimelionVisualizationDependencies } from '../../application'; const DEBOUNCE_DELAY = 50; @@ -37,9 +31,9 @@ export function timechartFn(dependencies: TimelionVisualizationDependencies) { help: 'Draw a timeseries chart', render($scope: any, $elem: any) { const template = '
'; - const formatters = tickFormatters() as any; - const getxAxisFormatter = xaxisFormatterProvider(uiSettings); - const generateTicks = generateTicksProvider(); + const formatters = visTypeTimelion.tickFormatters() as any; + const getxAxisFormatter = visTypeTimelion.xaxisFormatterProvider(uiSettings); + const generateTicks = visTypeTimelion.generateTicksProvider(); // TODO: I wonder if we should supply our own moment that sets this every time? // could just use angular's injection to provide a moment service? @@ -226,7 +220,7 @@ export function timechartFn(dependencies: TimelionVisualizationDependencies) { if (legendCaption) { legendCaption.text( moment(pos.x).format( - _.get(dataset, '[0]._global.legend.timeFormat', DEFAULT_TIME_FORMAT) + _.get(dataset, '[0]._global.legend.timeFormat', visTypeTimelion.DEFAULT_TIME_FORMAT) ) ); } @@ -289,7 +283,7 @@ export function timechartFn(dependencies: TimelionVisualizationDependencies) { // Get the X-axis tick format const time = timefilter.timefilter.getBounds() as any; - const interval = calculateInterval( + const interval = visTypeTimelion.calculateInterval( time.min.valueOf(), time.max.valueOf(), uiSettings.get('timelion:target_buckets') || 200, diff --git a/src/plugins/vis_type_timelion/common/constants.ts b/src/plugins/vis_type_timelion/common/constants.ts new file mode 100644 index 0000000000000..a97bdd855107c --- /dev/null +++ b/src/plugins/vis_type_timelion/common/constants.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const UI_SETTINGS = { + LEGACY_CHARTS_LIBRARY: 'timelion:legacyChartsLibrary', + ES_TIMEFIELD: 'timelion:es.timefield', + DEFAULT_INDEX: 'timelion:es.default_index', + TARGET_BUCKETS: 'timelion:target_buckets', + MAX_BUCKETS: 'timelion:max_buckets', + MIN_INTERVAL: 'timelion:min_interval', + GRAPHITE_URL: 'timelion:graphite.url', + QUANDL_KEY: 'timelion:quandl.key', +}; diff --git a/src/plugins/vis_type_timelion/common/vis_data.ts b/src/plugins/vis_type_timelion/common/vis_data.ts new file mode 100644 index 0000000000000..e3041f43a8f19 --- /dev/null +++ b/src/plugins/vis_type_timelion/common/vis_data.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export interface VisSeries { + yaxis?: number; + label: string; + lines?: { + show?: boolean; + lineWidth?: number; + fill?: number; + steps?: number; + }; + points?: { + show?: boolean; + symbol?: 'cross' | 'x' | 'circle' | 'square' | 'diamond' | 'plus' | 'triangle'; + fillColor?: string; + fill?: number; + radius?: number; + lineWidth?: number; + }; + bars: { + lineWidth?: number; + fill?: number; + }; + color?: string; + data: Array>; + stack: boolean; +} diff --git a/src/plugins/vis_type_timelion/kibana.json b/src/plugins/vis_type_timelion/kibana.json index bbd52e3e1bec5..bf537f4ffbc76 100644 --- a/src/plugins/vis_type_timelion/kibana.json +++ b/src/plugins/vis_type_timelion/kibana.json @@ -4,7 +4,7 @@ "kibanaVersion": "kibana", "server": true, "ui": true, - "requiredPlugins": ["visualizations", "data", "expressions"], + "requiredPlugins": ["visualizations", "data", "expressions", "charts"], "requiredBundles": ["kibanaUtils", "kibanaReact", "visDefaultEditor"], "owner": { "name": "Kibana App", diff --git a/src/plugins/vis_type_timelion/public/components/series/area.tsx b/src/plugins/vis_type_timelion/public/components/series/area.tsx new file mode 100644 index 0000000000000..589a488d3acad --- /dev/null +++ b/src/plugins/vis_type_timelion/public/components/series/area.tsx @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { AreaSeries, ScaleType, CurveType, AreaSeriesStyle, PointShape } from '@elastic/charts'; +import type { VisSeries } from '../../../common/vis_data'; + +interface AreaSeriesComponentProps { + index: number; + visData: VisSeries; + groupId: string; +} + +const isShowLines = (lines: VisSeries['lines'], points: VisSeries['points']) => + lines?.show ? true : points?.show ? false : true; + +const getAreaSeriesStyle = ({ color, lines, points }: AreaSeriesComponentProps['visData']) => + ({ + line: { + opacity: isShowLines(lines, points) ? 1 : 0, + stroke: color, + strokeWidth: lines?.lineWidth !== undefined ? Number(lines.lineWidth) : 3, + visible: isShowLines(lines, points), + }, + area: { + fill: color, + opacity: lines?.fill ?? 0, + visible: lines?.show ?? points?.show ?? true, + }, + point: { + fill: points?.fillColor ?? color, + opacity: points?.lineWidth !== undefined ? (points.fill || 1) * 10 : 10, + radius: points?.radius ?? 3, + stroke: color, + strokeWidth: points?.lineWidth ?? 2, + visible: points?.show ?? false, + shape: points?.symbol === 'cross' ? PointShape.X : points?.symbol, + }, + curve: lines?.steps ? CurveType.CURVE_STEP : CurveType.LINEAR, + } as AreaSeriesStyle); + +export const AreaSeriesComponent = ({ index, groupId, visData }: AreaSeriesComponentProps) => ( + +); diff --git a/src/plugins/vis_type_timelion/public/components/series/bar.tsx b/src/plugins/vis_type_timelion/public/components/series/bar.tsx new file mode 100644 index 0000000000000..6a97c8fea9690 --- /dev/null +++ b/src/plugins/vis_type_timelion/public/components/series/bar.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { BarSeries, ScaleType, BarSeriesStyle } from '@elastic/charts'; +import type { VisSeries } from '../../../common/vis_data'; + +interface BarSeriesComponentProps { + index: number; + visData: VisSeries; + groupId: string; +} + +const getBarSeriesStyle = ({ color, bars }: BarSeriesComponentProps['visData']) => { + let opacity = bars.fill ?? 1; + + if (opacity < 0) { + opacity = 0; + } else if (opacity > 1) { + opacity = 1; + } + + return { + rectBorder: { + stroke: color, + strokeWidth: Math.max(1, bars.lineWidth ? Math.ceil(bars.lineWidth / 2) : 1), + visible: true, + }, + rect: { + fill: color, + opacity, + widthPixel: 1, + }, + } as BarSeriesStyle; +}; + +export const BarSeriesComponent = ({ index, groupId, visData }: BarSeriesComponentProps) => ( + +); diff --git a/src/plugins/discover/public/application/helpers/index.ts b/src/plugins/vis_type_timelion/public/components/series/index.ts similarity index 79% rename from src/plugins/discover/public/application/helpers/index.ts rename to src/plugins/vis_type_timelion/public/components/series/index.ts index 40e771482fd14..3efe537d0b467 100644 --- a/src/plugins/discover/public/application/helpers/index.ts +++ b/src/plugins/vis_type_timelion/public/components/series/index.ts @@ -6,4 +6,5 @@ * Side Public License, v 1. */ -export { formatNumWithCommas } from './format_number_with_commas'; +export { BarSeriesComponent } from './bar'; +export { AreaSeriesComponent } from './area'; diff --git a/src/plugins/vis_type_timelion/public/components/timelion_vis.scss b/src/plugins/vis_type_timelion/public/components/timelion_vis.scss index c4d591bc82cad..663563432d56b 100644 --- a/src/plugins/vis_type_timelion/public/components/timelion_vis.scss +++ b/src/plugins/vis_type_timelion/public/components/timelion_vis.scss @@ -1,60 +1,10 @@ -.timChart { +.timelionChart { height: 100%; width: 100%; display: flex; flex-direction: column; - - // Custom Jquery FLOT / schema selectors - // Cannot change at the moment - - .chart-top-title { - @include euiFontSizeXS; - flex: 0; - text-align: center; - font-weight: $euiFontWeightBold; - } - - .chart-canvas { - min-width: 100%; - flex: 1; - overflow: hidden; - } - - .legendLabel { - white-space: nowrap; - text-overflow: ellipsis; - overflow-x: hidden; - line-height: normal; - } - - .legendColorBox { - vertical-align: middle; - } - - .ngLegendValue { - color: $euiTextColor; - cursor: pointer; - - &:focus, - &:hover { - text-decoration: underline; - } - } - - .ngLegendValueNumber { - margin-left: $euiSizeXS; - margin-right: $euiSizeXS; - font-weight: $euiFontWeightBold; - } - - .flot-tick-label { - font-size: $euiFontSizeXS; - color: $euiColorDarkShade; - } } -.timChart__legendCaption { - color: $euiTextColor; - white-space: nowrap; - font-weight: $euiFontWeightBold; +.timelionChart__topTitle { + text-align: center; } diff --git a/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx b/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx index 09e3b78c922cd..4690f4fe11e45 100644 --- a/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx +++ b/src/plugins/vis_type_timelion/public/components/timelion_vis_component.tsx @@ -6,422 +6,228 @@ * Side Public License, v 1. */ -import React, { useState, useEffect, useMemo, useCallback } from 'react'; -import $ from 'jquery'; -import moment from 'moment-timezone'; -import { debounce, compact, get, each, cloneDeep, last, map } from 'lodash'; -import { useResizeObserver } from '@elastic/eui'; +import React, { useEffect, useCallback, useMemo, useRef } from 'react'; +import { compact, last, map } from 'lodash'; +import { + Chart, + Settings, + Position, + Axis, + TooltipType, + PointerEvent, + LegendPositionConfig, + LayoutDirection, +} from '@elastic/charts'; +import { EuiTitle } from '@elastic/eui'; -import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; import { useKibana } from '../../../kibana_react/public'; -import { DEFAULT_TIME_FORMAT } from '../../common/lib'; + +import { AreaSeriesComponent, BarSeriesComponent } from './series'; import { - buildSeriesData, - buildOptions, - SERIES_ID_ATTR, - colors, - Axis, - ACTIVE_CURSOR, - eventBus, + extractAllYAxis, + withStaticPadding, + createTickFormat, + validateLegendPositionValue, + MAIN_GROUP_ID, } from '../helpers/panel_utils'; -import { Series, Sheet } from '../helpers/timelion_request_handler'; -import { tickFormatters } from '../helpers/tick_formatters'; -import { generateTicksProvider } from '../helpers/tick_generator'; -import { TimelionVisDependencies } from '../plugin'; +import { colors } from '../helpers/chart_constants'; +import { activeCursor$ } from '../helpers/active_cursor'; -import './timelion_vis.scss'; +import type { Sheet } from '../helpers/timelion_request_handler'; +import type { IInterpreterRenderHandlers } from '../../../expressions'; +import type { TimelionVisDependencies } from '../plugin'; +import type { RangeFilterParams } from '../../../data/public'; +import type { Series } from '../helpers/timelion_request_handler'; -interface CrosshairPlot extends jquery.flot.plot { - setCrosshair: (pos: Position) => void; - clearCrosshair: () => void; -} +import './timelion_vis.scss'; interface TimelionVisComponentProps { - fireEvent: IInterpreterRenderHandlers['event']; interval: string; seriesList: Sheet; + onBrushEvent: (rangeFilterParams: RangeFilterParams) => void; renderComplete: IInterpreterRenderHandlers['done']; } -interface Position { - x: number; - x1: number; - y: number; - y1: number; - pageX: number; - pageY: number; -} - -interface Range { - to: number; - from: number; -} - -interface Ranges { - xaxis: Range; - yaxis: Range; -} - -const DEBOUNCE_DELAY = 50; -// ensure legend is the same height with or without a caption so legend items do not move around -const emptyCaption = '
'; - -function TimelionVisComponent({ +const DefaultYAxis = () => ( + +); + +const renderYAxis = (series: Series[]) => { + const yAxisOptions = extractAllYAxis(series); + + const yAxis = yAxisOptions.map((option, index) => ( + + )); + + return yAxis.length ? yAxis : ; +}; + +const TimelionVisComponent = ({ interval, seriesList, renderComplete, - fireEvent, -}: TimelionVisComponentProps) { + onBrushEvent, +}: TimelionVisComponentProps) => { const kibana = useKibana(); - const [chart, setChart] = useState(() => cloneDeep(seriesList.list)); - const [canvasElem, setCanvasElem] = useState(); - const [chartElem, setChartElem] = useState(null); - - const [originalColorMap, setOriginalColorMap] = useState(() => new Map()); + const chartRef = useRef(null); + const chart = seriesList.list; - const [highlightedSeries, setHighlightedSeries] = useState(null); - const [focusedSeries, setFocusedSeries] = useState(); - const [plot, setPlot] = useState(); - - // Used to toggle the series, and for displaying values on hover - const [legendValueNumbers, setLegendValueNumbers] = useState>(); - const [legendCaption, setLegendCaption] = useState>(); + useEffect(() => { + const subscription = activeCursor$.subscribe((cursor: PointerEvent) => { + chartRef.current?.dispatchExternalPointerEvent(cursor); + }); - const canvasRef = useCallback((node: HTMLDivElement | null) => { - if (node !== null) { - setCanvasElem(node); - } + return () => { + subscription.unsubscribe(); + }; }, []); - const elementRef = useCallback((node: HTMLDivElement | null) => { - if (node !== null) { - setChartElem(node); - } + const handleCursorUpdate = useCallback((cursor: PointerEvent) => { + activeCursor$.next(cursor); }, []); - useEffect( - () => () => { - if (chartElem) { - $(chartElem).off('plotselected').off('plothover').off('mouseleave'); - } - }, - [chartElem] - ); - - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - const highlightSeries = useCallback( - debounce(({ currentTarget }: JQuery.TriggeredEvent) => { - const id = Number(currentTarget.getAttribute(SERIES_ID_ATTR)); - if (highlightedSeries === id) { + const brushEndListener = useCallback( + ({ x }) => { + if (!x) { return; } - setHighlightedSeries(id); - setChart((chartState) => - chartState.map((series: Series, seriesIndex: number) => { - series.color = - seriesIndex === id - ? originalColorMap.get(series) // color it like it was - : 'rgba(128,128,128,0.1)'; // mark as grey - - return series; - }) - ); - }, DEBOUNCE_DELAY), - [originalColorMap, highlightedSeries] - ); - - const focusSeries = useCallback( - (event: JQuery.TriggeredEvent) => { - const id = Number(event.currentTarget.getAttribute(SERIES_ID_ATTR)); - setFocusedSeries(id); - highlightSeries(event); + onBrushEvent({ + gte: x[0], + lte: x[1], + }); }, - [highlightSeries] + [onBrushEvent] ); - const toggleSeries = useCallback(({ currentTarget }: JQuery.TriggeredEvent) => { - const id = Number(currentTarget.getAttribute(SERIES_ID_ATTR)); - - setChart((chartState) => - chartState.map((series: Series, seriesIndex: number) => { - if (seriesIndex === id) { - series._hide = !series._hide; - } - return series; - }) - ); - }, []); - - const updateCaption = useCallback( - (plotData: any) => { - if (canvasElem && get(plotData, '[0]._global.legend.showTime', true)) { - const caption = $(''); - caption.html(emptyCaption); - setLegendCaption(caption); - - const canvasNode = $(canvasElem); - canvasNode.find('div.legend table').append(caption); - setLegendValueNumbers(canvasNode.find('.ngLegendValueNumber')); - - const legend = $(canvasElem).find('.ngLegendValue'); - if (legend) { - legend.click(toggleSeries); - legend.focus(focusSeries); - legend.mouseover(highlightSeries); - } - - // legend has been re-created. Apply focus on legend element when previously set - if (focusedSeries || focusedSeries === 0) { - canvasNode.find('div.legend table .legendLabel>span').get(focusedSeries).focus(); - } + const onRenderChange = useCallback( + (isRendered: boolean) => { + if (isRendered) { + renderComplete(); } }, - [focusedSeries, canvasElem, toggleSeries, focusSeries, highlightSeries] + [renderComplete] ); - const updatePlot = useCallback( - (chartValue: Series[], grid?: boolean) => { - if (canvasElem && canvasElem.clientWidth > 0 && canvasElem.clientHeight > 0) { - const options = buildOptions( - interval, - kibana.services.timefilter, - kibana.services.uiSettings, - chartElem?.clientWidth, - grid - ); - const updatedSeries = buildSeriesData(chartValue, options); - - if (options.yaxes) { - options.yaxes.forEach((yaxis: Axis) => { - if (yaxis && yaxis.units) { - const formatters = tickFormatters(); - yaxis.tickFormatter = formatters[yaxis.units.type as keyof typeof formatters]; - const byteModes = ['bytes', 'bytes/s']; - if (byteModes.includes(yaxis.units.type)) { - yaxis.tickGenerator = generateTicksProvider(); - } - } - }); - } - - const newPlot = $.plot($(canvasElem), updatedSeries, options); - setPlot(newPlot); - renderComplete(); + const title: string = useMemo(() => last(compact(map(seriesList.list, '_title'))) || '', [ + seriesList.list, + ]); - updateCaption(newPlot.getData()); - } - }, - [canvasElem, chartElem?.clientWidth, renderComplete, kibana.services, interval, updateCaption] + const tickFormat = useMemo( + () => createTickFormat(interval, kibana.services.timefilter, kibana.services.uiSettings), + [interval, kibana.services.timefilter, kibana.services.uiSettings] ); - const dimensions = useResizeObserver(chartElem); + const legend = useMemo(() => { + const legendPosition: LegendPositionConfig = { + floating: true, + floatingColumns: 1, + vAlign: Position.Top, + hAlign: Position.Left, + direction: LayoutDirection.Vertical, + }; + let showLegend = true; - useEffect(() => { - updatePlot(chart, seriesList.render && seriesList.render.grid); - }, [chart, updatePlot, seriesList.render, dimensions]); + chart.forEach((series) => { + if (series._global?.legend) { + const { show = true, position, noColumns = legendPosition.floatingColumns } = + series._global?.legend ?? {}; - useEffect(() => { - const colorsSet: Array<[Series, string]> = []; - const newChart = seriesList.list.map((series: Series, seriesIndex: number) => { - const newSeries = { ...series }; - if (!newSeries.color) { - const colorIndex = seriesIndex % colors.length; - newSeries.color = colors[colorIndex]; - } - colorsSet.push([newSeries, newSeries.color]); - return newSeries; - }); - setChart(newChart); - setOriginalColorMap(new Map(colorsSet)); - }, [seriesList.list]); - - const unhighlightSeries = useCallback(() => { - if (highlightedSeries === null) { - return; - } - - setHighlightedSeries(null); - setFocusedSeries(null); - - setChart((chartState) => - chartState.map((series: Series) => { - series.color = originalColorMap.get(series); // reset the colors - return series; - }) - ); - }, [originalColorMap, highlightedSeries]); - - // Shamelessly borrowed from the flotCrosshairs example - const setLegendNumbers = useCallback( - (pos: Position) => { - unhighlightSeries(); - - const axes = plot!.getAxes(); - if (pos.x < axes.xaxis.min! || pos.x > axes.xaxis.max!) { - return; - } + if (validateLegendPositionValue(position)) { + const [vAlign, hAlign] = position.split(''); - const dataset = plot!.getData(); - if (legendCaption) { - legendCaption.text( - moment(pos.x).format(get(dataset, '[0]._global.legend.timeFormat', DEFAULT_TIME_FORMAT)) - ); - } - for (let i = 0; i < dataset.length; ++i) { - const series = dataset[i]; - const useNearestPoint = series.lines!.show && !series.lines!.steps; - const precision = get(series, '_meta.precision', 2); - - // We're setting this flag on top on the series object belonging to the flot library, so we're simply casting here. - if ((series as { _hide?: boolean })._hide) { - continue; + legendPosition.vAlign = vAlign === 'n' ? Position.Top : Position.Bottom; + legendPosition.hAlign = hAlign === 'e' ? Position.Right : Position.Left; } - const currentPoint = series.data.find((point: [number, number], index: number) => { - if (index + 1 === series.data.length) { - return true; - } - if (useNearestPoint) { - return pos.x - point[0] < series.data[index + 1][0] - pos.x; - } else { - return pos.x < series.data[index + 1][0]; - } - }); - - const y = currentPoint[1]; - - if (legendValueNumbers) { - if (y == null) { - legendValueNumbers.eq(i).empty(); - } else { - let label = y.toFixed(precision); - const formatter = ((series.yaxis as unknown) as Axis).tickFormatter; - if (formatter) { - label = formatter(Number(label), (series.yaxis as unknown) as Axis); - } - legendValueNumbers.eq(i).text(`(${label})`); - } + if (!show) { + showLegend = false; } - } - }, - [plot, legendValueNumbers, unhighlightSeries, legendCaption] - ); - - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - const debouncedSetLegendNumbers = useCallback( - debounce(setLegendNumbers, DEBOUNCE_DELAY, { - maxWait: DEBOUNCE_DELAY, - leading: true, - trailing: false, - }), - [setLegendNumbers] - ); - - const clearLegendNumbers = useCallback(() => { - if (legendCaption) { - legendCaption.html(emptyCaption); - } - each(legendValueNumbers!, (num: Node) => { - $(num).empty(); - }); - }, [legendCaption, legendValueNumbers]); - - const plotHover = useCallback( - (pos: Position) => { - (plot as CrosshairPlot).setCrosshair(pos); - debouncedSetLegendNumbers(pos); - }, - [plot, debouncedSetLegendNumbers] - ); - - const plotHoverHandler = useCallback( - (event: JQuery.TriggeredEvent, pos: Position) => { - if (!plot) { - return; - } - plotHover(pos); - eventBus.trigger(ACTIVE_CURSOR, [event, pos]); - }, - [plot, plotHover] - ); - useEffect(() => { - const updateCursor = (_: any, event: JQuery.TriggeredEvent, pos: Position) => { - if (!plot) { - return; + if (noColumns !== undefined) { + legendPosition.floatingColumns = noColumns; + } } - plotHover(pos); - }; - - eventBus.on(ACTIVE_CURSOR, updateCursor); - - return () => { - eventBus.off(ACTIVE_CURSOR, updateCursor); - }; - }, [plot, plotHover]); - - const mouseLeaveHandler = useCallback(() => { - if (!plot) { - return; - } - (plot as CrosshairPlot).clearCrosshair(); - clearLegendNumbers(); - }, [plot, clearLegendNumbers]); - - const plotSelectedHandler = useCallback( - (event: JQuery.TriggeredEvent, ranges: Ranges) => { - fireEvent({ - name: 'applyFilter', - data: { - timeFieldName: '*', - filters: [ - { - range: { - '*': { - gte: ranges.xaxis.from, - lte: ranges.xaxis.to, - }, - }, - }, - ], - }, - }); - }, - [fireEvent] - ); - - useEffect(() => { - if (chartElem) { - $(chartElem).off('plotselected').on('plotselected', plotSelectedHandler); - } - }, [chartElem, plotSelectedHandler]); - - useEffect(() => { - if (chartElem) { - $(chartElem).off('mouseleave').on('mouseleave', mouseLeaveHandler); - } - }, [chartElem, mouseLeaveHandler]); + }); - useEffect(() => { - if (chartElem) { - $(chartElem).off('plothover').on('plothover', plotHoverHandler); - } - }, [chartElem, plotHoverHandler]); - - const title: string = useMemo(() => last(compact(map(seriesList.list, '_title'))) || '', [ - seriesList.list, - ]); + return { legendPosition, showLegend }; + }, [chart]); return ( -
-
{title}
-
+
+ {title && ( + +

{title}

+
+ )} + + tickFormat(value), + type: TooltipType.VerticalCursor, + }} + externalPointerEvents={{ tooltip: { visible: false } }} + /> + + + + {renderYAxis(chart)} + + {chart.map((data, index) => { + const visData = { ...data }; + const SeriesComponent = data.bars ? BarSeriesComponent : AreaSeriesComponent; + + if (!visData.color) { + visData.color = colors[index % colors.length]; + } + return ( + + ); + })} +
); -} +}; // default export required for React.Lazy // eslint-disable-next-line import/no-default-export diff --git a/src/plugins/discover/public/application/helpers/format_number_with_commas.ts b/src/plugins/vis_type_timelion/public/helpers/active_cursor.ts similarity index 59% rename from src/plugins/discover/public/application/helpers/format_number_with_commas.ts rename to src/plugins/vis_type_timelion/public/helpers/active_cursor.ts index 0dd85804ef92e..7f7f62fd6a9da 100644 --- a/src/plugins/discover/public/application/helpers/format_number_with_commas.ts +++ b/src/plugins/vis_type_timelion/public/helpers/active_cursor.ts @@ -6,11 +6,7 @@ * Side Public License, v 1. */ -const COMMA_SEPARATOR_RE = /(\d)(?=(\d{3})+(?!\d))/g; +import { Subject } from 'rxjs'; +import { PointerEvent } from '@elastic/charts'; -/** - * Converts a number to a string and adds commas - * as thousands separators - */ -export const formatNumWithCommas = (input: number) => - String(input).replace(COMMA_SEPARATOR_RE, '$1,'); +export const activeCursor$ = new Subject(); diff --git a/src/plugins/vis_type_timelion/public/helpers/chart_constants.ts b/src/plugins/vis_type_timelion/public/helpers/chart_constants.ts new file mode 100644 index 0000000000000..b530ec98bd8a1 --- /dev/null +++ b/src/plugins/vis_type_timelion/public/helpers/chart_constants.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const colors = [ + '#01A4A4', + '#C66', + '#D0D102', + '#616161', + '#00A1CB', + '#32742C', + '#F18D05', + '#113F8C', + '#61AE24', + '#D70060', +]; diff --git a/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts b/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts index 8ef527a181e8c..1ee834b7d30ed 100644 --- a/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts +++ b/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts @@ -6,18 +6,18 @@ * Side Public License, v 1. */ -import { cloneDeep, defaults, mergeWith, compact } from 'lodash'; -import $ from 'jquery'; -import moment, { Moment } from 'moment-timezone'; - -import { TimefilterContract } from 'src/plugins/data/public'; -import { IUiSettingsClient } from 'kibana/public'; +import moment from 'moment-timezone'; +import { Position, AxisSpec } from '@elastic/charts'; +import type { TimefilterContract } from 'src/plugins/data/public'; +import type { IUiSettingsClient } from 'kibana/public'; import { calculateInterval } from '../../common/lib'; import { xaxisFormatterProvider } from './xaxis_formatter'; -import { Series } from './timelion_request_handler'; +import { tickFormatters } from './tick_formatters'; + +import type { Series } from './timelion_request_handler'; -export interface Axis { +export interface IAxis { delta?: number; max?: number; min?: number; @@ -30,87 +30,26 @@ export interface Axis { tickLength: number; timezone: string; tickDecimals?: number; - tickFormatter: ((val: number) => string) | ((val: number, axis: Axis) => string); - tickGenerator?(axis: Axis): number[]; - units?: { type: string }; -} - -interface TimeRangeBounds { - min: Moment | undefined; - max: Moment | undefined; + tickFormatter: (val: number) => string; + tickGenerator?(axis: IAxis): number[]; + units?: { type: string; prefix: string; suffix: string }; + domain?: { + min?: number; + max?: number; + }; + position?: Position; + axisLabel?: string; } -export const ACTIVE_CURSOR = 'ACTIVE_CURSOR_TIMELION'; -export const eventBus = $({}); - -const colors = [ - '#01A4A4', - '#C66', - '#D0D102', - '#616161', - '#00A1CB', - '#32742C', - '#F18D05', - '#113F8C', - '#61AE24', - '#D70060', -]; - -const SERIES_ID_ATTR = 'data-series-id'; - -function buildSeriesData(chart: Series[], options: jquery.flot.plotOptions) { - const seriesData = chart.map((series: Series, seriesIndex: number) => { - const newSeries: Series = cloneDeep( - defaults(series, { - shadowSize: 0, - lines: { - lineWidth: 3, - }, - }) - ); - - newSeries._id = seriesIndex; - - if (series.color) { - const span = document.createElement('span'); - span.style.color = series.color; - newSeries.color = span.style.color; - } - - if (series._hide) { - newSeries.data = []; - newSeries.stack = false; - newSeries.label = `(hidden) ${series.label}`; - } - - if (series._global) { - mergeWith(options, series._global, (objVal, srcVal) => { - // This is kind of gross, it means that you can't replace a global value with a null - // best you can do is an empty string. Deal with it. - if (objVal == null) { - return srcVal; - } - if (srcVal == null) { - return objVal; - } - }); - } - - return newSeries; - }); +export const validateLegendPositionValue = (position: string) => /^(n|s)(e|w)$/s.test(position); - return compact(seriesData); -} - -function buildOptions( +export const createTickFormat = ( intervalValue: string, timefilter: TimefilterContract, - uiSettings: IUiSettingsClient, - clientWidth = 0, - showGrid?: boolean -) { + uiSettings: IUiSettingsClient +) => { // Get the X-axis tick format - const time: TimeRangeBounds = timefilter.getBounds(); + const time = timefilter.getBounds(); const interval = calculateInterval( (time.min && time.min.valueOf()) || 0, (time.max && time.max.valueOf()) || 0, @@ -120,61 +59,75 @@ function buildOptions( ); const format = xaxisFormatterProvider(uiSettings)(interval); - const tickLetterWidth = 7; - const tickPadding = 45; - - const options = { - xaxis: { - mode: 'time', - tickLength: 5, - timezone: 'browser', - // Calculate how many ticks can fit on the axis - ticks: Math.floor(clientWidth / (format.length * tickLetterWidth + tickPadding)), - // Use moment to format ticks so we get timezone correction - tickFormatter: (val: number) => moment(val).format(format), - }, - selection: { - mode: 'x', - color: '#ccc', - }, - crosshair: { - mode: 'x', - color: '#C66', - lineWidth: 2, - }, - colors, - grid: { - show: showGrid, - borderWidth: 0, - borderColor: null, - margin: 10, - hoverable: true, - autoHighlight: false, - }, - legend: { - backgroundColor: 'rgb(255,255,255,0)', - position: 'nw', - labelBoxBorderColor: 'rgb(255,255,255,0)', - labelFormatter(label: string, series: { _id: number }) { - const wrapperSpan = document.createElement('span'); - const labelSpan = document.createElement('span'); - const numberSpan = document.createElement('span'); - - wrapperSpan.setAttribute('class', 'ngLegendValue'); - wrapperSpan.setAttribute(SERIES_ID_ATTR, `${series._id}`); - - labelSpan.appendChild(document.createTextNode(label)); - numberSpan.setAttribute('class', 'ngLegendValueNumber'); - - wrapperSpan.appendChild(labelSpan); - wrapperSpan.appendChild(numberSpan); - - return wrapperSpan.outerHTML; - }, - }, - } as jquery.flot.plotOptions & { yaxes?: Axis[] }; - - return options; -} + return (val: number) => moment(val).format(format); +}; + +/** While we support 2 versions of the timeline, we need this adapter. **/ +export const MAIN_GROUP_ID = 1; + +export const withStaticPadding = (domain: AxisSpec['domain']): AxisSpec['domain'] => + (({ + ...domain, + padding: 50, + paddingUnit: 'pixel', + } as unknown) as AxisSpec['domain']); + +const adaptYaxisParams = (yaxis: IAxis) => { + const y = { ...yaxis }; + + if (y.units) { + const formatters = tickFormatters(y); + y.tickFormatter = formatters[y.units.type as keyof typeof formatters]; + } else if (yaxis.tickDecimals) { + y.tickFormatter = (val: number) => val.toFixed(yaxis.tickDecimals); + } + + return { + title: y.axisLabel, + position: y.position, + tickFormat: y.tickFormatter, + domain: withStaticPadding({ + fit: y.min === undefined && y.max === undefined, + min: y.min, + max: y.max, + }), + }; +}; + +const extractYAxisForSeries = (series: Series) => { + const yaxis = (series._global?.yaxes ?? []).reduce( + (acc: IAxis, item: IAxis) => ({ + ...acc, + ...item, + }), + {} + ); + + if (Object.keys(yaxis).length) { + return adaptYaxisParams(yaxis); + } +}; + +export const extractAllYAxis = (series: Series[]) => { + return series.reduce((acc, data, index) => { + const yaxis = extractYAxisForSeries(data); + const groupId = `${data.yaxis ? data.yaxis : MAIN_GROUP_ID}`; + + if (acc.every((axis) => axis.groupId !== groupId)) { + acc.push({ + groupId, + domain: withStaticPadding({ + fit: false, + }), + id: (yaxis?.position || Position.Left) + index, + position: Position.Left, + ...yaxis, + }); + } else if (yaxis) { + const axisOptionIndex = acc.findIndex((axis) => axis.groupId === groupId); + acc[axisOptionIndex] = { ...acc[axisOptionIndex], ...yaxis }; + } -export { buildSeriesData, buildOptions, SERIES_ID_ATTR, colors }; + return acc; + }, [] as Array>); +}; diff --git a/src/plugins/vis_type_timelion/public/helpers/tick_formatters.test.ts b/src/plugins/vis_type_timelion/public/helpers/tick_formatters.test.ts index 03b7c21706957..9980644c0f941 100644 --- a/src/plugins/vis_type_timelion/public/helpers/tick_formatters.test.ts +++ b/src/plugins/vis_type_timelion/public/helpers/tick_formatters.test.ts @@ -7,25 +7,26 @@ */ import { tickFormatters } from './tick_formatters'; +import type { IAxis } from './panel_utils'; -describe('Tick Formatters', function () { +describe('Tick Formatters', () => { let formatters: any; beforeEach(function () { - formatters = tickFormatters(); + formatters = tickFormatters({} as IAxis); }); - describe('Bits mode', function () { + describe('Bits mode', () => { let bitFormatter: any; beforeEach(function () { bitFormatter = formatters.bits; }); - it('is a function', function () { + it('is a function', () => { expect(bitFormatter).toEqual(expect.any(Function)); }); - it('formats with b/kb/mb/gb', function () { + it('formats with b/kb/mb/gb', () => { expect(bitFormatter(7)).toEqual('7b'); expect(bitFormatter(4 * 1000)).toEqual('4kb'); expect(bitFormatter(4.1 * 1000 * 1000)).toEqual('4.1mb'); @@ -40,24 +41,24 @@ describe('Tick Formatters', function () { }); }); - describe('Bits/s mode', function () { + describe('Bits/s mode', () => { let bitsFormatter: any; beforeEach(function () { bitsFormatter = formatters['bits/s']; }); - it('is a function', function () { + it('is a function', () => { expect(bitsFormatter).toEqual(expect.any(Function)); }); - it('formats with b/kb/mb/gb', function () { + it('formats with b/kb/mb/gb', () => { expect(bitsFormatter(7)).toEqual('7b/s'); expect(bitsFormatter(4 * 1000)).toEqual('4kb/s'); expect(bitsFormatter(4.1 * 1000 * 1000)).toEqual('4.1mb/s'); expect(bitsFormatter(3 * 1000 * 1000 * 1000)).toEqual('3gb/s'); }); - it('formats negative values with b/kb/mb/gb', function () { + it('formats negative values with b/kb/mb/gb', () => { expect(bitsFormatter(-7)).toEqual('-7b/s'); expect(bitsFormatter(-4 * 1000)).toEqual('-4kb/s'); expect(bitsFormatter(-4.1 * 1000 * 1000)).toEqual('-4.1mb/s'); @@ -65,24 +66,24 @@ describe('Tick Formatters', function () { }); }); - describe('Bytes mode', function () { + describe('Bytes mode', () => { let byteFormatter: any; beforeEach(function () { byteFormatter = formatters.bytes; }); - it('is a function', function () { + it('is a function', () => { expect(byteFormatter).toEqual(expect.any(Function)); }); - it('formats with B/KB/MB/GB', function () { + it('formats with B/KB/MB/GB', () => { expect(byteFormatter(10)).toEqual('10B'); expect(byteFormatter(10 * 1024)).toEqual('10KB'); expect(byteFormatter(10.2 * 1024 * 1024)).toEqual('10.2MB'); expect(byteFormatter(3 * 1024 * 1024 * 1024)).toEqual('3GB'); }); - it('formats negative values with B/KB/MB/GB', function () { + it('formats negative values with B/KB/MB/GB', () => { expect(byteFormatter(-10)).toEqual('-10B'); expect(byteFormatter(-10 * 1024)).toEqual('-10KB'); expect(byteFormatter(-10.2 * 1024 * 1024)).toEqual('-10.2MB'); @@ -90,24 +91,24 @@ describe('Tick Formatters', function () { }); }); - describe('Bytes/s mode', function () { + describe('Bytes/s mode', () => { let bytesFormatter: any; beforeEach(function () { bytesFormatter = formatters['bytes/s']; }); - it('is a function', function () { + it('is a function', () => { expect(bytesFormatter).toEqual(expect.any(Function)); }); - it('formats with B/KB/MB/GB', function () { + it('formats with B/KB/MB/GB', () => { expect(bytesFormatter(10)).toEqual('10B/s'); expect(bytesFormatter(10 * 1024)).toEqual('10KB/s'); expect(bytesFormatter(10.2 * 1024 * 1024)).toEqual('10.2MB/s'); expect(bytesFormatter(3 * 1024 * 1024 * 1024)).toEqual('3GB/s'); }); - it('formats negative values with B/KB/MB/GB', function () { + it('formats negative values with B/KB/MB/GB', () => { expect(bytesFormatter(-10)).toEqual('-10B/s'); expect(bytesFormatter(-10 * 1024)).toEqual('-10KB/s'); expect(bytesFormatter(-10.2 * 1024 * 1024)).toEqual('-10.2MB/s'); @@ -115,108 +116,105 @@ describe('Tick Formatters', function () { }); }); - describe('Currency mode', function () { + describe('Currency mode', () => { let currencyFormatter: any; beforeEach(function () { currencyFormatter = formatters.currency; }); - it('is a function', function () { + it('is a function', () => { expect(currencyFormatter).toEqual(expect.any(Function)); }); - it('formats with $ by default', function () { + it('formats with $ by default', () => { const axis = { - options: { - units: {}, - }, + units: {}, }; - expect(currencyFormatter(10.2, axis)).toEqual('$10.20'); + formatters = tickFormatters(axis as IAxis); + currencyFormatter = formatters.currency; + expect(currencyFormatter(10.2)).toEqual('$10.20'); }); - it('accepts currency in ISO 4217', function () { + it('accepts currency in ISO 4217', () => { const axis = { - options: { - units: { - prefix: 'CNY', - }, + units: { + prefix: 'CNY', }, }; - - expect(currencyFormatter(10.2, axis)).toEqual('CN¥10.20'); + formatters = tickFormatters(axis as IAxis); + currencyFormatter = formatters.currency; + expect(currencyFormatter(10.2)).toEqual('CN¥10.20'); }); }); - describe('Percent mode', function () { + describe('Percent mode', () => { let percentFormatter: any; beforeEach(function () { percentFormatter = formatters.percent; }); - it('is a function', function () { + it('is a function', () => { expect(percentFormatter).toEqual(expect.any(Function)); }); - it('formats with %', function () { + it('formats with %', () => { const axis = { - options: { - units: {}, - }, + units: {}, }; - expect(percentFormatter(0.1234, axis)).toEqual('12%'); + formatters = tickFormatters(axis as IAxis); + percentFormatter = formatters.percent; + expect(percentFormatter(0.1234)).toEqual('12%'); }); - it('formats with % with decimal precision', function () { + it('formats with % with decimal precision', () => { const tickDecimals = 3; const tickDecimalShift = 2; const axis = { tickDecimals: tickDecimals + tickDecimalShift, - options: { - units: { - tickDecimalsShift: tickDecimalShift, - }, + units: { + tickDecimalsShift: tickDecimalShift, }, - }; - expect(percentFormatter(0.12345, axis)).toEqual('12.345%'); + } as unknown; + formatters = tickFormatters(axis as IAxis); + percentFormatter = formatters.percent; + expect(percentFormatter(0.12345)).toEqual('12.345%'); }); }); - describe('Custom mode', function () { + describe('Custom mode', () => { let customFormatter: any; beforeEach(function () { customFormatter = formatters.custom; }); - it('is a function', function () { + it('is a function', () => { expect(customFormatter).toEqual(expect.any(Function)); }); - it('accepts prefix and suffix', function () { + it('accepts prefix and suffix', () => { const axis = { - options: { - units: { - prefix: 'prefix', - suffix: 'suffix', - }, + units: { + prefix: 'prefix', + suffix: 'suffix', }, tickDecimals: 1, }; - - expect(customFormatter(10.2, axis)).toEqual('prefix10.2suffix'); + formatters = tickFormatters(axis as IAxis); + customFormatter = formatters.custom; + expect(customFormatter(10.2)).toEqual('prefix10.2suffix'); }); - it('correctly renders small values', function () { + it('correctly renders small values', () => { const axis = { - options: { - units: { - prefix: 'prefix', - suffix: 'suffix', - }, + units: { + prefix: 'prefix', + suffix: 'suffix', }, tickDecimals: 3, }; - - expect(customFormatter(0.00499999999999999, axis)).toEqual('prefix0.005suffix'); + formatters = tickFormatters(axis as IAxis); + customFormatter = formatters.custom; + expect(customFormatter(0.00499999999999999)).toEqual('prefix0.005suffix'); }); }); }); diff --git a/src/plugins/vis_type_timelion/public/helpers/tick_formatters.ts b/src/plugins/vis_type_timelion/public/helpers/tick_formatters.ts index 56fa17e74f275..eb37e76e1f95d 100644 --- a/src/plugins/vis_type_timelion/public/helpers/tick_formatters.ts +++ b/src/plugins/vis_type_timelion/public/helpers/tick_formatters.ts @@ -8,9 +8,9 @@ import { get } from 'lodash'; -import { Axis } from './panel_utils'; +import { IAxis } from './panel_utils'; -function baseTickFormatter(value: number, axis: Axis) { +function baseTickFormatter(value: number, axis: IAxis) { const factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; const formatted = '' + Math.round(value * factor) / factor; @@ -45,21 +45,20 @@ function unitFormatter(divisor: number, units: string[]) { }; } -export function tickFormatters() { +export function tickFormatters(axis: IAxis) { return { bits: unitFormatter(1000, ['b', 'kb', 'mb', 'gb', 'tb', 'pb']), 'bits/s': unitFormatter(1000, ['b/s', 'kb/s', 'mb/s', 'gb/s', 'tb/s', 'pb/s']), bytes: unitFormatter(1024, ['B', 'KB', 'MB', 'GB', 'TB', 'PB']), 'bytes/s': unitFormatter(1024, ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s']), - currency(val: number, axis: Axis) { + currency(val: number) { return val.toLocaleString('en', { style: 'currency', - currency: (axis && axis.options && axis.options.units.prefix) || 'USD', + currency: (axis && axis.units && axis.units.prefix) || 'USD', }); }, - percent(val: number, axis: Axis) { - let precision = - get(axis, 'tickDecimals', 0) - get(axis, 'options.units.tickDecimalsShift', 0); + percent(val: number) { + let precision = get(axis, 'tickDecimals', 0) - get(axis, 'units.tickDecimalsShift', 0); // toFixed only accepts values between 0 and 20 if (precision < 0) { precision = 0; @@ -69,10 +68,10 @@ export function tickFormatters() { return (val * 100).toFixed(precision) + '%'; }, - custom(val: number, axis: Axis) { + custom(val: number) { const formattedVal = baseTickFormatter(val, axis); - const prefix = axis && axis.options && axis.options.units.prefix; - const suffix = axis && axis.options && axis.options.units.suffix; + const prefix = axis && axis.units && axis.units.prefix; + const suffix = axis && axis.units && axis.units.suffix; return prefix + formattedVal + suffix; }, }; diff --git a/src/plugins/vis_type_timelion/public/helpers/tick_generator.ts b/src/plugins/vis_type_timelion/public/helpers/tick_generator.ts index af559d5aaac2b..6ffdda0bafdb6 100644 --- a/src/plugins/vis_type_timelion/public/helpers/tick_generator.ts +++ b/src/plugins/vis_type_timelion/public/helpers/tick_generator.ts @@ -6,14 +6,14 @@ * Side Public License, v 1. */ -import { Axis } from './panel_utils'; +import { IAxis } from './panel_utils'; export function generateTicksProvider() { function floorInBase(n: number, base: number) { return base * Math.floor(n / base); } - function generateTicks(axis: Axis) { + function generateTicks(axis: IAxis) { const returnTicks = []; let tickSize = 2; let delta = axis.delta || 0; @@ -46,5 +46,5 @@ export function generateTicksProvider() { return returnTicks; } - return (axis: Axis) => generateTicks(axis); + return (axis: IAxis) => generateTicks(axis); } diff --git a/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts b/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts index 7e8f28bd32b2f..fe5e9183976fa 100644 --- a/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts +++ b/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts @@ -12,6 +12,7 @@ import { TimelionVisDependencies } from '../plugin'; import { getTimezone } from './get_timezone'; import { TimelionVisParams } from '../timelion_vis_fn'; import { getDataSearch } from '../helpers/plugin_services'; +import { VisSeries } from '../../common/vis_data'; interface Stats { cacheCount: number; @@ -21,17 +22,13 @@ interface Stats { sheetTime: number; } -export interface Series { - _global?: boolean; +export interface Series extends VisSeries { + _global?: Record; _hide?: boolean; _id?: number; _title?: string; - color?: string; - data: Array>; fit: string; - label: string; split: string; - stack?: boolean; type: string; } diff --git a/src/plugins/vis_type_timelion/public/index.ts b/src/plugins/vis_type_timelion/public/index.ts index fa257907a176d..1ab572b497212 100644 --- a/src/plugins/vis_type_timelion/public/index.ts +++ b/src/plugins/vis_type_timelion/public/index.ts @@ -9,16 +9,26 @@ import { PluginInitializerContext } from 'kibana/public'; import { TimelionVisPlugin as Plugin } from './plugin'; +import { tickFormatters } from './legacy/tick_formatters'; +import { getTimezone } from './helpers/get_timezone'; +import { xaxisFormatterProvider } from './helpers/xaxis_formatter'; +import { generateTicksProvider } from './helpers/tick_generator'; +import { DEFAULT_TIME_FORMAT, calculateInterval } from '../common/lib'; +import { parseTimelionExpressionAsync } from '../common/parser_async'; + export function plugin(initializerContext: PluginInitializerContext) { return new Plugin(initializerContext); } -export { getTimezone } from './helpers/get_timezone'; -export { tickFormatters } from './helpers/tick_formatters'; -export { xaxisFormatterProvider } from './helpers/xaxis_formatter'; -export { generateTicksProvider } from './helpers/tick_generator'; - -export { DEFAULT_TIME_FORMAT, calculateInterval } from '../common/lib'; -export { parseTimelionExpressionAsync } from '../common/parser_async'; +// This export should be removed on removing Timeline APP +export const _LEGACY_ = { + DEFAULT_TIME_FORMAT, + calculateInterval, + parseTimelionExpressionAsync, + tickFormatters, + getTimezone, + xaxisFormatterProvider, + generateTicksProvider, +}; export { VisTypeTimelionPluginStart, VisTypeTimelionPluginSetup } from './plugin'; diff --git a/src/plugins/vis_type_timelion/public/legacy/panel_utils.ts b/src/plugins/vis_type_timelion/public/legacy/panel_utils.ts new file mode 100644 index 0000000000000..5dd8431a5a2ab --- /dev/null +++ b/src/plugins/vis_type_timelion/public/legacy/panel_utils.ts @@ -0,0 +1,168 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { cloneDeep, defaults, mergeWith, compact } from 'lodash'; +import $ from 'jquery'; +import moment, { Moment } from 'moment-timezone'; + +import { TimefilterContract } from 'src/plugins/data/public'; +import { IUiSettingsClient } from 'kibana/public'; + +import { calculateInterval } from '../../common/lib'; +import { xaxisFormatterProvider } from '../helpers/xaxis_formatter'; +import { Series } from '../helpers/timelion_request_handler'; +import { colors } from '../helpers/chart_constants'; + +export interface LegacyAxis { + delta?: number; + max?: number; + min?: number; + mode: string; + options?: { + units: { prefix: string; suffix: string }; + }; + tickSize?: number; + ticks: number; + tickLength: number; + timezone: string; + tickDecimals?: number; + tickFormatter: ((val: number) => string) | ((val: number, axis: LegacyAxis) => string); + tickGenerator?(axis: LegacyAxis): number[]; + units?: { type: string }; +} + +interface TimeRangeBounds { + min: Moment | undefined; + max: Moment | undefined; +} + +export const ACTIVE_CURSOR = 'ACTIVE_CURSOR_TIMELION'; +export const eventBus = $({}); + +const SERIES_ID_ATTR = 'data-series-id'; + +function buildSeriesData(chart: Series[], options: jquery.flot.plotOptions) { + const seriesData = chart.map((series: Series, seriesIndex: number) => { + const newSeries: Series = cloneDeep( + defaults(series, { + shadowSize: 0, + lines: { + lineWidth: 3, + }, + }) + ); + + newSeries._id = seriesIndex; + + if (series.color) { + const span = document.createElement('span'); + span.style.color = series.color; + newSeries.color = span.style.color; + } + + if (series._hide) { + newSeries.data = []; + newSeries.stack = false; + newSeries.label = `(hidden) ${series.label}`; + } + + if (series._global) { + mergeWith(options, series._global, (objVal, srcVal) => { + // This is kind of gross, it means that you can't replace a global value with a null + // best you can do is an empty string. Deal with it. + if (objVal == null) { + return srcVal; + } + if (srcVal == null) { + return objVal; + } + }); + } + + return newSeries; + }); + + return compact(seriesData); +} + +function buildOptions( + intervalValue: string, + timefilter: TimefilterContract, + uiSettings: IUiSettingsClient, + clientWidth = 0, + showGrid?: boolean +) { + // Get the X-axis tick format + const time: TimeRangeBounds = timefilter.getBounds(); + const interval = calculateInterval( + (time.min && time.min.valueOf()) || 0, + (time.max && time.max.valueOf()) || 0, + uiSettings.get('timelion:target_buckets') || 200, + intervalValue, + uiSettings.get('timelion:min_interval') || '1ms' + ); + const format = xaxisFormatterProvider(uiSettings)(interval); + + const tickLetterWidth = 7; + const tickPadding = 45; + + const options = { + xaxis: { + mode: 'time', + tickLength: 5, + timezone: 'browser', + // Calculate how many ticks can fit on the axis + ticks: Math.floor(clientWidth / (format.length * tickLetterWidth + tickPadding)), + // Use moment to format ticks so we get timezone correction + tickFormatter: (val: number) => moment(val).format(format), + }, + selection: { + mode: 'x', + color: '#ccc', + }, + crosshair: { + mode: 'x', + color: '#C66', + lineWidth: 2, + }, + colors, + grid: { + show: showGrid, + borderWidth: 0, + borderColor: null, + margin: 10, + hoverable: true, + autoHighlight: false, + }, + legend: { + backgroundColor: 'rgb(255,255,255,0)', + position: 'nw', + labelBoxBorderColor: 'rgb(255,255,255,0)', + labelFormatter(label: string, series: { _id: number }) { + const wrapperSpan = document.createElement('span'); + const labelSpan = document.createElement('span'); + const numberSpan = document.createElement('span'); + + wrapperSpan.setAttribute('class', 'ngLegendValue'); + wrapperSpan.setAttribute(SERIES_ID_ATTR, `${series._id}`); + + labelSpan.appendChild(document.createTextNode(label)); + numberSpan.setAttribute('class', 'ngLegendValueNumber'); + + wrapperSpan.appendChild(labelSpan); + wrapperSpan.appendChild(numberSpan); + + return wrapperSpan.outerHTML; + }, + }, + } as jquery.flot.plotOptions & { yaxes?: LegacyAxis[] }; + + return options; +} + +export { buildSeriesData, buildOptions, SERIES_ID_ATTR }; diff --git a/src/plugins/vis_type_timelion/public/legacy/tick_formatters.test.ts b/src/plugins/vis_type_timelion/public/legacy/tick_formatters.test.ts new file mode 100644 index 0000000000000..03b7c21706957 --- /dev/null +++ b/src/plugins/vis_type_timelion/public/legacy/tick_formatters.test.ts @@ -0,0 +1,222 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { tickFormatters } from './tick_formatters'; + +describe('Tick Formatters', function () { + let formatters: any; + + beforeEach(function () { + formatters = tickFormatters(); + }); + + describe('Bits mode', function () { + let bitFormatter: any; + beforeEach(function () { + bitFormatter = formatters.bits; + }); + + it('is a function', function () { + expect(bitFormatter).toEqual(expect.any(Function)); + }); + + it('formats with b/kb/mb/gb', function () { + expect(bitFormatter(7)).toEqual('7b'); + expect(bitFormatter(4 * 1000)).toEqual('4kb'); + expect(bitFormatter(4.1 * 1000 * 1000)).toEqual('4.1mb'); + expect(bitFormatter(3 * 1000 * 1000 * 1000)).toEqual('3gb'); + }); + + it('formats negative values with b/kb/mb/gb', () => { + expect(bitFormatter(-7)).toEqual('-7b'); + expect(bitFormatter(-4 * 1000)).toEqual('-4kb'); + expect(bitFormatter(-4.1 * 1000 * 1000)).toEqual('-4.1mb'); + expect(bitFormatter(-3 * 1000 * 1000 * 1000)).toEqual('-3gb'); + }); + }); + + describe('Bits/s mode', function () { + let bitsFormatter: any; + beforeEach(function () { + bitsFormatter = formatters['bits/s']; + }); + + it('is a function', function () { + expect(bitsFormatter).toEqual(expect.any(Function)); + }); + + it('formats with b/kb/mb/gb', function () { + expect(bitsFormatter(7)).toEqual('7b/s'); + expect(bitsFormatter(4 * 1000)).toEqual('4kb/s'); + expect(bitsFormatter(4.1 * 1000 * 1000)).toEqual('4.1mb/s'); + expect(bitsFormatter(3 * 1000 * 1000 * 1000)).toEqual('3gb/s'); + }); + + it('formats negative values with b/kb/mb/gb', function () { + expect(bitsFormatter(-7)).toEqual('-7b/s'); + expect(bitsFormatter(-4 * 1000)).toEqual('-4kb/s'); + expect(bitsFormatter(-4.1 * 1000 * 1000)).toEqual('-4.1mb/s'); + expect(bitsFormatter(-3 * 1000 * 1000 * 1000)).toEqual('-3gb/s'); + }); + }); + + describe('Bytes mode', function () { + let byteFormatter: any; + beforeEach(function () { + byteFormatter = formatters.bytes; + }); + + it('is a function', function () { + expect(byteFormatter).toEqual(expect.any(Function)); + }); + + it('formats with B/KB/MB/GB', function () { + expect(byteFormatter(10)).toEqual('10B'); + expect(byteFormatter(10 * 1024)).toEqual('10KB'); + expect(byteFormatter(10.2 * 1024 * 1024)).toEqual('10.2MB'); + expect(byteFormatter(3 * 1024 * 1024 * 1024)).toEqual('3GB'); + }); + + it('formats negative values with B/KB/MB/GB', function () { + expect(byteFormatter(-10)).toEqual('-10B'); + expect(byteFormatter(-10 * 1024)).toEqual('-10KB'); + expect(byteFormatter(-10.2 * 1024 * 1024)).toEqual('-10.2MB'); + expect(byteFormatter(-3 * 1024 * 1024 * 1024)).toEqual('-3GB'); + }); + }); + + describe('Bytes/s mode', function () { + let bytesFormatter: any; + beforeEach(function () { + bytesFormatter = formatters['bytes/s']; + }); + + it('is a function', function () { + expect(bytesFormatter).toEqual(expect.any(Function)); + }); + + it('formats with B/KB/MB/GB', function () { + expect(bytesFormatter(10)).toEqual('10B/s'); + expect(bytesFormatter(10 * 1024)).toEqual('10KB/s'); + expect(bytesFormatter(10.2 * 1024 * 1024)).toEqual('10.2MB/s'); + expect(bytesFormatter(3 * 1024 * 1024 * 1024)).toEqual('3GB/s'); + }); + + it('formats negative values with B/KB/MB/GB', function () { + expect(bytesFormatter(-10)).toEqual('-10B/s'); + expect(bytesFormatter(-10 * 1024)).toEqual('-10KB/s'); + expect(bytesFormatter(-10.2 * 1024 * 1024)).toEqual('-10.2MB/s'); + expect(bytesFormatter(-3 * 1024 * 1024 * 1024)).toEqual('-3GB/s'); + }); + }); + + describe('Currency mode', function () { + let currencyFormatter: any; + beforeEach(function () { + currencyFormatter = formatters.currency; + }); + + it('is a function', function () { + expect(currencyFormatter).toEqual(expect.any(Function)); + }); + + it('formats with $ by default', function () { + const axis = { + options: { + units: {}, + }, + }; + expect(currencyFormatter(10.2, axis)).toEqual('$10.20'); + }); + + it('accepts currency in ISO 4217', function () { + const axis = { + options: { + units: { + prefix: 'CNY', + }, + }, + }; + + expect(currencyFormatter(10.2, axis)).toEqual('CN¥10.20'); + }); + }); + + describe('Percent mode', function () { + let percentFormatter: any; + beforeEach(function () { + percentFormatter = formatters.percent; + }); + + it('is a function', function () { + expect(percentFormatter).toEqual(expect.any(Function)); + }); + + it('formats with %', function () { + const axis = { + options: { + units: {}, + }, + }; + expect(percentFormatter(0.1234, axis)).toEqual('12%'); + }); + + it('formats with % with decimal precision', function () { + const tickDecimals = 3; + const tickDecimalShift = 2; + const axis = { + tickDecimals: tickDecimals + tickDecimalShift, + options: { + units: { + tickDecimalsShift: tickDecimalShift, + }, + }, + }; + expect(percentFormatter(0.12345, axis)).toEqual('12.345%'); + }); + }); + + describe('Custom mode', function () { + let customFormatter: any; + beforeEach(function () { + customFormatter = formatters.custom; + }); + + it('is a function', function () { + expect(customFormatter).toEqual(expect.any(Function)); + }); + + it('accepts prefix and suffix', function () { + const axis = { + options: { + units: { + prefix: 'prefix', + suffix: 'suffix', + }, + }, + tickDecimals: 1, + }; + + expect(customFormatter(10.2, axis)).toEqual('prefix10.2suffix'); + }); + + it('correctly renders small values', function () { + const axis = { + options: { + units: { + prefix: 'prefix', + suffix: 'suffix', + }, + }, + tickDecimals: 3, + }; + + expect(customFormatter(0.00499999999999999, axis)).toEqual('prefix0.005suffix'); + }); + }); +}); diff --git a/src/plugins/vis_type_timelion/public/legacy/tick_formatters.ts b/src/plugins/vis_type_timelion/public/legacy/tick_formatters.ts new file mode 100644 index 0000000000000..950226968287b --- /dev/null +++ b/src/plugins/vis_type_timelion/public/legacy/tick_formatters.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { get } from 'lodash'; + +import type { LegacyAxis } from './panel_utils'; + +function baseTickFormatter(value: number, axis: LegacyAxis) { + const factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + const formatted = '' + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + const decimal = formatted.indexOf('.'); + const precision = decimal === -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return ( + (precision ? formatted : formatted + '.') + + ('' + factor).substr(1, axis.tickDecimals - precision) + ); + } + } + + return formatted; +} + +function unitFormatter(divisor: number, units: string[]) { + return (val: number) => { + let index = 0; + const isNegative = val < 0; + val = Math.abs(val); + while (val >= divisor && index < units.length) { + val /= divisor; + index++; + } + const value = (Math.round(val * 100) / 100) * (isNegative ? -1 : 1); + return `${value}${units[index]}`; + }; +} + +export function tickFormatters() { + return { + bits: unitFormatter(1000, ['b', 'kb', 'mb', 'gb', 'tb', 'pb']), + 'bits/s': unitFormatter(1000, ['b/s', 'kb/s', 'mb/s', 'gb/s', 'tb/s', 'pb/s']), + bytes: unitFormatter(1024, ['B', 'KB', 'MB', 'GB', 'TB', 'PB']), + 'bytes/s': unitFormatter(1024, ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s']), + currency(val: number, axis: LegacyAxis) { + return val.toLocaleString('en', { + style: 'currency', + currency: (axis && axis.options && axis.options.units.prefix) || 'USD', + }); + }, + percent(val: number, axis: LegacyAxis) { + let precision = + get(axis, 'tickDecimals', 0) - get(axis, 'options.units.tickDecimalsShift', 0); + // toFixed only accepts values between 0 and 20 + if (precision < 0) { + precision = 0; + } else if (precision > 20) { + precision = 20; + } + + return (val * 100).toFixed(precision) + '%'; + }, + custom(val: number, axis: LegacyAxis) { + const formattedVal = baseTickFormatter(val, axis); + const prefix = axis && axis.options && axis.options.units.prefix; + const suffix = axis && axis.options && axis.options.units.suffix; + return prefix + formattedVal + suffix; + }, + }; +} diff --git a/src/plugins/vis_type_timelion/public/legacy/timelion_vis.scss b/src/plugins/vis_type_timelion/public/legacy/timelion_vis.scss new file mode 100644 index 0000000000000..c4d591bc82cad --- /dev/null +++ b/src/plugins/vis_type_timelion/public/legacy/timelion_vis.scss @@ -0,0 +1,60 @@ +.timChart { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + + // Custom Jquery FLOT / schema selectors + // Cannot change at the moment + + .chart-top-title { + @include euiFontSizeXS; + flex: 0; + text-align: center; + font-weight: $euiFontWeightBold; + } + + .chart-canvas { + min-width: 100%; + flex: 1; + overflow: hidden; + } + + .legendLabel { + white-space: nowrap; + text-overflow: ellipsis; + overflow-x: hidden; + line-height: normal; + } + + .legendColorBox { + vertical-align: middle; + } + + .ngLegendValue { + color: $euiTextColor; + cursor: pointer; + + &:focus, + &:hover { + text-decoration: underline; + } + } + + .ngLegendValueNumber { + margin-left: $euiSizeXS; + margin-right: $euiSizeXS; + font-weight: $euiFontWeightBold; + } + + .flot-tick-label { + font-size: $euiFontSizeXS; + color: $euiColorDarkShade; + } +} + +.timChart__legendCaption { + color: $euiTextColor; + white-space: nowrap; + font-weight: $euiFontWeightBold; +} diff --git a/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx b/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx new file mode 100644 index 0000000000000..ddac86fa73bee --- /dev/null +++ b/src/plugins/vis_type_timelion/public/legacy/timelion_vis_component.tsx @@ -0,0 +1,418 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useEffect, useMemo, useCallback } from 'react'; +import $ from 'jquery'; +import moment from 'moment-timezone'; +import { debounce, compact, get, each, cloneDeep, last, map } from 'lodash'; +import { useResizeObserver } from '@elastic/eui'; + +import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; +import { useKibana } from '../../../kibana_react/public'; +import { DEFAULT_TIME_FORMAT } from '../../common/lib'; + +import { + buildSeriesData, + buildOptions, + SERIES_ID_ATTR, + LegacyAxis, + ACTIVE_CURSOR, + eventBus, +} from './panel_utils'; + +import { Series, Sheet } from '../helpers/timelion_request_handler'; +import { colors } from '../helpers/chart_constants'; +import { tickFormatters } from './tick_formatters'; +import { generateTicksProvider } from '../helpers/tick_generator'; + +import type { TimelionVisDependencies } from '../plugin'; +import type { RangeFilterParams } from '../../../data/common'; + +import './timelion_vis.scss'; + +interface CrosshairPlot extends jquery.flot.plot { + setCrosshair: (pos: Position) => void; + clearCrosshair: () => void; +} + +interface TimelionVisComponentProps { + onBrushEvent: (rangeFilterParams: RangeFilterParams) => void; + interval: string; + seriesList: Sheet; + renderComplete: IInterpreterRenderHandlers['done']; +} + +interface Position { + x: number; + x1: number; + y: number; + y1: number; + pageX: number; + pageY: number; +} + +interface Range { + to: number; + from: number; +} + +interface Ranges { + xaxis: Range; + yaxis: Range; +} + +const DEBOUNCE_DELAY = 50; +// ensure legend is the same height with or without a caption so legend items do not move around +const emptyCaption = '
'; + +function TimelionVisComponent({ + interval, + seriesList, + renderComplete, + onBrushEvent, +}: TimelionVisComponentProps) { + const kibana = useKibana(); + const [chart, setChart] = useState(() => cloneDeep(seriesList.list)); + const [canvasElem, setCanvasElem] = useState(); + const [chartElem, setChartElem] = useState(null); + + const [originalColorMap, setOriginalColorMap] = useState(() => new Map()); + + const [highlightedSeries, setHighlightedSeries] = useState(null); + const [focusedSeries, setFocusedSeries] = useState(); + const [plot, setPlot] = useState(); + + // Used to toggle the series, and for displaying values on hover + const [legendValueNumbers, setLegendValueNumbers] = useState>(); + const [legendCaption, setLegendCaption] = useState>(); + + const canvasRef = useCallback((node: HTMLDivElement | null) => { + if (node !== null) { + setCanvasElem(node); + } + }, []); + + const elementRef = useCallback((node: HTMLDivElement | null) => { + if (node !== null) { + setChartElem(node); + } + }, []); + + useEffect( + () => () => { + if (chartElem) { + $(chartElem).off('plotselected').off('plothover').off('mouseleave'); + } + }, + [chartElem] + ); + + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + const highlightSeries = useCallback( + debounce(({ currentTarget }: JQuery.TriggeredEvent) => { + const id = Number(currentTarget.getAttribute(SERIES_ID_ATTR)); + if (highlightedSeries === id) { + return; + } + + setHighlightedSeries(id); + setChart((chartState) => + chartState.map((series: Series, seriesIndex: number) => { + series.color = + seriesIndex === id + ? originalColorMap.get(series) // color it like it was + : 'rgba(128,128,128,0.1)'; // mark as grey + + return series; + }) + ); + }, DEBOUNCE_DELAY), + [originalColorMap, highlightedSeries] + ); + + const focusSeries = useCallback( + (event: JQuery.TriggeredEvent) => { + const id = Number(event.currentTarget.getAttribute(SERIES_ID_ATTR)); + setFocusedSeries(id); + highlightSeries(event); + }, + [highlightSeries] + ); + + const toggleSeries = useCallback(({ currentTarget }: JQuery.TriggeredEvent) => { + const id = Number(currentTarget.getAttribute(SERIES_ID_ATTR)); + + setChart((chartState) => + chartState.map((series: Series, seriesIndex: number) => { + if (seriesIndex === id) { + series._hide = !series._hide; + } + return series; + }) + ); + }, []); + + const updateCaption = useCallback( + (plotData: any) => { + if (canvasElem && get(plotData, '[0]._global.legend.showTime', true)) { + const caption = $(''); + caption.html(emptyCaption); + setLegendCaption(caption); + + const canvasNode = $(canvasElem); + canvasNode.find('div.legend table').append(caption); + setLegendValueNumbers(canvasNode.find('.ngLegendValueNumber')); + + const legend = $(canvasElem).find('.ngLegendValue'); + if (legend) { + legend.click(toggleSeries); + legend.focus(focusSeries); + legend.mouseover(highlightSeries); + } + + // legend has been re-created. Apply focus on legend element when previously set + if (focusedSeries || focusedSeries === 0) { + canvasNode.find('div.legend table .legendLabel>span').get(focusedSeries).focus(); + } + } + }, + [focusedSeries, canvasElem, toggleSeries, focusSeries, highlightSeries] + ); + + const updatePlot = useCallback( + (chartValue: Series[], grid?: boolean) => { + if (canvasElem && canvasElem.clientWidth > 0 && canvasElem.clientHeight > 0) { + const options = buildOptions( + interval, + kibana.services.timefilter, + kibana.services.uiSettings, + chartElem?.clientWidth, + grid + ); + const updatedSeries = buildSeriesData(chartValue, options); + + if (options.yaxes) { + options.yaxes.forEach((yaxis: LegacyAxis) => { + if (yaxis && yaxis.units) { + const formatters = tickFormatters(); + yaxis.tickFormatter = formatters[yaxis.units.type as keyof typeof formatters]; + const byteModes = ['bytes', 'bytes/s']; + if (byteModes.includes(yaxis.units.type)) { + yaxis.tickGenerator = generateTicksProvider(); + } + } + }); + } + + const newPlot = $.plot($(canvasElem), updatedSeries, options); + setPlot(newPlot); + renderComplete(); + + updateCaption(newPlot.getData()); + } + }, + [canvasElem, chartElem?.clientWidth, renderComplete, kibana.services, interval, updateCaption] + ); + + const dimensions = useResizeObserver(chartElem); + + useEffect(() => { + updatePlot(chart, seriesList.render && seriesList.render.grid); + }, [chart, updatePlot, seriesList.render, dimensions]); + + useEffect(() => { + const colorsSet: Array<[Series, string]> = []; + const newChart = seriesList.list.map((series: Series, seriesIndex: number) => { + const newSeries = { ...series }; + if (!newSeries.color) { + const colorIndex = seriesIndex % colors.length; + newSeries.color = colors[colorIndex]; + } + colorsSet.push([newSeries, newSeries.color]); + return newSeries; + }); + setChart(newChart); + setOriginalColorMap(new Map(colorsSet)); + }, [seriesList.list]); + + const unhighlightSeries = useCallback(() => { + if (highlightedSeries === null) { + return; + } + + setHighlightedSeries(null); + setFocusedSeries(null); + + setChart((chartState) => + chartState.map((series: Series) => { + series.color = originalColorMap.get(series); // reset the colors + return series; + }) + ); + }, [originalColorMap, highlightedSeries]); + + // Shamelessly borrowed from the flotCrosshairs example + const setLegendNumbers = useCallback( + (pos: Position) => { + unhighlightSeries(); + + const axes = plot!.getAxes(); + if (pos.x < axes.xaxis.min! || pos.x > axes.xaxis.max!) { + return; + } + + const dataset = plot!.getData(); + if (legendCaption) { + legendCaption.text( + moment(pos.x).format(get(dataset, '[0]._global.legend.timeFormat', DEFAULT_TIME_FORMAT)) + ); + } + for (let i = 0; i < dataset.length; ++i) { + const series = dataset[i]; + const useNearestPoint = series.lines!.show && !series.lines!.steps; + const precision = get(series, '_meta.precision', 2); + + // We're setting this flag on top on the series object belonging to the flot library, so we're simply casting here. + if ((series as { _hide?: boolean })._hide) { + continue; + } + + const currentPoint = series.data.find((point: [number, number], index: number) => { + if (index + 1 === series.data.length) { + return true; + } + if (useNearestPoint) { + return pos.x - point[0] < series.data[index + 1][0] - pos.x; + } else { + return pos.x < series.data[index + 1][0]; + } + }); + + const y = currentPoint[1]; + + if (legendValueNumbers) { + if (y == null) { + legendValueNumbers.eq(i).empty(); + } else { + let label = y.toFixed(precision); + const formatter = ((series.yaxis as unknown) as LegacyAxis).tickFormatter; + if (formatter) { + label = formatter(Number(label), (series.yaxis as unknown) as LegacyAxis); + } + legendValueNumbers.eq(i).text(`(${label})`); + } + } + } + }, + [plot, legendValueNumbers, unhighlightSeries, legendCaption] + ); + + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + const debouncedSetLegendNumbers = useCallback( + debounce(setLegendNumbers, DEBOUNCE_DELAY, { + maxWait: DEBOUNCE_DELAY, + leading: true, + trailing: false, + }), + [setLegendNumbers] + ); + + const clearLegendNumbers = useCallback(() => { + if (legendCaption) { + legendCaption.html(emptyCaption); + } + each(legendValueNumbers!, (num: Node) => { + $(num).empty(); + }); + }, [legendCaption, legendValueNumbers]); + + const plotHover = useCallback( + (pos: Position) => { + (plot as CrosshairPlot).setCrosshair(pos); + debouncedSetLegendNumbers(pos); + }, + [plot, debouncedSetLegendNumbers] + ); + + const plotHoverHandler = useCallback( + (event: JQuery.TriggeredEvent, pos: Position) => { + if (!plot) { + return; + } + plotHover(pos); + eventBus.trigger(ACTIVE_CURSOR, [event, pos]); + }, + [plot, plotHover] + ); + + useEffect(() => { + const updateCursor = (_: any, event: JQuery.TriggeredEvent, pos: Position) => { + if (!plot) { + return; + } + plotHover(pos); + }; + + eventBus.on(ACTIVE_CURSOR, updateCursor); + + return () => { + eventBus.off(ACTIVE_CURSOR, updateCursor); + }; + }, [plot, plotHover]); + + const mouseLeaveHandler = useCallback(() => { + if (!plot) { + return; + } + (plot as CrosshairPlot).clearCrosshair(); + clearLegendNumbers(); + }, [plot, clearLegendNumbers]); + + const plotSelectedHandler = useCallback( + (event: JQuery.TriggeredEvent, ranges: Ranges) => { + onBrushEvent({ + gte: ranges.xaxis.from, + lte: ranges.xaxis.to, + }); + }, + [onBrushEvent] + ); + + useEffect(() => { + if (chartElem) { + $(chartElem).off('plotselected').on('plotselected', plotSelectedHandler); + } + }, [chartElem, plotSelectedHandler]); + + useEffect(() => { + if (chartElem) { + $(chartElem).off('mouseleave').on('mouseleave', mouseLeaveHandler); + } + }, [chartElem, mouseLeaveHandler]); + + useEffect(() => { + if (chartElem) { + $(chartElem).off('plothover').on('plothover', plotHoverHandler); + } + }, [chartElem, plotHoverHandler]); + + const title: string = useMemo(() => last(compact(map(seriesList.list, '_title'))) || '', [ + seriesList.list, + ]); + + return ( +
+
{title}
+
+
+ ); +} + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { TimelionVisComponent as default }; diff --git a/src/plugins/vis_type_timelion/public/plugin.ts b/src/plugins/vis_type_timelion/public/plugin.ts index 3e9c4cf77687e..93712ae4507fe 100644 --- a/src/plugins/vis_type_timelion/public/plugin.ts +++ b/src/plugins/vis_type_timelion/public/plugin.ts @@ -22,6 +22,7 @@ import { } from 'src/plugins/data/public'; import { VisualizationsSetup } from '../../visualizations/public'; +import { ChartsPluginSetup } from '../../charts/public'; import { getTimelionVisualizationConfig } from './timelion_vis_fn'; import { getTimelionVisDefinition } from './timelion_vis_type'; @@ -36,6 +37,7 @@ export interface TimelionVisDependencies extends Partial { uiSettings: IUiSettingsClient; http: HttpSetup; timefilter: TimefilterContract; + chartTheme: ChartsPluginSetup['theme']; } /** @internal */ @@ -43,6 +45,7 @@ export interface TimelionVisSetupDependencies { expressions: ReturnType; visualizations: VisualizationsSetup; data: DataPublicPluginSetup; + charts: ChartsPluginSetup; } /** @internal */ @@ -72,13 +75,14 @@ export class TimelionVisPlugin constructor(public initializerContext: PluginInitializerContext) {} public setup( - core: CoreSetup, - { expressions, visualizations, data }: TimelionVisSetupDependencies + { uiSettings, http }: CoreSetup, + { expressions, visualizations, data, charts }: TimelionVisSetupDependencies ) { const dependencies: TimelionVisDependencies = { - uiSettings: core.uiSettings, - http: core.http, + http, + uiSettings, timefilter: data.query.timefilter.timefilter, + chartTheme: charts.theme, }; expressions.registerFunction(() => getTimelionVisualizationConfig(dependencies)); diff --git a/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx b/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx index 6ef5d29ea8a91..b14055a4d6b63 100644 --- a/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx +++ b/src/plugins/vis_type_timelion/public/timelion_vis_renderer.tsx @@ -14,8 +14,11 @@ import { KibanaContextProvider } from '../../kibana_react/public'; import { VisualizationContainer } from '../../visualizations/public'; import { TimelionVisDependencies } from './plugin'; import { TimelionRenderValue } from './timelion_vis_fn'; -// @ts-ignore +import { UI_SETTINGS } from '../common/constants'; +import { RangeFilterParams } from '../../data/public'; + const TimelionVisComponent = lazy(() => import('./components/timelion_vis_component')); +const TimelionVisLegacyComponent = lazy(() => import('./legacy/timelion_vis_component')); export const getTimelionVisRenderer: ( deps: TimelionVisDependencies @@ -31,14 +34,34 @@ export const getTimelionVisRenderer: ( const [seriesList] = visData.sheet; const showNoResult = !seriesList || !seriesList.list.length; + const VisComponent = deps.uiSettings.get(UI_SETTINGS.LEGACY_CHARTS_LIBRARY, false) + ? TimelionVisLegacyComponent + : TimelionVisComponent; + + const onBrushEvent = (rangeFilterParams: RangeFilterParams) => { + handlers.event({ + name: 'applyFilter', + data: { + timeFieldName: '*', + filters: [ + { + range: { + '*': rangeFilterParams, + }, + }, + ], + }, + }); + }; + render( - , diff --git a/src/plugins/vis_type_timelion/server/plugin.ts b/src/plugins/vis_type_timelion/server/plugin.ts index c1800a09ba35c..fc23569b351e6 100644 --- a/src/plugins/vis_type_timelion/server/plugin.ts +++ b/src/plugins/vis_type_timelion/server/plugin.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { TypeOf, schema } from '@kbn/config-schema'; +import { TypeOf } from '@kbn/config-schema'; import { RecursiveReadonly } from '@kbn/utility-types'; import { deepFreeze } from '@kbn/std'; @@ -19,10 +19,7 @@ import { functionsRoute } from './routes/functions'; import { validateEsRoute } from './routes/validate_es'; import { runRoute } from './routes/run'; import { ConfigManager } from './lib/config_manager'; - -const experimentalLabel = i18n.translate('timelion.uiSettings.experimentalLabel', { - defaultMessage: 'experimental', -}); +import { getUiSettings } from './ui_settings'; /** * Describes public Timelion plugin contract returned at the `setup` stage. @@ -78,97 +75,7 @@ export class TimelionPlugin runRoute(router, deps); validateEsRoute(router); - core.uiSettings.register({ - 'timelion:es.timefield': { - name: i18n.translate('timelion.uiSettings.timeFieldLabel', { - defaultMessage: 'Time field', - }), - value: '@timestamp', - description: i18n.translate('timelion.uiSettings.timeFieldDescription', { - defaultMessage: 'Default field containing a timestamp when using {esParam}', - values: { esParam: '.es()' }, - }), - category: ['timelion'], - schema: schema.string(), - }, - 'timelion:es.default_index': { - name: i18n.translate('timelion.uiSettings.defaultIndexLabel', { - defaultMessage: 'Default index', - }), - value: '_all', - description: i18n.translate('timelion.uiSettings.defaultIndexDescription', { - defaultMessage: 'Default elasticsearch index to search with {esParam}', - values: { esParam: '.es()' }, - }), - category: ['timelion'], - schema: schema.string(), - }, - 'timelion:target_buckets': { - name: i18n.translate('timelion.uiSettings.targetBucketsLabel', { - defaultMessage: 'Target buckets', - }), - value: 200, - description: i18n.translate('timelion.uiSettings.targetBucketsDescription', { - defaultMessage: 'The number of buckets to shoot for when using auto intervals', - }), - category: ['timelion'], - schema: schema.number(), - }, - 'timelion:max_buckets': { - name: i18n.translate('timelion.uiSettings.maximumBucketsLabel', { - defaultMessage: 'Maximum buckets', - }), - value: 2000, - description: i18n.translate('timelion.uiSettings.maximumBucketsDescription', { - defaultMessage: 'The maximum number of buckets a single datasource can return', - }), - category: ['timelion'], - schema: schema.number(), - }, - 'timelion:min_interval': { - name: i18n.translate('timelion.uiSettings.minimumIntervalLabel', { - defaultMessage: 'Minimum interval', - }), - value: '1ms', - description: i18n.translate('timelion.uiSettings.minimumIntervalDescription', { - defaultMessage: 'The smallest interval that will be calculated when using "auto"', - description: - '"auto" is a technical value in that context, that should not be translated.', - }), - category: ['timelion'], - schema: schema.string(), - }, - 'timelion:graphite.url': { - name: i18n.translate('timelion.uiSettings.graphiteURLLabel', { - defaultMessage: 'Graphite URL', - description: - 'The URL should be in the form of https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite', - }), - value: config.graphiteUrls && config.graphiteUrls.length ? config.graphiteUrls[0] : null, - description: i18n.translate('timelion.uiSettings.graphiteURLDescription', { - defaultMessage: - '{experimentalLabel} The URL of your graphite host', - values: { experimentalLabel: `[${experimentalLabel}]` }, - }), - type: 'select', - options: config.graphiteUrls || [], - category: ['timelion'], - schema: schema.nullable(schema.string()), - }, - 'timelion:quandl.key': { - name: i18n.translate('timelion.uiSettings.quandlKeyLabel', { - defaultMessage: 'Quandl key', - }), - value: 'someKeyHere', - description: i18n.translate('timelion.uiSettings.quandlKeyDescription', { - defaultMessage: '{experimentalLabel} Your API key from www.quandl.com', - values: { experimentalLabel: `[${experimentalLabel}]` }, - }), - sensitive: true, - category: ['timelion'], - schema: schema.string(), - }, - }); + core.uiSettings.register(getUiSettings(config)); return deepFreeze({ uiEnabled: config.ui.enabled }); } diff --git a/src/plugins/vis_type_timelion/server/series_functions/label.js b/src/plugins/vis_type_timelion/server/series_functions/label.js index d31320d3ad6e9..30a5c626251d1 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/label.js +++ b/src/plugins/vis_type_timelion/server/series_functions/label.js @@ -44,7 +44,7 @@ export default new Chainable('label', { // that it doesn't prevent Kibana from starting up and we only have an issue using Timelion labels const RE2 = require('re2'); eachSeries.label = eachSeries.label.replace(new RE2(config.regex), config.label); - } else { + } else if (config.label) { eachSeries.label = config.label; } diff --git a/src/plugins/vis_type_timelion/server/ui_settings.ts b/src/plugins/vis_type_timelion/server/ui_settings.ts new file mode 100644 index 0000000000000..1d8dc997a3f6a --- /dev/null +++ b/src/plugins/vis_type_timelion/server/ui_settings.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { schema, TypeOf } from '@kbn/config-schema'; +import type { UiSettingsParams } from 'kibana/server'; + +import { UI_SETTINGS } from '../common/constants'; +import { configSchema } from '../config'; + +const experimentalLabel = i18n.translate('timelion.uiSettings.experimentalLabel', { + defaultMessage: 'experimental', +}); + +export function getUiSettings( + config: TypeOf +): Record> { + return { + [UI_SETTINGS.LEGACY_CHARTS_LIBRARY]: { + name: i18n.translate('timelion.uiSettings.legacyChartsLibraryLabel', { + defaultMessage: 'Timelion legacy charts library', + }), + description: i18n.translate('timelion.uiSettings.legacyChartsLibraryDescription', { + defaultMessage: 'Enables the legacy charts library for timelion charts in Visualize', + }), + deprecation: { + message: i18n.translate('timelion.uiSettings.legacyChartsLibraryDeprication', { + defaultMessage: 'This setting is deprecated and will not be supported as of 8.0.', + }), + docLinksKey: 'timelionSettings', + }, + value: false, + category: ['timelion'], + schema: schema.boolean(), + }, + [UI_SETTINGS.ES_TIMEFIELD]: { + name: i18n.translate('timelion.uiSettings.timeFieldLabel', { + defaultMessage: 'Time field', + }), + value: '@timestamp', + description: i18n.translate('timelion.uiSettings.timeFieldDescription', { + defaultMessage: 'Default field containing a timestamp when using {esParam}', + values: { esParam: '.es()' }, + }), + category: ['timelion'], + schema: schema.string(), + }, + [UI_SETTINGS.DEFAULT_INDEX]: { + name: i18n.translate('timelion.uiSettings.defaultIndexLabel', { + defaultMessage: 'Default index', + }), + value: '_all', + description: i18n.translate('timelion.uiSettings.defaultIndexDescription', { + defaultMessage: 'Default elasticsearch index to search with {esParam}', + values: { esParam: '.es()' }, + }), + category: ['timelion'], + schema: schema.string(), + }, + [UI_SETTINGS.TARGET_BUCKETS]: { + name: i18n.translate('timelion.uiSettings.targetBucketsLabel', { + defaultMessage: 'Target buckets', + }), + value: 200, + description: i18n.translate('timelion.uiSettings.targetBucketsDescription', { + defaultMessage: 'The number of buckets to shoot for when using auto intervals', + }), + category: ['timelion'], + schema: schema.number(), + }, + [UI_SETTINGS.MAX_BUCKETS]: { + name: i18n.translate('timelion.uiSettings.maximumBucketsLabel', { + defaultMessage: 'Maximum buckets', + }), + value: 2000, + description: i18n.translate('timelion.uiSettings.maximumBucketsDescription', { + defaultMessage: 'The maximum number of buckets a single datasource can return', + }), + category: ['timelion'], + schema: schema.number(), + }, + [UI_SETTINGS.MIN_INTERVAL]: { + name: i18n.translate('timelion.uiSettings.minimumIntervalLabel', { + defaultMessage: 'Minimum interval', + }), + value: '1ms', + description: i18n.translate('timelion.uiSettings.minimumIntervalDescription', { + defaultMessage: 'The smallest interval that will be calculated when using "auto"', + description: '"auto" is a technical value in that context, that should not be translated.', + }), + category: ['timelion'], + schema: schema.string(), + }, + [UI_SETTINGS.GRAPHITE_URL]: { + name: i18n.translate('timelion.uiSettings.graphiteURLLabel', { + defaultMessage: 'Graphite URL', + description: + 'The URL should be in the form of https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite', + }), + value: config.graphiteUrls && config.graphiteUrls.length ? config.graphiteUrls[0] : null, + description: i18n.translate('timelion.uiSettings.graphiteURLDescription', { + defaultMessage: + '{experimentalLabel} The URL of your graphite host', + values: { experimentalLabel: `[${experimentalLabel}]` }, + }), + type: 'select', + options: config.graphiteUrls || [], + category: ['timelion'], + schema: schema.nullable(schema.string()), + }, + [UI_SETTINGS.QUANDL_KEY]: { + name: i18n.translate('timelion.uiSettings.quandlKeyLabel', { + defaultMessage: 'Quandl key', + }), + value: 'someKeyHere', + description: i18n.translate('timelion.uiSettings.quandlKeyDescription', { + defaultMessage: '{experimentalLabel} Your API key from www.quandl.com', + values: { experimentalLabel: `[${experimentalLabel}]` }, + }), + sensitive: true, + category: ['timelion'], + schema: schema.string(), + }, + }; +} diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/binder.ts b/src/plugins/vis_type_vislib/public/vislib/lib/binder.ts index 436a5b85a6887..886745ba19563 100644 --- a/src/plugins/vis_type_vislib/public/vislib/lib/binder.ts +++ b/src/plugins/vis_type_vislib/public/vislib/lib/binder.ts @@ -8,7 +8,6 @@ import d3 from 'd3'; import $ from 'jquery'; -import { IScope } from 'angular'; export interface Emitter { on: (...args: any[]) => void; @@ -20,13 +19,6 @@ export interface Emitter { export class Binder { private disposal: Array<() => void> = []; - constructor($scope: IScope) { - // support auto-binding to $scope objects - if ($scope) { - $scope.$on('$destroy', () => this.destroy()); - } - } - public on(emitter: Emitter, ...args: any[]) { const on = emitter.on || emitter.addListener; const off = emitter.off || emitter.removeListener; diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index 9a0adf265e5a2..d7ea04daae1ae 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -11,7 +11,7 @@ import { Subscription } from 'rxjs'; import { i18n } from '@kbn/i18n'; import { VISUALIZE_EMBEDDABLE_TYPE } from './constants'; import { - IIndexPattern, + IndexPattern, TimeRange, Query, esFilters, @@ -47,7 +47,7 @@ const getKeys = (o: T): Array => Object.keys(o) as Array< export interface VisualizeEmbeddableConfiguration { vis: Vis; - indexPatterns?: IIndexPattern[]; + indexPatterns?: IndexPattern[]; editPath: string; editUrl: string; capabilities: { visualizeSave: boolean; dashboardSave: boolean }; @@ -69,7 +69,7 @@ export interface VisualizeOutput extends EmbeddableOutput { editPath: string; editApp: string; editUrl: string; - indexPatterns?: IIndexPattern[]; + indexPatterns?: IndexPattern[]; visTypeName: string; } diff --git a/src/plugins/visualizations/public/plugin.ts b/src/plugins/visualizations/public/plugin.ts index e3dcf79a63a76..a890058aa7491 100644 --- a/src/plugins/visualizations/public/plugin.ts +++ b/src/plugins/visualizations/public/plugin.ts @@ -182,7 +182,7 @@ export class VisualizationsPlugin showNewVisModal, /** * creates new instance of Vis - * @param {IIndexPattern} indexPattern - index pattern to use + * @param {IndexPattern} indexPattern - index pattern to use * @param {VisState} visState - visualization configuration */ createVis: async (visType: string, visState: SerializedVis) => diff --git a/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts b/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts index 626fee0db495c..f1fba28297e45 100644 --- a/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts +++ b/src/plugins/visualizations/public/saved_visualizations/_saved_vis.ts @@ -19,7 +19,7 @@ import { updateOldState } from '../legacy/vis_update_state'; import { extractReferences, injectReferences } from './saved_visualization_references'; import { createSavedSearchesLoader } from '../../../discover/public'; import type { SavedObjectsClientContract } from '../../../../core/public'; -import type { IIndexPattern, IndexPatternsContract } from '../../../../plugins/data/public'; +import type { IndexPatternsContract } from '../../../../plugins/data/public'; import type { ISavedVis, SerializedVis } from '../types'; export interface SavedVisServices { @@ -93,7 +93,7 @@ export function createSavedVisClass(services: SavedVisServices) { extractReferences, injectReferences, id: (opts.id as string) || '', - indexPattern: opts.indexPattern as IIndexPattern, + indexPattern: opts.indexPattern, defaults: { title: '', visState, diff --git a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts index 0f8a5428c6885..b101a3c2feae9 100644 --- a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts +++ b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts @@ -47,6 +47,7 @@ describe('useVisualizeAppState', () => { const savedVisInstance = ({ vis: { setState: jest.fn().mockResolvedValue({}), + data: {}, }, savedVis: {}, embeddableHandler: {}, @@ -167,7 +168,31 @@ describe('useVisualizeAppState', () => { const { aggs, ...visState } = stateContainer.getState().vis; const expectedNewVisState = { ...visState, - data: { aggs: state.vis.aggs }, + data: { aggs: state.vis.aggs, searchSource: { query: state.query, filter: state.filters } }, + }; + + expect(savedVisInstance.vis.setState).toHaveBeenCalledWith(expectedNewVisState); + expect(result.current).toEqual({ + appState: stateContainer, + hasUnappliedChanges: false, + }); + }); + + it('should successfully updated vis state and set up app state container if query from app state is different', async () => { + stateContainerGetStateMock.mockImplementation(() => ({ + ...visualizeAppStateStub, + query: { query: 'test', language: 'kuery' }, + })); + const { result, waitForNextUpdate } = renderHook(() => + useVisualizeAppState(mockServices, eventEmitter, savedVisInstance) + ); + + await waitForNextUpdate(); + + const { aggs, ...visState } = stateContainer.getState().vis; + const expectedNewVisState = { + ...visState, + data: { aggs: state.vis.aggs, searchSource: { query: state.query, filter: state.filters } }, }; expect(savedVisInstance.vis.setState).toHaveBeenCalledWith(expectedNewVisState); diff --git a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx index 43511258d2394..4dbf621c2e564 100644 --- a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx +++ b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsx @@ -44,6 +44,7 @@ export const useVisualizeAppState = ( kbnUrlStateStorage: services.kbnUrlStateStorage, byValue, }); + const currentAppState = stateContainer.getState(); const onDirtyStateChange = ({ isDirty }: { isDirty: boolean }) => { if (!isDirty) { @@ -57,8 +58,8 @@ export const useVisualizeAppState = ( const { filterManager, queryString } = services.data.query; // sync initial app state from state to managers - filterManager.setAppFilters(cloneDeep(stateContainer.getState().filters)); - queryString.setQuery(migrateLegacyQuery(stateContainer.getState().query)); + filterManager.setAppFilters(cloneDeep(currentAppState.filters)); + queryString.setQuery(migrateLegacyQuery(currentAppState.query)); // setup syncing of app filters between appState and query services const stopSyncingAppFilters = connectToQueryState( @@ -90,10 +91,20 @@ export const useVisualizeAppState = ( // The savedVis is pulled from elasticsearch, but the appState is pulled from the url, with the // defaults applied. If the url was from a previous session which included modifications to the // appState then they won't be equal. - if (!isEqual(stateContainer.getState().vis, stateDefaults.vis)) { - const { aggs, ...visState } = stateContainer.getState().vis; + if ( + !isEqual(currentAppState.vis, stateDefaults.vis) || + !isEqual(currentAppState.query, stateDefaults.query) || + !isEqual(currentAppState.filters, stateDefaults.filters) + ) { + const { aggs, ...visState } = currentAppState.vis; + const query = currentAppState.query; + const filter = currentAppState.filters; + const visSearchSource = instance.vis.data.searchSource?.getFields() || {}; instance.vis - .setState({ ...visState, data: { aggs } }) + .setState({ + ...visState, + data: { aggs, searchSource: { ...visSearchSource, query, filter } }, + }) .then(() => { // setting up the stateContainer after setState is successful will prevent loading the editor with failures // otherwise the catch will take presedence diff --git a/test/functional/apps/discover/_discover.ts b/test/functional/apps/discover/_discover.ts index 616c07dd8cf9c..8dc695abc8d45 100644 --- a/test/functional/apps/discover/_discover.ts +++ b/test/functional/apps/discover/_discover.ts @@ -108,7 +108,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should modify the time range when the histogram is brushed', async function () { // this is the number of renderings of the histogram needed when new data is fetched // this needs to be improved - const renderingCountInc = 1; + const renderingCountInc = 2; const prevRenderingCount = await elasticChart.getVisualizationRenderingCount(); await PageObjects.timePicker.setDefaultAbsoluteRange(); await PageObjects.discover.waitUntilSearchingHasFinished(); @@ -268,8 +268,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.uiSettings.replace({ 'discover:searchOnPageLoad': true }); await PageObjects.common.navigateToApp('discover'); await PageObjects.header.awaitKibanaChrome(); - - expect(await PageObjects.discover.getNrOfFetches()).to.be(1); + await retry.waitFor('number of fetches to be 1', async () => { + const nrOfFetches = await PageObjects.discover.getNrOfFetches(); + return nrOfFetches === 1; + }); }); }); diff --git a/test/functional/apps/discover/_inspector.ts b/test/functional/apps/discover/_inspector.ts index 17f358ec74871..9ff425be2739b 100644 --- a/test/functional/apps/discover/_inspector.ts +++ b/test/functional/apps/discover/_inspector.ts @@ -15,6 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const inspector = getService('inspector'); + const testSubjects = getService('testSubjects'); const STATS_ROW_NAME_INDEX = 0; const STATS_ROW_VALUE_INDEX = 1; @@ -50,15 +51,28 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should display request stats with no results', async () => { await inspector.open(); - const requestStats = await inspector.getTableData(); - - expect(getHitCount(requestStats)).to.be('0'); + await testSubjects.click('inspectorRequestChooser'); + let foundZero = false; + for (const subj of ['Documents', 'Total hits', 'Charts']) { + await testSubjects.click(`inspectorRequestChooser${subj}`); + if (testSubjects.exists('inspectorRequestDetailStatistics', { timeout: 500 })) { + await testSubjects.click(`inspectorRequestDetailStatistics`); + const requestStatsTotalHits = getHitCount(await inspector.getTableData()); + if (requestStatsTotalHits === '0') { + foundZero = true; + break; + } + } + } + expect(foundZero).to.be(true); }); it('should display request stats with results', async () => { await PageObjects.timePicker.setDefaultAbsoluteRange(); - await inspector.open(); + await testSubjects.click('inspectorRequestChooser'); + await testSubjects.click(`inspectorRequestChooserDocuments`); + await testSubjects.click(`inspectorRequestDetailStatistics`); const requestStats = await inspector.getTableData(); expect(getHitCount(requestStats)).to.be('500'); diff --git a/test/functional/services/saved_query_management_component.ts b/test/functional/services/saved_query_management_component.ts index decf1618c7879..37c6a45557f2f 100644 --- a/test/functional/services/saved_query_management_component.ts +++ b/test/functional/services/saved_query_management_component.ts @@ -138,7 +138,7 @@ export class SavedQueryManagementComponentService extends FtrService { async savedQueryExist(title: string) { await this.openSavedQueryManagementComponent(); - const exists = this.testSubjects.exists(`~load-saved-query-${title}-button`); + const exists = await this.testSubjects.exists(`~load-saved-query-${title}-button`); await this.closeSavedQueryManagementComponent(); return exists; } diff --git a/test/scripts/checks/type_check_plugin_public_api_docs.sh b/test/scripts/checks/type_check_plugin_public_api_docs.sh index 532c656c916a6..8acacb696c576 100755 --- a/test/scripts/checks/type_check_plugin_public_api_docs.sh +++ b/test/scripts/checks/type_check_plugin_public_api_docs.sh @@ -7,8 +7,7 @@ checks-reporter-with-killswitch "Build TS Refs" \ --ignore-type-failures \ --clean \ --no-cache \ - --force \ - --debug + --force checks-reporter-with-killswitch "Check Types" \ node scripts/type_check diff --git a/x-pack/examples/embedded_lens_example/kibana.json b/x-pack/examples/embedded_lens_example/kibana.json index be38e5bf3e761..13417c658f875 100644 --- a/x-pack/examples/embedded_lens_example/kibana.json +++ b/x-pack/examples/embedded_lens_example/kibana.json @@ -12,5 +12,9 @@ "developerExamples" ], "optionalPlugins": [], - "requiredBundles": [] + "requiredBundles": [], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/x-pack/plugins/alerting/server/lib/license_state.mock.ts b/x-pack/plugins/alerting/server/lib/license_state.mock.ts index 3932ce9329824..1521a1cf25da9 100644 --- a/x-pack/plugins/alerting/server/lib/license_state.mock.ts +++ b/x-pack/plugins/alerting/server/lib/license_state.mock.ts @@ -18,6 +18,7 @@ export const createLicenseStateMock = () => { checkLicense: jest.fn().mockResolvedValue({ state: 'valid', }), + getIsSecurityEnabled: jest.fn(), setNotifyUsage: jest.fn(), }; return licenseState; diff --git a/x-pack/plugins/alerting/server/lib/license_state.test.ts b/x-pack/plugins/alerting/server/lib/license_state.test.ts index 6cfe368245842..e20acafbab314 100644 --- a/x-pack/plugins/alerting/server/lib/license_state.test.ts +++ b/x-pack/plugins/alerting/server/lib/license_state.test.ts @@ -272,6 +272,42 @@ describe('ensureLicenseForAlertType()', () => { }); }); +describe('getIsSecurityEnabled()', () => { + let license: Subject; + let licenseState: ILicenseState; + beforeEach(() => { + license = new Subject(); + licenseState = new LicenseState(license); + }); + + test('should return null when license is not defined', () => { + expect(licenseState.getIsSecurityEnabled()).toBeNull(); + }); + + test('should return null when license is unavailable', () => { + license.next(createUnavailableLicense()); + expect(licenseState.getIsSecurityEnabled()).toBeNull(); + }); + + test('should return true if security is enabled', () => { + const basicLicense = licensingMock.createLicense({ + license: { status: 'active', type: 'basic' }, + features: { security: { isEnabled: true, isAvailable: true } }, + }); + license.next(basicLicense); + expect(licenseState.getIsSecurityEnabled()).toEqual(true); + }); + + test('should return false if security is not enabled', () => { + const basicLicense = licensingMock.createLicense({ + license: { status: 'active', type: 'basic' }, + features: { security: { isEnabled: false, isAvailable: true } }, + }); + license.next(basicLicense); + expect(licenseState.getIsSecurityEnabled()).toEqual(false); + }); +}); + function createUnavailableLicense() { const unavailableLicense = licensingMock.createLicenseMock(); unavailableLicense.isAvailable = false; diff --git a/x-pack/plugins/alerting/server/lib/license_state.ts b/x-pack/plugins/alerting/server/lib/license_state.ts index 837fecde11659..9f6fd1b292af8 100644 --- a/x-pack/plugins/alerting/server/lib/license_state.ts +++ b/x-pack/plugins/alerting/server/lib/license_state.ts @@ -55,6 +55,15 @@ export class LicenseState { return this.licenseInformation; } + public getIsSecurityEnabled(): boolean | null { + if (!this.license || !this.license?.isAvailable) { + return null; + } + + const { isEnabled } = this.license.getFeature('security'); + return isEnabled; + } + public setNotifyUsage(notifyUsage: LicensingPluginStart['featureUsage']['notifyUsage']) { this._notifyUsage = notifyUsage; } diff --git a/x-pack/plugins/alerting/server/routes/health.test.ts b/x-pack/plugins/alerting/server/routes/health.test.ts index 7c00b04ae7ef3..b8e023e4f4d1b 100644 --- a/x-pack/plugins/alerting/server/routes/health.test.ts +++ b/x-pack/plugins/alerting/server/routes/health.test.ts @@ -21,7 +21,6 @@ jest.mock('../lib/license_api_access.ts', () => ({ })); const alerting = alertsMock.createStart(); - const currentDate = new Date().toISOString(); beforeEach(() => { jest.resetAllMocks(); @@ -62,7 +61,15 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}, ['ok']); + const [context, req, res] = mockHandlerArguments( + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, + {}, + ['ok'] + ); await handler(context, req, res); @@ -78,7 +85,11 @@ describe('healthRoute', () => { const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); @@ -105,52 +116,21 @@ describe('healthRoute', () => { }); }); - it('evaluates missing security info from the usage api to mean that the security plugin is disbled', async () => { + test('when ES security status cannot be determined from license state, isSufficientlySecure should return false', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects); - const [, handler] = router.get.mock.calls[0]; + licenseState.getIsSecurityEnabled.mockReturnValueOnce(null); - const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alerting_framework_heath: { - decryption_health: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - execution_health: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - read_health: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - has_permanent_encryption_key: true, - is_sufficiently_secure: true, - }, - }); - }); - - it('evaluates missing security http info from the usage api to mean that the security plugin is disbled', async () => { - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); @@ -172,16 +152,17 @@ describe('healthRoute', () => { }, }, has_permanent_encryption_key: true, - is_sufficiently_secure: true, + is_sufficiently_secure: false, }, }); }); - it('evaluates security enabled, and missing ssl info from the usage api to mean that the user cannot generate keys', async () => { + test('when ES security is disabled, isSufficientlySecure should return true', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(false); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; @@ -212,16 +193,17 @@ describe('healthRoute', () => { }, }, has_permanent_encryption_key: true, - is_sufficiently_secure: false, + is_sufficiently_secure: true, }, }); }); - it('evaluates security enabled, SSL info present but missing http info from the usage api to mean that the user cannot generate keys', async () => { + test('when ES security is enabled but user cannot generate api keys, isSufficientlySecure should return false', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; @@ -257,16 +239,21 @@ describe('healthRoute', () => { }); }); - it('evaluates security and tls enabled to mean that the user can generate keys', async () => { + test('when ES security is enabled and user can generate api keys, isSufficientlySecure should return true', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); diff --git a/x-pack/plugins/alerting/server/routes/health.ts b/x-pack/plugins/alerting/server/routes/health.ts index 96016ccc45472..fa09213dada3a 100644 --- a/x-pack/plugins/alerting/server/routes/health.ts +++ b/x-pack/plugins/alerting/server/routes/health.ts @@ -44,11 +44,22 @@ export const healthRoute = ( router.handleLegacyErrors( verifyAccessAndContext(licenseState, async function (context, req, res) { try { + const isEsSecurityEnabled: boolean | null = licenseState.getIsSecurityEnabled(); const areApiKeysEnabled = await context.alerting.areApiKeysEnabled(); const alertingFrameworkHeath = await context.alerting.getFrameworkHealth(); + let isSufficientlySecure; + if (isEsSecurityEnabled === null) { + isSufficientlySecure = false; + } else { + // if isEsSecurityEnabled = true, then areApiKeysEnabled must be true to enable alerting + // if isEsSecurityEnabled = false, then it does not matter what areApiKeysEnabled is + isSufficientlySecure = + !isEsSecurityEnabled || (isEsSecurityEnabled && areApiKeysEnabled); + } + const frameworkHealth: AlertingFrameworkHealth = { - isSufficientlySecure: areApiKeysEnabled, + isSufficientlySecure, hasPermanentEncryptionKey: encryptedSavedObjects.canEncrypt, alertingFrameworkHeath, }; diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts b/x-pack/plugins/alerting/server/routes/legacy/health.test.ts index 57bfdc29024f6..ed8e6763d66b7 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/health.test.ts @@ -62,7 +62,11 @@ describe('healthRoute', () => { const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); @@ -89,52 +93,21 @@ describe('healthRoute', () => { }); }); - it('evaluates missing security info from the usage api to mean that the security plugin is disbled', async () => { + test('when ES security status cannot be determined from license state, isSufficientlySecure should return false', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: true, - isSufficientlySecure: true, - }, - }); - }); - - it('evaluates missing security http info from the usage api to mean that the security plugin is disbled', async () => { - const router = httpServiceMock.createRouter(); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(null); - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); @@ -156,16 +129,17 @@ describe('healthRoute', () => { }, }, hasPermanentEncryptionKey: true, - isSufficientlySecure: true, + isSufficientlySecure: false, }, }); }); - it('evaluates security enabled, and missing ssl info from the usage api to mean that the user cannot generate keys', async () => { + test('when ES security is disabled, isSufficientlySecure should return true', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(false); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; @@ -196,16 +170,17 @@ describe('healthRoute', () => { }, }, hasPermanentEncryptionKey: true, - isSufficientlySecure: false, + isSufficientlySecure: true, }, }); }); - it('evaluates security enabled, SSL info present but missing http info from the usage api to mean that the user cannot generate keys', async () => { + test('when ES security is enabled but user cannot generate api keys, isSufficientlySecure should return false', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; @@ -241,16 +216,21 @@ describe('healthRoute', () => { }); }); - it('evaluates security and tls enabled to mean that the user can generate keys', async () => { + test('when ES security is enabled and user can generate api keys, isSufficientlySecure should return true', async () => { const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); + licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); + healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; const [context, req, res] = mockHandlerArguments( - { rulesClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + rulesClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(true), + }, {}, ['ok'] ); diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.ts b/x-pack/plugins/alerting/server/routes/legacy/health.ts index 206a74c2ea636..03a574ca62c33 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/health.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/health.ts @@ -27,11 +27,21 @@ export function healthRoute( return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); } try { + const isEsSecurityEnabled: boolean | null = licenseState.getIsSecurityEnabled(); const alertingFrameworkHeath = await context.alerting.getFrameworkHealth(); const areApiKeysEnabled = await context.alerting.areApiKeysEnabled(); + let isSufficientlySecure; + if (isEsSecurityEnabled === null) { + isSufficientlySecure = false; + } else { + // if isEsSecurityEnabled = true, then areApiKeysEnabled must be true to enable alerting + // if isEsSecurityEnabled = false, then it does not matter what areApiKeysEnabled is + isSufficientlySecure = !isEsSecurityEnabled || (isEsSecurityEnabled && areApiKeysEnabled); + } + const frameworkHealth: AlertingFrameworkHealth = { - isSufficientlySecure: areApiKeysEnabled, + isSufficientlySecure, hasPermanentEncryptionKey: encryptedSavedObjects.canEncrypt, alertingFrameworkHeath, }; diff --git a/x-pack/plugins/apm/common/connections.ts b/x-pack/plugins/apm/common/connections.ts new file mode 100644 index 0000000000000..aa3863374337c --- /dev/null +++ b/x-pack/plugins/apm/common/connections.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { AgentName } from '../typings/es_schemas/ui/fields/agent'; +import { Coordinate } from '../typings/timeseries'; + +export enum NodeType { + service = 'service', + backend = 'backend', +} + +interface NodeBase { + id: string; +} + +export interface ServiceNode extends NodeBase { + type: NodeType.service; + serviceName: string; + agentName: AgentName; + environment: string; +} + +export interface BackendNode extends NodeBase { + type: NodeType.backend; + backendName: string; + spanType: string; + spanSubtype: string; +} + +export type Node = ServiceNode | BackendNode; + +export interface ConnectionStatsItem { + location: Node; + stats: { + latency: { + value: number | null; + timeseries: Coordinate[]; + }; + throughput: { + value: number | null; + timeseries: Coordinate[]; + }; + errorRate: { + value: number | null; + timeseries: Coordinate[]; + }; + }; +} + +export interface ConnectionStatsItemWithImpact extends ConnectionStatsItem { + stats: ConnectionStatsItem['stats'] & { + impact: number; + }; +} + +export interface ConnectionStatsItemWithComparisonData { + location: Node; + currentStats: ConnectionStatsItemWithImpact['stats']; + previousStats: ConnectionStatsItemWithImpact['stats'] | null; +} + +export function getNodeName(node: Node) { + return node.type === NodeType.service ? node.serviceName : node.backendName; +} diff --git a/x-pack/plugins/apm/common/fleet.ts b/x-pack/plugins/apm/common/fleet.ts new file mode 100644 index 0000000000000..618cd20d66159 --- /dev/null +++ b/x-pack/plugins/apm/common/fleet.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const POLICY_ELASTIC_AGENT_ON_CLOUD = 'policy-elastic-agent-on-cloud'; diff --git a/x-pack/plugins/apm/common/utils/get_offset_in_ms.ts b/x-pack/plugins/apm/common/utils/get_offset_in_ms.ts index ac662e211a6a1..f049ab9bb5488 100644 --- a/x-pack/plugins/apm/common/utils/get_offset_in_ms.ts +++ b/x-pack/plugins/apm/common/utils/get_offset_in_ms.ts @@ -7,9 +7,21 @@ import moment from 'moment'; import { parseInterval } from '../../../../../src/plugins/data/common'; -export function getOffsetInMs(start: number, offset?: string) { +export function getOffsetInMs({ + start, + end, + offset, +}: { + start: number; + end: number; + offset?: string; +}) { if (!offset) { - return 0; + return { + startWithOffset: start, + endWithOffset: end, + offsetInMs: 0, + }; } const interval = parseInterval(offset); @@ -20,5 +32,9 @@ export function getOffsetInMs(start: number, offset?: string) { const calculatedOffset = start - moment(start).subtract(interval).valueOf(); - return calculatedOffset; + return { + startWithOffset: start - calculatedOffset, + endWithOffset: end - calculatedOffset, + offsetInMs: calculatedOffset, + }; } diff --git a/x-pack/plugins/apm/kibana.json b/x-pack/plugins/apm/kibana.json index 9f661f13a491e..3c66515060d93 100644 --- a/x-pack/plugins/apm/kibana.json +++ b/x-pack/plugins/apm/kibana.json @@ -1,5 +1,9 @@ { "id": "apm", + "owner": { + "name": "APM UI", + "gitHubTeam": "apm-ui" + }, "version": "8.0.0", "kibanaVersion": "kibana", "requiredPlugins": [ @@ -28,10 +32,7 @@ ], "server": true, "ui": true, - "configPath": [ - "xpack", - "apm" - ], + "configPath": ["xpack", "apm"], "requiredBundles": [ "fleet", "home", @@ -41,4 +42,4 @@ "ml", "observability" ] -} \ No newline at end of file +} diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx new file mode 100644 index 0000000000000..1e3bf71cb87b0 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { getNodeName, NodeType } from '../../../../common/connections'; +import { useApmParams } from '../../../hooks/use_apm_params'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../hooks/use_fetcher'; +import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_range_comparison'; +import { DependenciesTable } from '../../shared/dependencies_table'; +import { useApmBackendContext } from '../../../context/apm_backend/use_apm_backend_context'; +import { ServiceLink } from '../../shared/service_link'; + +export function BackendDetailDependenciesTable() { + const { + urlParams: { start, end, environment, comparisonEnabled, comparisonType }, + } = useUrlParams(); + + const { + query: { rangeFrom, rangeTo, kuery }, + } = useApmParams('/backends/:backendName/overview'); + + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); + + const { backendName } = useApmBackendContext(); + + const { data, status } = useFetcher( + (callApmApi) => { + if (!start || !end) { + return; + } + + return callApmApi({ + endpoint: 'GET /api/apm/backends/{backendName}/upstream_services', + params: { + path: { + backendName, + }, + query: { start, end, environment, numBuckets: 20, offset }, + }, + }); + }, + [start, end, environment, offset, backendName] + ); + + const dependencies = + data?.services.map((dependency) => { + const { location } = dependency; + const name = getNodeName(location); + + if (location.type !== NodeType.service) { + throw new Error('Expected a service node'); + } + + return { + name, + currentStats: dependency.currentStats, + previousStats: dependency.previousStats, + link: ( + + ), + }; + }) ?? []; + + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/index.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/index.tsx index 6a5725c9d88fd..7773506bc1eda 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/index.tsx @@ -8,6 +8,7 @@ import { EuiFlexItem } from '@elastic/eui'; import { EuiPanel } from '@elastic/eui'; import { EuiFlexGroup } from '@elastic/eui'; import React from 'react'; +import { EuiSpacer } from '@elastic/eui'; import { ApmBackendContextProvider } from '../../../context/apm_backend/apm_backend_context'; import { useBreadcrumb } from '../../../context/breadcrumbs/use_breadcrumb'; import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; @@ -17,6 +18,7 @@ import { ApmMainTemplate } from '../../routing/templates/apm_main_template'; import { SearchBar } from '../../shared/search_bar'; import { BackendLatencyChart } from './backend_latency_chart'; import { BackendInventoryTitle } from '../../routing/home'; +import { BackendDetailDependenciesTable } from './backend_detail_dependencies_table'; export function BackendDetailOverview() { const { @@ -53,6 +55,8 @@ export function BackendDetailOverview() { + + ); diff --git a/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx new file mode 100644 index 0000000000000..513daa9289c8f --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { getNodeName, NodeType } from '../../../../../common/connections'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; +import { DependenciesTable } from '../../../shared/dependencies_table'; +import { BackendLink } from '../../../shared/backend_link'; + +export function BackendInventoryDependenciesTable() { + const { + urlParams: { start, end, environment, comparisonEnabled, comparisonType }, + } = useUrlParams(); + + const { + query: { rangeFrom, rangeTo, kuery }, + } = useApmParams('/backends'); + + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); + + const { data, status } = useFetcher( + (callApmApi) => { + if (!start || !end) { + return; + } + + return callApmApi({ + endpoint: 'GET /api/apm/backends/top_backends', + params: { + query: { start, end, environment, numBuckets: 20, offset }, + }, + }); + }, + [start, end, environment, offset] + ); + + const dependencies = + data?.backends.map((dependency) => { + const { location } = dependency; + const name = getNodeName(location); + + if (location.type !== NodeType.backend) { + throw new Error('Expected a backend node'); + } + const link = ( + + ); + + return { + name, + currentStats: dependency.currentStats, + previousStats: dependency.previousStats, + link, + }; + }) ?? []; + + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/components/app/backend_inventory/index.tsx b/x-pack/plugins/apm/public/components/app/backend_inventory/index.tsx index 115f4a56d360f..2a1f9e5f5b60d 100644 --- a/x-pack/plugins/apm/public/components/app/backend_inventory/index.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_inventory/index.tsx @@ -7,7 +7,13 @@ import React from 'react'; import { SearchBar } from '../../shared/search_bar'; +import { BackendInventoryDependenciesTable } from './backend_inventory_dependencies_table'; export function BackendInventory() { - return ; + return ( + <> + + + + ); } diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx index e1e74e35a7bb2..3a4ac4a9e5dae 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx @@ -49,7 +49,7 @@ function wrapper({ children }: { children?: ReactNode }) { }) as unknown) as ApmPluginContextValue; return ( - + diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/service_list/index.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/service_list/index.tsx index 793ca6f0655df..1e945aca7c916 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/service_list/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/service_list/index.tsx @@ -28,12 +28,12 @@ import { asPercent, asTransactionRate, } from '../../../../../common/utils/formatters'; +import { useApmParams } from '../../../../hooks/use_apm_params'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -import { truncate, unit } from '../../../../utils/style'; -import { AgentIcon } from '../../../shared/agent_icon'; +import { unit } from '../../../../utils/style'; import { EnvironmentBadge } from '../../../shared/EnvironmentBadge'; -import { ServiceOrTransactionsOverviewLink } from '../../../shared/Links/apm/service_transactions_overview_link'; import { ITableColumn, ManagedTable } from '../../../shared/managed_table'; +import { ServiceLink } from '../../../shared/service_link'; import { HealthBadge } from './HealthBadge'; import { ServiceListMetric } from './ServiceListMetric'; @@ -50,19 +50,10 @@ function formatString(value?: string | null) { return value || NOT_AVAILABLE_LABEL; } -const AppLink = euiStyled(ServiceOrTransactionsOverviewLink)` - font-size: ${({ theme }) => theme.eui.euiFontSizeM} - ${truncate('100%')}; -`; - const ToolTipWrapper = euiStyled.span` width: 100%; .apmServiceList__serviceNameTooltip { width: 100%; - .apmServiceList__serviceNameContainer { - // removes 24px referent to the icon placed on the left side of the text. - width: calc(100% - 24px); - } } `; @@ -74,8 +65,10 @@ const SERVICE_HEALTH_STATUS_ORDER = [ ]; export function getServiceColumns({ + query, showTransactionTypeColumn, }: { + query: Record; showTransactionTypeColumn: boolean; }): Array> { return [ @@ -101,31 +94,19 @@ export function getServiceColumns({ }), width: '40%', sortable: true, - render: (_, { serviceName, agentName, transactionType }) => ( - + render: (_, { serviceName, agentName }) => ( + - - {agentName && ( - - - - )} - - - {formatString(serviceName)} - - - + ), @@ -223,9 +204,11 @@ export function ServiceList({ items, noItemsMessage }: Props) { transactionType !== TRANSACTION_PAGE_LOAD ); + const { query } = useApmParams('/services'); + const serviceColumns = useMemo( - () => getServiceColumns({ showTransactionTypeColumn }), - [showTransactionTypeColumn] + () => getServiceColumns({ query, showTransactionTypeColumn }), + [query, showTransactionTypeColumn] ); const columns = displayHealthStatus diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/service_list/service_list.test.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/service_list/service_list.test.tsx index e09ddac525db0..c83f9995caf2e 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/service_list/service_list.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/service_list/service_list.test.tsx @@ -15,9 +15,9 @@ import { items } from './__fixtures__/service_api_mock_data'; function Wrapper({ children }: { children?: ReactNode }) { return ( - - {children} - + + {children} + ); } @@ -57,6 +57,7 @@ describe('ServiceList', () => { environments: ['test'], }; const renderedColumns = getServiceColumns({ + query: {}, showTransactionTypeColumn: false, }).map((c) => c.render!(service[c.field!], service)); diff --git a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx index 803e9c73e9925..11cc569af8609 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx @@ -95,9 +95,7 @@ export function ServiceOverview() { {!isRumAgent && ( - + )} diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx index d0b2722de126b..5f77583143d75 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx @@ -107,7 +107,9 @@ describe('ServiceOverview', () => { totalTransactionGroups: 0, isAggregationAccurate: true, }, - 'GET /api/apm/services/{serviceName}/dependencies': [], + 'GET /api/apm/services/{serviceName}/dependencies': { + serviceDependencies: [], + }, 'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics': [], 'GET /api/apm/services/{serviceName}/transactions/charts/latency': { currentPeriod: { diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx index f852db6c5cbcf..c3d74ec4baeaf 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx @@ -5,267 +5,43 @@ * 2.0. */ -import { - EuiBasicTableColumn, - EuiFlexGroup, - EuiFlexItem, - EuiInMemoryTable, - EuiTitle, -} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { keyBy } from 'lodash'; import React from 'react'; -import { EuiLink } from '@elastic/eui'; -import { useApmParams } from '../../../../hooks/use_apm_params'; -import { useApmRouter } from '../../../../hooks/use_apm_router'; -import { getNextEnvironmentUrlParam } from '../../../../../common/environment_filter_values'; -import { - asMillisecondDuration, - asPercent, - asTransactionRate, -} from '../../../../../common/utils/formatters'; -import { offsetPreviousPeriodCoordinates } from '../../../../../common/utils/offset_previous_period_coordinate'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ServiceDependencyItem } from '../../../../../server/lib/services/get_service_dependencies'; -import { Coordinate } from '../../../../../typings/timeseries'; +import { getNodeName, NodeType } from '../../../../../common/connections'; +import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; -import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; -import { unit } from '../../../../utils/style'; -import { AgentIcon } from '../../../shared/agent_icon'; -import { SparkPlot } from '../../../shared/charts/spark_plot'; -import { ImpactBar } from '../../../shared/ImpactBar'; -import { ServiceMapLink } from '../../../shared/Links/apm/ServiceMapLink'; -import { ServiceOverviewLink } from '../../../shared/Links/apm/service_overview_link'; -import { SpanIcon } from '../../../shared/span_icon'; -import { TableFetchWrapper } from '../../../shared/table_fetch_wrapper'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { BackendLink } from '../../../shared/backend_link'; +import { DependenciesTable } from '../../../shared/dependencies_table'; +import { ServiceLink } from '../../../shared/service_link'; import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; -import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip'; -import { ServiceOverviewTableContainer } from '../service_overview_table_container'; - -interface Props { - serviceName: string; -} -type ServiceDependencyPeriods = ServiceDependencyItem & { - latency: { previousPeriodTimeseries?: Coordinate[] }; - throughput: { previousPeriodTimeseries?: Coordinate[] }; - errorRate: { previousPeriodTimeseries?: Coordinate[] }; - previousPeriodImpact?: number; -}; - -function mergeCurrentAndPreviousPeriods({ - currentPeriod = [], - previousPeriod = [], -}: { - currentPeriod?: ServiceDependencyItem[]; - previousPeriod?: ServiceDependencyItem[]; -}): ServiceDependencyPeriods[] { - const previousPeriodMap = keyBy(previousPeriod, 'name'); - - return currentPeriod.map((currentDependency) => { - const previousDependency = previousPeriodMap[currentDependency.name]; - if (!previousDependency) { - return currentDependency; - } - return { - ...currentDependency, - latency: { - ...currentDependency.latency, - previousPeriodTimeseries: offsetPreviousPeriodCoordinates({ - currentPeriodTimeseries: currentDependency.latency.timeseries, - previousPeriodTimeseries: previousDependency.latency?.timeseries, - }), - }, - throughput: { - ...currentDependency.throughput, - previousPeriodTimeseries: offsetPreviousPeriodCoordinates({ - currentPeriodTimeseries: currentDependency.throughput.timeseries, - previousPeriodTimeseries: previousDependency.throughput?.timeseries, - }), - }, - errorRate: { - ...currentDependency.errorRate, - previousPeriodTimeseries: offsetPreviousPeriodCoordinates({ - currentPeriodTimeseries: currentDependency.errorRate.timeseries, - previousPeriodTimeseries: previousDependency.errorRate?.timeseries, - }), - }, - previousPeriodImpact: previousDependency.impact, - }; - }); -} - -export function ServiceOverviewDependenciesTable({ serviceName }: Props) { +export function ServiceOverviewDependenciesTable() { const { - urlParams: { start, end, environment, comparisonEnabled, comparisonType }, + urlParams: { + start, + end, + environment, + comparisonEnabled, + comparisonType, + latencyAggregationType, + }, } = useUrlParams(); const { - query: { rangeFrom, rangeTo, kuery }, + query: { kuery, rangeFrom, rangeTo }, } = useApmParams('/services/:serviceName/overview'); - const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + const { offset } = getTimeRangeComparison({ start, end, comparisonEnabled, comparisonType, }); - const apmRouter = useApmRouter(); + const { serviceName, transactionType } = useApmServiceContext(); - const columns: Array> = [ - { - field: 'name', - name: i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableColumnBackend', - { - defaultMessage: 'Backend', - } - ), - render: (_, item) => { - return ( - - - {item.type === 'service' ? ( - - ) : ( - - )} - - - {item.type === 'service' ? ( - - {item.name} - - ) : ( - - {item.name} - - )} - - - } - /> - ); - }, - sortable: true, - }, - { - field: 'latencyValue', - name: i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableColumnLatency', - { - defaultMessage: 'Latency (avg.)', - } - ), - width: `${unit * 10}px`, - render: (_, { latency }) => { - return ( - - ); - }, - sortable: true, - }, - { - field: 'throughputValue', - name: i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableColumnThroughput', - { defaultMessage: 'Throughput' } - ), - width: `${unit * 10}px`, - render: (_, { throughput }) => { - return ( - - ); - }, - sortable: true, - }, - { - field: 'errorRateValue', - name: i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableColumnErrorRate', - { - defaultMessage: 'Error rate', - } - ), - width: `${unit * 10}px`, - render: (_, { errorRate }) => { - return ( - - ); - }, - sortable: true, - }, - { - field: 'impactValue', - name: i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableColumnImpact', - { - defaultMessage: 'Impact', - } - ), - width: `${unit * 5}px`, - render: (_, { impact, previousPeriodImpact }) => { - return ( - - - - - {comparisonEnabled && previousPeriodImpact !== undefined && ( - - - - )} - - ); - }, - sortable: true, - }, - ]; - // Fetches current period dependencies const { data, status } = useFetcher( (callApmApi) => { if (!start || !end) { @@ -276,108 +52,74 @@ export function ServiceOverviewDependenciesTable({ serviceName }: Props) { endpoint: 'GET /api/apm/services/{serviceName}/dependencies', params: { path: { serviceName }, - query: { start, end, environment, numBuckets: 20 }, - }, - }); - }, - [start, end, serviceName, environment] - ); - - // Fetches previous period dependencies - const { data: previousPeriodData, status: previousPeriodStatus } = useFetcher( - (callApmApi) => { - if (!comparisonStart || !comparisonEnd) { - return; - } - - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/dependencies', - params: { - path: { serviceName }, - query: { - start: comparisonStart, - end: comparisonEnd, - environment, - numBuckets: 20, - }, + query: { start, end, environment, numBuckets: 20, offset }, }, }); }, - [comparisonStart, comparisonEnd, serviceName, environment] + [start, end, serviceName, environment, offset] ); - const serviceDependencies = mergeCurrentAndPreviousPeriods({ - currentPeriod: data?.serviceDependencies, - previousPeriod: previousPeriodData?.serviceDependencies, - }); + const dependencies = + data?.serviceDependencies.map((dependency) => { + const { location } = dependency; + const name = getNodeName(location); + const link = + location.type === NodeType.backend ? ( + + ) : ( + + ); - // need top-level sortable fields for the managed table - const items = serviceDependencies.map((item) => ({ - ...item, - errorRateValue: item.errorRate.value, - latencyValue: item.latency.value, - throughputValue: item.throughput.value, - impactValue: item.impact, - })); + return { + name, + currentStats: dependency.currentStats, + previousStats: dependency.previousStats, + link, + }; + }) ?? []; return ( - - - - - -

- {i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableTitle', - { - defaultMessage: 'Dependencies', - } - )} -

-
-
- - - {i18n.translate( - 'xpack.apm.serviceOverview.dependenciesTableLinkText', - { - defaultMessage: 'View service map', - } - )} - - -
-
- - - - - - - -
+ ); } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx index 7c222f85133e3..5c3384df567fe 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx @@ -22,7 +22,7 @@ import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { ErrorOverviewLink } from '../../../shared/Links/apm/ErrorOverviewLink'; import { TableFetchWrapper } from '../../../shared/table_fetch_wrapper'; import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; -import { ServiceOverviewTableContainer } from '../service_overview_table_container'; +import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_column'; interface Props { @@ -205,7 +205,7 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { - - + diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx index 98443fdf0d0ea..bfd5fea82c6cd 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/index.tsx @@ -24,7 +24,7 @@ import { SortDirection, SortField, } from '../service_overview_instances_chart_and_table'; -import { ServiceOverviewTableContainer } from '../service_overview_table_container'; +import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_columns'; import { InstanceDetails } from './intance_details'; @@ -140,7 +140,7 @@ export function ServiceOverviewInstancesTable({ - - + diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx index 952bb339cf396..b2d7424f1aa49 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx @@ -22,7 +22,7 @@ import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { TransactionOverviewLink } from '../../../shared/Links/apm/transaction_overview_link'; import { TableFetchWrapper } from '../../../shared/table_fetch_wrapper'; import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; -import { ServiceOverviewTableContainer } from '../service_overview_table_container'; +import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_columns'; type ApiResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; @@ -226,7 +226,7 @@ export function ServiceOverviewTransactionsTable() { - - + diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/FlyoutTopLevelProperties.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/FlyoutTopLevelProperties.tsx index 0ad0fe872a840..6bbcfcf545ee1 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/FlyoutTopLevelProperties.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/FlyoutTopLevelProperties.tsx @@ -7,15 +7,16 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; -import { useUrlParams } from '../../../../../../context/url_params_context/use_url_params'; -import { getNextEnvironmentUrlParam } from '../../../../../../../common/environment_filter_values'; import { SERVICE_NAME, TRANSACTION_NAME, } from '../../../../../../../common/elasticsearch_fieldnames'; +import { getNextEnvironmentUrlParam } from '../../../../../../../common/environment_filter_values'; import { Transaction } from '../../../../../../../typings/es_schemas/ui/transaction'; -import { ServiceOrTransactionsOverviewLink } from '../../../../../shared/Links/apm/service_transactions_overview_link'; +import { useUrlParams } from '../../../../../../context/url_params_context/use_url_params'; +import { useApmParams } from '../../../../../../hooks/use_apm_params'; import { TransactionDetailLink } from '../../../../../shared/Links/apm/transaction_detail_link'; +import { ServiceLink } from '../../../../../shared/service_link'; import { StickyProperties } from '../../../../../shared/sticky_properties'; interface Props { @@ -24,8 +25,9 @@ interface Props { export function FlyoutTopLevelProperties({ transaction }: Props) { const { - urlParams: { environment, latencyAggregationType }, + urlParams: { latencyAggregationType }, } = useUrlParams(); + const { query } = useApmParams('/services/:serviceName/transactions/view'); if (!transaction) { return null; @@ -33,7 +35,7 @@ export function FlyoutTopLevelProperties({ transaction }: Props) { const nextEnvironment = getNextEnvironmentUrlParam({ requestedEnvironment: transaction.service.environment, - currentEnvironmentUrlParam: environment, + currentEnvironmentUrlParam: query.environment, }); const stickyProperties = [ @@ -43,12 +45,11 @@ export function FlyoutTopLevelProperties({ transaction }: Props) { }), fieldName: SERVICE_NAME, val: ( - - {transaction.service.name} - + /> ), width: '25%', }, diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/index.tsx index d7613699221b4..d31af783e08c2 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/index.tsx @@ -17,7 +17,7 @@ import { fromQuery, toQuery } from '../../../../../shared/Links/url_helpers'; import { getAgentMarks } from '../Marks/get_agent_marks'; import { getErrorMarks } from '../Marks/get_error_marks'; import { AccordionWaterfall } from './accordion_waterfall'; -import { WaterfallFlyout } from './WaterfallFlyout'; +import { WaterfallFlyout } from './waterfall_flyout'; import { IWaterfall, IWaterfallItem, diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/index.tsx index 55e726b9d6f0e..93acf38a094bc 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/index.tsx @@ -34,7 +34,7 @@ import { TimestampTooltip } from '../../../../../../shared/TimestampTooltip'; import { ResponsiveFlyout } from '../ResponsiveFlyout'; import { SyncBadge } from '../sync_badge'; import { DatabaseContext } from './database_context'; -import { StickySpanProperties } from './StickySpanProperties'; +import { StickySpanProperties } from './sticky_span_properties'; function formatType(type: string) { switch (type) { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/span_flyout.stories.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/span_flyout.stories.tsx new file mode 100644 index 0000000000000..c736f9df214b9 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/span_flyout.stories.tsx @@ -0,0 +1,317 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Story } from '@storybook/react'; +import React, { ComponentProps, ComponentType } from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import { MockApmPluginContextWrapper } from '../../../../../../../context/apm_plugin/mock_apm_plugin_context'; +import { SpanFlyout } from './'; + +type Args = ComponentProps; + +export default { + title: 'app/TransactionDetails/Waterfall/SpanFlyout', + component: SpanFlyout, + decorators: [ + (StoryComponent: ComponentType) => { + return ( + + + + + + ); + }, + ], +}; + +export const TransactionSpan: Story = (args) => { + return ; +}; +TransactionSpan.args = { + totalDuration: 7589, + span: { + parent: { + id: '969fe48e33f4e13c', + }, + agent: { + name: 'ruby', + version: '4.2.0', + }, + processor: { + name: 'transaction', + event: 'span', + }, + observer: { + hostname: 'apm-apm-server-59fb846665-mjb2l', + id: '1e6ecda2-1347-4800-b5d1-6d9eb3805d1d', + ephemeral_id: 'd810d578-a7fe-4c7d-8897-b502db141800', + type: 'apm-server', + version: '8.0.0', + version_major: 8, + }, + trace: { + id: '1d63e25e7345627176e172ae690f9462', + }, + '@timestamp': '2021-07-28T02:24:31.803Z', + service: { + environment: 'production', + name: 'opbeans-ruby', + }, + transaction: { + id: '969fe48e33f4e13c', + }, + timestamp: { + us: 1627439071803773, + }, + span: { + duration: { + us: 5613, + }, + subtype: 'controller', + name: 'Api::CustomersController#index', + action: 'action', + id: 'dda84b0e3632fbb1', + type: 'app', + }, + }, + parentTransaction: { + container: { + id: '399a87146c0036592f6ee78553324b10c00757e024143913c97993384751e15e', + }, + kubernetes: { + pod: { + uid: 'dab8ed46-bab6-427c-ba79-6518cc17b60e', + }, + }, + process: { + args: ['-C', 'config/puma.rb'], + pid: 41, + title: '/usr/local/bundle/bin/puma', + }, + agent: { + name: 'ruby', + version: '4.2.0', + }, + processor: { + name: 'transaction', + event: 'transaction', + }, + url: { + domain: '10.43.242.237', + full: 'http://10.43.242.237:3000/api/customers', + }, + labels: { + company: 'opbeans', + }, + cloud: { + availability_zone: 'europe-west1-c', + instance: { + name: 'gke-edge-oblt-gcp-edge-oblt-gcp-pool-b6b9e929-92m2', + id: '4295368814211072338', + }, + provider: 'gcp', + machine: { + type: 'projects/8560181848/machineTypes/n1-standard-4', + }, + project: { + name: 'elastic-observability', + id: '8560181848', + }, + region: 'europe-west1', + }, + observer: { + hostname: 'apm-apm-server-59fb846665-k7grs', + id: 'fcd83d41-d48c-4c84-8aa0-6bb9d4fe374d', + type: 'apm-server', + ephemeral_id: 'e325639d-aac5-4b94-a02d-19836ccdc17f', + version: '8.0.0', + version_major: 8, + }, + trace: { + id: '1d63e25e7345627176e172ae690f9462', + }, + '@timestamp': '2021-07-28T02:24:31.802Z', + ecs: { + version: '1.10.0', + }, + service: { + node: { + name: + '399a87146c0036592f6ee78553324b10c00757e024143913c97993384751e15e', + }, + environment: 'production', + framework: { + name: 'Ruby on Rails', + version: '6.1.4', + }, + name: 'opbeans-ruby', + runtime: { + name: 'ruby', + version: '2.7.3', + }, + language: { + name: 'ruby', + version: '2.7.3', + }, + version: '2021-07-27 03:47:02', + }, + host: { + os: { + platform: 'linux', + }, + ip: '10.40.0.249', + architecture: 'x86_64', + }, + http: { + request: { + headers: { + Accept: ['*/*'], + Version: ['HTTP/1.1'], + 'User-Agent': ['Python/3.7 aiohttp/3.3.2'], + Host: ['10.43.242.237:3000'], + 'Accept-Encoding': ['gzip, deflate'], + }, + method: 'GET', + 'body.original': '[SKIPPED]', + socket: { + encrypted: false, + }, + env: { + ORIGINAL_FULLPATH: '/api/customers', + GATEWAY_INTERFACE: 'CGI/1.2', + SERVER_PORT: '3000', + SERVER_PROTOCOL: 'HTTP/1.1', + REQUEST_URI: '/api/customers', + REMOTE_ADDR: '10.40.3.37', + ORIGINAL_SCRIPT_NAME: '', + SERVER_SOFTWARE: 'puma 5.3.2 Sweetnighter', + QUERY_STRING: '', + ROUTES_9220_SCRIPT_NAME: '', + SCRIPT_NAME: '', + REQUEST_METHOD: 'GET', + REQUEST_PATH: '/api/customers', + SERVER_NAME: '10.43.242.237', + PATH_INFO: '/api/customers', + }, + }, + response: { + headers: { + 'X-Frame-Options': ['SAMEORIGIN'], + 'Referrer-Policy': ['strict-origin-when-cross-origin'], + Etag: ['W/"5eb0bc6061d718b6394c1a21d1fbc1fd"'], + 'Cache-Control': ['max-age=0, private, must-revalidate'], + 'X-Request-Id': ['db52f681-e7c2-4f44-b995-e17aa8ba8346'], + 'X-Content-Type-Options': ['nosniff'], + 'X-Runtime': ['0.007023'], + 'X-Xss-Protection': ['1; mode=block'], + 'X-Download-Options': ['noopen'], + Vary: ['Accept'], + 'X-Permitted-Cross-Domain-Policies': ['none'], + 'Content-Type': ['application/json; charset=utf-8'], + }, + status_code: 200, + finished: true, + headers_sent: true, + }, + version: '1.1', + }, + user: { + id: '3229', + }, + user_agent: { + original: 'Python/3.7 aiohttp/3.3.2', + name: 'Python aiohttp', + device: { + name: 'Other', + }, + version: '3.3.2', + }, + transaction: { + duration: { + us: 7589, + }, + result: 'HTTP 2xx', + name: 'Api::CustomersController#index', + span_count: { + dropped: 0, + started: 2, + }, + id: '969fe48e33f4e13c', + type: 'request', + sampled: true, + }, + timestamp: { + us: 1627439071802242, + }, + }, +}; + +export const DatabaseSpan: Story = (args) => { + return ; +}; +DatabaseSpan.args = { + totalDuration: 7589, + span: { + parent: { + id: 'dda84b0e3632fbb1', + }, + agent: { + name: 'ruby', + version: '4.2.0', + }, + processor: { + name: 'transaction', + event: 'span', + }, + observer: { + hostname: 'apm-apm-server-59fb846665-mjb2l', + id: '1e6ecda2-1347-4800-b5d1-6d9eb3805d1d', + type: 'apm-server', + ephemeral_id: 'd810d578-a7fe-4c7d-8897-b502db141800', + version: '8.0.0', + version_major: 8, + }, + trace: { + id: '1d63e25e7345627176e172ae690f9462', + }, + '@timestamp': '2021-07-28T02:24:31.805Z', + service: { + environment: 'production', + name: 'opbeans-ruby', + }, + transaction: { + id: '969fe48e33f4e13c', + }, + span: { + duration: { + us: 1234, + }, + subtype: 'postgresql', + destination: { + service: { + resource: 'postgresql', + }, + }, + name: 'SELECT FROM customers', + action: 'sql', + id: 'da4c078e1bc72004', + type: 'db', + db: { + statement: 'SELECT "customers".* FROM "customers"', + type: 'sql', + }, + }, + timestamp: { + us: 1627439071805402, + }, + }, +}; diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/StickySpanProperties.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/sticky_span_properties.tsx similarity index 69% rename from x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/StickySpanProperties.tsx rename to x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/sticky_span_properties.tsx index 9e1174818c43b..af55b68f813a1 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/StickySpanProperties.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/span_flyout/sticky_span_properties.tsx @@ -7,18 +7,20 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; -import { useUrlParams } from '../../../../../../../context/url_params_context/use_url_params'; -import { getNextEnvironmentUrlParam } from '../../../../../../../../common/environment_filter_values'; import { SERVICE_NAME, + SPAN_DESTINATION_SERVICE_RESOURCE, SPAN_NAME, TRANSACTION_NAME, } from '../../../../../../../../common/elasticsearch_fieldnames'; +import { getNextEnvironmentUrlParam } from '../../../../../../../../common/environment_filter_values'; import { NOT_AVAILABLE_LABEL } from '../../../../../../../../common/i18n'; import { Span } from '../../../../../../../../typings/es_schemas/ui/span'; import { Transaction } from '../../../../../../../../typings/es_schemas/ui/transaction'; -import { ServiceOrTransactionsOverviewLink } from '../../../../../../shared/Links/apm/service_transactions_overview_link'; +import { useApmParams } from '../../../../../../../hooks/use_apm_params'; +import { BackendLink } from '../../../../../../shared/backend_link'; import { TransactionDetailLink } from '../../../../../../shared/Links/apm/transaction_detail_link'; +import { ServiceLink } from '../../../../../../shared/service_link'; import { StickyProperties } from '../../../../../../shared/sticky_properties'; interface Props { @@ -27,9 +29,8 @@ interface Props { } export function StickySpanProperties({ span, transaction }: Props) { - const { - urlParams: { environment, latencyAggregationType }, - } = useUrlParams(); + const { query } = useApmParams('/services/:serviceName/transactions/view'); + const { environment, latencyAggregationType } = query; const nextEnvironment = getNextEnvironmentUrlParam({ requestedEnvironment: transaction?.service.environment, @@ -37,6 +38,8 @@ export function StickySpanProperties({ span, transaction }: Props) { }); const spanName = span.span.name; + const backendName = span.span.destination?.service.resource; + const transactionStickyProperties = transaction ? [ { @@ -45,12 +48,11 @@ export function StickySpanProperties({ span, transaction }: Props) { }), fieldName: SERVICE_NAME, val: ( - - {transaction.service.name} - + /> ), width: '25%', }, @@ -80,6 +82,29 @@ export function StickySpanProperties({ span, transaction }: Props) { ] : []; + const backendStickyProperties = backendName + ? [ + { + label: i18n.translate( + 'xpack.apm.transactionDetails.spanFlyout.backendLabel', + { + defaultMessage: 'Backend', + } + ), + fieldName: SPAN_DESTINATION_SERVICE_RESOURCE, + val: ( + + ), + width: '25%', + }, + ] + : []; + const stickyProperties = [ { label: i18n.translate( @@ -89,10 +114,11 @@ export function StickySpanProperties({ span, transaction }: Props) { } ), fieldName: SPAN_NAME, - val: spanName || NOT_AVAILABLE_LABEL, + val: spanName ?? NOT_AVAILABLE_LABEL, truncated: true, width: '25%', }, + ...backendStickyProperties, ...transactionStickyProperties, ]; diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/TransactionFlyout/DroppedSpansWarning.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/DroppedSpansWarning.tsx similarity index 100% rename from x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/TransactionFlyout/DroppedSpansWarning.tsx rename to x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/DroppedSpansWarning.tsx diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/TransactionFlyout/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/index.tsx similarity index 100% rename from x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/TransactionFlyout/index.tsx rename to x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/index.tsx diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/transaction_flyout.stories.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/transaction_flyout.stories.tsx new file mode 100644 index 0000000000000..7e2365ffb8aff --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/transaction_flyout/transaction_flyout.stories.tsx @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Story } from '@storybook/react'; +import React, { ComponentProps, ComponentType } from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import { MockApmPluginContextWrapper } from '../../../../../../../context/apm_plugin/mock_apm_plugin_context'; +import { TransactionFlyout } from './'; + +type Args = ComponentProps; + +export default { + title: 'app/TransactionDetails/Waterfall/TransactionFlyout', + component: TransactionFlyout, + decorators: [ + (StoryComponent: ComponentType) => { + return ( + + + + + + ); + }, + ], +}; + +export const Example: Story = (args) => { + return ; +}; +Example.args = { + transaction: { + container: { + id: '4810e1f4da909044f1f6f56be41a542dc59784948f059769d6a590952deca405', + }, + kubernetes: { + pod: { + uid: 'c44f58b9-d1fa-4341-a40a-4fdcac0ec4d0', + name: 'opbeans-java-6995b65cc9-gtwzd', + }, + }, + agent: { + name: 'java', + ephemeral_id: '12f7e44a-8b1d-467b-afe0-46b9a1c60535', + version: '1.25.1-SNAPSHOT.UNKNOWN', + }, + process: { + pid: 8, + title: '/opt/java/openjdk/bin/java', + ppid: 1, + }, + processor: { + name: 'transaction', + event: 'transaction', + }, + url: { + domain: '10.43.242.237', + full: 'http://10.43.242.237:3000/api/orders', + }, + cloud: { + availability_zone: 'europe-west1-c', + instance: { + name: 'gke-edge-oblt-gcp-edge-oblt-gcp-pool-b6b9e929-92m2', + id: '4295368814211072338', + }, + provider: 'gcp', + machine: { + type: 'n1-standard-4', + }, + project: { + name: 'elastic-observability', + id: '8560181848', + }, + region: 'europe-west1', + }, + observer: { + hostname: 'apm-apm-server-57659d6b4c-zvspw', + id: 'ab52d330-8ad1-4eb2-b692-92b8fa2ddcce', + type: 'apm-server', + ephemeral_id: 'aeb9add4-1ee1-4194-bbea-989de999c44a', + version: '8.0.0', + version_major: 8, + }, + trace: { + id: 'b80358b455b1075670cbc5fe57aa6d64', + }, + '@timestamp': '2021-07-28T17:34:04.335Z', + ecs: { + version: '1.10.0', + }, + service: { + node: { + name: + '4810e1f4da909044f1f6f56be41a542dc59784948f059769d6a590952deca405', + }, + environment: 'production', + framework: { + name: 'Servlet API', + }, + name: 'opbeans-java', + runtime: { + name: 'Java', + version: '11.0.11', + }, + language: { + name: 'Java', + version: '11.0.11', + }, + version: '2021-07-28 03:47:59', + }, + host: { + os: { + platform: 'Linux', + }, + ip: '10.40.0.104', + architecture: 'amd64', + }, + http: { + request: { + headers: { + Accept: ['*/*'], + 'User-Agent': ['Python/3.7 aiohttp/3.3.2'], + Host: ['10.43.242.237:3000'], + 'Accept-Encoding': ['gzip, deflate'], + }, + method: 'GET', + socket: { + encrypted: false, + remote_address: '10.40.2.215', + }, + }, + response: { + headers: { + 'Transfer-Encoding': ['chunked'], + Date: ['Wed, 28 Jul 2021 17:34:04 GMT'], + 'Content-Type': ['application/json;charset=ISO-8859-1'], + }, + status_code: 200, + finished: true, + headers_sent: true, + }, + version: '1.1', + }, + transaction: { + duration: { + us: 23961, + }, + result: 'HTTP 2xx', + name: 'DispatcherServlet#doGet', + id: 'ade1f180d840845c', + span_count: { + dropped: 0, + started: 1, + }, + type: 'request', + sampled: true, + }, + user_agent: { + original: 'Python/3.7 aiohttp/3.3.2', + name: 'Python aiohttp', + device: { + name: 'Other', + }, + version: '3.3.2', + }, + timestamp: { + us: 1627493644335001, + }, + }, + rootTransactionDuration: 23961, +}; diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/WaterfallFlyout.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/waterfall_flyout.tsx similarity index 96% rename from x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/WaterfallFlyout.tsx rename to x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/waterfall_flyout.tsx index ec6d550affb91..4163388db1ec0 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/WaterfallFlyout.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/Waterfall/waterfall_flyout.tsx @@ -9,7 +9,7 @@ import { History } from 'history'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { SpanFlyout } from './span_flyout'; -import { TransactionFlyout } from './TransactionFlyout'; +import { TransactionFlyout } from './transaction_flyout'; import { IWaterfall } from './waterfall_helpers/waterfall_helpers'; interface Props { diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx new file mode 100644 index 0000000000000..6a970632ee192 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/create_apm_policy_form.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { APMPolicyForm } from '.'; +import { + PackagePolicyVars, + NewPackagePolicy, + PackagePolicyCreateExtensionComponentProps, +} from './typings'; + +interface Props { + newPolicy: NewPackagePolicy; + onChange: PackagePolicyCreateExtensionComponentProps['onChange']; +} + +export function CreateAPMPolicyForm({ newPolicy, onChange }: Props) { + const [firstInput, ...restInputs] = newPolicy?.inputs; + const vars = firstInput?.vars; + + function handleChange(newVars: PackagePolicyVars, isValid: boolean) { + onChange({ + isValid, + updatedPolicy: { + ...newPolicy, + inputs: [{ ...firstInput, vars: newVars }, ...restInputs], + }, + }); + } + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx new file mode 100644 index 0000000000000..5843b9005e7fa --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/edit_apm_policy_form.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { APMPolicyForm } from '.'; +import { + NewPackagePolicy, + PackagePolicy, + PackagePolicyEditExtensionComponentProps, + PackagePolicyVars, +} from './typings'; +import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../../common/fleet'; + +interface Props { + policy: PackagePolicy; + newPolicy: NewPackagePolicy; + onChange: PackagePolicyEditExtensionComponentProps['onChange']; +} + +export function EditAPMPolicyForm({ newPolicy, onChange }: Props) { + const [firstInput, ...restInputs] = newPolicy?.inputs; + const vars = firstInput?.vars; + + function handleChange(newVars: PackagePolicyVars, isValid: boolean) { + onChange({ + isValid, + updatedPolicy: { + inputs: [{ ...firstInput, vars: newVars }, ...restInputs], + }, + }); + } + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx new file mode 100644 index 0000000000000..60d95ab2b9f0d --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/index.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiSpacer } from '@elastic/eui'; +import React from 'react'; +import { OnFormChangeFn, PackagePolicyVars } from './typings'; +import { APMSettingsForm } from './settings/apm_settings'; +import { RUMSettingsForm } from './settings/rum_settings'; +import { TLSSettingsForm } from './settings/tls_settings'; + +interface Props { + onChange: OnFormChangeFn; + vars?: PackagePolicyVars; + isCloudPolicy: boolean; +} + +export function APMPolicyForm({ vars = {}, isCloudPolicy, onChange }: Props) { + return ( + <> + + + + + + + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx new file mode 100644 index 0000000000000..d80bccc529d64 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/apm_settings.tsx @@ -0,0 +1,306 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 React, { useMemo } from 'react'; +import { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; +import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; +import { OnFormChangeFn, PackagePolicyVars } from '../typings'; +import { SettingsForm } from './settings_form'; +import { SettingDefinition } from './typings'; +import { + isSettingsFormValid, + mergeNewVars, + OPTIONAL_LABEL, + REQUIRED_LABEL, +} from './utils'; + +interface Props { + vars: PackagePolicyVars; + onChange: OnFormChangeFn; + isCloudPolicy: boolean; +} + +function getApmSettings(isCloudPolicy: boolean): SettingDefinition[] { + return [ + { + type: 'text', + key: 'host', + labelAppend: REQUIRED_LABEL, + readOnly: isCloudPolicy, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostLabel', + { defaultMessage: 'Host' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostTitle', + { defaultMessage: 'Server configuration' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.hostDescription', + { + defaultMessage: + 'Choose a name and description to help identify how this integration will be used.', + } + ), + + required: true, + }, + { + type: 'text', + key: 'url', + labelAppend: REQUIRED_LABEL, + readOnly: isCloudPolicy, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.urlLabel', + { + defaultMessage: 'URL', + } + ), + required: true, + }, + { + type: 'text', + key: 'secret_token', + readOnly: isCloudPolicy, + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.secretTokenLabel', + { defaultMessage: 'Secret token' } + ), + }, + { + type: 'boolean', + key: 'api_key_enabled', + labelAppend: OPTIONAL_LABEL, + placeholder: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyAuthenticationPlaceholder', + { defaultMessage: 'API key for agent authentication' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyAuthenticationHelpText', + { + defaultMessage: + 'Enable API Key auth between APM Server and APM Agents.', + } + ), + }, + { + type: 'advanced_settings', + settings: [ + { + key: 'max_header_bytes', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesLabel', + { defaultMessage: "Maximum size of a request's header (bytes)" } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesTitle', + { defaultMessage: 'Limits' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxHeaderBytesDescription', + { + defaultMessage: + 'Set limits on request headers sizes and timing configurations.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'idle_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.idleTimeoutLabel', + { + defaultMessage: + 'Idle time before underlying connection is closed', + } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'read_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.readTimeoutLabel', + { defaultMessage: 'Maximum duration for reading an entire request' } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'shutdown_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.shutdownTimeoutLabel', + { + defaultMessage: + 'Maximum duration before releasing resources when shutting down', + } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'write_timeout', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.writeTimeoutLabel', + { defaultMessage: 'Maximum duration for writing a response' } + ), + validation: getDurationRt({ min: '1ms' }), + }, + { + key: 'max_event_bytes', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxEventBytesLabel', + { defaultMessage: 'Maximum size per event (bytes)' } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'max_connections', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.maxConnectionsLabel', + { defaultMessage: 'Simultaneously accepted connections' } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'response_headers', + type: 'area', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersLabel', + { defaultMessage: 'Custom HTTP headers added to HTTP responses' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersHelpText', + { defaultMessage: 'Might be used for security policy compliance.' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersTitle', + { defaultMessage: 'Custom headers' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.responseHeadersDescription', + { + defaultMessage: + 'Set limits on request headers sizes and timing configurations.', + } + ), + }, + { + key: 'api_key_limit', + type: 'integer', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitLabel', + { defaultMessage: 'Number of keys' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitHelpText', + { defaultMessage: 'Might be used for security policy compliance.' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitTitle', + { + defaultMessage: + 'Maximum number of API keys of Agent authentication', + } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.apiKeyLimitDescription', + { + defaultMessage: + 'Restrict number of unique API keys per minute, used for auth between aPM Agents and Server.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'capture_personal_data', + type: 'boolean', + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataTitle', + { defaultMessage: 'Capture personal data' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.capturePersonalDataDescription', + { defaultMessage: 'Capture personal data such as IP or User Agent' } + ), + }, + { + key: 'default_service_environment', + type: 'text', + labelAppend: OPTIONAL_LABEL, + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentLabel', + { defaultMessage: 'Default Service Environment' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentTitle', + { defaultMessage: 'Service configuration' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.defaultServiceEnvironmentDescription', + { + defaultMessage: + 'Default service environment to record in events which have no service environment defined.', + } + ), + }, + { + key: 'expvar_enabled', + type: 'boolean', + labelAppend: OPTIONAL_LABEL, + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.expvarEnabledTitle', + { defaultMessage: 'Enable APM Server Golang expvar support' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.apm.expvarEnabledDescription', + { defaultMessage: 'Exposed under /debug/vars' } + ), + }, + ], + }, + ]; +} + +export function APMSettingsForm({ vars, onChange, isCloudPolicy }: Props) { + const apmSettings = useMemo(() => { + return getApmSettings(isCloudPolicy); + }, [isCloudPolicy]); + + return ( + { + const newVars = mergeNewVars(vars, key, value); + onChange(newVars, isSettingsFormValid(apmSettings, newVars)); + }} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx new file mode 100644 index 0000000000000..33aeaccbeb8cc --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/form_row_setting.tsx @@ -0,0 +1,113 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiFieldNumber, + EuiFieldText, + EuiIcon, + EuiSwitch, + EuiTextArea, + EuiComboBox, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { FormRowOnChange } from './settings_form'; +import { SettingDefinition } from './typings'; + +interface Props { + setting: SettingDefinition; + value?: any; + onChange: FormRowOnChange; +} + +const ENABLED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.enabledLabel', + { defaultMessage: 'Enabled' } +); +const DISABLED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.disabledLabel', + { defaultMessage: 'Disabled' } +); + +export function FormRowSetting({ setting, value, onChange }: Props) { + switch (setting.type) { + case 'boolean': { + return ( + { + onChange(setting.key, e.target.checked); + }} + /> + ); + } + case 'duration': + case 'text': { + return ( + : undefined} + onChange={(e) => { + onChange(setting.key, e.target.value); + }} + /> + ); + } + case 'area': { + return ( + { + onChange(setting.key, e.target.value); + }} + /> + ); + } + case 'bytes': + case 'integer': { + return ( + { + onChange(setting.key, e.target.value); + }} + /> + ); + } + case 'combo': { + const comboOptions = Array.isArray(value) + ? value.map((label) => ({ label })) + : []; + return ( + { + onChange( + setting.key, + option.map(({ label }) => label) + ); + }} + onCreateOption={(newOption) => { + onChange(setting.key, [...value, newOption]); + }} + isClearable={true} + /> + ); + } + default: + throw new Error(`Unknown type "${setting.type}"`); + } +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx new file mode 100644 index 0000000000000..0a1b6c66a47e1 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/rum_settings.tsx @@ -0,0 +1,197 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 React from 'react'; +import { getIntegerRt } from '../../../../../common/agent_configuration/runtime_types/integer_rt'; +import { OnFormChangeFn, PackagePolicyVars } from '../typings'; +import { SettingsForm } from './settings_form'; +import { SettingDefinition } from './typings'; +import { isSettingsFormValid, mergeNewVars, OPTIONAL_LABEL } from './utils'; + +const ENABLE_RUM_KEY = 'enable_rum'; +const rumSettings: SettingDefinition[] = [ + { + key: ENABLE_RUM_KEY, + type: 'boolean', + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.enableRumTitle', + { defaultMessage: 'Enable RUM' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.enableRumDescription', + { defaultMessage: 'Enable Real User Monitoring (RUM)' } + ), + settings: [ + { + key: 'rum_allow_headers', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderLabel', + { defaultMessage: 'Allowed origin headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderHelpText', + { + defaultMessage: 'Allowed Origin headers to be sent by User Agents.', + } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderTitle', + { defaultMessage: 'Custom headers' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowHeaderDescription', + { defaultMessage: 'Configure authentication for the agent' } + ), + }, + { + key: 'rum_allow_origins', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsLabel', + { defaultMessage: 'Access-Control-Allow-Headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowOriginsHelpText', + { + defaultMessage: + 'Supported Access-Control-Allow-Headers in addition to "Content-Type", "Content-Encoding" and "Accept".', + } + ), + }, + { + key: 'rum_response_headers', + type: 'area', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersLabel', + { defaultMessage: 'Custom HTTP response headers' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumResponseHeadersHelpText', + { + defaultMessage: + 'Added to RUM responses, e.g. for security policy compliance.', + } + ), + }, + { + type: 'advanced_settings', + settings: [ + { + key: 'rum_event_rate_limit', + type: 'integer', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitLabel', + { defaultMessage: 'Rate limit events per IP' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitHelpText', + { + defaultMessage: + 'Maximum number of events allowed per IP per second.', + } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitTitle', + { defaultMessage: 'Limits' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLimitDescription', + { defaultMessage: 'Configure authentication for the agent' } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'rum_event_rate_lru_size', + type: 'integer', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLRUSizeLabel', + { defaultMessage: 'Rate limit cache size' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumEventRateLRUSizeHelpText', + { + defaultMessage: + 'Number of unique IPs to be cached for the rate limiter.', + } + ), + validation: getIntegerRt({ min: 1 }), + }, + { + key: 'rum_library_pattern', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternLabel', + { defaultMessage: 'Library Frame Pattern' } + ), + labelAppend: OPTIONAL_LABEL, + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumLibraryPatternHelpText', + { + defaultMessage: + "Identify library frames by matching a stacktrace frame's file_name and abs_path against this regexp.", + } + ), + }, + { + key: 'rum_allow_service_names', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesLabel', + { defaultMessage: 'Allowed service names' } + ), + labelAppend: OPTIONAL_LABEL, + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesTitle', + { defaultMessage: 'Allowed service names' } + ), + rowDescription: i18n.translate( + 'xpack.apm.fleet_integration.settings.rum.rumAllowServiceNamesDescription', + { defaultMessage: 'Configure authentication for the agent' } + ), + }, + ], + }, + ], + }, +]; + +interface Props { + vars: PackagePolicyVars; + onChange: OnFormChangeFn; +} + +export function RUMSettingsForm({ vars, onChange }: Props) { + return ( + { + const newVars = mergeNewVars(vars, key, value); + onChange( + newVars, + // only validates RUM when its flag is enabled + !newVars[ENABLE_RUM_KEY].value || + isSettingsFormValid(rumSettings, newVars) + ); + }} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx new file mode 100644 index 0000000000000..1b1dcddc0e7f8 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/settings_form.tsx @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + EuiButtonEmpty, + EuiDescribedFormGroup, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiHorizontalRule, + EuiPanel, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; +import { PackagePolicyVars } from '../typings'; +import { FormRowSetting } from './form_row_setting'; +import { SettingDefinition } from './typings'; +import { validateSettingValue } from './utils'; + +export type FormRowOnChange = (key: string, value: any) => void; + +function FormRow({ + initialSetting, + vars, + onChange, +}: { + initialSetting: SettingDefinition; + vars?: PackagePolicyVars; + onChange: FormRowOnChange; +}) { + function getSettingFormRow(setting: SettingDefinition) { + if (setting.type === 'advanced_settings') { + return ( + + {setting.settings.map((advancedSetting) => + getSettingFormRow(advancedSetting) + )} + + ); + } else { + const { key } = setting; + const value = vars?.[key]?.value; + const { isValid, message } = validateSettingValue(setting, value); + return ( + + {setting.rowTitle}} + description={setting.rowDescription} + > + {setting.helpText}} + labelAppend={ + + {setting.labelAppend} + + } + > + + + + {setting.settings && + value && + setting.settings.map((childSettings) => + getSettingFormRow(childSettings) + )} + + ); + } + } + return getSettingFormRow(initialSetting); +} +interface Props { + title: string; + subtitle: string; + settings: SettingDefinition[]; + vars?: PackagePolicyVars; + onChange: FormRowOnChange; +} + +export function SettingsForm({ + title, + subtitle, + settings, + vars, + onChange, +}: Props) { + return ( + + + + +

{title}

+
+
+ + + {subtitle} + + +
+ + + {settings.map((setting) => { + return FormRow({ + initialSetting: setting, + vars, + onChange, + }); + })} +
+ ); +} + +function AdvancedOptions({ children }: { children: React.ReactNode }) { + const [isOpen, setIsOpen] = useState(false); + return ( + <> + + + + + + { + setIsOpen((state) => !state); + }} + > + {i18n.translate( + 'xpack.apm.fleet_integration.settings.advancedOptionsLavel', + { defaultMessage: 'Advanced options' } + )} + + + + + + {isOpen && ( + <> + + {children} + + )} + + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx new file mode 100644 index 0000000000000..6529de07b7564 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/tls_settings.tsx @@ -0,0 +1,117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 React from 'react'; +import { OnFormChangeFn, PackagePolicyVars } from '../typings'; +import { SettingsForm } from './settings_form'; +import { SettingDefinition } from './typings'; +import { + isSettingsFormValid, + mergeNewVars, + OPTIONAL_LABEL, + REQUIRED_LABEL, +} from './utils'; + +const TLS_ENABLED_KEY = 'tls_enabled'; +const tlsSettings: SettingDefinition[] = [ + { + key: TLS_ENABLED_KEY, + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsEnabledTitle', + { defaultMessage: 'Enable TLS' } + ), + type: 'boolean', + settings: [ + { + key: 'tls_certificate', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCertificateLabel', + { defaultMessage: 'File path to server certificate' } + ), + rowTitle: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCertificateTitle', + { defaultMessage: 'TLS certificate' } + ), + labelAppend: REQUIRED_LABEL, + required: true, + }, + { + key: 'tls_key', + type: 'text', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsKeyLabel', + { defaultMessage: 'File path to server certificate key' } + ), + labelAppend: REQUIRED_LABEL, + required: true, + }, + { + key: 'tls_supported_protocols', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsSupportedProtocolsLabel', + { defaultMessage: 'Supported protocol versions' } + ), + labelAppend: OPTIONAL_LABEL, + }, + { + key: 'tls_cipher_suites', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesLabel', + { defaultMessage: 'Cipher suites for TLS connections' } + ), + helpText: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCipherSuitesHelpText', + { defaultMessage: 'Not configurable for TLS 1.3.' } + ), + labelAppend: OPTIONAL_LABEL, + }, + { + key: 'tls_curve_types', + type: 'combo', + label: i18n.translate( + 'xpack.apm.fleet_integration.settings.tls.tlsCurveTypesLabel', + { defaultMessage: 'Curve types for ECDHE based cipher suites' } + ), + labelAppend: OPTIONAL_LABEL, + }, + ], + }, +]; + +interface Props { + vars: PackagePolicyVars; + onChange: OnFormChangeFn; +} + +export function TLSSettingsForm({ vars, onChange }: Props) { + return ( + { + const newVars = mergeNewVars(vars, key, value); + onChange( + newVars, + // only validates TLS when its flag is enabled + !newVars[TLS_ENABLED_KEY].value || + isSettingsFormValid(tlsSettings, newVars) + ); + }} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts new file mode 100644 index 0000000000000..8f2e28a72ea2d --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/typings.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import * as t from 'io-ts'; + +export type SettingValidation = t.Type; + +interface AdvancedSettings { + type: 'advanced_settings'; + settings: SettingDefinition[]; +} + +export interface Setting { + type: + | 'text' + | 'combo' + | 'area' + | 'boolean' + | 'integer' + | 'bytes' + | 'duration'; + key: string; + rowTitle?: string; + rowDescription?: string; + label?: string; + helpText?: string; + placeholder?: string; + labelAppend?: string; + settings?: SettingDefinition[]; + validation?: SettingValidation; + required?: boolean; + readOnly?: boolean; +} + +export type SettingDefinition = Setting | AdvancedSettings; diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.ts new file mode 100644 index 0000000000000..3b5cbb652e291 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.test.ts @@ -0,0 +1,148 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { getDurationRt } from '../../../../../common/agent_configuration/runtime_types/duration_rt'; +import { PackagePolicyVars } from '../typings'; +import { SettingDefinition } from './typings'; +import { + mergeNewVars, + isSettingsFormValid, + validateSettingValue, +} from './utils'; + +describe('settings utils', () => { + describe('validateSettingValue', () => { + it('returns invalid when setting is required and value is empty', () => { + const setting: SettingDefinition = { + key: 'foo', + type: 'text', + required: true, + }; + expect(validateSettingValue(setting, undefined)).toEqual({ + isValid: false, + message: 'Required field', + }); + }); + it('returns valid when setting is NOT required and value is empty', () => { + const setting: SettingDefinition = { + key: 'foo', + type: 'text', + }; + expect(validateSettingValue(setting, undefined)).toEqual({ + isValid: true, + message: '', + }); + }); + it('returns valid when setting does not have a validation property', () => { + const setting: SettingDefinition = { + key: 'foo', + type: 'text', + }; + expect(validateSettingValue(setting, 'foo')).toEqual({ + isValid: true, + message: '', + }); + }); + it('returns valid after validating value', () => { + const setting: SettingDefinition = { + key: 'foo', + type: 'text', + validation: getDurationRt({ min: '1ms' }), + }; + expect(validateSettingValue(setting, '2ms')).toEqual({ + isValid: true, + message: 'No errors!', + }); + }); + it('returns invalid after validating value', () => { + const setting: SettingDefinition = { + key: 'foo', + type: 'text', + validation: getDurationRt({ min: '1ms' }), + }; + expect(validateSettingValue(setting, 'foo')).toEqual({ + isValid: false, + message: 'Must be greater than 1ms', + }); + }); + }); + describe('isSettingsFormValid', () => { + const settings: SettingDefinition[] = [ + { key: 'foo', type: 'text', required: true }, + { + key: 'bar', + type: 'text', + settings: [{ type: 'text', key: 'bar_1', required: true }], + }, + { key: 'baz', type: 'text', validation: getDurationRt({ min: '1ms' }) }, + { + type: 'advanced_settings', + settings: [ + { + type: 'text', + key: 'advanced_1', + required: true, + settings: [ + { + type: 'text', + key: 'advanced_1_1', + validation: getDurationRt({ min: '1ms' }), + settings: [ + { + type: 'text', + key: 'advanced_1_1_1', + required: true, + validation: getDurationRt({ min: '1ms' }), + }, + ], + }, + ], + }, + ], + }, + ]; + it('returns false when form is invalid', () => { + const vars: PackagePolicyVars = { + foo: { value: undefined, type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: 'baz', type: 'text' }, + advanced_1: { value: undefined, type: 'text' }, + advanced_1_1: { value: '1', type: 'text' }, + advanced_1_1_1: { value: undefined, type: 'text' }, + }; + expect(isSettingsFormValid(settings, vars)).toBeFalsy(); + }); + it('returns true when form is valid', () => { + const vars: PackagePolicyVars = { + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + bar_1: { value: 'bar_1' }, + baz: { value: '1ms', type: 'text' }, + advanced_1: { value: 'advanced_1', type: 'text' }, + advanced_1_1: { value: undefined, type: 'text' }, + advanced_1_1_1: { value: '1s', type: 'text' }, + }; + expect(isSettingsFormValid(settings, vars)).toBeTruthy(); + }); + }); + describe('mergeNewVars', () => { + it('updates key value', () => { + const vars: PackagePolicyVars = { + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: '1ms', type: 'text' }, + qux: { value: undefined, type: 'text' }, + }; + const newVars = mergeNewVars(vars, 'qux', 'qux'); + expect(newVars).toEqual({ + foo: { value: 'foo', type: 'text' }, + bar: { value: undefined, type: 'text' }, + baz: { value: '1ms', type: 'text' }, + qux: { value: 'qux', type: 'text' }, + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts new file mode 100644 index 0000000000000..5f19f297ab333 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/settings/utils.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { isRight } from 'fp-ts/lib/Either'; +import { PathReporter } from 'io-ts/lib/PathReporter'; +import { isEmpty } from 'lodash'; +import { PackagePolicyVars } from '../typings'; +import { SettingDefinition, Setting } from './typings'; + +export const REQUIRED_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.requiredLabel', + { defaultMessage: 'Required' } +); +export const OPTIONAL_LABEL = i18n.translate( + 'xpack.apm.fleet_integration.settings.optionalLabel', + { defaultMessage: 'Optional' } +); +const REQUIRED_FIELD = i18n.translate( + 'xpack.apm.fleet_integration.settings.requiredFieldLabel', + { defaultMessage: 'Required field' } +); + +export function mergeNewVars( + oldVars: PackagePolicyVars, + key: string, + value?: any +): PackagePolicyVars { + return { ...oldVars, [key]: { ...oldVars[key], value } }; +} + +export function isSettingsFormValid( + parentSettings: SettingDefinition[], + vars: PackagePolicyVars +) { + function isSettingsValid(settings: SettingDefinition[]): boolean { + return !settings + .map((setting) => { + if (setting.type === 'advanced_settings') { + return isSettingsValid(setting.settings); + } + + if (setting.settings) { + return isSettingsValid(setting.settings); + } + const { isValid } = validateSettingValue( + setting, + vars[setting.key]?.value + ); + return isValid; + }) + .flat() + .some((isValid) => !isValid); + } + return isSettingsValid(parentSettings); +} + +export function validateSettingValue(setting: Setting, value?: any) { + if (isEmpty(value)) { + return { + isValid: !setting.required, + message: setting.required ? REQUIRED_FIELD : '', + }; + } + + if (setting.validation) { + const result = setting.validation.decode(String(value)); + const message = PathReporter.report(result)[0]; + const isValid = isRight(result); + return { isValid, message }; + } + return { isValid: true, message: '' }; +} diff --git a/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts new file mode 100644 index 0000000000000..0a5ebde1584c3 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/apm_policy_form/typings.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { PackagePolicyConfigRecordEntry } from '../../../../../fleet/common'; + +export { + PackagePolicyCreateExtensionComponentProps, + PackagePolicyEditExtensionComponentProps, +} from '../../../../../fleet/public'; + +export { + NewPackagePolicy, + PackagePolicy, + PackagePolicyConfigRecordEntry, +} from '../../../../../fleet/common'; + +export type PackagePolicyVars = Record; + +export type OnFormChangeFn = ( + newVars: PackagePolicyVars, + isValid: boolean +) => void; diff --git a/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_create_extension.tsx b/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_create_extension.tsx new file mode 100644 index 0000000000000..6bde5e9416635 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_create_extension.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { lazy } from 'react'; +import { PackagePolicyCreateExtensionComponent } from '../../../../fleet/public'; + +export const getLazyAPMPolicyCreateExtension = () => { + return lazy(async () => { + const { CreateAPMPolicyForm } = await import( + './apm_policy_form/create_apm_policy_form' + ); + + return { default: CreateAPMPolicyForm }; + }); +}; diff --git a/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_edit_extension.tsx b/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_edit_extension.tsx new file mode 100644 index 0000000000000..f79d7b58b1621 --- /dev/null +++ b/x-pack/plugins/apm/public/components/fleet_integration/lazy_apm_policy_edit_extension.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { lazy } from 'react'; +import { PackagePolicyEditExtensionComponent } from '../../../../fleet/public'; + +export const getLazyAPMPolicyEditExtension = () => { + return lazy(async () => { + const { EditAPMPolicyForm } = await import( + './apm_policy_form/edit_apm_policy_form' + ); + + return { default: EditAPMPolicyForm }; + }); +}; diff --git a/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx b/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx index 099519416baf2..922662e25ab20 100644 --- a/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx +++ b/x-pack/plugins/apm/public/components/routing/apm_route_config.tsx @@ -20,15 +20,6 @@ import { settings } from './settings'; * creates the routes. */ const apmRoutes = route([ - { - path: '/', - element: ( - - - - ), - children: [settings, serviceDetail, home], - }, { path: '/link-to/transaction/:transactionId', element: , @@ -63,6 +54,15 @@ const apmRoutes = route([ }), ]), }, + { + path: '/', + element: ( + + + + ), + children: [settings, serviceDetail, home], + }, ] as const); export type ApmRoutes = typeof apmRoutes; diff --git a/x-pack/plugins/apm/public/components/routing/home/index.tsx b/x-pack/plugins/apm/public/components/routing/home/index.tsx index 185fcd1f920fc..10f88d3e8b4cc 100644 --- a/x-pack/plugins/apm/public/components/routing/home/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/home/index.tsx @@ -84,6 +84,12 @@ export const home = { { path: '/backends', element: , + params: t.partial({ + query: t.partial({ + comparisonEnabled: t.string, + comparisonType: t.string, + }), + }), children: [ { path: '/:backendName/overview', diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/service_overview_link.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/service_overview_link.tsx deleted file mode 100644 index b82a8e4124223..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/service_overview_link.tsx +++ /dev/null @@ -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 { EuiLink } from '@elastic/eui'; -import React from 'react'; -import { removeUndefinedProps } from '../../../../context/url_params_context/helpers'; -import { APMQueryParams } from '../url_helpers'; -import { APMLinkExtendProps, useAPMHref } from './APMLink'; - -interface ServiceOverviewLinkProps extends APMLinkExtendProps { - serviceName: string; - environment?: string; - transactionType?: string; -} - -const persistedFilters: Array = [ - 'latencyAggregationType', -]; - -export function useServiceOverviewHref({ - serviceName, - environment, - transactionType, -}: ServiceOverviewLinkProps) { - const query = { environment, transactionType }; - return useAPMHref({ - path: `/services/${serviceName}/overview`, - persistedFilters, - query: removeUndefinedProps(query), - }); -} - -export function ServiceOverviewLink({ - serviceName, - environment, - transactionType, - ...rest -}: ServiceOverviewLinkProps) { - const href = useServiceOverviewHref({ - serviceName, - environment, - transactionType, - }); - return ; -} diff --git a/x-pack/plugins/apm/public/components/shared/agent_icon/index.tsx b/x-pack/plugins/apm/public/components/shared/agent_icon/index.tsx index f91eb49717782..a91ddb49d5e8f 100644 --- a/x-pack/plugins/apm/public/components/shared/agent_icon/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/agent_icon/index.tsx @@ -12,7 +12,7 @@ import { getAgentIcon } from './get_agent_icon'; import { useTheme } from '../../../hooks/use_theme'; interface Props { - agentName: AgentName; + agentName?: AgentName; } export function AgentIcon(props: Props) { diff --git a/x-pack/plugins/apm/public/components/shared/backend_link.stories.tsx b/x-pack/plugins/apm/public/components/shared/backend_link.stories.tsx new file mode 100644 index 0000000000000..31bc2f2302798 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/backend_link.stories.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Story } from '@storybook/react'; +import React, { ComponentProps, ComponentType } from 'react'; +import { MockApmPluginContextWrapper } from '../../context/apm_plugin/mock_apm_plugin_context'; +import { BackendLink } from './backend_link'; + +type Args = ComponentProps; + +export default { + title: 'shared/BackendLink', + component: BackendLink, + decorators: [ + (StoryComponent: ComponentType) => { + return ( + + + + ); + }, + ], +}; + +export const Example: Story = (args) => { + return ; +}; +Example.args = { + backendName: 'postgres', + type: 'db', + subtype: 'postgresql', +}; diff --git a/x-pack/plugins/apm/public/components/shared/backend_link.tsx b/x-pack/plugins/apm/public/components/shared/backend_link.tsx new file mode 100644 index 0000000000000..069631b9f17ac --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/backend_link.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; +import { TypeOf } from '@kbn/typed-react-router-config'; +import React from 'react'; +import { euiStyled } from '../../../../../../src/plugins/kibana_react/common'; +import { useApmRouter } from '../../hooks/use_apm_router'; +import { truncate } from '../../utils/style'; +import { ApmRoutes } from '../routing/apm_route_config'; +import { SpanIcon } from './span_icon'; + +const StyledLink = euiStyled(EuiLink)`${truncate('100%')};`; + +interface BackendLinkProps { + backendName: string; + query?: TypeOf['query']; + subtype?: string; + type?: string; +} + +export function BackendLink({ + backendName, + query, + subtype, + type, +}: BackendLinkProps) { + const { link } = useApmRouter(); + + return ( + + + + + + {backendName} + + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/shared/dependencies_table/index.tsx new file mode 100644 index 0000000000000..5aeb9549fb3a2 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/dependencies_table/index.tsx @@ -0,0 +1,217 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiBasicTableColumn, + EuiFlexGroup, + EuiFlexItem, + EuiInMemoryTable, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { ConnectionStatsItemWithComparisonData } from '../../../../common/connections'; +import { + asMillisecondDuration, + asPercent, + asTransactionRate, +} from '../../../../common/utils/formatters'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; +import { unit } from '../../../utils/style'; +import { SparkPlot } from '../charts/spark_plot'; +import { ImpactBar } from '../ImpactBar'; +import { ServiceMapLink } from '../Links/apm/ServiceMapLink'; +import { TableFetchWrapper } from '../table_fetch_wrapper'; +import { TruncateWithTooltip } from '../truncate_with_tooltip'; +import { OverviewTableContainer } from '../overview_table_container'; + +export type DependenciesItem = Omit< + ConnectionStatsItemWithComparisonData, + 'location' +> & { + name: string; + link: React.ReactElement; +}; + +interface Props { + dependencies: DependenciesItem[]; + serviceName?: string; + title: React.ReactNode; + nameColumnTitle: React.ReactNode; + status: FETCH_STATUS; + compact?: boolean; +} + +export function DependenciesTable(props: Props) { + const { + dependencies, + serviceName, + title, + nameColumnTitle, + status, + compact = true, + } = props; + + const pagination = compact + ? { + initialPageSize: 5, + pageSizeOptions: [5], + hidePerPageOptions: true, + } + : {}; + + const columns: Array> = [ + { + field: 'name', + name: nameColumnTitle, + render: (_, item) => { + const { name, link } = item; + return ; + }, + sortable: true, + }, + { + field: 'latencyValue', + name: i18n.translate('xpack.apm.dependenciesTable.columnLatency', { + defaultMessage: 'Latency (avg.)', + }), + width: `${unit * 10}px`, + render: (_, { currentStats, previousStats }) => { + return ( + + ); + }, + sortable: true, + }, + { + field: 'throughputValue', + name: i18n.translate('xpack.apm.dependenciesTable.columnThroughput', { + defaultMessage: 'Throughput', + }), + width: `${unit * 10}px`, + render: (_, { currentStats, previousStats }) => { + return ( + + ); + }, + sortable: true, + }, + { + field: 'errorRateValue', + name: i18n.translate('xpack.apm.dependenciesTable.columnErrorRate', { + defaultMessage: 'Error rate', + }), + width: `${unit * 10}px`, + render: (_, { currentStats, previousStats }) => { + return ( + + ); + }, + sortable: true, + }, + { + field: 'impactValue', + name: i18n.translate('xpack.apm.dependenciesTable.columnImpact', { + defaultMessage: 'Impact', + }), + width: `${unit * 5}px`, + render: (_, { currentStats, previousStats }) => { + return ( + + + + + {previousStats?.impact !== undefined && ( + + + + )} + + ); + }, + sortable: true, + }, + ]; + + // need top-level sortable fields for the managed table + const items = + dependencies.map((item) => ({ + ...item, + errorRateValue: item.currentStats.errorRate.value, + latencyValue: item.currentStats.latency.value, + throughputValue: item.currentStats.throughput.value, + impactValue: item.currentStats.impact, + })) ?? []; + + return ( + + + + + +

{title}

+
+
+ + + {i18n.translate( + 'xpack.apm.dependenciesTable.serviceMapLinkText', + { + defaultMessage: 'View service map', + } + )} + + +
+
+ + + + + + + +
+ ); +} diff --git a/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx b/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx index 72c5bac1f9f17..8358837cac563 100644 --- a/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx @@ -11,7 +11,7 @@ import React, { useState } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; import { esKuery, - IIndexPattern, + IndexPattern, QuerySuggestion, } from '../../../../../../../src/plugins/data/public'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; @@ -29,7 +29,7 @@ interface State { isLoadingSuggestions: boolean; } -function convertKueryToEsQuery(kuery: string, indexPattern: IIndexPattern) { +function convertKueryToEsQuery(kuery: string, indexPattern: IndexPattern) { const ast = esKuery.fromKueryExpression(kuery); return esKuery.toElasticsearchQuery(ast, indexPattern); } @@ -125,7 +125,10 @@ export function KueryBar(props: { prepend?: React.ReactNode | string }) { } try { - const res = convertKueryToEsQuery(inputValue, indexPattern); + const res = convertKueryToEsQuery( + inputValue, + indexPattern as IndexPattern + ); if (!res) { return; } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_table_container.tsx b/x-pack/plugins/apm/public/components/shared/overview_table_container/index.tsx similarity index 86% rename from x-pack/plugins/apm/public/components/app/service_overview/service_overview_table_container.tsx rename to x-pack/plugins/apm/public/components/shared/overview_table_container/index.tsx index 64b6943e73260..303d281711aed 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_table_container.tsx +++ b/x-pack/plugins/apm/public/components/shared/overview_table_container/index.tsx @@ -10,7 +10,7 @@ import { euiStyled } from '../../../../../../../src/plugins/kibana_react/common' import { useBreakPoints } from '../../../hooks/use_break_points'; /** - * The height for a table on the overview page. Is the height of a 5-row basic + * The height for a table on a overview page. Is the height of a 5-row basic * table. */ const tableHeight = 282; @@ -24,7 +24,7 @@ const tableHeight = 282; * * Hide the empty message when we don't yet have any items and are still loading. */ -const ServiceOverviewTableContainerDiv = euiStyled.div<{ +const OverviewTableContainerDiv = euiStyled.div<{ isEmptyAndLoading: boolean; shouldUseMobileLayout: boolean; }>` @@ -52,7 +52,7 @@ const ServiceOverviewTableContainerDiv = euiStyled.div<{ } `; -export function ServiceOverviewTableContainer({ +export function OverviewTableContainer({ children, isEmptyAndLoading, }: { @@ -62,11 +62,11 @@ export function ServiceOverviewTableContainer({ const { isMedium } = useBreakPoints(); return ( - {children} - + ); } diff --git a/x-pack/plugins/apm/public/components/shared/service_link.stories.tsx b/x-pack/plugins/apm/public/components/shared/service_link.stories.tsx new file mode 100644 index 0000000000000..f25838a3552f4 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/service_link.stories.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Story } from '@storybook/react'; +import React, { ComponentProps, ComponentType } from 'react'; +import { MockApmPluginContextWrapper } from '../../context/apm_plugin/mock_apm_plugin_context'; +import { ServiceLink } from './service_link'; + +type Args = ComponentProps; + +export default { + title: 'shared/ServiceLink', + component: ServiceLink, + decorators: [ + (StoryComponent: ComponentType) => { + return ( + + + + ); + }, + ], +}; + +export const Example: Story = (args) => { + return ; +}; +Example.args = { + agentName: 'java', + serviceName: 'opbeans-java', +}; diff --git a/x-pack/plugins/apm/public/components/shared/service_link.tsx b/x-pack/plugins/apm/public/components/shared/service_link.tsx new file mode 100644 index 0000000000000..d61f55fe53cf0 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/service_link.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; +import React from 'react'; +import { TypeOf } from '@kbn/typed-react-router-config'; +import { euiStyled } from '../../../../../../src/plugins/kibana_react/common'; +import { truncate } from '../../utils/style'; +import { useApmRouter } from '../../hooks/use_apm_router'; +import { AgentIcon } from './agent_icon'; +import { AgentName } from '../../../typings/es_schemas/ui/fields/agent'; +import { ApmRoutes } from '../routing/apm_route_config'; + +const StyledLink = euiStyled(EuiLink)`${truncate('100%')};`; + +interface ServiceLinkProps { + agentName?: AgentName; + query?: TypeOf['query']; + serviceName: string; +} + +export function ServiceLink({ + agentName, + query, + serviceName, +}: ServiceLinkProps) { + const { link } = useApmRouter(); + + return ( + + + + + + {serviceName} + + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/span_icon/get_span_icon.ts b/x-pack/plugins/apm/public/components/shared/span_icon/get_span_icon.ts index 5f4fe5df50246..93021fe177f6b 100644 --- a/x-pack/plugins/apm/public/components/shared/span_icon/get_span_icon.ts +++ b/x-pack/plugins/apm/public/components/shared/span_icon/get_span_icon.ts @@ -35,7 +35,7 @@ const defaultSpanTypeIcons: { [key: string]: string } = { }; export const spanTypeIcons: { - [type: string]: { [subType: string]: string }; + [type: string]: { [subtype: string]: string }; } = { aws: { servicename: awsIcon, diff --git a/x-pack/plugins/apm/public/components/shared/span_icon/index.tsx b/x-pack/plugins/apm/public/components/shared/span_icon/index.tsx index 05e4067f522a1..42be10d1468d4 100644 --- a/x-pack/plugins/apm/public/components/shared/span_icon/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/span_icon/index.tsx @@ -11,11 +11,11 @@ import { getSpanIcon } from './get_span_icon'; interface Props { type?: string; - subType?: string; + subtype?: string; } -export function SpanIcon({ type, subType }: Props) { - const icon = getSpanIcon(type, subType); +export function SpanIcon({ type, subtype }: Props) { + const icon = getSpanIcon(type, subtype); - return ; + return ; } diff --git a/x-pack/plugins/apm/public/components/shared/span_icon/span_icon.stories.tsx b/x-pack/plugins/apm/public/components/shared/span_icon/span_icon.stories.tsx index 5aec7e9028745..d68b042159bb9 100644 --- a/x-pack/plugins/apm/public/components/shared/span_icon/span_icon.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/span_icon/span_icon.stories.tsx @@ -28,9 +28,9 @@ export const List: Story = () => { return ( {spanTypes.map((type) => { - const subTypes = Object.keys(spanTypeIcons[type]); - return subTypes.map((subType) => { - const id = `${type}.${subType}`; + const subtypes = Object.keys(spanTypeIcons[type]); + return subtypes.map((subtype) => { + const id = `${type}.${subtype}`; return ( @@ -45,7 +45,7 @@ export const List: Story = () => { size="s" hasShadow alt={id} - src={getSpanIcon(type, subType)} + src={getSpanIcon(type, subtype)} />

@@ -58,7 +58,7 @@ export const List: Story = () => { position="bottom" content="Icon rendered with `SpanIcon`" > - +
@@ -69,7 +69,7 @@ export const List: Story = () => { }} >
span.type: {type}
-
span.subtype: {subType}
+
span.subtype: {subtype}
} diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index c5271b9637633..8175f46715b8f 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -48,6 +48,8 @@ import { getApmEnrollmentFlyoutData, LazyApmCustomAssetsExtension, } from './components/fleet_integration'; +import { getLazyAPMPolicyCreateExtension } from './components/fleet_integration/lazy_apm_policy_create_extension'; +import { getLazyAPMPolicyEditExtension } from './components/fleet_integration/lazy_apm_policy_edit_extension'; export type ApmPluginSetup = ReturnType; @@ -332,6 +334,18 @@ export class ApmPlugin implements Plugin { view: 'package-detail-assets', Component: LazyApmCustomAssetsExtension, }); + + fleet.registerExtension({ + package: 'apm', + view: 'package-policy-create', + Component: getLazyAPMPolicyCreateExtension(), + }); + + fleet.registerExtension({ + package: 'apm', + view: 'package-policy-edit', + Component: getLazyAPMPolicyEditExtension(), + }); } } } diff --git a/x-pack/plugins/apm/public/tutorial/config_agent/config_agent.stories.tsx b/x-pack/plugins/apm/public/tutorial/config_agent/config_agent.stories.tsx index 0d4d3748422ea..5ac5fa4d1071e 100644 --- a/x-pack/plugins/apm/public/tutorial/config_agent/config_agent.stories.tsx +++ b/x-pack/plugins/apm/public/tutorial/config_agent/config_agent.stories.tsx @@ -8,8 +8,9 @@ import { Story } from '@storybook/react'; import { HttpStart } from 'kibana/public'; import React from 'react'; +import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../common/fleet'; import TutorialConfigAgent from './'; -import { APIReturnType } from '../..//services/rest/createCallApmApi'; +import { APIReturnType } from '../../services/rest/createCallApmApi'; export type APIResponseType = APIReturnType<'GET /api/apm/fleet/agents'>; @@ -22,7 +23,7 @@ interface Args { } const policyElasticAgentOnCloudAgent: APIResponseType['fleetAgents'][0] = { - id: 'policy-elastic-agent-on-cloud', + id: POLICY_ELASTIC_AGENT_ON_CLOUD, name: 'Elastic Cloud agent policy', apmServerUrl: 'apm_cloud_url', secretToken: 'apm_cloud_token', diff --git a/x-pack/plugins/apm/public/tutorial/config_agent/get_policy_options.ts b/x-pack/plugins/apm/public/tutorial/config_agent/get_policy_options.ts index afbdc867d3e0a..0336c5942127d 100644 --- a/x-pack/plugins/apm/public/tutorial/config_agent/get_policy_options.ts +++ b/x-pack/plugins/apm/public/tutorial/config_agent/get_policy_options.ts @@ -5,10 +5,9 @@ * 2.0. */ import { i18n } from '@kbn/i18n'; +import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../common/fleet'; import { APIResponseType } from './'; -const POLICY_ELASTIC_AGENT_ON_CLOUD = 'policy-elastic-agent-on-cloud'; - const DEFAULT_STANDALONE_CONFIG_LABEL = i18n.translate( 'xpack.apm.tutorial.agent_config.defaultStandaloneConfig', { defaultMessage: 'Default Standalone configuration' } diff --git a/x-pack/plugins/apm/server/lib/backends/get_latency_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_latency_charts_for_backend.ts index eed8a9a099536..79f3ee4dbef95 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_latency_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_latency_charts_for_backend.ts @@ -36,9 +36,11 @@ export async function getLatencyChartsForBackend({ }) { const { apmEventClient } = setup; - const offsetInMs = getOffsetInMs(start, offset); - const startWithOffset = start - offsetInMs; - const endWithOffset = end - offsetInMs; + const { offsetInMs, startWithOffset, endWithOffset } = getOffsetInMs({ + start, + end, + offset, + }); const response = await apmEventClient.search('get_latency_for_backend', { apm: { diff --git a/x-pack/plugins/apm/server/lib/backends/get_top_backends.ts b/x-pack/plugins/apm/server/lib/backends/get_top_backends.ts new file mode 100644 index 0000000000000..2f9af0bafd37c --- /dev/null +++ b/x-pack/plugins/apm/server/lib/backends/get_top_backends.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { environmentQuery } from '../../../common/utils/environment_query'; +import { getConnectionStats } from '../connections/get_connection_stats'; +import { getConnectionStatsItemsWithRelativeImpact } from '../connections/get_connection_stats/get_connection_stats_items_with_relative_impact'; +import { NodeType } from '../../../common/connections'; +import { Setup } from '../helpers/setup_request'; + +export async function getTopBackends({ + setup, + start, + end, + numBuckets, + environment, + offset, +}: { + setup: Setup; + start: number; + end: number; + numBuckets: number; + environment?: string; + offset?: string; +}) { + const statsItems = await getConnectionStats({ + setup, + start, + end, + numBuckets, + filter: [...environmentQuery(environment)], + offset, + collapseBy: 'downstream', + }); + + return getConnectionStatsItemsWithRelativeImpact( + statsItems.filter((item) => item.location.type !== NodeType.service) + ); +} diff --git a/x-pack/plugins/apm/server/lib/backends/get_upstream_services_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_upstream_services_for_backend.ts new file mode 100644 index 0000000000000..2105f389ef798 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/backends/get_upstream_services_for_backend.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SPAN_DESTINATION_SERVICE_RESOURCE } from '../../../common/elasticsearch_fieldnames'; +import { environmentQuery } from '../../../common/utils/environment_query'; +import { getConnectionStats } from '../connections/get_connection_stats'; +import { getConnectionStatsItemsWithRelativeImpact } from '../connections/get_connection_stats/get_connection_stats_items_with_relative_impact'; +import { Setup } from '../helpers/setup_request'; + +export async function getUpstreamServicesForBackend({ + setup, + start, + end, + backendName, + numBuckets, + environment, + offset, +}: { + setup: Setup; + start: number; + end: number; + backendName: string; + numBuckets: number; + environment?: string; + offset?: string; +}) { + const statsItems = await getConnectionStats({ + setup, + start, + end, + filter: [ + { term: { [SPAN_DESTINATION_SERVICE_RESOURCE]: backendName } }, + ...environmentQuery(environment), + ], + collapseBy: 'upstream', + numBuckets, + offset, + }); + + return getConnectionStatsItemsWithRelativeImpact(statsItems); +} diff --git a/x-pack/plugins/apm/server/lib/connections/exclude_rum_exit_spans_query.ts b/x-pack/plugins/apm/server/lib/connections/exclude_rum_exit_spans_query.ts new file mode 100644 index 0000000000000..89a510fe508c6 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/connections/exclude_rum_exit_spans_query.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; +import { AGENT_NAME } from '../../../common/elasticsearch_fieldnames'; +import { RUM_AGENT_NAMES } from '../../../common/agent_name'; + +// exclude RUM exit spans, as they're high cardinality and don't usually +// talk to databases directly + +export function excludeRumExitSpansQuery() { + return [ + { + bool: { + must_not: [ + { + terms: { + [AGENT_NAME]: RUM_AGENT_NAMES, + }, + }, + ], + }, + }, + ] as QueryDslQueryContainer[]; +} diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_connection_stats_items_with_relative_impact.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_connection_stats_items_with_relative_impact.ts new file mode 100644 index 0000000000000..c5502e0e30b97 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_connection_stats_items_with_relative_impact.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isFiniteNumber } from '../../../../common/utils/is_finite_number'; +import { + ConnectionStatsItem, + ConnectionStatsItemWithImpact, +} from '../../../../common/connections'; + +export function getConnectionStatsItemsWithRelativeImpact( + items: ConnectionStatsItem[] +) { + const latencySums = items + .map( + ({ stats }) => (stats.latency.value ?? 0) * (stats.throughput.value ?? 0) + ) + .filter(isFiniteNumber); + + const minLatencySum = Math.min(...latencySums); + const maxLatencySum = Math.max(...latencySums); + + const itemsWithImpact: ConnectionStatsItemWithImpact[] = items.map((item) => { + const { stats } = item; + const impact = + isFiniteNumber(stats.latency.value) && + isFiniteNumber(stats.throughput.value) + ? ((stats.latency.value * stats.throughput.value - minLatencySum) / + (maxLatencySum - minLatencySum)) * + 100 + : 0; + + return { + ...item, + stats: { + ...stats, + impact, + }, + }; + }); + + return itemsWithImpact; +} diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_destination_map.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_destination_map.ts new file mode 100644 index 0000000000000..a1f74441629d4 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_destination_map.ts @@ -0,0 +1,227 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; +import objectHash from 'object-hash'; +import { getOffsetInMs } from '../../../../common/utils/get_offset_in_ms'; +import { ENVIRONMENT_NOT_DEFINED } from '../../../../common/environment_filter_values'; +import { asMutableArray } from '../../../../common/utils/as_mutable_array'; +import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; +import { + AGENT_NAME, + EVENT_OUTCOME, + PARENT_ID, + SERVICE_ENVIRONMENT, + SERVICE_NAME, + SPAN_DESTINATION_SERVICE_RESOURCE, + SPAN_ID, + SPAN_SUBTYPE, + SPAN_TYPE, +} from '../../../../common/elasticsearch_fieldnames'; +import { ProcessorEvent } from '../../../../common/processor_event'; +import { rangeQuery } from '../../../../../observability/server'; +import { Setup } from '../../helpers/setup_request'; +import { withApmSpan } from '../../../utils/with_apm_span'; +import { Node, NodeType } from '../../../../common/connections'; +import { excludeRumExitSpansQuery } from '../exclude_rum_exit_spans_query'; + +type Destination = { + backendName: string; + spanId: string; + spanType: string; + spanSubtype: string; +} & ( + | {} + | { + serviceName: string; + agentName: AgentName; + environment: string; + } +); + +// This operation tries to find a service for a backend, by: +// - getting a span for each value of span.destination.service.resource (which indicates an outgoing call) +// - for each span, find the transaction it creates +// - if there is a transaction, match the backend name (span.destination.service.resource) to a service +export const getDestinationMap = ({ + setup, + start, + end, + filter, + offset, +}: { + setup: Setup; + start: number; + end: number; + filter: QueryDslQueryContainer[]; + offset?: string; +}) => { + return withApmSpan('get_destination_map', async () => { + const { apmEventClient } = setup; + + const { startWithOffset, endWithOffset } = getOffsetInMs({ + start, + end, + offset, + }); + + const response = await apmEventClient.search('get_exit_span_samples', { + apm: { + events: [ProcessorEvent.span], + }, + body: { + size: 0, + query: { + bool: { + filter: [ + { exists: { field: SPAN_DESTINATION_SERVICE_RESOURCE } }, + ...rangeQuery(startWithOffset, endWithOffset), + ...filter, + ...excludeRumExitSpansQuery(), + ], + }, + }, + aggs: { + connections: { + composite: { + size: 10000, + sources: asMutableArray([ + { + backendName: { + terms: { field: SPAN_DESTINATION_SERVICE_RESOURCE }, + }, + }, + // make sure we get samples for both successful + // and failed calls + { eventOutcome: { terms: { field: EVENT_OUTCOME } } }, + ] as const), + }, + aggs: { + sample: { + top_metrics: { + size: 1, + metrics: asMutableArray([ + { field: SPAN_TYPE }, + { field: SPAN_SUBTYPE }, + { field: SPAN_ID }, + ] as const), + sort: [ + { + '@timestamp': 'desc' as const, + }, + ], + }, + }, + }, + }, + }, + }, + }); + + const destinationsBySpanId = new Map(); + + response.aggregations?.connections.buckets.forEach((bucket) => { + const sample = bucket.sample.top[0].metrics; + + const spanId = sample[SPAN_ID] as string; + + destinationsBySpanId.set(spanId, { + backendName: bucket.key.backendName as string, + spanId, + spanType: (sample[SPAN_TYPE] as string | null) || '', + spanSubtype: (sample[SPAN_SUBTYPE] as string | null) || '', + }); + }); + + const transactionResponse = await apmEventClient.search( + 'get_transactions_for_exit_spans', + { + apm: { + events: [ProcessorEvent.transaction], + }, + body: { + query: { + bool: { + filter: [ + { + terms: { + [PARENT_ID]: Array.from(destinationsBySpanId.keys()), + }, + }, + // add a 5m buffer at the end of the time range for long running spans + ...rangeQuery( + startWithOffset, + endWithOffset + 1000 * 1000 * 60 * 5 + ), + ], + }, + }, + size: destinationsBySpanId.size, + fields: asMutableArray([ + SERVICE_NAME, + SERVICE_ENVIRONMENT, + AGENT_NAME, + PARENT_ID, + ] as const), + _source: false, + }, + } + ); + + transactionResponse.hits.hits.forEach((hit) => { + const spanId = String(hit.fields[PARENT_ID]![0]); + const destination = destinationsBySpanId.get(spanId); + + if (destination) { + destinationsBySpanId.set(spanId, { + ...destination, + serviceName: String(hit.fields[SERVICE_NAME]![0]), + environment: String( + hit.fields[SERVICE_ENVIRONMENT]?.[0] ?? + ENVIRONMENT_NOT_DEFINED.value + ), + agentName: hit.fields[AGENT_NAME]![0] as AgentName, + }); + } + }); + + const nodesByBackendName = new Map(); + + destinationsBySpanId.forEach((destination) => { + const existingDestination = + nodesByBackendName.get(destination.backendName) ?? {}; + + const mergedDestination = { + ...existingDestination, + ...destination, + }; + + let node: Node; + if ('serviceName' in mergedDestination) { + node = { + serviceName: mergedDestination.serviceName, + agentName: mergedDestination.agentName, + environment: mergedDestination.environment, + id: objectHash({ serviceName: mergedDestination.serviceName }), + type: NodeType.service, + }; + } else { + node = { + backendName: mergedDestination.backendName, + spanType: mergedDestination.spanType, + spanSubtype: mergedDestination.spanSubtype, + id: objectHash({ backendName: mergedDestination.backendName }), + type: NodeType.backend, + }; + } + + nodesByBackendName.set(destination.backendName, node); + }); + + return nodesByBackendName; + }); +}; diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts new file mode 100644 index 0000000000000..94a23f6218e5d --- /dev/null +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts @@ -0,0 +1,220 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { sum } from 'lodash'; +import objectHash from 'object-hash'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; +import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; +import { getOffsetInMs } from '../../../../common/utils/get_offset_in_ms'; +import { ENVIRONMENT_NOT_DEFINED } from '../../../../common/environment_filter_values'; +import { asMutableArray } from '../../../../common/utils/as_mutable_array'; +import { + AGENT_NAME, + EVENT_OUTCOME, + SERVICE_ENVIRONMENT, + SERVICE_NAME, + SPAN_DESTINATION_SERVICE_RESOURCE, + SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, + SPAN_DESTINATION_SERVICE_RESPONSE_TIME_SUM, + SPAN_SUBTYPE, + SPAN_TYPE, +} from '../../../../common/elasticsearch_fieldnames'; +import { ProcessorEvent } from '../../../../common/processor_event'; +import { rangeQuery } from '../../../../../observability/server'; +import { getBucketSize } from '../../helpers/get_bucket_size'; +import { EventOutcome } from '../../../../common/event_outcome'; +import { Setup } from '../../helpers/setup_request'; +import { NodeType } from '../../../../common/connections'; +import { excludeRumExitSpansQuery } from '../exclude_rum_exit_spans_query'; + +export const getStats = async ({ + setup, + start, + end, + filter, + numBuckets, + offset, +}: { + setup: Setup; + start: number; + end: number; + filter: QueryDslQueryContainer[]; + numBuckets: number; + offset?: string; +}) => { + const { apmEventClient } = setup; + + const { offsetInMs, startWithOffset, endWithOffset } = getOffsetInMs({ + start, + end, + offset, + }); + + const response = await apmEventClient.search('get_connection_stats', { + apm: { + events: [ProcessorEvent.metric], + }, + body: { + track_total_hits: true, + size: 0, + query: { + bool: { + filter: [ + ...filter, + { + exists: { + field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, + }, + }, + ...rangeQuery(startWithOffset, endWithOffset), + ...excludeRumExitSpansQuery(), + ], + }, + }, + aggs: { + connections: { + composite: { + size: 10000, + sources: asMutableArray([ + { + serviceName: { + terms: { + field: SERVICE_NAME, + }, + }, + }, + { + backendName: { + terms: { + field: SPAN_DESTINATION_SERVICE_RESOURCE, + }, + }, + }, + ] as const), + }, + aggs: { + sample: { + top_metrics: { + size: 1, + metrics: asMutableArray([ + { + field: SERVICE_ENVIRONMENT, + }, + { + field: AGENT_NAME, + }, + { + field: SPAN_TYPE, + }, + { + field: SPAN_SUBTYPE, + }, + ] as const), + sort: { + '@timestamp': 'desc', + }, + }, + }, + timeseries: { + date_histogram: { + field: '@timestamp', + fixed_interval: getBucketSize({ + start: startWithOffset, + end: endWithOffset, + numBuckets, + }).intervalString, + extended_bounds: { + min: startWithOffset, + max: endWithOffset, + }, + }, + aggs: { + latency_sum: { + sum: { + field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_SUM, + }, + }, + count: { + sum: { + field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, + }, + }, + [EVENT_OUTCOME]: { + terms: { + field: EVENT_OUTCOME, + }, + aggs: { + count: { + sum: { + field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }); + + return ( + response.aggregations?.connections.buckets.map((bucket) => { + const sample = bucket.sample.top[0].metrics; + const serviceName = bucket.key.serviceName as string; + const backendName = bucket.key.backendName as string; + + return { + from: { + id: objectHash({ serviceName }), + serviceName, + environment: (sample[SERVICE_ENVIRONMENT] || + ENVIRONMENT_NOT_DEFINED.value) as string, + agentName: sample[AGENT_NAME] as AgentName, + type: NodeType.service as const, + }, + to: { + id: objectHash({ backendName }), + backendName, + spanType: sample[SPAN_TYPE] as string, + spanSubtype: (sample[SPAN_SUBTYPE] || '') as string, + type: NodeType.backend as const, + }, + value: { + count: sum( + bucket.timeseries.buckets.map( + (dateBucket) => dateBucket.count.value ?? 0 + ) + ), + latency_sum: sum( + bucket.timeseries.buckets.map( + (dateBucket) => dateBucket.latency_sum.value ?? 0 + ) + ), + error_count: sum( + bucket.timeseries.buckets.flatMap( + (dateBucket) => + dateBucket[EVENT_OUTCOME].buckets.find( + (outcomeBucket) => outcomeBucket.key === EventOutcome.failure + )?.count.value ?? 0 + ) + ), + }, + timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ + x: dateBucket.key + offsetInMs, + count: dateBucket.count.value ?? 0, + latency_sum: dateBucket.latency_sum.value ?? 0, + error_count: + dateBucket[EVENT_OUTCOME].buckets.find( + (outcomeBucket) => outcomeBucket.key === EventOutcome.failure + )?.count.value ?? 0, + })), + }; + }) ?? [] + ); +}; diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts new file mode 100644 index 0000000000000..37fcd9877327b --- /dev/null +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ValuesType } from 'utility-types'; +import { merge } from 'lodash'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/api/types'; +import { joinByKey } from '../../../../common/utils/join_by_key'; +import { Setup } from '../../helpers/setup_request'; +import { getStats } from './get_stats'; +import { getDestinationMap } from './get_destination_map'; +import { calculateThroughput } from '../../helpers/calculate_throughput'; +import { withApmSpan } from '../../../utils/with_apm_span'; + +export function getConnectionStats({ + setup, + start, + end, + numBuckets, + filter, + collapseBy, + offset, +}: { + setup: Setup; + start: number; + end: number; + numBuckets: number; + filter: QueryDslQueryContainer[]; + collapseBy: 'upstream' | 'downstream'; + offset?: string; +}) { + return withApmSpan('get_connection_stats_and_map', async () => { + const [allMetrics, destinationMap] = await Promise.all([ + getStats({ + setup, + start, + end, + filter, + numBuckets, + offset, + }), + getDestinationMap({ + setup, + start, + end, + filter, + offset, + }), + ]); + + const statsWithLocationIds = allMetrics.map((statsItem) => { + const { from, timeseries, value } = statsItem; + const to = destinationMap.get(statsItem.to.backendName) ?? statsItem.to; + + const location = collapseBy === 'upstream' ? from : to; + + return { + location, + stats: [{ timeseries, value }], + id: location.id, + }; + }, []); + + const statsJoinedById = joinByKey(statsWithLocationIds, 'id', (a, b) => { + const { stats: statsA, ...itemA } = a; + const { stats: statsB, ...itemB } = b; + + return merge({}, itemA, itemB, { stats: statsA.concat(statsB) }); + }); + + const statsItems = statsJoinedById.map((item) => { + const mergedStats = item.stats.reduce>( + (prev, current) => { + return { + value: { + count: prev.value.count + current.value.count, + latency_sum: prev.value.latency_sum + current.value.latency_sum, + error_count: prev.value.error_count + current.value.error_count, + }, + timeseries: joinByKey( + [...prev.timeseries, ...current.timeseries], + 'x', + (a, b) => ({ + x: a.x, + count: a.count + b.count, + latency_sum: a.latency_sum + b.latency_sum, + error_count: a.error_count + b.error_count, + }) + ), + }; + }, + { + value: { + count: 0, + latency_sum: 0, + error_count: 0, + }, + timeseries: [], + } + ); + + const destStats = { + latency: { + value: + mergedStats.value.count > 0 + ? mergedStats.value.latency_sum / mergedStats.value.count + : null, + timeseries: mergedStats.timeseries.map((point) => ({ + x: point.x, + y: point.count > 0 ? point.latency_sum / point.count : null, + })), + }, + throughput: { + value: + mergedStats.value.count > 0 + ? calculateThroughput({ + start, + end, + value: mergedStats.value.count, + }) + : null, + timeseries: mergedStats.timeseries.map((point) => ({ + x: point.x, + y: + point.count > 0 + ? calculateThroughput({ start, end, value: point.count }) + : null, + })), + }, + errorRate: { + value: + mergedStats.value.count > 0 + ? (mergedStats.value.error_count ?? 0) / mergedStats.value.count + : null, + timeseries: mergedStats.timeseries.map((point) => ({ + x: point.x, + y: point.count > 0 ? (point.error_count ?? 0) / point.count : null, + })), + }, + }; + + return { + ...item, + stats: destStats, + }; + }); + + return statsItems; + }); +} diff --git a/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts b/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts index 584f51bbf77a5..0b086d1998be9 100644 --- a/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts +++ b/x-pack/plugins/apm/server/lib/fleet/get_apm_package_policy_definition.ts @@ -5,11 +5,9 @@ * 2.0. */ +import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../common/fleet'; import { APMPluginSetupDependencies } from '../../types'; -import { - POLICY_ELASTIC_AGENT_ON_CLOUD, - APM_PACKAGE_NAME, -} from './get_cloud_apm_package_policy'; +import { APM_PACKAGE_NAME } from './get_cloud_apm_package_policy'; interface GetApmPackagePolicyDefinitionOptions { apmServerSchema: Record; diff --git a/x-pack/plugins/apm/server/lib/fleet/get_cloud_apm_package_policy.ts b/x-pack/plugins/apm/server/lib/fleet/get_cloud_apm_package_policy.ts index b0044701e4020..d48e2315eace3 100644 --- a/x-pack/plugins/apm/server/lib/fleet/get_cloud_apm_package_policy.ts +++ b/x-pack/plugins/apm/server/lib/fleet/get_cloud_apm_package_policy.ts @@ -9,8 +9,8 @@ import { SavedObjectsClientContract } from 'kibana/server'; import { Maybe } from '../../../typings/common'; import { AgentPolicy, PackagePolicy } from '../../../../fleet/common'; import { APMPluginStartDependencies } from '../../types'; +import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../common/fleet'; -export const POLICY_ELASTIC_AGENT_ON_CLOUD = 'policy-elastic-agent-on-cloud'; export const APM_PACKAGE_NAME = 'apm'; export async function getCloudAgentPolicy({ diff --git a/x-pack/plugins/apm/server/lib/services/get_service_dependencies.ts b/x-pack/plugins/apm/server/lib/services/get_service_dependencies.ts new file mode 100644 index 0000000000000..1b3ffcab3f159 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/services/get_service_dependencies.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SERVICE_NAME } from '../../../common/elasticsearch_fieldnames'; +import { environmentQuery } from '../../../common/utils/environment_query'; +import { getConnectionStats } from '../connections/get_connection_stats'; +import { getConnectionStatsItemsWithRelativeImpact } from '../connections/get_connection_stats/get_connection_stats_items_with_relative_impact'; +import { Setup } from '../helpers/setup_request'; + +export async function getServiceDependencies({ + setup, + start, + end, + serviceName, + numBuckets, + environment, + offset, +}: { + setup: Setup; + start: number; + end: number; + serviceName: string; + numBuckets: number; + environment?: string; + offset?: string; +}) { + const statsItems = await getConnectionStats({ + setup, + start, + end, + numBuckets, + filter: [ + { term: { [SERVICE_NAME]: serviceName } }, + ...environmentQuery(environment), + ], + offset, + collapseBy: 'downstream', + }); + + return getConnectionStatsItemsWithRelativeImpact(statsItems); +} diff --git a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_destination_map.ts b/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_destination_map.ts deleted file mode 100644 index 8382ff820805e..0000000000000 --- a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_destination_map.ts +++ /dev/null @@ -1,213 +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 { isEqual, keyBy, mapValues } from 'lodash'; -import { asMutableArray } from '../../../../common/utils/as_mutable_array'; -import { pickKeys } from '../../../../common/utils/pick_keys'; -import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; -import { - AGENT_NAME, - EVENT_OUTCOME, - PARENT_ID, - SERVICE_ENVIRONMENT, - SERVICE_NAME, - SPAN_DESTINATION_SERVICE_RESOURCE, - SPAN_ID, - SPAN_SUBTYPE, - SPAN_TYPE, -} from '../../../../common/elasticsearch_fieldnames'; -import { ProcessorEvent } from '../../../../common/processor_event'; -import { rangeQuery } from '../../../../../observability/server'; -import { environmentQuery } from '../../../../common/utils/environment_query'; -import { joinByKey } from '../../../../common/utils/join_by_key'; -import { Setup, SetupTimeRange } from '../../helpers/setup_request'; -import { withApmSpan } from '../../../utils/with_apm_span'; - -export const getDestinationMap = ({ - setup, - serviceName, - environment, -}: { - setup: Setup & SetupTimeRange; - serviceName: string; - environment?: string; -}) => { - return withApmSpan('get_service_destination_map', async () => { - const { start, end, apmEventClient } = setup; - - const response = await apmEventClient.search('get_exit_span_samples', { - apm: { - events: [ProcessorEvent.span], - }, - body: { - size: 0, - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - { exists: { field: SPAN_DESTINATION_SERVICE_RESOURCE } }, - ...rangeQuery(start, end), - ...environmentQuery(environment), - ], - }, - }, - aggs: { - connections: { - composite: { - size: 1000, - sources: asMutableArray([ - { - [SPAN_DESTINATION_SERVICE_RESOURCE]: { - terms: { field: SPAN_DESTINATION_SERVICE_RESOURCE }, - }, - }, - // make sure we get samples for both successful - // and failed calls - { [EVENT_OUTCOME]: { terms: { field: EVENT_OUTCOME } } }, - ] as const), - }, - aggs: { - sample: { - top_hits: { - size: 1, - _source: [SPAN_TYPE, SPAN_SUBTYPE, SPAN_ID], - sort: [ - { - '@timestamp': 'desc' as const, - }, - ], - }, - }, - }, - }, - }, - }, - }); - - const outgoingConnections = - response.aggregations?.connections.buckets.map((bucket) => { - const sample = bucket.sample.hits.hits[0]._source; - - return { - [SPAN_DESTINATION_SERVICE_RESOURCE]: String( - bucket.key[SPAN_DESTINATION_SERVICE_RESOURCE] - ), - [SPAN_ID]: sample.span.id, - [SPAN_TYPE]: sample.span.type, - [SPAN_SUBTYPE]: sample.span.subtype, - }; - }) ?? []; - - const transactionResponse = await apmEventClient.search( - 'get_transactions_for_exit_spans', - { - apm: { - events: [ProcessorEvent.transaction], - }, - body: { - query: { - bool: { - filter: [ - { - terms: { - [PARENT_ID]: outgoingConnections.map( - (connection) => connection[SPAN_ID] - ), - }, - }, - ...rangeQuery(start, end), - ], - }, - }, - size: outgoingConnections.length, - docvalue_fields: asMutableArray([ - SERVICE_NAME, - SERVICE_ENVIRONMENT, - AGENT_NAME, - PARENT_ID, - ] as const), - _source: false, - }, - } - ); - - const incomingConnections = transactionResponse.hits.hits.map((hit) => ({ - [SPAN_ID]: String(hit.fields[PARENT_ID]![0]), - service: { - name: String(hit.fields[SERVICE_NAME]![0]), - environment: String(hit.fields[SERVICE_ENVIRONMENT]?.[0] ?? ''), - agentName: hit.fields[AGENT_NAME]![0] as AgentName, - }, - })); - - // merge outgoing spans with transactions by span.id/parent.id - const joinedBySpanId = joinByKey( - [...outgoingConnections, ...incomingConnections], - SPAN_ID - ); - - // we could have multiple connections per address because - // of multiple event outcomes - const dedupedConnectionsByAddress = joinByKey( - joinedBySpanId, - SPAN_DESTINATION_SERVICE_RESOURCE - ); - - // identify a connection by either service.name, service.environment, agent.name - // OR span.destination.service.resource - - const connectionsWithId = dedupedConnectionsByAddress.map((connection) => { - const id = - 'service' in connection - ? { service: connection.service } - : pickKeys(connection, SPAN_DESTINATION_SERVICE_RESOURCE); - - return { - ...connection, - id, - }; - }); - - const dedupedConnectionsById = joinByKey(connectionsWithId, 'id'); - - const connectionsByAddress = keyBy( - connectionsWithId, - SPAN_DESTINATION_SERVICE_RESOURCE - ); - - // per span.destination.service.resource, return merged/deduped item - return mapValues(connectionsByAddress, ({ id }) => { - const connection = dedupedConnectionsById.find((dedupedConnection) => - isEqual(id, dedupedConnection.id) - )!; - - return { - id, - span: { - type: connection[SPAN_TYPE], - subtype: connection[SPAN_SUBTYPE], - destination: { - service: { - resource: connection[SPAN_DESTINATION_SERVICE_RESOURCE], - }, - }, - }, - ...('service' in connection && connection.service - ? { - service: { - name: connection.service.name, - environment: connection.service.environment, - }, - agent: { - name: connection.service.agentName, - }, - } - : {}), - }; - }); - }); -}; diff --git a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_metrics.ts b/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_metrics.ts deleted file mode 100644 index 52d3b41960a50..0000000000000 --- a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/get_metrics.ts +++ /dev/null @@ -1,148 +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 { sum } from 'lodash'; -import { - EVENT_OUTCOME, - SERVICE_NAME, - SPAN_DESTINATION_SERVICE_RESOURCE, - SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, - SPAN_DESTINATION_SERVICE_RESPONSE_TIME_SUM, -} from '../../../../common/elasticsearch_fieldnames'; -import { ProcessorEvent } from '../../../../common/processor_event'; -import { environmentQuery } from '../../../../common/utils/environment_query'; -import { rangeQuery } from '../../../../../observability/server'; -import { getBucketSize } from '../../helpers/get_bucket_size'; -import { EventOutcome } from '../../../../common/event_outcome'; -import { Setup, SetupTimeRange } from '../../helpers/setup_request'; - -export const getMetrics = async ({ - setup, - serviceName, - environment, - numBuckets, -}: { - setup: Setup & SetupTimeRange; - serviceName: string; - environment?: string; - numBuckets: number; -}) => { - const { start, end, apmEventClient } = setup; - - const response = await apmEventClient.search( - 'get_service_destination_metrics', - { - apm: { - events: [ProcessorEvent.metric], - }, - body: { - track_total_hits: true, - size: 0, - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - { - exists: { - field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, - }, - }, - ...rangeQuery(start, end), - ...environmentQuery(environment), - ], - }, - }, - aggs: { - connections: { - terms: { - field: SPAN_DESTINATION_SERVICE_RESOURCE, - size: 100, - }, - aggs: { - timeseries: { - date_histogram: { - field: '@timestamp', - fixed_interval: getBucketSize({ start, end, numBuckets }) - .intervalString, - extended_bounds: { - min: start, - max: end, - }, - }, - aggs: { - latency_sum: { - sum: { - field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_SUM, - }, - }, - count: { - sum: { - field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, - }, - }, - [EVENT_OUTCOME]: { - terms: { - field: EVENT_OUTCOME, - }, - aggs: { - count: { - sum: { - field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - } - ); - - return ( - response.aggregations?.connections.buckets.map((bucket) => ({ - span: { - destination: { - service: { - resource: String(bucket.key), - }, - }, - }, - value: { - count: sum( - bucket.timeseries.buckets.map( - (dateBucket) => dateBucket.count.value ?? 0 - ) - ), - latency_sum: sum( - bucket.timeseries.buckets.map( - (dateBucket) => dateBucket.latency_sum.value ?? 0 - ) - ), - error_count: sum( - bucket.timeseries.buckets.flatMap( - (dateBucket) => - dateBucket[EVENT_OUTCOME].buckets.find( - (outcomeBucket) => outcomeBucket.key === EventOutcome.failure - )?.count.value ?? 0 - ) - ), - }, - timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ - x: dateBucket.key, - count: dateBucket.count.value ?? 0, - latency_sum: dateBucket.latency_sum.value ?? 0, - error_count: - dateBucket[EVENT_OUTCOME].buckets.find( - (outcomeBucket) => outcomeBucket.key === EventOutcome.failure - )?.count.value ?? 0, - })), - })) ?? [] - ); -}; diff --git a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/index.ts b/x-pack/plugins/apm/server/lib/services/get_service_dependencies/index.ts deleted file mode 100644 index 724b5278d7edf..0000000000000 --- a/x-pack/plugins/apm/server/lib/services/get_service_dependencies/index.ts +++ /dev/null @@ -1,230 +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 { ValuesType } from 'utility-types'; -import { merge } from 'lodash'; -import { SPAN_DESTINATION_SERVICE_RESOURCE } from '../../../../common/elasticsearch_fieldnames'; -import { maybe } from '../../../../common/utils/maybe'; -import { isFiniteNumber } from '../../../../common/utils/is_finite_number'; -import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; -import { joinByKey } from '../../../../common/utils/join_by_key'; -import { Setup, SetupTimeRange } from '../../helpers/setup_request'; -import { getMetrics } from './get_metrics'; -import { getDestinationMap } from './get_destination_map'; -import { calculateThroughput } from '../../helpers/calculate_throughput'; -import { withApmSpan } from '../../../utils/with_apm_span'; - -export type ServiceDependencyItem = { - name: string; - latency: { - value: number | null; - timeseries: Array<{ x: number; y: number | null }>; - }; - throughput: { - value: number | null; - timeseries: Array<{ x: number; y: number | null }>; - }; - errorRate: { - value: number | null; - timeseries: Array<{ x: number; y: number | null }>; - }; - impact: number; -} & ( - | { - type: 'service'; - serviceName: string; - agentName: AgentName; - environment?: string; - } - | { type: 'external'; spanType?: string; spanSubtype?: string } -); - -export function getServiceDependencies({ - setup, - serviceName, - environment, - numBuckets, -}: { - serviceName: string; - setup: Setup & SetupTimeRange; - environment?: string; - numBuckets: number; -}): Promise { - return withApmSpan('get_service_dependencies', async () => { - const { start, end } = setup; - const [allMetrics, destinationMap] = await Promise.all([ - getMetrics({ - setup, - serviceName, - environment, - numBuckets, - }), - getDestinationMap({ - setup, - serviceName, - environment, - }), - ]); - - const metricsWithDestinationIds = allMetrics.map((metricItem) => { - const spanDestination = metricItem.span.destination.service.resource; - - const destination = maybe(destinationMap[spanDestination]); - const id = destination?.id || { - [SPAN_DESTINATION_SERVICE_RESOURCE]: spanDestination, - }; - - return merge( - { - id, - metrics: [metricItem], - span: { - destination: { - service: { - resource: spanDestination, - }, - }, - }, - }, - destination - ); - }, []); - - const metricsJoinedByDestinationId = joinByKey( - metricsWithDestinationIds, - 'id', - (a, b) => { - const { metrics: metricsA, ...itemA } = a; - const { metrics: metricsB, ...itemB } = b; - - return merge({}, itemA, itemB, { metrics: metricsA.concat(metricsB) }); - } - ); - - const metricsByResolvedAddress = metricsJoinedByDestinationId.map( - (item) => { - const mergedMetrics = item.metrics.reduce< - Omit, 'span'> - >( - (prev, current) => { - return { - value: { - count: prev.value.count + current.value.count, - latency_sum: prev.value.latency_sum + current.value.latency_sum, - error_count: prev.value.error_count + current.value.error_count, - }, - timeseries: joinByKey( - [...prev.timeseries, ...current.timeseries], - 'x', - (a, b) => ({ - x: a.x, - count: a.count + b.count, - latency_sum: a.latency_sum + b.latency_sum, - error_count: a.error_count + b.error_count, - }) - ), - }; - }, - { - value: { - count: 0, - latency_sum: 0, - error_count: 0, - }, - timeseries: [], - } - ); - - const destMetrics = { - latency: { - value: - mergedMetrics.value.count > 0 - ? mergedMetrics.value.latency_sum / mergedMetrics.value.count - : null, - timeseries: mergedMetrics.timeseries.map((point) => ({ - x: point.x, - y: point.count > 0 ? point.latency_sum / point.count : null, - })), - }, - throughput: { - value: - mergedMetrics.value.count > 0 - ? calculateThroughput({ - start, - end, - value: mergedMetrics.value.count, - }) - : null, - timeseries: mergedMetrics.timeseries.map((point) => ({ - x: point.x, - y: - point.count > 0 - ? calculateThroughput({ start, end, value: point.count }) - : null, - })), - }, - errorRate: { - value: - mergedMetrics.value.count > 0 - ? (mergedMetrics.value.error_count ?? 0) / - mergedMetrics.value.count - : null, - timeseries: mergedMetrics.timeseries.map((point) => ({ - x: point.x, - y: - point.count > 0 ? (point.error_count ?? 0) / point.count : null, - })), - }, - }; - - if (item.service) { - return { - name: item.service.name, - type: 'service' as const, - serviceName: item.service.name, - environment: item.service.environment, - // agent.name should always be there, type returned from joinByKey is too pessimistic - agentName: item.agent!.name, - ...destMetrics, - }; - } - - return { - name: item.span.destination.service.resource, - type: 'external' as const, - spanType: item.span.type, - spanSubtype: item.span.subtype, - ...destMetrics, - }; - } - ); - - const latencySums = metricsByResolvedAddress - .map( - (metric) => (metric.latency.value ?? 0) * (metric.throughput.value ?? 0) - ) - .filter(isFiniteNumber); - - const minLatencySum = Math.min(...latencySums); - const maxLatencySum = Math.max(...latencySums); - - return metricsByResolvedAddress.map((metric) => { - const impact = - isFiniteNumber(metric.latency.value) && - isFiniteNumber(metric.throughput.value) - ? ((metric.latency.value * metric.throughput.value - minLatencySum) / - (maxLatencySum - minLatencySum)) * - 100 - : 0; - - return { - ...metric, - impact, - }; - }); - }); -} diff --git a/x-pack/plugins/apm/server/routes/backends.ts b/x-pack/plugins/apm/server/routes/backends.ts index 3d0694425d3da..93d8bab3f80ff 100644 --- a/x-pack/plugins/apm/server/routes/backends.ts +++ b/x-pack/plugins/apm/server/routes/backends.ts @@ -6,12 +6,107 @@ */ import * as t from 'io-ts'; +import { toNumberRt } from '@kbn/io-ts-utils'; import { setupRequest } from '../lib/helpers/setup_request'; import { environmentRt, kueryRt, offsetRt, rangeRt } from './default_api_types'; import { createApmServerRoute } from './create_apm_server_route'; import { createApmServerRouteRepository } from './create_apm_server_route_repository'; import { getMetadataForBackend } from '../lib/backends/get_metadata_for_backend'; import { getLatencyChartsForBackend } from '../lib/backends/get_latency_charts_for_backend'; +import { getTopBackends } from '../lib/backends/get_top_backends'; +import { getUpstreamServicesForBackend } from '../lib/backends/get_upstream_services_for_backend'; + +const topBackendsRoute = createApmServerRoute({ + endpoint: 'GET /api/apm/backends/top_backends', + params: t.intersection([ + t.type({ + query: t.intersection([rangeRt, t.type({ numBuckets: toNumberRt })]), + }), + t.partial({ + query: t.intersection([environmentRt, offsetRt]), + }), + ]), + options: { + tags: ['access:apm'], + }, + handler: async (resources) => { + const setup = await setupRequest(resources); + + const { start, end } = setup; + const { environment, offset, numBuckets } = resources.params.query; + + const opts = { setup, start, end, numBuckets, environment }; + + const [currentBackends, previousBackends] = await Promise.all([ + getTopBackends(opts), + offset ? getTopBackends({ ...opts, offset }) : Promise.resolve([]), + ]); + + return { + backends: currentBackends.map((backend) => { + const { stats, ...rest } = backend; + const prev = previousBackends.find( + (item) => item.location.id === backend.location.id + ); + return { + ...rest, + currentStats: stats, + previousStats: prev?.stats ?? null, + }; + }), + }; + }, +}); + +const upstreamServicesForBackendRoute = createApmServerRoute({ + endpoint: 'GET /api/apm/backends/{backendName}/upstream_services', + params: t.intersection([ + t.type({ + path: t.type({ + backendName: t.string, + }), + query: t.intersection([rangeRt, t.type({ numBuckets: toNumberRt })]), + }), + t.partial({ + query: t.intersection([environmentRt, offsetRt]), + }), + ]), + options: { + tags: ['access:apm'], + }, + handler: async (resources) => { + const setup = await setupRequest(resources); + + const { start, end } = setup; + const { + path: { backendName }, + query: { environment, offset, numBuckets }, + } = resources.params; + + const opts = { backendName, setup, start, end, numBuckets, environment }; + + const [currentServices, previousServices] = await Promise.all([ + getUpstreamServicesForBackend(opts), + offset + ? getUpstreamServicesForBackend({ ...opts, offset }) + : Promise.resolve([]), + ]); + + return { + services: currentServices.map((service) => { + const { stats, ...rest } = service; + const prev = previousServices.find( + (item) => item.location.id === service.location.id + ); + return { + ...rest, + currentStats: stats, + previousStats: prev?.stats ?? null, + }; + }), + }; + }, +}); const backendMetadataRoute = createApmServerRoute({ endpoint: 'GET /api/apm/backends/{backendName}/metadata', @@ -88,5 +183,7 @@ const backendLatencyChartsRoute = createApmServerRoute({ }); export const backendsRouteRepository = createApmServerRouteRepository() + .add(topBackendsRoute) + .add(upstreamServicesForBackendRoute) .add(backendMetadataRoute) .add(backendLatencyChartsRoute); diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 400fdd8bb67c0..460aa13feea2b 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -37,6 +37,7 @@ import { comparisonRangeRt, environmentRt, kueryRt, + offsetRt, rangeRt, } from './default_api_types'; import { offsetPreviousPeriodCoordinates } from '../../common/utils/offset_previous_period_coordinate'; @@ -611,6 +612,7 @@ export const serviceDependenciesRoute = createApmServerRoute({ }), environmentRt, rangeRt, + offsetRt, ]), }), options: { @@ -620,16 +622,36 @@ export const serviceDependenciesRoute = createApmServerRoute({ const setup = await setupRequest(resources); const { params } = resources; const { serviceName } = params.path; - const { environment, numBuckets } = params.query; + const { environment, numBuckets, start, end, offset } = params.query; - const serviceDependencies = await getServiceDependencies({ + const opts = { + setup, + start, + end, serviceName, environment, - setup, numBuckets, - }); + }; + + const [currentPeriod, previousPeriod] = await Promise.all([ + getServiceDependencies(opts), + ...(offset ? [getServiceDependencies({ ...opts, offset })] : [[]]), + ]); - return { serviceDependencies }; + return { + serviceDependencies: currentPeriod.map((item) => { + const { stats, ...rest } = item; + const previousPeriodItem = previousPeriod.find( + (prevItem) => item.location.id === prevItem.location.id + ); + + return { + ...rest, + currentStats: stats, + previousStats: previousPeriodItem?.stats || null, + }; + }), + }; }, }); diff --git a/x-pack/plugins/discover_enhanced/kibana.json b/x-pack/plugins/discover_enhanced/kibana.json index da95a0f21a020..8d8ac11f83520 100644 --- a/x-pack/plugins/discover_enhanced/kibana.json +++ b/x-pack/plugins/discover_enhanced/kibana.json @@ -7,5 +7,9 @@ "requiredPlugins": ["uiActions", "embeddable", "discover"], "optionalPlugins": ["share", "kibanaLegacy", "usageCollection"], "configPath": ["xpack", "discoverEnhanced"], - "requiredBundles": ["kibanaUtils", "data"] + "requiredBundles": ["kibanaUtils", "data"], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/x-pack/plugins/encrypted_saved_objects/server/create_migration.test.ts b/x-pack/plugins/encrypted_saved_objects/server/create_migration.test.ts index 32aac4a37e4c2..be05825192d35 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/create_migration.test.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/create_migration.test.ts @@ -16,8 +16,23 @@ afterEach(() => { jest.clearAllMocks(); }); +interface ConversionTestOptions { + /** Migration version(s) to test */ + migrationVersions: string[]; + /** The `namespace` field of the object that is being migrated */ + objectNamespace: string | undefined; + /** The `namespaces` field of the object that is being migrated */ + objectNamespaces: string[] | undefined; + /** The expected namespace in the decrypt descriptor */ + expectedDecryptDescriptorNamespace: string | undefined; + /** The expected namespace in the encrypt descriptor */ + expectedEncryptDescriptorNamespace: string | undefined; + /** The expected value for the `isTypeBeingConverted` field in the decrypt params */ + expectedIsTypeBeingConverted: boolean; +} + describe('createMigration()', () => { - const migrationContext = migrationMocks.createContext(); + const migrationContext = migrationMocks.createContext({ isSingleNamespaceType: true }); const inputType = { type: 'known-type-1', attributesToEncrypt: new Set(['firstAttr']) }; const migrationType = { type: 'known-type-1', @@ -100,7 +115,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(encryptionSavedObjectService.encryptAttributesSync).toHaveBeenCalledWith( @@ -157,7 +172,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).not.toHaveBeenCalled(); @@ -209,7 +224,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(encryptionSavedObjectService.stripOrDecryptAttributesSync).not.toHaveBeenCalled(); @@ -273,7 +288,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).toHaveBeenCalled(); @@ -331,7 +346,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).toHaveBeenCalled(); @@ -383,7 +398,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).toHaveBeenCalled(); @@ -435,7 +450,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).toHaveBeenCalled(); @@ -495,7 +510,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(migrationFunc).toHaveBeenCalled(); @@ -551,7 +566,7 @@ describe('createMigration()', () => { namespace: 'namespace', }, attributes, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(encryptionSavedObjectService.encryptAttributesSync).toHaveBeenCalledWith( @@ -564,14 +579,15 @@ describe('createMigration()', () => { ); }); - describe('uses the object `namespaces` field to populate the descriptor when the migration context indicates this type is being converted', () => { + describe('handles conversion to a multi-namespace type (convertToMultiNamespaceVersion migration context field)', () => { const doTest = ({ + migrationVersions, objectNamespace, - decryptDescriptorNamespace, - }: { - objectNamespace: string | undefined; - decryptDescriptorNamespace: string | undefined; - }) => { + objectNamespaces, + expectedDecryptDescriptorNamespace, + expectedEncryptDescriptorNamespace, + expectedIsTypeBeingConverted, + }: ConversionTestOptions) => { const instantiateServiceWithLegacyType = jest.fn(() => encryptedSavedObjectsServiceMock.create() ); @@ -586,56 +602,150 @@ describe('createMigration()', () => { }, migration: (doc) => doc, }); - - const attributes = { - firstAttr: 'first_attr', - }; - - encryptionSavedObjectService.decryptAttributesSync.mockReturnValueOnce(attributes); - encryptionSavedObjectService.encryptAttributesSync.mockReturnValueOnce(attributes); - - noopMigration( - { - id: '123', - type: 'known-type-1', - namespaces: objectNamespace ? [objectNamespace] : [], + const attributes = { firstAttr: 'first_attr' }; + + migrationVersions.forEach((migrationVersion, i) => { + encryptionSavedObjectService.decryptAttributesSync.mockReturnValueOnce(attributes); + encryptionSavedObjectService.encryptAttributesSync.mockReturnValueOnce(attributes); + noopMigration( + { + id: '123', + originId: 'some-origin-id', + type: 'known-type-1', + namespace: objectNamespace, + namespaces: objectNamespaces, + attributes, + }, + migrationMocks.createContext({ + migrationVersion, // Any migrationVersion <= convertToMultiNamespaceTypeVersion (8.0.0) indicates this type is being converted + convertToMultiNamespaceTypeVersion: '8.0.0', + isSingleNamespaceType: false, // in practice, this can never be true if convertToMultiNamespaceTypeVersion is defined + }) + ); + expect(encryptionSavedObjectService.decryptAttributesSync).toHaveBeenNthCalledWith( + i + 1, + { id: '123', type: 'known-type-1', namespace: expectedDecryptDescriptorNamespace }, attributes, - }, - migrationMocks.createContext({ - migrationVersion: '8.0.0', - convertToMultiNamespaceTypeVersion: '8.0.0', - }) - ); - - expect(encryptionSavedObjectService.decryptAttributesSync).toHaveBeenCalledWith( - { - id: '123', - type: 'known-type-1', - namespace: decryptDescriptorNamespace, - }, - attributes, - { convertToMultiNamespaceType: true } - ); - - expect(encryptionSavedObjectService.encryptAttributesSync).toHaveBeenCalledWith( - { - id: '123', - type: 'known-type-1', - }, - attributes - ); + { isTypeBeingConverted: expectedIsTypeBeingConverted, originId: 'some-origin-id' } // decrypt parameters + ); + expect(encryptionSavedObjectService.encryptAttributesSync).toHaveBeenNthCalledWith( + i + 1, + { id: '123', type: 'known-type-1', namespace: expectedEncryptDescriptorNamespace }, + attributes + ); + }); }; - it('when namespaces is an empty array', () => { - doTest({ objectNamespace: undefined, decryptDescriptorNamespace: undefined }); - }); - - it('when the first namespace element is "default"', () => { - doTest({ objectNamespace: 'default', decryptDescriptorNamespace: undefined }); + describe('when migrationVersion <= convertToMultiNamespaceVersion, it sets the descriptors and decrypt parameters appropriately', () => { + const migrationVersions = ['7.99.99', '8.0.0']; + [undefined, 'foo'].forEach((objectNamespace) => { + // In the test cases below, we test what will happen if an object has both `namespace` and `namespaces` fields. This will not happen + // in normal operation, as when Kibana converts an object from a single- to a multi-namespace type, it removes the `namespace` field + // and adds the `namespaces` field. The tests below are for completeness. + const namespaceDescription = objectNamespace ? 'defined' : undefined; + + it(`when namespaces is undefined and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: undefined, + expectedDecryptDescriptorNamespace: objectNamespace, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: true, + }); + }); + + it(`when namespaces is an empty array and namespace is ${namespaceDescription}`, () => { + // The `namespaces` field should never be an empty array, but we test for it anyway. In this case, we fall back to attempting to + // decrypt with the `namespace` field; if that doesn't work, the ESO service will try again without it. + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: [], + expectedDecryptDescriptorNamespace: objectNamespace, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: true, + }); + }); + + it(`when namespaces is a non-empty array (default space) and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: ['default', 'additional-spaces-are-ignored'], + expectedDecryptDescriptorNamespace: undefined, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: true, + }); + }); + + it(`when namespaces is a non-empty array (custom space) and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: ['custom', 'additional-spaces-are-ignored'], + expectedDecryptDescriptorNamespace: 'custom', + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: true, + }); + }); + }); }); - it('when the first namespace element is another string', () => { - doTest({ objectNamespace: 'foo', decryptDescriptorNamespace: 'foo' }); + describe('when migrationVersion > convertToMultiNamespaceVersion, it sets the descriptors and decrypt parameters appropriately', () => { + const migrationVersions = ['8.0.1']; + [undefined, 'foo'].forEach((objectNamespace) => { + // In the test cases below, we test what will happen if an object has both `namespace` and `namespaces` fields. This will not happen + // in normal operation, as when Kibana converts an object from a single- to a multi-namespace type, it removes the `namespace` field + // and adds the `namespaces` field. The tests below are for completeness. + const namespaceDescription = objectNamespace ? 'defined' : undefined; + + it(`when namespaces is undefined and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: undefined, + expectedDecryptDescriptorNamespace: undefined, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: false, + }); + }); + + it(`when namespaces is an empty array and namespace is ${namespaceDescription}`, () => { + // The `namespaces` field should never be an empty array, but we test for it anyway. In this case, we fall back to attempting to + // decrypt with the `namespace` field; if that doesn't work, the ESO service will try again without it. + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: [], + expectedDecryptDescriptorNamespace: undefined, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: false, + }); + }); + + it(`when namespaces is a non-empty array (default space) and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: ['default', 'additional-spaces-are-ignored'], + expectedDecryptDescriptorNamespace: undefined, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: false, + }); + }); + + it(`when namespaces is a non-empty array (custom space) and namespace is ${namespaceDescription}`, () => { + doTest({ + migrationVersions, + objectNamespace, + objectNamespaces: ['custom', 'additional-spaces-are-ignored'], + expectedDecryptDescriptorNamespace: undefined, + expectedEncryptDescriptorNamespace: undefined, + expectedIsTypeBeingConverted: false, + }); + }); + }); }); }); }); @@ -754,7 +864,7 @@ describe('createMigration()', () => { firstAttr: '#####', nonEncryptedAttr: 'non encrypted', }, - { convertToMultiNamespaceType: false } + { isTypeBeingConverted: false } ); expect(serviceWithMigrationLegacyType.encryptAttributesSync).toHaveBeenCalledWith( diff --git a/x-pack/plugins/encrypted_saved_objects/server/create_migration.ts b/x-pack/plugins/encrypted_saved_objects/server/create_migration.ts index b9e6dcf710924..18786e0f9d1c6 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/create_migration.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/create_migration.ts @@ -5,6 +5,8 @@ * 2.0. */ +import semver from 'semver'; + import type { SavedObjectMigrationContext, SavedObjectMigrationFn, @@ -77,19 +79,44 @@ export const getCreateMigration = ( return encryptedDoc; } + // After it is converted, the object's old ID is stored in the `originId` field. In addition, objects that are imported a certain way + // may have this field set, but it would not be necessary to use this to decrypt saved object attributes. + const { type, id, originId } = encryptedDoc; + + // If an object is slated to be converted, it should be decrypted flexibly: + // * If this is an index migration: + // a. If there is one or more pending migration _before_ the conversion, the object will be decrypted and re-encrypted with its + // namespace in the descriptor. Then, after the conversion, the object will be decrypted with its namespace and old ID in the + // descriptor and re-encrypted with its new ID (without a namespace) in the descriptor. + // b. If there are no pending migrations before the conversion, then after the conversion the object will be decrypted with its + // namespace and old ID in the descriptor and re-encrypted with its new ID (without a namespace) in the descriptor. + // * If this is *not* an index migration, then it is a single document migration. In that case, the object will be decrypted and + // re-encrypted without a namespace in the descriptor. + // To account for these different scenarios, when this field is set, the ESO service will attempt several different permutations of + // the descriptor when decrypting the object. + const isTypeBeingConverted = + !!context.convertToMultiNamespaceTypeVersion && + semver.lte(context.migrationVersion, context.convertToMultiNamespaceTypeVersion); + + // This approximates the behavior of getDescriptorNamespace(); the intent is that if there is ever a case where a multi-namespace object + // has the `namespace` field, it will not be encrypted with that field in its descriptor. It would be preferable to rely on + // getDescriptorNamespace() here, but that requires the SO type registry which can only be retrieved from a promise, and this is not an + // async function + const descriptorNamespace = context.isSingleNamespaceType ? encryptedDoc.namespace : undefined; + let decryptDescriptorNamespace = descriptorNamespace; + // If an object has been converted right before this migration function is called, it will no longer have a `namespace` field, but it // will have a `namespaces` field; in that case, the first/only element in that array should be used as the namespace in the descriptor // during decryption. - const convertToMultiNamespaceType = - context.convertToMultiNamespaceTypeVersion === context.migrationVersion; - const decryptDescriptorNamespace = convertToMultiNamespaceType - ? normalizeNamespace(encryptedDoc.namespaces?.[0]) // `namespaces` contains string values, but we need to normalize this to the namespace ID representation - : encryptedDoc.namespace; + if (isTypeBeingConverted) { + decryptDescriptorNamespace = encryptedDoc.namespaces?.length + ? normalizeNamespace(encryptedDoc.namespaces[0]) // `namespaces` contains string values, but we need to normalize this to the namespace ID representation + : encryptedDoc.namespace; + } - const { id, type } = encryptedDoc; // These descriptors might have a `namespace` that is undefined. That is expected for multi-namespace and namespace-agnostic types. const decryptDescriptor = { id, type, namespace: decryptDescriptorNamespace }; - const encryptDescriptor = { id, type, namespace: encryptedDoc.namespace }; + const encryptDescriptor = { id, type, namespace: descriptorNamespace }; // decrypt the attributes using the input type definition // if an error occurs during decryption, use the shouldMigrateIfDecryptionFails flag @@ -98,7 +125,8 @@ export const getCreateMigration = ( const documentToMigrate = mapAttributes(encryptedDoc, (inputAttributes) => { try { return inputService.decryptAttributesSync(decryptDescriptor, inputAttributes, { - convertToMultiNamespaceType, + isTypeBeingConverted, + originId, }); } catch (err) { if (!shouldMigrateIfDecryptionFails || !(err instanceof EncryptionError)) { @@ -109,7 +137,8 @@ export const getCreateMigration = ( `Decryption failed for encrypted Saved Object "${encryptedDoc.id}" of type "${encryptedDoc.type}" with error: ${err.message}. Encrypted attributes have been stripped from the original document and migration will be applied but this may cause errors later on.` ); return inputService.stripOrDecryptAttributesSync(decryptDescriptor, inputAttributes, { - convertToMultiNamespaceType, + isTypeBeingConverted, + originId, }).attributes; } }); diff --git a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts index 0625199eeed63..15de21999fba3 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts @@ -1024,53 +1024,163 @@ describe('#decryptAttributes', () => { ); }); - it('retries decryption without namespace if incorrect namespace is provided and convertToMultiNamespaceType option is enabled', async () => { - const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + describe('with isTypeBeingConverted option', () => { + it('retries decryption without namespace', async () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; - service.registerType({ - type: 'known-type-1', - attributesToEncrypt: new Set(['attrThree']), + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // namespace was not included in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + await expect( + service.decryptAttributes( + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true } + ) + ).resolves.toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decrypt).toHaveBeenCalledTimes(2); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt without the namespace in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + mockUser + ); }); - const encryptedAttributes = service.encryptAttributesSync( - { type: 'known-type-1', id: 'object-id' }, // namespace was not included in descriptor during encryption - attributes - ); - expect(encryptedAttributes).toEqual({ - attrOne: 'one', - attrTwo: 'two', - attrThree: expect.not.stringMatching(/^three$/), + it('retries decryption without originId (old object ID)', async () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // old object ID was not used in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + await expect( + service.decryptAttributes( + { type: 'known-type-1', id: 'object-id', namespace: undefined }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true, originId: 'old-object-id' } + ) + ).resolves.toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decrypt).toHaveBeenCalledTimes(2); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the old object ID in the descriptor (fail) + expect.anything(), + `["known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt with the current object ID in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], + { type: 'known-type-1', id: 'object-id', namespace: undefined }, + mockUser + ); }); - const mockUser = mockAuthenticatedUser(); - await expect( - service.decryptAttributes( + it('retries decryption without namespace *and* without originId (old object ID)', async () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // namespace and old object ID were not used in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + await expect( + service.decryptAttributes( + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true, originId: 'old-object-id' } + ) + ).resolves.toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decrypt).toHaveBeenCalledTimes(4); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the old object ID and namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt with the old object ID and no namespace in the descriptor (fail) + expect.anything(), + `["known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 3, // first attempted to decrypt with the current object ID and namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( + 4, // then attempted to decrypt with the current object ID and no namespace in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, - encryptedAttributes, - { user: mockUser, convertToMultiNamespaceType: true } - ) - ).resolves.toEqual({ - attrOne: 'one', - attrTwo: 'two', - attrThree: 'three', + mockUser + ); }); - expect(mockNodeCrypto.decrypt).toHaveBeenCalledTimes(2); - expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( - 1, // first attempted to decrypt with the namespace in the descriptor (fail) - expect.anything(), - `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` - ); - expect(mockNodeCrypto.decrypt).toHaveBeenNthCalledWith( - 2, // then attempted to decrypt without the namespace in the descriptor (success) - expect.anything(), - `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` - ); - expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); - expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( - ['attrThree'], - { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, - mockUser - ); }); it('decrypts even if no attributes are included into AAD', async () => { @@ -1289,7 +1399,7 @@ describe('#decryptAttributes', () => { service.decryptAttributes( { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, encryptedAttributes, - { user: mockUser, convertToMultiNamespaceType: true } + { user: mockUser, isTypeBeingConverted: true } ) ).rejects.toThrowError(EncryptionError); expect(mockNodeCrypto.decrypt).toHaveBeenCalledTimes(2); @@ -2002,53 +2112,163 @@ describe('#decryptAttributesSync', () => { }); }); - it('retries decryption without namespace if incorrect namespace is provided and convertToMultiNamespaceType option is enabled', () => { - const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + describe('with isTypeBeingConverted option', () => { + it('retries decryption without namespace', () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; - service.registerType({ - type: 'known-type-1', - attributesToEncrypt: new Set(['attrThree']), + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // namespace was not included in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + expect( + service.decryptAttributesSync( + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true } + ) + ).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decryptSync).toHaveBeenCalledTimes(2); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt without the namespace in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + mockUser + ); }); - const encryptedAttributes = service.encryptAttributesSync( - { type: 'known-type-1', id: 'object-id' }, // namespace was not included in descriptor during encryption - attributes - ); - expect(encryptedAttributes).toEqual({ - attrOne: 'one', - attrTwo: 'two', - attrThree: expect.not.stringMatching(/^three$/), + it('retries decryption without originId (old object ID)', () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // old object ID was not used in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + expect( + service.decryptAttributesSync( + { type: 'known-type-1', id: 'object-id', namespace: undefined }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true, originId: 'old-object-id' } + ) + ).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decryptSync).toHaveBeenCalledTimes(2); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the old object ID in the descriptor (fail) + expect.anything(), + `["known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt with the current object ID in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], + { type: 'known-type-1', id: 'object-id', namespace: undefined }, + mockUser + ); }); - const mockUser = mockAuthenticatedUser(); - expect( - service.decryptAttributesSync( + it('retries decryption without namespace *and* without originId (old object ID)', () => { + const attributes = { attrOne: 'one', attrTwo: 'two', attrThree: 'three' }; + + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attrThree']), + }); + + const encryptedAttributes = service.encryptAttributesSync( + { type: 'known-type-1', id: 'object-id' }, // namespace and old object ID were not used in descriptor during encryption + attributes + ); + expect(encryptedAttributes).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: expect.not.stringMatching(/^three$/), + }); + + const mockUser = mockAuthenticatedUser(); + expect( + service.decryptAttributesSync( + { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, + encryptedAttributes, + { user: mockUser, isTypeBeingConverted: true, originId: 'old-object-id' } + ) + ).toEqual({ + attrOne: 'one', + attrTwo: 'two', + attrThree: 'three', + }); + expect(mockNodeCrypto.decryptSync).toHaveBeenCalledTimes(4); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 1, // first attempted to decrypt with the old object ID and namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 2, // then attempted to decrypt with the old object ID and no namespace in the descriptor (fail) + expect.anything(), + `["known-type-1","old-object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 3, // first attempted to decrypt with the current object ID and namespace in the descriptor (fail) + expect.anything(), + `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( + 4, // then attempted to decrypt with the current object ID and no namespace in the descriptor (success) + expect.anything(), + `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` + ); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); + expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( + ['attrThree'], { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, - encryptedAttributes, - { user: mockUser, convertToMultiNamespaceType: true } - ) - ).toEqual({ - attrOne: 'one', - attrTwo: 'two', - attrThree: 'three', + mockUser + ); }); - expect(mockNodeCrypto.decryptSync).toHaveBeenCalledTimes(2); - expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( - 1, // first attempted to decrypt with the namespace in the descriptor (fail) - expect.anything(), - `["object-ns","known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` - ); - expect(mockNodeCrypto.decryptSync).toHaveBeenNthCalledWith( - 2, // then attempted to decrypt without the namespace in the descriptor (success) - expect.anything(), - `["known-type-1","object-id",{"attrOne":"one","attrTwo":"two"}]` - ); - expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledTimes(1); - expect(mockAuditLogger.decryptAttributesSuccess).toHaveBeenCalledWith( - ['attrThree'], - { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, - mockUser - ); }); it('decrypts even if no attributes are included into AAD', () => { @@ -2214,7 +2434,7 @@ describe('#decryptAttributesSync', () => { service.decryptAttributesSync( { type: 'known-type-1', id: 'object-id', namespace: 'object-ns' }, encryptedAttributes, - { user: mockUser, convertToMultiNamespaceType: true } + { user: mockUser, isTypeBeingConverted: true } ) ).toThrowError(EncryptionError); expect(mockNodeCrypto.decryptSync).toHaveBeenCalledTimes(2); diff --git a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts index cc1a8414924c3..0cf775b88e7d5 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts @@ -70,7 +70,12 @@ interface DecryptParameters extends CommonParameters { * the object was previously encrypted with its namespace in the descriptor portion of the AAD; on the other hand, if the object is being * decrypted during object migration, the object was never encrypted with its namespace in the descriptor portion of the AAD. */ - convertToMultiNamespaceType?: boolean; + isTypeBeingConverted?: boolean; + /** + * If the originId (old object ID) is present and the object is being converted from a single-namespace type to a multi-namespace type, + * we will attempt to decrypt with both the old object ID and the current object ID. + */ + originId?: string; } interface EncryptedSavedObjectsServiceOptions { @@ -528,11 +533,23 @@ export class EncryptedSavedObjectsService { ); } if (!encryptionAADs.length) { - encryptionAADs.push(this.getAAD(typeDefinition, descriptor, attributes)); - if (params?.convertToMultiNamespaceType && descriptor.namespace) { - // This is happening during a migration; create an alternate AAD for decrypting the object attributes by stripping out the namespace from the descriptor. - const { namespace, ...alternateDescriptor } = descriptor; - encryptionAADs.push(this.getAAD(typeDefinition, alternateDescriptor, attributes)); + if (params?.isTypeBeingConverted) { + // The object is either pending conversion to a multi-namespace type, or it was just converted. We may need to attempt to decrypt + // it with several different descriptors depending upon how the migrations are structured, and whether this is a full index + // migration or a single document migration. Note that the originId is set either when the document is converted _or_ when it is + // imported with "createNewCopies: false", so we have to try with and without it. + const decryptDescriptors = params.originId + ? [{ ...descriptor, id: params.originId }, descriptor] + : [descriptor]; + for (const decryptDescriptor of decryptDescriptors) { + encryptionAADs.push(this.getAAD(typeDefinition, decryptDescriptor, attributes)); + if (descriptor.namespace) { + const { namespace, ...alternateDescriptor } = decryptDescriptor; + encryptionAADs.push(this.getAAD(typeDefinition, alternateDescriptor, attributes)); + } + } + } else { + encryptionAADs.push(this.getAAD(typeDefinition, descriptor, attributes)); } } try { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/library/library.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/library/library.tsx index e9ef3b3cfee28..9b5d6090f2f8a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/library/library.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/library/library.tsx @@ -24,6 +24,7 @@ import { import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { Schema, SchemaType } from '../../../shared/schema/types'; +import { InlineEditableTable } from '../../../shared/tables/inline_editable_table'; import { ReorderableTable } from '../../../shared/tables/reorderable_table'; import { Result } from '../result'; @@ -31,6 +32,16 @@ const NO_ITEMS = ( No Items} body={

No Items

} /> ); +// For the InlineEditableTable +// Since InlineEditableTable caches handlers, we need to store this globally somewhere rather than just in useState +interface Foo { + id: number; + foo: string; + bar: string; +} +let globalItems: Foo[] = []; +const getLastItems = () => globalItems; + export const Library: React.FC = () => { const props = { isMetaEngine: false, @@ -91,6 +102,67 @@ export const Library: React.FC = () => { }, ]; + // For the InlineEditableTable + const [items, setItems] = useState([ + { id: 1, foo: 'foo1', bar: '10' }, + { id: 2, foo: 'foo2', bar: '10' }, + ]); + globalItems = items; + const columns = [ + { + field: 'foo', + name: 'Foo', + render: (item: Foo) =>
{item.foo}
, + editingRender: (item: Foo, onChange: (value: string) => void) => ( + onChange(e.target.value)} /> + ), + }, + { + field: 'bar', + name: 'Bar (Must be a number)', + render: (item: Foo) =>
{item.bar}
, + editingRender: (item: Foo, onChange: (value: string) => void) => ( + onChange(e.target.value)} /> + ), + }, + ]; + const onAdd = (item: Foo, onSuccess: () => void) => { + const highestId = Math.max(...getLastItems().map((i) => i.id)); + setItems([ + ...getLastItems(), + { + ...item, + id: highestId + 1, + }, + ]); + onSuccess(); + }; + const onDelete = (item: Foo) => { + setItems(getLastItems().filter((i) => i.id !== item.id)); + }; + const onUpdate = (item: Foo, onSuccess: () => void) => { + setItems( + getLastItems().map((i) => { + if (item.id === i.id) return item; + return i; + }) + ); + onSuccess(); + }; + const validateItem = (item: Foo) => { + let isValidNumber = false; + const num = parseInt(item.bar, 10); + if (!isNaN(num)) isValidNumber = true; + + if (isValidNumber) return {}; + return { + bar: 'Bar must be a valid number', + }; + }; + const onReorder = (newItems: Foo[]) => { + setItems(newItems); + }; + return ( <> @@ -353,8 +425,99 @@ export const Library: React.FC = () => { { name: 'Whatever', render: (item) =>
Whatever
}, ]} /> + + +

InlineEditableTable

+
+ + +

With uneditable items

+
+ + + + + +

Can delete last item

+
+ + { + return ( + No Items} + body={} + /> + ); + }} + /> + + + +

Cannot delete last item

+
+ + + + + +

When isLoading is true

+
+ + + + diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.test.tsx new file mode 100644 index 0000000000000..55849bdaa058a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockActions, setMockValues } from '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { InlineEditableTable } from '../inline_editable_table'; + +import { GenericEndpointInlineEditableTable } from './generic_endpoint_inline_editable_table'; + +describe('GenericEndpointInlineEditableTable', () => { + const mockValues = { + isLoading: false, + }; + const mockActions = { + addItem: jest.fn(), + deleteItem: jest.fn(), + reorderItems: jest.fn(), + updateItem: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockActions(mockActions); + setMockValues(mockValues); + }); + + const items = [{ id: 1 }, { id: 2 }]; + + const props = { + dataProperty: 'foo', + instanceId: 'MyInstance', + addRoute: 'route/to/add/new/items', + reorderRoute: 'route/to/reorder/items', + deleteRoute: (item: any) => `route/to/delete/item/${item.id}`, + updateRoute: (item: any) => `route/to/update/item/${item.id}`, + onReorder: mockActions.reorderItems, + onAdd: mockActions.addItem, + onDelete: mockActions.deleteItem, + onUpdate: mockActions.updateItem, + columns: [], + items, + title: 'Some Title', + }; + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(InlineEditableTable).exists()).toBe(true); + expect(wrapper.find(InlineEditableTable).prop('isLoading')).toEqual(false); + expect(wrapper.find(InlineEditableTable).prop('title')).toEqual('Some Title'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.tsx new file mode 100644 index 0000000000000..63b3d4b407667 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table.tsx @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + InlineEditableTable, + InlineEditableTableProps, +} from '../inline_editable_table/inline_editable_table'; +import { ItemWithAnID } from '../types'; + +import { GenericEndpointInlineEditableTableLogic } from './generic_endpoint_inline_editable_table_logic'; + +export interface GenericEndpointInlineEditableTableProps + extends Omit< + InlineEditableTableProps, + 'onAdd' | 'onDelete' | 'onUpdate' | 'isLoading' | 'itemId' + > { + addRoute: string; + instanceId: string; + dataProperty: string; + deleteRoute(item: ItemWithAnID): string; + reorderRoute?: string; + updateRoute(item: ItemWithAnID): string; + onAdd(item: ItemWithAnID, items: ItemWithAnID[]): void; + onDelete(item: ItemWithAnID, items: ItemWithAnID[]): void; + onUpdate(item: ItemWithAnID, items: ItemWithAnID[]): void; + onReorder?(items: ItemWithAnID[]): void; +} + +export const GenericEndpointInlineEditableTable = ({ + addRoute, + dataProperty, + deleteRoute, + reorderRoute, + updateRoute, + onAdd, + onDelete, + onReorder, + onUpdate, + ...props +}: GenericEndpointInlineEditableTableProps) => { + const { instanceId } = props; + + const genericEndpointLogic = GenericEndpointInlineEditableTableLogic({ + dataProperty, + instanceId, + addRoute, + deleteRoute, + reorderRoute, + updateRoute, + onAdd, + onDelete, + onReorder, + onUpdate, + }); + + const { isLoading } = useValues(genericEndpointLogic); + const { addItem, deleteItem, reorderItems, updateItem } = useActions(genericEndpointLogic); + + return ( + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.test.ts new file mode 100644 index 0000000000000..5cd4b5af8f517 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.test.ts @@ -0,0 +1,308 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + LogicMounter, + mockFlashMessageHelpers, + mockHttpValues, +} from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test/jest'; + +import { GenericEndpointInlineEditableTableLogic } from './generic_endpoint_inline_editable_table_logic'; + +describe('GenericEndpointInlineEditableTableLogic', () => { + const { mount } = new LogicMounter(GenericEndpointInlineEditableTableLogic); + const { http } = mockHttpValues; + const { flashAPIErrors } = mockFlashMessageHelpers; + + const DEFAULT_VALUES = { + isLoading: false, + }; + + const DEFAULT_LOGIC_PARAMS = { + dataProperty: 'foo', + instanceId: 'MyInstance', + addRoute: 'route/to/add/new/items', + reorderRoute: 'route/to/reorder/items', + deleteRoute: (item: any) => `route/to/delete/item/${item.id}`, + updateRoute: (item: any) => `route/to/update/item/${item.id}`, + onReorder: jest.fn(), + onAdd: jest.fn(), + onDelete: jest.fn(), + onUpdate: jest.fn(), + }; + + beforeEach(() => { + jest.resetAllMocks(); + }); + + const mountLogic = (values: object = {}, props: object = DEFAULT_LOGIC_PARAMS) => + mount(values, props); + + it('has expected default values', () => { + const logic = mountLogic(); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + }); + }); + + describe('actions', () => { + describe('setLoading', () => { + it('sets isLoading to true', () => { + const logic = mountLogic({ + isLoading: false, + }); + logic.actions.setLoading(); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + isLoading: true, + }); + }); + }); + + describe('clearLoading', () => { + it('sets isLoading to false', () => { + const logic = mountLogic({ + isLoading: true, + }); + logic.actions.clearLoading(); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + isLoading: false, + }); + }); + }); + }); + + describe('listeners', () => { + describe('addItem', () => { + const item = { id: 1 }; + const onSuccess = jest.fn(); + + it('makes an API call', async () => { + const mockResponse = { + foo: { some: 'data' }, + }; + + http.post.mockReturnValueOnce(Promise.resolve(mockResponse)); + const logic = mountLogic(); + jest.spyOn(logic.actions, 'clearLoading'); + + logic.actions.addItem(item, onSuccess); + + // It sets isLoading to true before it stars the request + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + isLoading: true, + }); + + await nextTick(); + + // It posts the provided 'item' to the configured 'adddRoute' + expect(http.post).toHaveBeenCalledWith('route/to/add/new/items', { + body: JSON.stringify({ id: 1 }), + }); + + // It retrieves data from the response based on the configured 'dataProperty' + // Then calls back to the configured 'onAdd' function + expect(DEFAULT_LOGIC_PARAMS.onAdd).toHaveBeenCalledWith({ id: 1 }, { some: 'data' }); + + // It calls the onSuccess callback + expect(onSuccess).toHaveBeenCalled(); + + // Then it cleans up when it's done + expect(logic.actions.clearLoading).toHaveBeenCalled(); + }); + + it('handles errors', async () => { + http.post.mockReturnValueOnce(Promise.reject('error')); + const logic = mountLogic(); + + logic.actions.addItem(item, onSuccess); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + + describe('deleteItem', () => { + const item = { id: 1 }; + const onSuccess = jest.fn(); + + it('makes an API call', async () => { + const mockResponse = { + foo: { some: 'data' }, + }; + + http.delete.mockReturnValueOnce(Promise.resolve(mockResponse)); + const logic = mountLogic(); + jest.spyOn(logic.actions, 'clearLoading'); + + logic.actions.deleteItem(item, onSuccess); + + // It sets isLoading to true before it stars the request + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + isLoading: true, + }); + + await nextTick(); + + // It deletes the 'item' using the configured 'deleteRoute' + expect(http.delete).toHaveBeenCalledWith('route/to/delete/item/1'); + + // It retrieves data from the response based on the configured 'dataProperty' + // Then calls back to the configured 'onAdd' function + expect(DEFAULT_LOGIC_PARAMS.onDelete).toHaveBeenCalledWith({ id: 1 }, { some: 'data' }); + + // It calls the onSuccess callback + expect(onSuccess).toHaveBeenCalled(); + + // Then it cleans up when it's done + expect(logic.actions.clearLoading).toHaveBeenCalled(); + }); + + it('handles errors', async () => { + http.delete.mockReturnValueOnce(Promise.reject('error')); + const logic = mountLogic(); + + logic.actions.deleteItem(item, onSuccess); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + + describe('updateItem', () => { + const item = { id: 1, other: 'other', created_at: '5/17/1984' }; + const onSuccess = jest.fn(); + + it('makes an API call', async () => { + const mockResponse = { + foo: { some: 'data' }, + }; + + http.put.mockReturnValueOnce(Promise.resolve(mockResponse)); + const logic = mountLogic(); + jest.spyOn(logic.actions, 'clearLoading'); + + logic.actions.updateItem(item, onSuccess); + + // It sets isLoading to true before it stars the request + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + isLoading: true, + }); + + await nextTick(); + + // It updates the 'item' using the configured 'updateRoute', with the id + // and created_at stripped from the object + expect(http.put).toHaveBeenCalledWith('route/to/update/item/1', { + body: JSON.stringify({ other: 'other' }), + }); + + // It retrieves data from the response based on the configured 'dataProperty' + // Then calls back to the configured 'onAdd' function + expect(DEFAULT_LOGIC_PARAMS.onUpdate).toHaveBeenCalledWith( + { id: 1, other: 'other', created_at: '5/17/1984' }, + { some: 'data' } + ); + + // It calls the onSuccess callback + expect(onSuccess).toHaveBeenCalled(); + + // Then it cleans up when it's done + expect(logic.actions.clearLoading).toHaveBeenCalled(); + }); + + it('handles errors', async () => { + http.put.mockReturnValueOnce(Promise.reject('error')); + const logic = mountLogic(); + + logic.actions.updateItem(item, onSuccess); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + + describe('reorderItems', () => { + const items = [{ id: 2 }, { id: 1 }]; + const oldItems = [{ id: 1 }, { id: 2 }]; + const onSuccess = jest.fn(); + + it('makes an API call', async () => { + const mockResponse = { + foo: [{ id: 2 }, { id: 1 }], + }; + http.put.mockReturnValueOnce(Promise.resolve(mockResponse)); + + const logic = mountLogic(); + jest.spyOn(logic.actions, 'setLoading'); + jest.spyOn(logic.actions, 'clearLoading'); + + logic.actions.reorderItems(items, oldItems, onSuccess); + + // It calls back to the configured 'onReorder' function + expect(DEFAULT_LOGIC_PARAMS.onReorder).toHaveBeenCalledWith(items); + + // Sets loading state + expect(logic.actions.setLoading).toHaveBeenCalled(); + + await nextTick(); + + // Updates the reordered items on the server using the configured 'reorderRoute' + // and 'dataProperty'. It also injects 'order' properties. + expect(http.put).toHaveBeenCalledWith('route/to/reorder/items', { + body: JSON.stringify({ + foo: [ + { + id: 2, + order: 0, + }, + { + id: 1, + order: 1, + }, + ], + }), + }); + + // It again calls back to the configured 'onReorder' function with items + // it parsed back from the response using the 'dataProperty' config + expect(DEFAULT_LOGIC_PARAMS.onReorder).toHaveBeenCalledWith(items); + + // It calls the onSuccess callback + expect(onSuccess).toHaveBeenCalled(); + + // Then it cleans up when it's done + expect(logic.actions.clearLoading).toHaveBeenCalled(); + }); + + it('handles errors', async () => { + http.put.mockReturnValueOnce(Promise.reject('error')); + const logic = mountLogic(); + + logic.actions.reorderItems(items, oldItems, onSuccess); + await nextTick(); + + // It again calls back to the configured 'onReorder' to reset the order + expect(DEFAULT_LOGIC_PARAMS.onReorder).toHaveBeenCalledWith(oldItems); + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + + it('does nothing if there are no reorder props', async () => { + const { reorderRoute, ...rest } = DEFAULT_LOGIC_PARAMS; + const logic = mountLogic({}, rest); + logic.actions.reorderItems(items, oldItems, onSuccess); + expect(http.put).not.toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.ts new file mode 100644 index 0000000000000..9cb1061993dc3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/generic_endpoint_inline_editable_table_logic.ts @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { flashAPIErrors } from '../../flash_messages'; + +import { HttpLogic } from '../../http'; + +import { ItemWithAnID } from '../types'; + +import { stripIdAndCreatedAtFromItem } from './utils'; + +interface GenericEndpointInlineEditableTableValues { + isLoading: boolean; +} + +interface GenericEndpointInlineEditableTableActions { + addItem(item: Item, onSuccess: () => void): { item: Item; onSuccess: () => void }; + setLoading(): void; + clearLoading(): void; + deleteItem(item: Item, onSuccess: () => void): { item: Item; onSuccess: () => void }; + reorderItems( + items: Item[], + oldItems: Item[], + onSuccess: () => void + ): { items: Item[]; oldItems: Item[]; onSuccess: () => void }; + updateItem(item: Item, onSuccess: () => void): { item: Item; onSuccess: () => void }; +} + +interface GenericEndpointInlineEditableTableProps { + dataProperty: string; + addRoute: string; + instanceId: string; + deleteRoute(item: Item): string; + updateRoute(item: Item): string; + onAdd(item: Item, items: Item[]): void; + onDelete(item: Item, items: Item[]): void; + onUpdate(item: Item, items: Item[]): void; + // With reordering + reorderRoute?: string; + onReorder?(items: Item[]): void; +} + +type GenericEndpointInlineEditableTableLogicType = MakeLogicType< + GenericEndpointInlineEditableTableValues, + GenericEndpointInlineEditableTableActions, + GenericEndpointInlineEditableTableProps +>; + +export const GenericEndpointInlineEditableTableLogic = kea< + GenericEndpointInlineEditableTableLogicType +>({ + path: (key: string) => ['enterprise_search', 'generic_endpoint_inline_editable_table_logic', key], + key: (props) => props.instanceId, + actions: () => ({ + addItem: (item, onSuccess) => ({ item, onSuccess }), + setLoading: true, + clearLoading: true, + deleteItem: (item, onSuccess) => ({ item, onSuccess }), + reorderItems: (items, oldItems, onSuccess) => ({ items, oldItems, onSuccess }), + updateItem: (item, onSuccess) => ({ item, onSuccess }), + }), + reducers: () => ({ + isLoading: [ + false, + { + addItem: () => true, + setLoading: () => true, + clearLoading: () => false, + deleteItem: () => true, + updateItem: () => true, + }, + ], + }), + listeners: ({ actions, props }) => ({ + addItem: async ({ item, onSuccess }) => { + const { http } = HttpLogic.values; + const { addRoute, onAdd, dataProperty } = props; + + try { + const response = await http.post(addRoute, { body: JSON.stringify(item) }); + const itemsFromResponse = response[dataProperty]; + + onAdd(item, itemsFromResponse); + onSuccess(); + } catch (e) { + flashAPIErrors(e); + } finally { + actions.clearLoading(); + } + }, + deleteItem: async ({ item, onSuccess }) => { + const { http } = HttpLogic.values; + const { deleteRoute, onDelete, dataProperty } = props; + + try { + const response = await http.delete(deleteRoute(item)); + const itemsFromResponse = response[dataProperty]; + + onDelete(item, itemsFromResponse); + onSuccess(); + } catch (e) { + flashAPIErrors(e); + } finally { + actions.clearLoading(); + } + }, + updateItem: async ({ item, onSuccess }) => { + const { http } = HttpLogic.values; + const { updateRoute, onUpdate, dataProperty } = props; + + const dataToSubmit = stripIdAndCreatedAtFromItem(item); + try { + const response = await http.put(updateRoute(item), { + body: JSON.stringify(dataToSubmit), + }); + const itemsFromResponse = response[dataProperty]; + + onUpdate(item, itemsFromResponse); + onSuccess(); + } catch (e) { + flashAPIErrors(e); + } finally { + actions.clearLoading(); + } + }, + reorderItems: async ({ items, oldItems, onSuccess }) => { + const { reorderRoute, onReorder, dataProperty } = props; + if (!reorderRoute || !onReorder) return; + + const { http } = HttpLogic.values; + + const reorderedItemIds = items.map(({ id }, itemIndex) => ({ id, order: itemIndex })); + onReorder(items); // We optimistically reorder this so that the client-side UI doesn't snap back while waiting for the http response + + try { + actions.setLoading(); + + const response = await http.put(reorderRoute, { + body: JSON.stringify({ [dataProperty]: reorderedItemIds }), + }); + const itemsFromResponse = response[dataProperty]; + + onReorder(itemsFromResponse); // Final reorder based on server response + onSuccess(); + } catch (e) { + onReorder(oldItems); + flashAPIErrors(e); + } + + actions.clearLoading(); + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.test.ts new file mode 100644 index 0000000000000..fa561d92f6dc0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.test.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { stripIdAndCreatedAtFromItem } from './utils'; + +describe('stripIdAndCreatedAtFromItem', () => { + it('removes the id and created_at fields from an object', () => { + expect(stripIdAndCreatedAtFromItem({ id: 123, created_at: 'today' })).toEqual({}); + + expect( + stripIdAndCreatedAtFromItem({ id: 123, created_at: 'today', hello: 'world' } as any) + ).toEqual({ hello: 'world' }); + }); + + it('does not mutate the original object', () => { + const item = { id: 456, created_at: 'yesterday' }; + expect(stripIdAndCreatedAtFromItem(item)).not.toBe(item); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.ts new file mode 100644 index 0000000000000..d7a39f155142d --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/generic_endpoint_inline_editable_table/utils.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ItemWithAnID } from '../types'; + +export const stripIdAndCreatedAtFromItem = (item: ItemWithAnID) => { + const itemToClean = { ...item } as Partial; + delete itemToClean.id; + delete itemToClean.created_at; + return itemToClean; +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.test.tsx new file mode 100644 index 0000000000000..6328b01cd2be7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.test.tsx @@ -0,0 +1,193 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockActions, setMockValues } from '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow, ShallowWrapper } from 'enzyme'; + +import { ActionColumn } from './action_column'; + +const requiredParams = { + displayedItems: [], + isActivelyEditing: () => false, + item: { id: 1 }, +}; + +describe('ActionColumn', () => { + const mockValues = { + doesEditingItemValueContainEmptyProperty: false, + editingItemId: 1, + formErrors: [], + isEditing: false, + isEditingUnsavedItem: false, + }; + const mockActions = { + editExistingItem: jest.fn(), + deleteItem: jest.fn(), + doneEditing: jest.fn(), + saveExistingItem: jest.fn(), + saveNewItem: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(mockValues); + setMockActions(mockActions); + }); + + it('renders', () => { + const wrapper = shallow( + false} + isLoading={false} + item={{ id: 1 }} + canRemoveLastItem={false} + lastItemWarning="I am a warning" + uneditableItems={[]} + /> + ); + expect(wrapper.isEmptyRender()).toBe(false); + }); + + it('renders nothing if the item is an uneditableItem', () => { + const item = { id: 1 }; + const wrapper = shallow( + false} + isLoading={false} + item={item} + canRemoveLastItem={false} + lastItemWarning="I am a warning" + uneditableItems={[item]} + /> + ); + expect(wrapper.isEmptyRender()).toBe(true); + }); + + describe('when the user is actively editing', () => { + const isActivelyEditing = () => true; + const activelyEditingParams = { + ...requiredParams, + isActivelyEditing, + }; + + describe('it renders a save button', () => { + const subject = (wrapper: ShallowWrapper) => wrapper.find('[data-test-subj="saveButton"]'); + + it('which is disabled if data is loading', () => { + const wrapper = shallow(); + expect(subject(wrapper).prop('disabled')).toBe(true); + }); + + it('which is disabled if there are form errors', () => { + setMockValues({ + ...mockValues, + formErrors: ['I am an error'], + }); + + const wrapper = shallow(); + expect(subject(wrapper).prop('disabled')).toBe(true); + }); + + it('which is disabled if the item value contains an empty property', () => { + setMockValues({ + ...mockValues, + doesEditingItemValueContainEmptyProperty: true, + }); + + const wrapper = shallow(); + expect(subject(wrapper).prop('disabled')).toBe(true); + }); + + it('which calls saveNewItem when clicked if the user is editing an unsaved item', () => { + setMockValues({ + ...mockValues, + isEditingUnsavedItem: true, + }); + + const wrapper = shallow(); + subject(wrapper).simulate('click'); + expect(mockActions.saveNewItem).toHaveBeenCalled(); + }); + + it('which calls saveExistingItem when clicked if the user is NOT editing an unsaved item', () => { + setMockValues({ + ...mockValues, + isEditingUnsavedItem: false, + }); + + const wrapper = shallow(); + subject(wrapper).simulate('click'); + expect(mockActions.saveExistingItem).toHaveBeenCalled(); + }); + }); + + describe('it renders a cancel button', () => { + const subject = (wrapper: ShallowWrapper) => wrapper.find('[data-test-subj="cancelButton"]'); + + it('which is disabled if data is loading', () => { + const wrapper = shallow(); + expect(subject(wrapper).prop('disabled')).toBe(true); + }); + + it('which calls doneEditing when clicked', () => { + const wrapper = shallow(); + subject(wrapper).simulate('click'); + expect(mockActions.doneEditing).toHaveBeenCalled(); + }); + }); + }); + + describe('when the user is NOT actively editing', () => { + const item = { id: 2 }; + + const mockValuesWhereUserIsNotActivelyEditing = { + ...mockValues, + isEditing: false, + }; + + beforeEach(() => { + setMockValues(mockValuesWhereUserIsNotActivelyEditing); + }); + + describe('it renders an edit button', () => { + const subject = (wrapper: ShallowWrapper) => wrapper.find('[data-test-subj="editButton"]'); + + it('which calls editExistingItem when clicked', () => { + const wrapper = shallow(); + subject(wrapper).simulate('click'); + expect(mockActions.editExistingItem).toHaveBeenCalledWith(item); + }); + }); + + describe('it renders an delete button', () => { + const subject = (wrapper: ShallowWrapper) => wrapper.find('[data-test-subj="deleteButton"]'); + + it('which calls deleteItem when clicked', () => { + const wrapper = shallow(); + subject(wrapper).simulate('click'); + expect(mockActions.deleteItem).toHaveBeenCalledWith(item); + }); + + it('which does not render if candRemoveLastItem is prevented and this is the last item', () => { + const wrapper = shallow( + + ); + expect(subject(wrapper).exists()).toBe(false); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.tsx new file mode 100644 index 0000000000000..1ba84a2fa43af --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/action_column.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiToolTip } from '@elastic/eui'; + +import { + CANCEL_BUTTON_LABEL, + DELETE_BUTTON_LABEL, + EDIT_BUTTON_LABEL, + SAVE_BUTTON_LABEL, +} from '../../constants'; + +import { ItemWithAnID } from '../types'; + +import { InlineEditableTableLogic } from './inline_editable_table_logic'; + +interface ActionColumnProps { + displayedItems: Item[]; + isActivelyEditing: (i: Item) => boolean; + isLoading?: boolean; + item: Item; + canRemoveLastItem?: boolean; + lastItemWarning?: string; + uneditableItems?: Item[]; +} + +export const ActionColumn = ({ + displayedItems, + isActivelyEditing, + isLoading = false, + item, + canRemoveLastItem, + lastItemWarning, + uneditableItems, +}: ActionColumnProps) => { + const { doesEditingItemValueContainEmptyProperty, formErrors, isEditingUnsavedItem } = useValues( + InlineEditableTableLogic + ); + const { editExistingItem, deleteItem, doneEditing, saveExistingItem, saveNewItem } = useActions( + InlineEditableTableLogic + ); + + if (uneditableItems?.includes(item)) { + return null; + } + + if (isActivelyEditing(item)) { + return ( + + + 0 || + doesEditingItemValueContainEmptyProperty + } + > + {SAVE_BUTTON_LABEL} + + + + + {CANCEL_BUTTON_LABEL} + + + + ); + } + + return ( + + + editExistingItem(item)} + > + {EDIT_BUTTON_LABEL} + + + + {!canRemoveLastItem && displayedItems.length === 1 ? ( + + + {DELETE_BUTTON_LABEL} + + + ) : ( + deleteItem(item)}> + {DELETE_BUTTON_LABEL} + + )} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/constants.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/constants.ts new file mode 100644 index 0000000000000..43a5a5b1df9e6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const EMPTY_ITEM = { id: null }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.test.tsx new file mode 100644 index 0000000000000..43ced1bd87492 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.test.tsx @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues, setMockActions } from '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow, ShallowWrapper } from 'enzyme'; + +import { EuiFormRow } from '@elastic/eui'; + +import { EditingColumn } from './editing_column'; + +describe('EditingColumn', () => { + const column = { + name: 'foo', + field: 'foo', + render: jest.fn(), + editingRender: jest.fn().mockReturnValue(
), + }; + + const requiredProps = { + column, + }; + + const mockValues = { + formErrors: [], + editingItemValue: { id: 1 }, + }; + + const mockActions = { + setEditingItemValue: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockActions(mockActions); + setMockValues(mockValues); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(false); + }); + + describe('when there is a form error for this field', () => { + let wrapper: ShallowWrapper; + beforeEach(() => { + setMockValues({ + ...mockValues, + formErrors: { + foo: 'I am an error for foo and should be displayed', + }, + }); + + wrapper = shallow( + + ); + }); + + it('renders form errors for this field if any are present', () => { + expect(shallow(wrapper.find(EuiFormRow).prop('helpText') as any).html()).toContain( + 'I am an error for foo and should be displayed' + ); + }); + + it('renders as invalid', () => { + expect(wrapper.find(EuiFormRow).prop('isInvalid')).toBe(true); + }); + }); + + it('renders nothing if there is no editingItemValue in state', () => { + setMockValues({ + ...mockValues, + editingItemValue: null, + }); + + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + }); + + it('renders the column\'s "editing" view (editingRender)', () => { + setMockValues({ + ...mockValues, + editingItemValue: { id: 1, foo: 'foo', bar: 'bar' }, + formErrors: { foo: ['I am an error for foo'] }, + }); + + const wrapper = shallow( + + ); + expect(wrapper.find('[data-test-subj="editing-view"]').exists()).toBe(true); + + expect(column.editingRender).toHaveBeenCalled(); + // The render function is provided with the item currently being edited for rendering + expect(column.editingRender.mock.calls[0][0]).toEqual({ id: 1, foo: 'foo', bar: 'bar' }); + + // The render function is provided with a callback function to save the value once editing is finished + const callback = column.editingRender.mock.calls[0][1]; + callback('someNewValue'); + expect(mockActions.setEditingItemValue).toHaveBeenCalledWith({ + id: 1, + // foo is the 'field' this column is associated with, so that field is updated with the new value + foo: 'someNewValue', + bar: 'bar', + }); + + // The render function is provided with additional properties + expect(column.editingRender.mock.calls[0][2]).toEqual({ + isInvalid: true, // Because there errors for 'foo' + isLoading: true, // Because isLoading was passed as true to this prop + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.tsx new file mode 100644 index 0000000000000..d3d36046dc0a6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/editing_column.tsx @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { EuiFormRow, EuiText } from '@elastic/eui'; + +import { ItemWithAnID } from '../types'; + +import { InlineEditableTableLogic } from './inline_editable_table_logic'; +import { InlineEditableTableColumn } from './types'; + +interface EditingColumnProps { + column: InlineEditableTableColumn; + isLoading?: boolean; +} + +export const EditingColumn = ({ + column, + isLoading = false, +}: EditingColumnProps) => { + const { formErrors, editingItemValue } = useValues(InlineEditableTableLogic); + const { setEditingItemValue } = useActions(InlineEditableTableLogic); + + if (!editingItemValue) return null; + + return ( + + {formErrors[column.field]} + + } + isInvalid={!!formErrors[column.field]} + > + <> + {column.editingRender( + editingItemValue as Item, // TODO we shouldn't need to cast this? + (newValue) => { + setEditingItemValue({ + ...editingItemValue, + [column.field]: newValue, + }); + }, + { + isInvalid: !!formErrors[column.field], + isLoading, + } + )} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.test.tsx new file mode 100644 index 0000000000000..6fccdfd327df4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.test.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { Column } from '../reorderable_table/types'; + +import { ActionColumn } from './action_column'; +import { EditingColumn } from './editing_column'; +import { getUpdatedColumns } from './get_updated_columns'; +import { InlineEditableTableColumn } from './types'; + +interface Foo { + id: number; +} + +describe('getUpdatedColumns', () => { + const displayedItems: Foo[] = []; + const canRemoveLastItem = true; + const lastItemWarning = 'I am a warning'; + const uneditableItems: Foo[] = []; + const item = { id: 1 }; + + describe('it takes an array of InlineEditableTableColumn columns and turns them into ReorderableTable Columns', () => { + const columns: Array> = [ + { + name: 'Foo', + editingRender: jest.fn(), + render: jest.fn(), + field: 'foo', + }, + { + name: 'Bar', + editingRender: jest.fn(), + render: jest.fn(), + field: 'bar', + }, + ]; + let newColumns: Array> = []; + + beforeAll(() => { + newColumns = getUpdatedColumns({ + columns, + displayedItems, + canRemoveLastItem, + lastItemWarning, + uneditableItems, + isActivelyEditing: () => true, + }); + }); + + it('converts the columns to Column objects', () => { + expect(newColumns[0]).toEqual({ + name: 'Foo', + render: expect.any(Function), + }); + expect(newColumns[1]).toEqual({ + name: 'Bar', + render: expect.any(Function), + }); + }); + + it('appends an action column at the end', () => { + expect(newColumns[2]).toEqual({ + flexBasis: '200px', + flexGrow: 0, + render: expect.any(Function), + }); + + const renderResult = newColumns[2].render(item); + const wrapper = shallow(
{renderResult}
); + const actionColumn = wrapper.find(ActionColumn); + expect(actionColumn.props()).toEqual({ + isActivelyEditing: expect.any(Function), + displayedItems, + isLoading: false, + canRemoveLastItem, + lastItemWarning, + uneditableItems, + item, + }); + }); + }); + + describe("the converted column's render prop", () => { + const columns: Array> = [ + { + name: 'Foo', + editingRender: jest.fn(), + render: jest.fn(), + field: 'foo', + }, + ]; + + it("renders with the passed column's editingRender function when the user is actively editing", () => { + const newColumns = getUpdatedColumns({ + columns, + displayedItems, + isLoading: true, + isActivelyEditing: () => true, + }); + + const renderResult = newColumns[0].render(item); + const wrapper = shallow(
{renderResult}
); + const column = wrapper.find(EditingColumn); + expect(column.props()).toEqual({ + column: columns[0], + isLoading: true, + }); + }); + + it("renders with the passed column's render function when the user is NOT actively editing", () => { + const newColumns = getUpdatedColumns({ + columns, + displayedItems, + isActivelyEditing: () => false, + }); + + newColumns[0].render(item); + expect(columns[0].render).toHaveBeenCalledWith(item); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.tsx new file mode 100644 index 0000000000000..e3a3b2b496a97 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/get_updated_columns.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { Column } from '../reorderable_table/types'; +import { ItemWithAnID } from '../types'; + +import { ActionColumn } from './action_column'; +import { EditingColumn } from './editing_column'; +import { InlineEditableTableColumn } from './types'; + +interface GetUpdatedColumnProps { + columns: Array>; + displayedItems: Item[]; + isActivelyEditing: (item: Item) => boolean; + canRemoveLastItem?: boolean; + isLoading?: boolean; + lastItemWarning?: string; + uneditableItems?: Item[]; +} + +export const getUpdatedColumns = ({ + columns, + displayedItems, + isActivelyEditing, + canRemoveLastItem, + isLoading = false, + lastItemWarning, + uneditableItems, +}: GetUpdatedColumnProps): Array> => { + return [ + ...columns.map((column) => { + const newColumn: Column = { + name: column.name, + render: (item: Item) => { + if (isActivelyEditing(item)) { + return ; + } + return column.render(item); + }, + }; + return newColumn; + }), + { + flexBasis: '200px', + flexGrow: 0, + render: (item: Item) => ( + + ), + }, + ]; +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/index.ts new file mode 100644 index 0000000000000..b55fd0df83ed0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { InlineEditableTable } from './inline_editable_table'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.test.tsx new file mode 100644 index 0000000000000..ab59616e9ce78 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.test.tsx @@ -0,0 +1,186 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockActions, setMockValues } from '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow } from 'enzyme'; +import { BindLogic } from 'kea'; + +import { ReorderableTable } from '../reorderable_table'; + +jest.mock('./get_updated_columns', () => ({ + getUpdatedColumns: jest.fn(), +})); +import { getUpdatedColumns } from './get_updated_columns'; + +import { InlineEditableTable, InlineEditableTableContents } from './inline_editable_table'; +import { InlineEditableTableLogic } from './inline_editable_table_logic'; + +const items = [{ id: 1 }, { id: 2 }]; +const requiredParams = { + columns: [], + items, + title: 'Some Title', +}; + +interface Foo { + id: number; +} + +describe('InlineEditableTable', () => { + const mockValues = {}; + const mockActions = {}; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(mockValues); + setMockActions(mockActions); + }); + + it('wraps the table in a bound logic, and passes through only required props to the underlying component', () => { + const instanceId = 'MyInstance'; + const onAdd = jest.fn(); + const onDelete = jest.fn(); + const onReorder = jest.fn(); + const onUpdate = jest.fn(); + const transformItem = jest.fn(); + const validateItem = jest.fn(); + const wrapper = shallow( + + ); + const bindLogic = wrapper.find(BindLogic); + expect(bindLogic.props()).toEqual( + expect.objectContaining({ + logic: InlineEditableTableLogic, + props: { + columns: requiredParams.columns, + instanceId, + onAdd, + onDelete, + onReorder, + onUpdate, + transformItem, + validateItem, + }, + }) + ); + + expect(bindLogic.children().props()).toEqual(requiredParams); + }); + + it('renders a ReorderableTable', () => { + const wrapper = shallow(); + const reorderableTable = wrapper.find(ReorderableTable); + expect(reorderableTable.exists()).toBe(true); + expect(reorderableTable.prop('items')).toEqual(items); + expect(wrapper.find('[data-test-subj="actionButton"]').children().text()).toEqual('New row'); + }); + + it('renders a description if one is provided', () => { + const wrapper = shallow( + Some Description

} /> + ); + expect(wrapper.find('[data-test-subj="description"]').exists()).toBe(true); + }); + + it('can specify items in the table that are uneditable', () => { + const uneditableItems = [{ id: 3 }]; + const wrapper = shallow( + + ); + expect(wrapper.find(ReorderableTable).prop('unreorderableItems')).toBe(uneditableItems); + }); + + it('can apply an additional className', () => { + const wrapper = shallow( + + ); + expect(wrapper.find('.editableTable.myTestClassName').exists()).toBe(true); + }); + + it('will use the value of addButtonText as custom text on the New Row button', () => { + const wrapper = shallow( + + ); + expect(wrapper.find('[data-test-subj="actionButton"]').children().text()).toEqual( + 'Add a new row custom text' + ); + }); + + describe('when a user is editing an unsaved item', () => { + beforeEach(() => setMockValues({ ...mockValues, isEditingUnsavedItem: true })); + + it('will change the displayed items to END with an empty item', () => { + const wrapper = shallow(); + expect(wrapper.find(ReorderableTable).prop('items')).toEqual([...items, { id: null }]); + }); + + it('will change the displayed items to START with an empty item when there are uneditableItems', () => { + const wrapper = shallow( + + ); + + expect(wrapper.find(ReorderableTable).prop('items')).toEqual([{ id: null }, ...items]); + }); + }); + + it('will style the row that is currently being edited', () => { + setMockValues({ ...mockValues, isEditing: true, editingItemId: 2 }); + const itemList = [{ id: 1 }, { id: 2 }]; + const wrapper = shallow(); + const rowProps = wrapper.find(ReorderableTable).prop('rowProps') as (item: any) => object; + expect(rowProps(items[0])).toEqual({ className: '' }); + // Since editingItemId is 2 and the second item (position 1) in item list has an id of 2, it gets this class + expect(rowProps(items[1])).toEqual({ className: 'is-being-edited' }); + }); + + it('will update the passed columns and pass them through to the underlying table', () => { + const updatedColumns = {}; + const canRemoveLastItem = true; + const isLoading = true; + const lastItemWarning = 'A warning'; + const uneditableItems: Foo[] = []; + + (getUpdatedColumns as jest.Mock).mockReturnValue(updatedColumns); + const wrapper = shallow( + + ); + const columns = wrapper.find(ReorderableTable).prop('columns'); + expect(columns).toEqual(updatedColumns); + + expect(getUpdatedColumns).toHaveBeenCalledWith({ + columns: requiredParams.columns, + displayedItems: items, + isActivelyEditing: expect.any(Function), + canRemoveLastItem, + isLoading, + lastItemWarning, + uneditableItems, + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.tsx new file mode 100644 index 0000000000000..3e351f5826abc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table.tsx @@ -0,0 +1,176 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 classNames from 'classnames'; + +import { useActions, useValues, BindLogic } from 'kea'; + +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { ReorderableTable } from '../reorderable_table'; + +import { ItemWithAnID } from '../types'; + +import { EMPTY_ITEM } from './constants'; +import { getUpdatedColumns } from './get_updated_columns'; +import { InlineEditableTableLogic } from './inline_editable_table_logic'; +import { FormErrors, InlineEditableTableColumn } from './types'; + +import './inline_editable_tables.scss'; + +export interface InlineEditableTableProps { + columns: Array>; + items: Item[]; + title: string; + addButtonText?: string; + canRemoveLastItem?: boolean; + className?: string; + description?: React.ReactNode; + isLoading?: boolean; + lastItemWarning?: string; + noItemsMessage?: (editNewItem: () => void) => React.ReactNode; + uneditableItems?: Item[]; +} + +export const InlineEditableTable = ( + props: InlineEditableTableProps & { + instanceId: string; + onAdd(item: Item, onSuccess: () => void): void; + onDelete(item: Item, onSuccess: () => void): void; + onReorder?(items: Item[], oldItems: Item[], onSuccess: () => void): void; + onUpdate(item: Item, onSuccess: () => void): void; + transformItem?(item: Item): Item; + validateItem?(item: Item): FormErrors; + } +) => { + const { + instanceId, + columns, + onAdd, + onDelete, + onReorder, + onUpdate, + transformItem, + validateItem, + ...rest + } = props; + return ( + + + + ); +}; + +export const InlineEditableTableContents = ({ + columns, + items, + title, + addButtonText, + canRemoveLastItem, + className, + description, + isLoading, + lastItemWarning, + noItemsMessage = () => null, + uneditableItems, + ...rest +}: InlineEditableTableProps) => { + const { editingItemId, isEditing, isEditingUnsavedItem } = useValues(InlineEditableTableLogic); + const { editNewItem, reorderItems } = useActions(InlineEditableTableLogic); + + // TODO These two things shoud just be selectors + const isEditingItem = (item: Item) => item.id === editingItemId; + const isActivelyEditing = (item: Item) => isEditing && isEditingItem(item); + + const displayedItems = isEditingUnsavedItem + ? uneditableItems + ? [EMPTY_ITEM, ...items] + : [...items, EMPTY_ITEM] + : items; + + const updatedColumns = getUpdatedColumns({ + columns, + // TODO We shouldn't need this cast here + displayedItems: displayedItems as Item[], + isActivelyEditing, + canRemoveLastItem, + isLoading, + lastItemWarning, + uneditableItems, + }); + + return ( + <> + + + +

{title}

+
+ {!!description && ( + <> + + + {description} + + + )} +
+ + + {addButtonText || + i18n.translate('xpack.enterpriseSearch.inlineEditableTable.newRowButtonLabel', { + defaultMessage: 'New row', + })} + + +
+ + ({ + className: classNames({ + 'is-being-edited': isActivelyEditing(item), + }), + })} + noItemsMessage={noItemsMessage(editNewItem)} + onReorder={reorderItems} + disableDragging={isEditing} + /> + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.test.ts new file mode 100644 index 0000000000000..f690a38620ecb --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.test.ts @@ -0,0 +1,434 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.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 { LogicMounter } from '../../../__mocks__/kea_logic'; + +import { omit } from 'lodash'; + +import { InlineEditableTableLogic } from './inline_editable_table_logic'; + +interface Foo { + id: number; + foo: string; + bar: string; +} + +describe('InlineEditableTableLogic', () => { + const { mount } = new LogicMounter(InlineEditableTableLogic); + + const DEFAULT_VALUES = { + editingItemId: null, + editingItemValue: null, + formErrors: {}, + isEditing: false, + }; + + const SELECTORS = { + doesEditingItemValueContainEmptyProperty: false, + isEditingUnsavedItem: false, + }; + + // Values without selectors + const logicValuesWithoutSelectors = (logic: any) => omit(logic.values, Object.keys(SELECTORS)); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + const DEFAULT_LOGIC_PARAMS = { + instanceId: '1', + columns: [ + { + field: 'foo', + render: jest.fn(), + editingRender: jest.fn(), + }, + { + field: 'bar', + render: jest.fn(), + editingRender: jest.fn(), + }, + ], + onAdd: jest.fn(), + onDelete: jest.fn(), + onReorder: jest.fn(), + onUpdate: jest.fn(), + transformItem: jest.fn(), + validateItem: jest.fn(), + }; + + const mountLogic = (values: object = {}, params: object = DEFAULT_LOGIC_PARAMS) => + mount(values, params); + + it('has expected default values', () => { + const logic = mountLogic(); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + ...SELECTORS, + }); + }); + + describe('actions', () => { + describe('deleteItem', () => { + const logic = mountLogic(); + logic.actions.deleteItem(); + expect(logicValuesWithoutSelectors(logic)).toEqual(DEFAULT_VALUES); + }); + + describe('doneEditing', () => { + it('resets a bunch of values', () => { + const logic = mountLogic({ + isEditing: true, + editingItemId: 1, + editingItemValue: {}, + formErrors: { foo: 'I am error' }, + }); + logic.actions.doneEditing(); + expect(logicValuesWithoutSelectors(logic)).toEqual(DEFAULT_VALUES); + }); + }); + + describe('editNewItem', () => { + it('updates state to reflect a new item being edited', () => { + const logic = mountLogic({ + isEditing: false, + editingItemId: 1, + editingItemValue: { + id: 1, + foo: 'some foo', + bar: 'some bar', + }, + }); + logic.actions.editNewItem(); + expect(logicValuesWithoutSelectors(logic)).toEqual({ + ...DEFAULT_VALUES, + isEditing: true, + editingItemId: null, + editingItemValue: { + // Note that new values do not yet have an id + foo: '', + bar: '', + }, + }); + }); + }); + + describe('editExistingItem', () => { + it('updates state to reflect the item that was passed being edited', () => { + const logic = mountLogic({ + isEditing: false, + editingItemId: 1, + editingItemValue: { + id: 1, + foo: '', + bar: '', + }, + }); + logic.actions.editExistingItem({ + id: 2, + foo: 'existing foo', + bar: 'existing bar', + }); + expect(logicValuesWithoutSelectors(logic)).toEqual({ + ...DEFAULT_VALUES, + isEditing: true, + editingItemId: 2, + editingItemValue: { + id: 2, + foo: 'existing foo', + bar: 'existing bar', + }, + }); + }); + }); + + describe('setFormErrors', () => { + it('sets formErrors', () => { + const formErrors = { + bar: 'I am an error', + }; + const logic = mountLogic(); + logic.actions.setFormErrors(formErrors); + expect(logicValuesWithoutSelectors(logic)).toEqual({ + ...DEFAULT_VALUES, + formErrors, + }); + }); + }); + + describe('setEditingItemValue', () => { + it('updates the state of the item currently being edited and resets form errors', () => { + const logic = mountLogic({ + editingItemValue: { + id: 1, + foo: '', + bar: '', + }, + formErrors: { foo: 'I am error' }, + }); + logic.actions.setEditingItemValue({ + id: 1, + foo: 'blah blah', + bar: '', + }); + expect(logicValuesWithoutSelectors(logic)).toEqual({ + ...DEFAULT_VALUES, + editingItemValue: { + id: 1, + foo: 'blah blah', + bar: '', + }, + formErrors: {}, + }); + }); + }); + }); + + describe('selectors', () => { + describe('isEditingUnsavedItem', () => { + it('is true when the user is currently editing an unsaved item', () => { + const logic = mountLogic({ + isEditing: true, + editingItemId: null, + }); + + expect(logic.values.isEditingUnsavedItem).toBe(true); + }); + + it('is false when the user is NOT currently editing an unsaved item', () => { + const logic = mountLogic({ + isEditing: true, + editingItemId: 1, + }); + + expect(logic.values.isEditingUnsavedItem).toBe(false); + }); + }); + + describe('doesEditingItemValueContainEmptyProperty', () => { + it('is true when the user is currently editing an item that has empty properties', () => { + const logic = mountLogic({ + isEditing: true, + editingItemValue: { + id: 1, + foo: '', + }, + editingItemId: 1, + }); + + expect(logic.values.doesEditingItemValueContainEmptyProperty).toBe(true); + }); + + it('is false when no properties are empty', () => { + const logic = mountLogic({ + isEditing: true, + editingItemValue: { + id: 1, + foo: 'foo', + }, + editingItemId: 1, + }); + + expect(logic.values.doesEditingItemValueContainEmptyProperty).toBe(false); + }); + + it('is false when the user is not editing anything', () => { + const logic = mountLogic({ + isEditing: true, + editingItemValue: null, + editingItemId: null, + }); + + expect(logic.values.doesEditingItemValueContainEmptyProperty).toBe(false); + }); + }); + }); + + describe('listeners', () => { + describe('reorderItems', () => { + it('will call the provided onReorder callback', () => { + const items: Foo[] = []; + const oldItems: Foo[] = []; + const logic = mountLogic(); + logic.actions.reorderItems(items, oldItems); + expect(DEFAULT_LOGIC_PARAMS.onReorder).toHaveBeenCalledWith( + items, + oldItems, + expect.any(Function) + ); + }); + + it('will not call the onReorder callback if one was not provided', () => { + const items: Foo[] = []; + const oldItems: Foo[] = []; + const logic = mountLogic( + {}, + { + ...DEFAULT_LOGIC_PARAMS, + onReorder: undefined, + } + ); + logic.actions.reorderItems(items, oldItems); + }); + }); + + describe('saveExistingItem', () => { + it('will call the provided onUpdate callback if the item being edited validates', () => { + const editingItemValue = {}; + DEFAULT_LOGIC_PARAMS.validateItem.mockReturnValue({}); + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + logic.actions.saveExistingItem(); + expect(DEFAULT_LOGIC_PARAMS.onUpdate).toHaveBeenCalledWith( + editingItemValue, + expect.any(Function) + ); + }); + + it('will set form errors and not call the provided onUpdate callback if the item being edited does not validate', () => { + const editingItemValue = {}; + const formErrors = { + foo: 'some error', + }; + DEFAULT_LOGIC_PARAMS.validateItem.mockReturnValue(formErrors); + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + jest.spyOn(logic.actions, 'setFormErrors'); + logic.actions.saveExistingItem(); + expect(DEFAULT_LOGIC_PARAMS.onUpdate).not.toHaveBeenCalled(); + expect(logic.actions.setFormErrors).toHaveBeenCalledWith(formErrors); + }); + + it('will do neither if no value is currently being edited', () => { + const editingItemValue = null; + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + jest.spyOn(logic.actions, 'setFormErrors'); + logic.actions.saveExistingItem(); + expect(DEFAULT_LOGIC_PARAMS.onUpdate).not.toHaveBeenCalled(); + expect(logic.actions.setFormErrors).not.toHaveBeenCalled(); + }); + + it('will always call the provided onUpdate callback if no validateItem param was provided', () => { + const editingItemValue = {}; + const logic = mountLogic( + { + ...DEFAULT_VALUES, + editingItemValue, + }, + { + ...DEFAULT_LOGIC_PARAMS, + validateItem: undefined, + } + ); + logic.actions.saveExistingItem(); + expect(DEFAULT_LOGIC_PARAMS.onUpdate).toHaveBeenCalledWith( + editingItemValue, + expect.any(Function) + ); + }); + }); + + describe('saveNewItem', () => { + it('will call the provided onAdd callback if the new item validates', () => { + const editingItemValue = {}; + DEFAULT_LOGIC_PARAMS.validateItem.mockReturnValue({}); + const logic = mountLogic( + { + ...DEFAULT_VALUES, + editingItemValue, + }, + { + ...DEFAULT_LOGIC_PARAMS, + transformItem: undefined, + } + ); + logic.actions.saveNewItem(); + expect(DEFAULT_LOGIC_PARAMS.onAdd).toHaveBeenCalledWith( + editingItemValue, + expect.any(Function) + ); + }); + + it('will transform the item first if transformItem callback is provided', () => { + const editingItemValue = {}; + const transformedItem = {}; + DEFAULT_LOGIC_PARAMS.validateItem.mockReturnValue({}); + DEFAULT_LOGIC_PARAMS.transformItem.mockReturnValue(transformedItem); + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + logic.actions.saveNewItem(); + expect(DEFAULT_LOGIC_PARAMS.onAdd).toHaveBeenCalledWith( + transformedItem, + expect.any(Function) + ); + }); + + it('will set form errors and not call the provided onAdd callback if the item being edited does not validate', () => { + const editingItemValue = {}; + const formErrors = { + foo: 'some error', + }; + DEFAULT_LOGIC_PARAMS.validateItem.mockReturnValue(formErrors); + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + jest.spyOn(logic.actions, 'setFormErrors'); + logic.actions.saveNewItem(); + expect(DEFAULT_LOGIC_PARAMS.onAdd).not.toHaveBeenCalled(); + expect(logic.actions.setFormErrors).toHaveBeenCalledWith(formErrors); + }); + + it('will do nothing if no value is currently being edited', () => { + const editingItemValue = null; + const logic = mountLogic({ + ...DEFAULT_VALUES, + editingItemValue, + }); + jest.spyOn(logic.actions, 'setFormErrors'); + logic.actions.saveNewItem(); + expect(DEFAULT_LOGIC_PARAMS.onAdd).not.toHaveBeenCalled(); + expect(logic.actions.setFormErrors).not.toHaveBeenCalled(); + }); + + it('will always call the provided onAdd callback if no validateItem param was provided', () => { + const editingItemValue = {}; + const logic = mountLogic( + { + ...DEFAULT_VALUES, + editingItemValue, + }, + { + ...DEFAULT_LOGIC_PARAMS, + validateItem: undefined, + transformItem: undefined, + } + ); + logic.actions.saveNewItem(); + expect(DEFAULT_LOGIC_PARAMS.onAdd).toHaveBeenCalledWith( + editingItemValue, + expect.any(Function) + ); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.ts new file mode 100644 index 0000000000000..0230fc0754120 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_table_logic.ts @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { ItemWithAnID } from '../types'; + +import { FormErrors, InlineEditableTableColumn } from './types'; + +interface InlineEditableTableActions { + deleteItem(item: Item): { item: Item }; + doneEditing(): void; + editNewItem(): void; + editExistingItem(item: Item): { item: Item }; + reorderItems(items: Item[], oldItems: Item[]): { items: Item[]; oldItems: Item[] }; + saveExistingItem(): void; + saveNewItem(): void; + setEditingItemValue(newValue: Item): { item: Item }; + setFormErrors(formErrors: FormErrors): { formErrors: FormErrors }; +} + +const generateEmptyItem = ( + columns: Array> +): Item => { + const emptyItem = columns.reduce((acc, column) => ({ ...acc, [column.field]: '' }), {}) as Item; + return emptyItem; +}; + +const getUnsavedItemId = () => null; +const doesIdMatchUnsavedId = (idToCheck: number) => idToCheck === getUnsavedItemId(); + +interface InlineEditableTableValues { + // TODO This could likely be a selector + isEditing: boolean; + // TODO we should editingItemValue have editingItemValue and editingItemId should be a selector + editingItemId: Item['id'] | null; // editingItem is null when the user is editing a new but not saved item + editingItemValue: Item | null; + formErrors: FormErrors; + isEditingUnsavedItem: boolean; + doesEditingItemValueContainEmptyProperty: boolean; +} + +interface InlineEditableTableProps { + columns: Array>; + instanceId: string; + // TODO Because these callbacks are params, they are only set on the logic once (i.e., they are cached) + // which makes using "useState" to back this really hard. + onAdd(item: Item, onSuccess: () => void): void; + onDelete(item: Item, onSuccess: () => void): void; + onReorder?(items: Item[], oldItems: Item[], onSuccess: () => void): void; + onUpdate(item: Item, onSuccess: () => void): void; + transformItem?(item: Item): Item; + validateItem?(item: Item): FormErrors; +} + +type InlineEditableTableLogicType = MakeLogicType< + InlineEditableTableValues, + InlineEditableTableActions, + InlineEditableTableProps +>; + +export const InlineEditableTableLogic = kea>({ + path: (key: string) => ['enterprise_search', 'inline_editable_table_logic', key], + key: (props) => props.instanceId, + actions: () => ({ + deleteItem: (item) => ({ item }), + doneEditing: true, + editNewItem: true, + editExistingItem: (item) => ({ item }), + reorderItems: (items, oldItems) => ({ items, oldItems }), + saveExistingItem: true, + saveNewItem: true, + setEditingItemValue: (newValue) => ({ item: newValue }), + setFormErrors: (formErrors) => ({ formErrors }), + }), + reducers: ({ props: { columns } }) => ({ + isEditing: [ + false, + { + doneEditing: () => false, + editNewItem: () => true, + editExistingItem: () => true, + }, + ], + editingItemId: [ + null, + { + doneEditing: () => null, + editNewItem: () => getUnsavedItemId(), + editExistingItem: (_, { item }) => item.id, + }, + ], + editingItemValue: [ + null, + { + doneEditing: () => null, + editNewItem: () => generateEmptyItem(columns), + editExistingItem: (_, { item }) => item, + setEditingItemValue: (_, { item }) => item, + }, + ], + formErrors: [ + {}, + { + doneEditing: () => ({}), + setEditingItemValue: () => ({}), + setFormErrors: (_, { formErrors }) => formErrors, + }, + ], + }), + selectors: ({ selectors }) => ({ + isEditingUnsavedItem: [ + () => [selectors.isEditing, selectors.editingItemId], + (isEditing, editingItemId) => { + return isEditing && doesIdMatchUnsavedId(editingItemId); + }, + ], + doesEditingItemValueContainEmptyProperty: [ + () => [selectors.editingItemValue], + (editingItemValue: object) => { + return ( + Object.values(editingItemValue || {}).findIndex( + (value) => typeof value === 'string' && value.length === 0 + ) > -1 + ); + }, + ], + }), + listeners: ({ + values, + actions, + props: { onAdd, onDelete, onReorder, onUpdate, transformItem, validateItem }, + }) => ({ + saveNewItem: () => { + if (!values.editingItemValue) return; + + const itemToSave = transformItem + ? transformItem(values.editingItemValue) + : values.editingItemValue; + const errors: FormErrors = + typeof validateItem === 'undefined' ? {} : validateItem(itemToSave); + if (Object.keys(errors).length) { + actions.setFormErrors(errors); + } else { + onAdd(itemToSave, actions.doneEditing); + } + }, + deleteItem: ({ item: itemToDelete }) => { + onDelete(itemToDelete, actions.doneEditing); + }, + reorderItems: ({ items, oldItems }) => { + if (onReorder) onReorder(items, oldItems, actions.doneEditing); + }, + saveExistingItem: () => { + if (!values.editingItemValue) return; + const itemToSave = values.editingItemValue; + const errors: FormErrors = + typeof validateItem === 'undefined' ? {} : validateItem(itemToSave); + if (Object.keys(errors).length) { + actions.setFormErrors(errors); + } else { + onUpdate(itemToSave, actions.doneEditing); + } + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_tables.scss b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_tables.scss new file mode 100644 index 0000000000000..5a000dcc4899e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/inline_editable_tables.scss @@ -0,0 +1,3 @@ +.inlineEditableTable__descriptionText { + max-width: 60rem; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/types.ts new file mode 100644 index 0000000000000..89c89d665781e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/inline_editable_table/types.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { Column } from '../reorderable_table/types'; +import { ItemWithAnID } from '../types'; + +export interface FormErrors { + [key: string]: string | undefined; +} + +export interface EditingRenderFlags { + isInvalid: boolean; + isLoading: boolean; +} + +export interface InlineEditableTableColumn extends Column { + field: string; + editingRender: ( + item: Item, + onChange: (value: string) => void, + flags: EditingRenderFlags + ) => React.ReactNode; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/reorderable_table/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/reorderable_table/types.ts index 77c1495977d2f..1560906b5c8aa 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/tables/reorderable_table/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/reorderable_table/types.ts @@ -11,6 +11,6 @@ export interface DraggableUXStyles { flexGrow?: number; } export interface Column extends DraggableUXStyles { - name: string; + name?: string; render: (item: Item) => React.ReactNode; } diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/tables/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/tables/types.ts new file mode 100644 index 0000000000000..f2a2531726b33 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/tables/types.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type ItemWithAnID = { + id: number | null; + created_at?: string; +} & object; diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 9f9f0dab6efac..54cb0846207a3 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -42,7 +42,7 @@ import { migrateSettingsToV7130, migrateOutputToV7130, } from './migrations/to_v7_13_0'; -import { migratePackagePolicyToV7140 } from './migrations/to_v7_14_0'; +import { migratePackagePolicyToV7140, migrateInstallationToV7140 } from './migrations/to_v7_14_0'; import { migratePackagePolicyToV7150 } from './migrations/to_v7_15_0'; /* @@ -320,6 +320,9 @@ const getSavedObjectTypes = ( install_source: { type: 'keyword' }, }, }, + migrations: { + '7.14.0': migrateInstallationToV7140, + }, }, [ASSETS_SAVED_OBJECT_TYPE]: { name: ASSETS_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_10_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_10_0.ts index 39e65efcf2ab1..64338690977c9 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_10_0.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_10_0.ts @@ -15,7 +15,6 @@ import type { EnrollmentAPIKey, Settings, AgentAction, - Installation, } from '../../types'; export const migrateAgentToV7100: SavedObjectMigrationFn< @@ -127,12 +126,3 @@ export const migrateAgentActionToV7100 = ( }, }); }; - -export const migrateInstallationToV7100: SavedObjectMigrationFn< - Exclude, - Installation -> = (installationDoc) => { - installationDoc.attributes.install_source = 'registry'; - - return installationDoc; -}; diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_14_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_14_0.ts index 3255e15c6ceec..90c9ac5f8e89b 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_14_0.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v7_14_0.ts @@ -7,7 +7,7 @@ import type { SavedObjectMigrationFn } from 'kibana/server'; -import type { PackagePolicy } from '../../../common'; +import type { PackagePolicy, Installation } from '../../../common'; import { migrateEndpointPackagePolicyToV7140 } from './security_solution'; @@ -27,3 +27,17 @@ export const migratePackagePolicyToV7140: SavedObjectMigrationFn = ( + doc +) => { + // Fix a missing migration for user that used Fleet before 7.9 + if (!doc.attributes.install_source) { + doc.attributes.install_source = 'registry'; + } + if (!doc.attributes.install_version) { + doc.attributes.install_version = doc.attributes.version; + } + + return doc; +}; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts index 7fc8d59628738..6febd27286ad1 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts @@ -19,7 +19,7 @@ jest.mock('./common', () => { }); import { ResponseError } from '@elastic/elasticsearch/lib/errors'; -import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; import type { ElasticsearchClient, SavedObject, SavedObjectsClientContract } from 'kibana/server'; import { ElasticsearchAssetType } from '../../../../types'; diff --git a/x-pack/plugins/fleet/server/services/epm/registry/registry_url.ts b/x-pack/plugins/fleet/server/services/epm/registry/registry_url.ts index 8c637006fb0cd..568aafddecbad 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/registry_url.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/registry_url.ts @@ -35,9 +35,6 @@ export const getRegistryUrl = (): string => { const isEnterprise = licenseService.isEnterprise(); if (customUrl && isEnterprise) { - appContextService - .getLogger() - .info('Custom registry url is an experimental feature and is unsupported.'); return customUrl; } diff --git a/x-pack/plugins/fleet/server/services/fleet_server/index.ts b/x-pack/plugins/fleet/server/services/fleet_server/index.ts index 076bee7d0e7a4..733d962a86e9e 100644 --- a/x-pack/plugins/fleet/server/services/fleet_server/index.ts +++ b/x-pack/plugins/fleet/server/services/fleet_server/index.ts @@ -59,6 +59,13 @@ export async function startFleetServerSetup() { try { // We need licence to be initialized before using the SO service. await licenseService.getLicenseInformation$()?.pipe(first())?.toPromise(); + + const customUrl = appContextService.getConfig()?.registryUrl; + const isEnterprise = licenseService.isEnterprise(); + if (customUrl && isEnterprise) { + logger.info('Custom registry url is an experimental feature and is unsupported.'); + } + await runFleetServerMigration(); _isFleetServerSetup = true; } catch (err) { diff --git a/x-pack/plugins/graph/kibana.json b/x-pack/plugins/graph/kibana.json index 4e653393100c9..e13cd8a0adba1 100644 --- a/x-pack/plugins/graph/kibana.json +++ b/x-pack/plugins/graph/kibana.json @@ -7,5 +7,9 @@ "requiredPlugins": ["licensing", "data", "navigation", "savedObjects", "kibanaLegacy"], "optionalPlugins": ["home", "features"], "configPath": ["xpack", "graph"], - "requiredBundles": ["kibanaUtils", "kibanaReact", "home"] + "requiredBundles": ["kibanaUtils", "kibanaReact", "home"], + "owner": { + "name": "Kibana App", + "githubTeam": "kibana-app" + } } diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap index c3136a7ae671f..97d1c1757e85a 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap +++ b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap @@ -106,6 +106,36 @@ exports[`policy table should show empty state when there are not any policies 1`
`; +exports[`policy table should sort when linked index templates header is clicked 1`] = ` +Array [ + "testy1", + "testy3", + "testy5", + "testy7", + "testy9", + "testy11", + "testy13", + "testy15", + "testy17", + "testy19", +] +`; + +exports[`policy table should sort when linked index templates header is clicked 2`] = ` +Array [ + "testy0", + "testy104", + "testy102", + "testy100", + "testy98", + "testy96", + "testy94", + "testy92", + "testy90", + "testy88", +] +`; + exports[`policy table should sort when linked indices header is clicked 1`] = ` Array [ "testy1", diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/init_test_bed.tsx b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/init_test_bed.tsx index 4f057e04c85d4..54d68edc7382f 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/init_test_bed.tsx +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/init_test_bed.tsx @@ -23,9 +23,6 @@ const getTestBedConfig = (testBedConfigArgs?: Partial): TestBedCo initialEntries: [`/policies/edit/${POLICY_NAME}`], componentRoutePath: `/policies/edit/:policyName`, }, - defaultProps: { - getUrlForApp: () => {}, - }, ...testBedConfigArgs, }; }; @@ -38,6 +35,7 @@ const EditPolicyContainer = ({ appServicesContext, ...rest }: any) => { services={{ breadcrumbService, license: licensingMock.createLicense({ license: { type: 'enterprise' } }), + getUrlForApp: () => {}, ...appServicesContext, }} > diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/rollover_actions.ts b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/rollover_actions.ts index 6d05f3d63f577..798b74e40055f 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/rollover_actions.ts +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/actions/rollover_actions.ts @@ -15,39 +15,65 @@ const createSetPrimaryShardSizeAction = (testBed: TestBed) => async ( units?: string ) => { const { find, component } = testBed; + await act(async () => { find('hot-selectedMaxPrimaryShardSize').simulate('change', { target: { value } }); - if (units) { - find('hot-selectedMaxPrimaryShardSize.select').simulate('change', { - target: { value: units }, - }); - } }); component.update(); + + if (units) { + act(() => { + find('hot-selectedMaxPrimaryShardSize.show-filters-button').simulate('click'); + }); + component.update(); + + act(() => { + find(`hot-selectedMaxPrimaryShardSize.filter-option-${units}`).simulate('click'); + }); + component.update(); + } }; const createSetMaxAgeAction = (testBed: TestBed) => async (value: string, units?: string) => { const { find, component } = testBed; + await act(async () => { find('hot-selectedMaxAge').simulate('change', { target: { value } }); - if (units) { - find('hot-selectedMaxAgeUnits.select').simulate('change', { target: { value: units } }); - } }); component.update(); + + if (units) { + act(() => { + find('hot-selectedMaxAgeUnits.show-filters-button').simulate('click'); + }); + component.update(); + + act(() => { + find(`hot-selectedMaxAgeUnits.filter-option-${units}`).simulate('click'); + }); + component.update(); + } }; const createSetMaxSizeAction = (testBed: TestBed) => async (value: string, units?: string) => { const { find, component } = testBed; + await act(async () => { find('hot-selectedMaxSizeStored').simulate('change', { target: { value } }); - if (units) { - find('hot-selectedMaxSizeStoredUnits.select').simulate('change', { - target: { value: units }, - }); - } }); component.update(); + + if (units) { + act(() => { + find('hot-selectedMaxSizeStoredUnits.show-filters-button').simulate('click'); + }); + component.update(); + + act(() => { + find(`hot-selectedMaxSizeStoredUnits.filter-option-${units}`).simulate('click'); + }); + component.update(); + } }; export const createRolloverActions = (testBed: TestBed) => { diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx b/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx index 048776d7850ab..2fafbc6de98e4 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx +++ b/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx @@ -14,7 +14,6 @@ import { findTestSubject, takeMountedSnapshot } from '@elastic/eui/lib/test'; import { fatalErrorsServiceMock, injectedMetadataServiceMock, - scopedHistoryMock, } from '../../../../src/core/public/mocks'; import { HttpService } from '../../../../src/core/public/http'; import { usageCollectionPluginMock } from '../../../../src/plugins/usage_collection/public/mocks'; @@ -23,6 +22,7 @@ import { PolicyFromES } from '../common/types'; import { PolicyTable } from '../public/application/sections/policy_table/policy_table'; import { init as initHttp } from '../public/application/services/http'; import { init as initUiMetric } from '../public/application/services/ui_metric'; +import { KibanaContextProvider } from '../public/shared_imports'; initHttp( new HttpService().setup({ @@ -36,12 +36,25 @@ initUiMetric(usageCollectionPluginMock.createSetupContract()); const testDate = '2020-07-21T14:16:58.666Z'; const testDateFormatted = moment(testDate).format('YYYY-MM-DD HH:mm:ss'); -const policies: PolicyFromES[] = []; -for (let i = 0; i < 105; i++) { +const testPolicy = { + version: 0, + modifiedDate: testDate, + indices: [`index1`], + indexTemplates: [`indexTemplate1`, `indexTemplate2`, `indexTemplate3`, `indexTemplate4`], + name: `testy0`, + policy: { + name: `testy0`, + phases: {}, + }, +}; + +const policies: PolicyFromES[] = [testPolicy]; +for (let i = 1; i < 105; i++) { policies.push({ version: i, - modifiedDate: i === 0 ? testDate : moment().subtract(i, 'days').toISOString(), + modifiedDate: moment().subtract(i, 'days').toISOString(), indices: i % 2 === 0 ? [`index${i}`] : [], + indexTemplates: i % 2 === 0 ? [`indexTemplate${i}`] : [], name: `testy${i}`, policy: { name: `testy${i}`, @@ -49,7 +62,14 @@ for (let i = 0; i < 105; i++) { }, }); } -jest.mock(''); + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useHistory: () => ({ + createHref: jest.fn(), + }), +})); + let component: ReactElement; const snapshot = (rendered: string[]) => { @@ -88,24 +108,14 @@ const openContextMenu = (buttonIndex: number) => { describe('policy table', () => { beforeEach(() => { component = ( - + '' }}> + + ); }); test('should show empty state when there are not any policies', () => { - component = ( - - ); + component = ; const rendered = mountWithIntl(component); mountedSnapshot(rendered); }); @@ -147,6 +157,9 @@ describe('policy table', () => { test('should sort when linked indices header is clicked', () => { testSort('indices'); }); + test('should sort when linked index templates header is clicked', () => { + testSort('indexTemplates'); + }); test('should have proper actions in context menu when there are linked indices', () => { const rendered = openContextMenu(0); const buttons = rendered.find('button.euiContextMenuItem'); @@ -180,9 +193,21 @@ describe('policy table', () => { }); test('displays policy properties', () => { const rendered = mountWithIntl(component); - const firstRow = findTestSubject(rendered, 'policyTableRow').at(0).text(); - const version = 0; - const numberOfIndices = 1; - expect(firstRow).toBe(`testy0${numberOfIndices}${version}${testDateFormatted}Actions`); + const firstRow = findTestSubject(rendered, 'policyTableRow-testy0').text(); + const numberOfIndices = testPolicy.indices.length; + const numberOfIndexTemplates = testPolicy.indexTemplates.length; + expect(firstRow).toBe( + `testy0${numberOfIndices}${numberOfIndexTemplates}${testPolicy.version}${testDateFormatted}Actions` + ); + }); + test('opens a flyout with index templates', () => { + const rendered = mountWithIntl(component); + const indexTemplatesButton = findTestSubject(rendered, 'viewIndexTemplates').at(0); + indexTemplatesButton.simulate('click'); + rendered.update(); + const flyoutTitle = findTestSubject(rendered, 'indexTemplatesFlyoutHeader').text(); + expect(flyoutTitle).toContain('testy0'); + const indexTemplatesLinks = findTestSubject(rendered, 'indexTemplateLink'); + expect(indexTemplatesLinks.length).toBe(testPolicy.indexTemplates.length); }); }); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/app.tsx b/x-pack/plugins/index_lifecycle_management/public/application/app.tsx index 3335720ab3065..4bc4e62ac52b6 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/app.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/app.tsx @@ -7,50 +7,25 @@ import React, { useEffect } from 'react'; import { Router, Switch, Route, Redirect } from 'react-router-dom'; -import { ScopedHistory, ApplicationStart } from 'kibana/public'; +import { ScopedHistory } from 'kibana/public'; import { METRIC_TYPE } from '@kbn/analytics'; -import { UIM_APP_LOAD } from './constants/ui_metric'; +import { UIM_APP_LOAD } from './constants'; import { EditPolicy } from './sections/edit_policy'; import { PolicyTable } from './sections/policy_table'; import { trackUiMetric } from './services/ui_metric'; import { ROUTES } from './services/navigation'; -export const AppWithRouter = ({ - history, - navigateToApp, - getUrlForApp, -}: { - history: ScopedHistory; - navigateToApp: ApplicationStart['navigateToApp']; - getUrlForApp: ApplicationStart['getUrlForApp']; -}) => ( - - - -); - -export const App = ({ - navigateToApp, - getUrlForApp, -}: { - navigateToApp: ApplicationStart['navigateToApp']; - getUrlForApp: ApplicationStart['getUrlForApp']; -}) => { +export const App = ({ history }: { history: ScopedHistory }) => { useEffect(() => trackUiMetric(METRIC_TYPE.LOADED, UIM_APP_LOAD), []); return ( - - - } - /> - } - /> - + + + + + + + ); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx b/x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx new file mode 100644 index 0000000000000..abfda9fce4ea4 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { + EuiButtonEmpty, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiInMemoryTable, + EuiLink, + EuiTitle, +} from '@elastic/eui'; +import { PolicyFromES } from '../../../common/types'; +import { useKibana } from '../../shared_imports'; +import { getTemplateDetailsLink } from '../../../../index_management/public/'; + +interface Props { + policy: PolicyFromES; + close: () => void; +} +export const IndexTemplatesFlyout: FunctionComponent = ({ policy, close }) => { + const { + services: { getUrlForApp }, + } = useKibana(); + const getUrlForIndexTemplate = (name: string) => { + return getUrlForApp('management', { + path: `data/index_management${getTemplateDetailsLink(name)}`, + }); + }; + return ( + + + +

+ +

+
+
+ + { + return ( + + {value} + + ); + }, + }, + ]} + /> + + + + + + +
+ ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx index ed0a4a83b06db..e158be26dfcc7 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx @@ -14,30 +14,31 @@ import { ILicense } from '../../../licensing/public'; import { KibanaContextProvider } from '../shared_imports'; -import { AppWithRouter } from './app'; +import { App } from './app'; import { BreadcrumbService } from './services/breadcrumbs'; +import { RedirectAppLinks } from '../../../../../src/plugins/kibana_react/public'; export const renderApp = ( element: Element, I18nContext: I18nStart['Context'], history: ScopedHistory, - navigateToApp: ApplicationStart['navigateToApp'], - getUrlForApp: ApplicationStart['getUrlForApp'], + application: ApplicationStart, breadcrumbService: BreadcrumbService, license: ILicense, cloud?: CloudSetup ): UnmountCallback => { + const { navigateToApp, getUrlForApp } = application; render( - - - - - , + + + + + + + , element ); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx index 2d3704e252ac8..7fbdaf344b8fa 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx @@ -9,16 +9,17 @@ import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { NumericField, SelectField } from '../../../../../../../shared_imports'; +import { NumericField } from '../../../../../../../shared_imports'; import { UseField } from '../../../../form'; import { ROLLOVER_FORM_PATHS } from '../../../../constants'; +import { UnitField } from './unit_field'; import { maxAgeUnits } from '../constants'; export const MaxAgeField: FunctionComponent = () => { return ( - - + + { euiFieldProps: { 'data-test-subj': `hot-selectedMaxAge`, min: 1, - }, - }} - /> - - - ), - options: maxAgeUnits, }, }} /> diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx index c6f8abef3f2c2..e847d773e2a88 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx @@ -14,8 +14,8 @@ import { ROLLOVER_FORM_PATHS } from '../../../../constants'; export const MaxDocumentCountField: FunctionComponent = () => { return ( - - + + { return ( - - + + { content={i18nTexts.deprecationMessage} /> ), - min: 1, - }, - }} - /> - - - + ), }, }} /> diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx index eed23bd48a0fa..d9c7ed5a24b99 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx @@ -9,16 +9,17 @@ import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { NumericField, SelectField } from '../../../../../../../shared_imports'; +import { NumericField } from '../../../../../../../shared_imports'; import { UseField } from '../../../../form'; import { ROLLOVER_FORM_PATHS } from '../../../../constants'; +import { UnitField } from './unit_field'; import { maxSizeStoredUnits } from '../constants'; export const MaxPrimaryShardSizeField: FunctionComponent = () => { return ( - - + + { euiFieldProps: { 'data-test-subj': 'hot-selectedMaxPrimaryShardSize', min: 1, - }, - }} - /> - - - ), }, }} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/unit_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/unit_field.tsx new file mode 100644 index 0000000000000..2ef8917d53989 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/unit_field.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent, useState } from 'react'; +import { EuiFilterSelectItem, EuiPopover, EuiButtonEmpty } from '@elastic/eui'; + +import { UseField } from '../../../../form'; + +interface Props { + path: string; + euiFieldProps?: Record; + options: Array<{ + value: string; + text: string; + }>; +} + +export const UnitField: FunctionComponent = ({ path, options, euiFieldProps }) => { + const [open, setOpen] = useState(false); + + return ( + + {(field) => { + const onSelect = (option: string) => { + field.setValue(option); + setOpen(false); + }; + + return ( + setOpen((x) => !x)} + data-test-subj="show-filters-button" + > + {options.find((x) => x.value === field.value)?.text} + + } + ownFocus + panelPaddingSize="none" + isOpen={open} + closePopover={() => setOpen(false)} + {...euiFieldProps} + > + {options.map((item) => ( + onSelect(item.value)} + data-test-subj={`filter-option-${item.value}`} + > + {item.text} + + ))} + + ); + }} + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx index 3c30c6d3a678f..d6a36b99c20aa 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx @@ -135,6 +135,7 @@ export const HotPhase: FunctionComponent = () => { {showEmptyRolloverFieldsError && ( <> = ({ canBeDisabled = true, }) => { const { - services: { cloud }, + services: { cloud, getUrlForApp }, } = useKibana(); - const { getUrlForApp, policy, license, isNewPolicy } = useEditPolicyContext(); + const { policy, license, isNewPolicy } = useEditPolicyContext(); const { isUsingSearchableSnapshotInHotPhase } = useConfiguration(); const searchableSnapshotRepoPath = `phases.${phase}.actions.searchable_snapshot.snapshot_repository`; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx index 21dd083ccf7c5..720d39695cf0e 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx @@ -18,10 +18,9 @@ import { EuiSpacer, } from '@elastic/eui'; -import { ComboBoxField, useFormData } from '../../../../../../shared_imports'; +import { ComboBoxField, useFormData, useKibana } from '../../../../../../shared_imports'; import { useLoadSnapshotPolicies } from '../../../../../services/api'; -import { useEditPolicyContext } from '../../../edit_policy_context'; import { UseField } from '../../../form'; import { FieldLoadingError, LearnMoreLink, OptionalLabel } from '../../'; @@ -29,7 +28,9 @@ import { FieldLoadingError, LearnMoreLink, OptionalLabel } from '../../'; const waitForSnapshotFormField = 'phases.delete.actions.wait_for_snapshot.policy'; export const SnapshotPoliciesField: React.FunctionComponent = () => { - const { getUrlForApp } = useEditPolicyContext(); + const { + services: { getUrlForApp }, + } = useKibana(); const { error, isLoading, data, resendRequest } = useLoadSnapshotPolicies(); const [formData] = useFormData({ watch: waitForSnapshotFormField, diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss index 983ef0ab20f69..a69f244a25aea 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss @@ -10,6 +10,7 @@ $ilmTimelineBarHeight: $euiSizeS; */ display: inline-block; width: 100%; + margin-top: $euiSizeS; &__phase:first-child { padding-left: 0; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx index da63bc87424d6..90a3b0f14459d 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx @@ -24,22 +24,10 @@ interface RouterProps { policyName: string; } -interface Props { - getUrlForApp: ( - appId: string, - options?: { - path?: string; - absolute?: boolean; - } - ) => string; -} - -export const EditPolicy: React.FunctionComponent> = ({ +export const EditPolicy: React.FunctionComponent> = ({ match: { params: { policyName }, }, - getUrlForApp, - history, }) => { const { services: { breadcrumbService, license }, @@ -105,13 +93,12 @@ export const EditPolicy: React.FunctionComponent license.hasAtLeast(MIN_SEARCHABLE_SNAPSHOT_LICENSE), }, }} > - + ); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx index 172e8259b87af..371be58920d07 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx @@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import React, { Fragment, useEffect, useMemo, useState } from 'react'; import { get } from 'lodash'; -import { RouteComponentProps } from 'react-router-dom'; +import { useHistory } from 'react-router-dom'; import { EuiButton, @@ -50,13 +50,9 @@ import { import { useEditPolicyContext } from './edit_policy_context'; import { FormInternal } from './types'; -export interface Props { - history: RouteComponentProps['history']; -} - const policyNamePath = 'name'; -export const EditPolicy: React.FunctionComponent = ({ history }) => { +export const EditPolicy: React.FunctionComponent = () => { useEffect(() => { window.scrollTo(0, 0); }, []); @@ -119,6 +115,7 @@ export const EditPolicy: React.FunctionComponent = ({ history }) => { [originalPolicyName, existingPolicies, saveAsNew] ); + const history = useHistory(); const backToPolicyList = () => { history.push('/policies'); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx index 45f0fe8544c98..9414f27c72ea9 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx @@ -6,7 +6,6 @@ */ import React, { createContext, ReactChild, useContext } from 'react'; -import { ApplicationStart } from 'kibana/public'; import { PolicyFromES, SerializedPolicy } from '../../../../common/types'; @@ -14,7 +13,6 @@ export interface EditPolicyContextValue { isNewPolicy: boolean; policy: SerializedPolicy; existingPolicies: PolicyFromES[]; - getUrlForApp: ApplicationStart['getUrlForApp']; license: { canUseSearchableSnapshot: () => boolean; }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx index 3d81bd03c3655..94d815b7ef932 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx @@ -20,7 +20,6 @@ import { EuiTablePagination, EuiTableRow, EuiTableRowCell, - EuiText, Pager, EuiContextMenuPanelDescriptor, } from '@elastic/eui'; @@ -30,12 +29,12 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { RIGHT_ALIGNMENT } from '@elastic/eui/lib/services'; import moment from 'moment'; -import { ApplicationStart } from 'kibana/public'; import { METRIC_TYPE } from '@kbn/analytics'; -import { RouteComponentProps } from 'react-router-dom'; +import { useHistory } from 'react-router-dom'; import { reactRouterNavigate } from '../../../../../../../../src/plugins/kibana_react/public'; import { getIndexListUri } from '../../../../../../index_management/public'; import { PolicyFromES } from '../../../../../common/types'; +import { useKibana } from '../../../../shared_imports'; import { getPolicyEditPath } from '../../../services/navigation'; import { sortTable } from '../../../services'; import { trackUiMetric } from '../../../services/ui_metric'; @@ -44,6 +43,7 @@ import { UIM_EDIT_CLICK } from '../../../constants'; import { TableColumn } from '../index'; import { AddPolicyToTemplateConfirmModal } from './add_policy_to_template_confirm_modal'; import { ConfirmDelete } from './confirm_delete'; +import { IndexTemplatesFlyout } from '../../../components/index_templates_flyout'; const COLUMNS: Array<[TableColumn, { label: string; width: number }]> = [ [ @@ -64,6 +64,18 @@ const COLUMNS: Array<[TableColumn, { label: string; width: number }]> = [ width: 120, }, ], + [ + 'indexTemplates', + { + label: i18n.translate( + 'xpack.indexLifecycleMgmt.policyTable.headers.linkedIndexTemplatesHeader', + { + defaultMessage: 'Linked index templates', + } + ), + width: 160, + }, + ], [ 'version', { @@ -87,18 +99,14 @@ const COLUMNS: Array<[TableColumn, { label: string; width: number }]> = [ interface Props { policies: PolicyFromES[]; totalNumber: number; - navigateToApp: ApplicationStart['navigateToApp']; setConfirmModal: (modal: ReactElement | null) => void; handleDelete: () => void; - history: RouteComponentProps['history']; } export const TableContent: React.FunctionComponent = ({ policies, totalNumber, - navigateToApp, setConfirmModal, handleDelete, - history, }) => { const [popoverPolicy, setPopoverPolicy] = useState(); const [sort, setSort] = useState<{ sortField: TableColumn; isSortAscending: boolean }>({ @@ -107,6 +115,10 @@ export const TableContent: React.FunctionComponent = ({ }); const [pageSize, setPageSize] = useState(10); const [currentPage, setCurrentPage] = useState(0); + const history = useHistory(); + const { + services: { navigateToApp }, + } = useKibana(); let sortedPolicies = sortTable(policies, sort.sortField, sort.isSortAscending); const pager = new Pager(totalNumber, pageSize, currentPage); @@ -224,7 +236,11 @@ export const TableContent: React.FunctionComponent = ({ return [panelTree]; }; - const renderRowCell = (fieldName: string, value: string | number | string[]): ReactNode => { + const renderRowCell = ( + fieldName: string, + value: string | number | string[], + policy?: PolicyFromES + ): ReactNode => { if (fieldName === 'name') { return ( = ({ ); } else if (fieldName === 'indices') { - return ( - - {value ? (value as string[]).length : '0'} - + return value ? (value as string[]).length : '0'; + } else if (fieldName === 'indexTemplates' && policy) { + return value && (value as string[]).length > 0 ? ( + setConfirmModal(renderIndexTemplatesFlyout(policy))} + > + {(value as string[]).length} + + ) : ( + '0' ); } else if (fieldName === 'modifiedDate' && value) { return moment(value).format('YYYY-MM-DD HH:mm:ss'); @@ -276,7 +300,7 @@ export const TableContent: React.FunctionComponent = ({ className={'policyTable__content--' + fieldName} width={width} > - {renderRowCell(fieldName, value)} + {renderRowCell(fieldName, value, policy)} ); } @@ -319,7 +343,7 @@ export const TableContent: React.FunctionComponent = ({ const rows = sortedPolicies.map((policy) => { const { name } = policy; return ( - + {renderRowCells(policy)} ); @@ -343,6 +367,17 @@ export const TableContent: React.FunctionComponent = ({ ); }; + const renderIndexTemplatesFlyout = (policy: PolicyFromES): ReactElement => { + return ( + { + setConfirmModal(null); + }} + /> + ); + }; + const renderPager = (): ReactNode => { return ( ; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.container.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.container.tsx index ad8d1ed87f5f2..376832bc99061 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.container.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.container.tsx @@ -6,22 +6,13 @@ */ import React, { useEffect } from 'react'; -import { ApplicationStart } from 'kibana/public'; -import { RouteComponentProps } from 'react-router-dom'; import { EuiButton, EuiEmptyPrompt, EuiLoadingSpinner, EuiPageContent } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { PolicyTable as PresentationComponent } from './policy_table'; import { useKibana } from '../../../shared_imports'; import { useLoadPoliciesList } from '../../services/api'; -interface Props { - navigateToApp: ApplicationStart['navigateToApp']; -} - -export const PolicyTable: React.FunctionComponent = ({ - navigateToApp, - history, -}) => { +export const PolicyTable: React.FunctionComponent = () => { const { services: { breadcrumbService }, } = useKibana(); @@ -77,12 +68,5 @@ export const PolicyTable: React.FunctionComponent = ); } - return ( - - ); + return ; }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.tsx index 30a2b9e68d69d..28cc2b17dcbff 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/policy_table.tsx @@ -19,8 +19,7 @@ import { EuiPageHeader, EuiPageContent, } from '@elastic/eui'; -import { ApplicationStart } from 'kibana/public'; -import { RouteComponentProps } from 'react-router-dom'; +import { useHistory } from 'react-router-dom'; import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public'; import { PolicyFromES } from '../../../../common/types'; import { filterItems } from '../../services'; @@ -29,19 +28,13 @@ import { getPolicyCreatePath } from '../../services/navigation'; interface Props { policies: PolicyFromES[]; - history: RouteComponentProps['history']; - navigateToApp: ApplicationStart['navigateToApp']; updatePolicies: () => void; } -export const PolicyTable: React.FunctionComponent = ({ - policies, - history, - navigateToApp, - updatePolicies, -}) => { +export const PolicyTable: React.FunctionComponent = ({ policies, updatePolicies }) => { const [confirmModal, setConfirmModal] = useState(); const [filter, setFilter] = useState(''); + const history = useHistory(); const createPolicyButton = ( = ({ { updatePolicies(); setConfirmModal(null); }} - history={history} /> ); } else { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/sort_table.ts b/x-pack/plugins/index_lifecycle_management/public/application/services/sort_table.ts index a1e43d3b0d745..8c381f1e90daf 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/services/sort_table.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/services/sort_table.ts @@ -15,7 +15,7 @@ export const sortTable = ( isSortAscending: boolean ): PolicyFromES[] => { let sorter; - if (sortField === 'indices') { + if (sortField === 'indices' || sortField === 'indexTemplates') { sorter = (item: PolicyFromES) => (item[sortField] || []).length; } else { sorter = (item: PolicyFromES) => item[sortField]; diff --git a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx b/x-pack/plugins/index_lifecycle_management/public/plugin.tsx index 163fe2b3d9b5c..8381122b49b5e 100644 --- a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/plugin.tsx @@ -55,7 +55,7 @@ export class IndexLifecycleManagementPlugin chrome: { docTitle }, i18n: { Context: I18nContext }, docLinks: { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION }, - application: { navigateToApp, getUrlForApp }, + application, } = coreStart; const license = await licensing.license$.pipe(first()).toPromise(); @@ -74,8 +74,7 @@ export class IndexLifecycleManagementPlugin element, I18nContext, history, - navigateToApp, - getUrlForApp, + application, this.breadcrumbService, license, cloud diff --git a/x-pack/plugins/index_lifecycle_management/public/types.ts b/x-pack/plugins/index_lifecycle_management/public/types.ts index adfca9ad41b26..c54f5620a2859 100644 --- a/x-pack/plugins/index_lifecycle_management/public/types.ts +++ b/x-pack/plugins/index_lifecycle_management/public/types.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +import { ApplicationStart } from 'kibana/public'; import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/public'; import { ManagementSetup } from '../../../../src/plugins/management/public'; @@ -37,4 +39,6 @@ export interface AppServicesContext { breadcrumbService: BreadcrumbService; license: ILicense; cloud?: CloudSetup; + navigateToApp: ApplicationStart['navigateToApp']; + getUrlForApp: ApplicationStart['getUrlForApp']; } diff --git a/x-pack/plugins/index_management/public/index.ts b/x-pack/plugins/index_management/public/index.ts index 3df5fef4b02fc..10feabf0a9d0f 100644 --- a/x-pack/plugins/index_management/public/index.ts +++ b/x-pack/plugins/index_management/public/index.ts @@ -15,6 +15,6 @@ export const plugin = () => { export { IndexManagementPluginSetup } from './types'; -export { getIndexListUri } from './application/services/routing'; +export { getIndexListUri, getTemplateDetailsLink } from './application/services/routing'; export type { Index } from '../common'; diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/index.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/index.ts index efd38ef0bb13b..2dd35c20a5632 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/index.ts +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/index.ts @@ -7,9 +7,9 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { AlertTypeModel } from '../../../../triggers_actions_ui/public/types'; +import { ObservabilityRuleTypeModel } from '../../../../observability/public'; import { validateMetricThreshold } from './components/validation'; +import { formatReason } from './rule_data_formatters'; import { AlertTypeParams } from '../../../../alerting/common'; import { MetricExpressionParams, @@ -21,7 +21,7 @@ interface MetricThresholdAlertTypeParams extends AlertTypeParams { criteria: MetricExpressionParams[]; } -export function createMetricThresholdAlertType(): AlertTypeModel { +export function createMetricThresholdAlertType(): ObservabilityRuleTypeModel { return { id: METRIC_THRESHOLD_ALERT_TYPE_ID, description: i18n.translate('xpack.infra.metrics.alertFlyout.alertDescription', { @@ -44,5 +44,6 @@ Reason: } ), requiresAppContext: false, + format: formatReason, }; } diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts new file mode 100644 index 0000000000000..7a0140ab05652 --- /dev/null +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ALERT_REASON } from '@kbn/rule-data-utils'; +import { ObservabilityRuleTypeFormatter } from '../../../../observability/public'; + +export const formatReason: ObservabilityRuleTypeFormatter = ({ fields }) => { + const reason = fields[ALERT_REASON] ?? '-'; + const link = '/app/metrics/explorer'; // TODO https://github.com/elastic/kibana/issues/106497 & https://github.com/elastic/kibana/issues/106958 + + return { + reason, + link, + }; +}; diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts index 3c22c1ad7a76d..76e3e777e6378 100644 --- a/x-pack/plugins/infra/public/plugin.ts +++ b/x-pack/plugins/infra/public/plugin.ts @@ -41,8 +41,9 @@ export class Plugin implements InfraClientPluginClass { pluginsSetup.observability.observabilityRuleTypeRegistry.register( createLogThresholdAlertType() ); - pluginsSetup.triggersActionsUi.ruleTypeRegistry.register(createMetricThresholdAlertType()); - + pluginsSetup.observability.observabilityRuleTypeRegistry.register( + createMetricThresholdAlertType() + ); pluginsSetup.observability.dashboard.register({ appName: 'infra_logs', hasData: getLogsHasDataFetcher(core.getStartServices), diff --git a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts index 0ec071b97d7cf..f33bcd2fcab0c 100644 --- a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts +++ b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericParams, SearchResponse } from 'elasticsearch'; +import type { estypes } from '@elastic/elasticsearch'; import { Lifecycle } from '@hapi/hapi'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { JsonArray, JsonValue } from '@kbn/common-utils'; @@ -38,7 +38,7 @@ export interface InfraServerPluginStartDeps { data: DataPluginStart; } -export interface CallWithRequestParams extends GenericParams { +export interface CallWithRequestParams extends estypes.RequestBase { max_concurrent_shard_requests?: number; name?: string; index?: string | string[]; @@ -50,6 +50,7 @@ export interface CallWithRequestParams extends GenericParams { path?: string; query?: string | object; track_total_hits?: boolean | number; + body?: any; } export type InfraResponse = Lifecycle.ReturnValue; @@ -117,7 +118,7 @@ export interface InfraDatabaseGetIndicesResponse { }; } -export type SearchHit = SearchResponse['hits']['hits'][0]; +export type SearchHit = estypes.SearchHit; export interface SortedSearchHit extends SearchHit { sort: any[]; diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts index fd1dc43c191fb..18de1a2ad5c00 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts @@ -6,7 +6,6 @@ */ import { createMetricThresholdExecutor, FIRED_ACTIONS } from './metric_threshold_executor'; -import { Comparator } from './types'; import * as mocks from './test_mocks'; // import { RecoveredActionGroup } from '../../../../../alerting/common'; import { @@ -14,10 +13,19 @@ import { AlertServicesMock, AlertInstanceMock, } from '../../../../../alerting/server/mocks'; +import { LifecycleAlertServices } from '../../../../../rule_registry/server'; +import { ruleRegistryMocks } from '../../../../../rule_registry/server/mocks'; +import { createLifecycleRuleExecutorMock } from '../../../../../rule_registry/server/utils/create_lifecycle_rule_executor_mock'; import { InfraSources } from '../../sources'; -import { MetricThresholdAlertExecutorOptions } from './register_metric_threshold_alert_type'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; +import { AlertInstanceContext, AlertInstanceState } from '../../../../../alerting/server'; +import { + Aggregators, + Comparator, + CountMetricExpressionParams, + NonCountMetricExpressionParams, +} from './types'; interface AlertTestInstance { instance: AlertInstanceMock; @@ -27,11 +35,33 @@ interface AlertTestInstance { let persistAlertInstances = false; // eslint-disable-line prefer-const +type TestRuleState = Record & { + aRuleStateKey: string; +}; + +const initialRuleState: TestRuleState = { + aRuleStateKey: 'INITIAL_RULE_STATE_VALUE', +}; + const mockOptions = { alertId: '', startedAt: new Date(), previousStartedAt: null, - state: {}, + state: { + wrapped: initialRuleState, + trackedAlerts: { + TEST_ALERT_0: { + alertId: 'TEST_ALERT_0', + alertUuid: 'TEST_ALERT_0_UUID', + started: '2020-01-01T12:00:00.000Z', + }, + TEST_ALERT_1: { + alertId: 'TEST_ALERT_1', + alertUuid: 'TEST_ALERT_1_UUID', + started: '2020-01-02T12:00:00.000Z', + }, + }, + }, spaceId: '', name: '', tags: [], @@ -62,22 +92,20 @@ describe('The metric threshold alert type', () => { describe('querying the entire infrastructure', () => { const instanceID = '*'; const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') => - executor(({ + executor({ + ...mockOptions, services, params: { sourceId, criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold, }, ], }, - /** - * TODO: Remove this use of `as` by utilizing a proper type - */ - } as unknown) as MetricThresholdAlertExecutorOptions); + }); test('alerts as expected with the > comparator', async () => { await execute(Comparator.GT, [0.75]); expect(mostRecentAction(instanceID).id).toBe(FIRED_ACTIONS.id); @@ -129,7 +157,7 @@ describe('The metric threshold alert type', () => { }); describe('querying with a groupBy parameter', () => { - const execute = (comparator: Comparator, threshold: number[]) => + const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') => executor({ ...mockOptions, services, @@ -137,7 +165,7 @@ describe('The metric threshold alert type', () => { groupBy: 'something', criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold, }, @@ -173,21 +201,23 @@ describe('The metric threshold alert type', () => { comparator: Comparator, thresholdA: number[], thresholdB: number[], - groupBy: string = '' + groupBy: string = '', + sourceId: string = 'default' ) => executor({ ...mockOptions, services, params: { + sourceId, groupBy, criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold: thresholdA, }, { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold: thresholdB, metric: 'test.metric.2', @@ -228,19 +258,18 @@ describe('The metric threshold alert type', () => { }); describe('querying with the count aggregator', () => { const instanceID = '*'; - const execute = (comparator: Comparator, threshold: number[]) => + const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') => executor({ ...mockOptions, services, params: { + sourceId, criteria: [ { - ...baseCriterion, + ...baseCountCriterion, comparator, threshold, - aggType: 'count', - metric: undefined, - }, + } as CountMetricExpressionParams, ], }, }); @@ -253,17 +282,17 @@ describe('The metric threshold alert type', () => { }); describe('querying with the p99 aggregator', () => { const instanceID = '*'; - const execute = (comparator: Comparator, threshold: number[]) => + const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') => executor({ ...mockOptions, services, params: { criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold, - aggType: 'p99', + aggType: Aggregators.P99, metric: 'test.metric.2', }, ], @@ -278,17 +307,18 @@ describe('The metric threshold alert type', () => { }); describe('querying with the p95 aggregator', () => { const instanceID = '*'; - const execute = (comparator: Comparator, threshold: number[]) => + const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') => executor({ ...mockOptions, services, params: { + sourceId, criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator, threshold, - aggType: 'p95', + aggType: Aggregators.P95, metric: 'test.metric.1', }, ], @@ -303,16 +333,17 @@ describe('The metric threshold alert type', () => { }); describe("querying a metric that hasn't reported data", () => { const instanceID = '*'; - const execute = (alertOnNoData: boolean) => + const execute = (alertOnNoData: boolean, sourceId: string = 'default') => executor({ ...mockOptions, services, params: { + sourceId, criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator: Comparator.GT, - threshold: 1, + threshold: [1], metric: 'test.metric.3', }, ], @@ -331,18 +362,18 @@ describe('The metric threshold alert type', () => { describe("querying a rate-aggregated metric that hasn't reported data", () => { const instanceID = '*'; - const execute = () => + const execute = (sourceId: string = 'default') => executor({ ...mockOptions, services, params: { criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator: Comparator.GT, - threshold: 1, + threshold: [1], metric: 'test.metric.3', - aggType: 'rate', + aggType: Aggregators.RATE, }, ], alertOnNoData: true, @@ -370,7 +401,7 @@ describe('The metric threshold alert type', () => { params: { criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, comparator: Comparator.GT, threshold, }, @@ -417,7 +448,7 @@ describe('The metric threshold alert type', () => { sourceId: 'default', criteria: [ { - ...baseCriterion, + ...baseNonCountCriterion, metric: 'test.metric.pct', comparator: Comparator.GT, threshold: [0.75], @@ -450,11 +481,19 @@ const mockLibs: any = { config: createMockStaticConfiguration({}), }), configuration: createMockStaticConfiguration({}), + metricsRules: { + createLifecycleRuleExecutor: createLifecycleRuleExecutorMock, + }, }; const executor = createMetricThresholdExecutor(mockLibs); -const services: AlertServicesMock = alertsMock.createAlertServices(); +const alertsServices = alertsMock.createAlertServices(); +const services: AlertServicesMock & + LifecycleAlertServices = { + ...alertsServices, + ...ruleRegistryMocks.createLifecycleAlertServices(alertsServices), +}; services.scopedClusterClient.asCurrentUser.search.mockImplementation((params?: any): any => { const from = params?.body.query.bool.filter[0]?.range['@timestamp'].gte; if (params.index === 'alternatebeat-*') return mocks.changedSourceIdResponse(from); @@ -527,9 +566,18 @@ function mostRecentAction(id: string) { return alertInstances.get(id)!.actionQueue.pop(); } -const baseCriterion = { - aggType: 'avg', +const baseNonCountCriterion: Pick< + NonCountMetricExpressionParams, + 'aggType' | 'metric' | 'timeSize' | 'timeUnit' +> = { + aggType: Aggregators.AVERAGE, metric: 'test.metric.1', timeSize: 1, timeUnit: 'm', }; + +const baseCountCriterion: Pick = { + aggType: Aggregators.COUNT, + timeSize: 1, + timeUnit: 'm', +}; diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts index 190d8e028fe0d..259318b6c93a1 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts @@ -8,7 +8,14 @@ import { first, last } from 'lodash'; import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { RecoveredActionGroup } from '../../../../../alerting/common'; +import { ALERT_REASON } from '@kbn/rule-data-utils'; +import { + ActionGroupIdsOf, + RecoveredActionGroup, + AlertInstanceState, + AlertInstanceContext, +} from '../../../../../alerting/common'; +import { AlertTypeState, AlertInstance } from '../../../../../alerting/server'; import { InfraBackendLibs } from '../../infra_types'; import { buildErrorAlertReason, @@ -20,18 +27,48 @@ import { import { createFormatter } from '../../../../common/formatters'; import { AlertStates, Comparator } from './types'; import { evaluateAlert, EvaluatedAlertParams } from './lib/evaluate_alert'; -import { - MetricThresholdAlertExecutorOptions, - MetricThresholdAlertType, -} from './register_metric_threshold_alert_type'; -export const createMetricThresholdExecutor = ( - libs: InfraBackendLibs -): MetricThresholdAlertType['executor'] => - async function (options: MetricThresholdAlertExecutorOptions) { +export type MetricThresholdAlertTypeParams = Record; +export type MetricThresholdAlertTypeState = AlertTypeState; // no specific state used +export type MetricThresholdAlertInstanceState = AlertInstanceState; // no specific instace state used +export type MetricThresholdAlertInstanceContext = AlertInstanceContext; // no specific instace state used + +type MetricThresholdAllowedActionGroups = ActionGroupIdsOf< + typeof FIRED_ACTIONS | typeof WARNING_ACTIONS +>; + +type MetricThresholdAlertInstance = AlertInstance< + MetricThresholdAlertInstanceState, + MetricThresholdAlertInstanceContext, + MetricThresholdAllowedActionGroups +>; + +type MetricThresholdAlertInstanceFactory = ( + id: string, + reason: string, + threshold?: number | undefined, + value?: number | undefined +) => MetricThresholdAlertInstance; + +export const createMetricThresholdExecutor = (libs: InfraBackendLibs) => + libs.metricsRules.createLifecycleRuleExecutor< + MetricThresholdAlertTypeParams, + MetricThresholdAlertTypeState, + MetricThresholdAlertInstanceState, + MetricThresholdAlertInstanceContext, + MetricThresholdAllowedActionGroups + >(async function (options) { const { services, params } = options; const { criteria } = params; if (criteria.length === 0) throw new Error('Cannot execute an alert with 0 conditions'); + const { alertWithLifecycle, savedObjectsClient } = services; + const alertInstanceFactory: MetricThresholdAlertInstanceFactory = (id, reason) => + alertWithLifecycle({ + id, + fields: { + [ALERT_REASON]: reason, + }, + }); const { sourceId, alertOnNoData } = params as { sourceId?: string; @@ -39,7 +76,7 @@ export const createMetricThresholdExecutor = ( }; const source = await libs.sources.getSourceConfiguration( - services.savedObjectsClient, + savedObjectsClient, sourceId || 'default' ); const config = source.configuration; @@ -114,8 +151,7 @@ export const createMetricThresholdExecutor = ( : nextState === AlertStates.WARNING ? WARNING_ACTIONS.id : FIRED_ACTIONS.id; - const alertInstance = services.alertInstanceFactory(`${group}`); - + const alertInstance = alertInstanceFactory(`${group}`, reason); alertInstance.scheduleActions(actionGroupId, { group, alertState: stateToAlertMessage[nextState], @@ -133,7 +169,7 @@ export const createMetricThresholdExecutor = ( }); } } - }; + }); export const FIRED_ACTIONS = { id: 'metrics.threshold.fired', diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/register_metric_threshold_alert_type.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/register_metric_threshold_alert_type.ts index 9418762d3e1bf..054585e541ba1 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/register_metric_threshold_alert_type.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/register_metric_threshold_alert_type.ts @@ -7,13 +7,8 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; -import { - AlertType, - AlertInstanceState, - AlertInstanceContext, - AlertExecutorOptions, - ActionGroupIdsOf, -} from '../../../../../alerting/server'; +import { ActionGroupIdsOf } from '../../../../../alerting/common'; +import { AlertType, PluginSetupContract } from '../../../../../alerting/server'; import { METRIC_EXPLORER_AGGREGATIONS } from '../../../../common/http_api/metrics_explorer'; import { createMetricThresholdExecutor, @@ -33,29 +28,17 @@ import { thresholdActionVariableDescription, } from '../common/messages'; -export type MetricThresholdAlertType = AlertType< - /** - * TODO: Remove this use of `any` by utilizing a proper type - */ - Record, - never, // Only use if defining useSavedObjectReferences hook - Record, - AlertInstanceState, - AlertInstanceContext, - ActionGroupIdsOf ->; -export type MetricThresholdAlertExecutorOptions = AlertExecutorOptions< - /** - * TODO: Remove this use of `any` by utilizing a proper type - */ - Record, - Record, - AlertInstanceState, - AlertInstanceContext, - ActionGroupIdsOf +type MetricThresholdAllowedActionGroups = ActionGroupIdsOf< + typeof FIRED_ACTIONS | typeof WARNING_ACTIONS >; +export type MetricThresholdAlertType = Omit & { + ActionGroupIdsOf: MetricThresholdAllowedActionGroups; +}; -export function registerMetricThresholdAlertType(libs: InfraBackendLibs): MetricThresholdAlertType { +export async function registerMetricThresholdAlertType( + alertingPlugin: PluginSetupContract, + libs: InfraBackendLibs +) { const baseCriterion = { threshold: schema.arrayOf(schema.number()), comparator: oneOfLiterals(Object.values(Comparator)), @@ -77,7 +60,7 @@ export function registerMetricThresholdAlertType(libs: InfraBackendLibs): Metric metric: schema.never(), }); - return { + alertingPlugin.registerType({ id: METRIC_THRESHOLD_ALERT_TYPE_ID, name: i18n.translate('xpack.infra.metrics.alertName', { defaultMessage: 'Metric threshold', @@ -115,5 +98,5 @@ export function registerMetricThresholdAlertType(libs: InfraBackendLibs): Metric ], }, producer: 'infrastructure', - }; + }); } diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts index 37f21022f183d..101be1f77b9d0 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts @@ -33,12 +33,12 @@ interface BaseMetricExpressionParams { warningThreshold?: number[]; } -interface NonCountMetricExpressionParams extends BaseMetricExpressionParams { +export interface NonCountMetricExpressionParams extends BaseMetricExpressionParams { aggType: Exclude; metric: string; } -interface CountMetricExpressionParams extends BaseMetricExpressionParams { +export interface CountMetricExpressionParams extends BaseMetricExpressionParams { aggType: Aggregators.COUNT; metric: never; } diff --git a/x-pack/plugins/infra/server/lib/alerting/register_alert_types.ts b/x-pack/plugins/infra/server/lib/alerting/register_alert_types.ts index d7df2afd8038b..d0af9ac4ce669 100644 --- a/x-pack/plugins/infra/server/lib/alerting/register_alert_types.ts +++ b/x-pack/plugins/infra/server/lib/alerting/register_alert_types.ts @@ -20,10 +20,13 @@ const registerAlertTypes = ( ml?: MlPluginSetup ) => { if (alertingPlugin) { - alertingPlugin.registerType(registerMetricThresholdAlertType(libs)); alertingPlugin.registerType(registerMetricAnomalyAlertType(libs, ml)); - const registerFns = [registerLogThresholdAlertType, registerMetricInventoryThresholdAlertType]; + const registerFns = [ + registerLogThresholdAlertType, + registerMetricInventoryThresholdAlertType, + registerMetricThresholdAlertType, + ]; registerFns.forEach((fn) => { fn(alertingPlugin, libs); }); diff --git a/x-pack/plugins/lens/common/suffix_formatter/index.ts b/x-pack/plugins/lens/common/suffix_formatter/index.ts index 12a4e02a81ef2..97fa8c067331e 100644 --- a/x-pack/plugins/lens/common/suffix_formatter/index.ts +++ b/x-pack/plugins/lens/common/suffix_formatter/index.ts @@ -31,6 +31,7 @@ export const unitSuffixesLong: Record = { export function getSuffixFormatter(formatFactory: FormatFactory): FieldFormatInstanceType { return class SuffixFormatter extends FieldFormat { static id = 'suffix'; + static hidden = true; // Don't want this format to appear in index pattern editor static title = i18n.translate('xpack.lens.fieldFormats.suffix.title', { defaultMessage: 'Suffix', }); diff --git a/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts b/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts index c4379bdd1fb34..d08908ecde417 100644 --- a/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts +++ b/x-pack/plugins/lens/common/suffix_formatter/suffix_formatter.test.ts @@ -42,4 +42,11 @@ describe('suffix formatter', () => { expect(result).toEqual(''); }); + + it('should be a hidden formatter', () => { + const convertMock = jest.fn((x) => ''); + const formatFactory = jest.fn(() => ({ convert: convertMock })); + const SuffixFormatter = getSuffixFormatter((formatFactory as unknown) as FormatFactory); + expect(SuffixFormatter.hidden).toBe(true); + }); }); diff --git a/x-pack/plugins/lens/public/_mixins.scss b/x-pack/plugins/lens/public/_mixins.scss index f9b8ce466040e..5a798bcc6c23b 100644 --- a/x-pack/plugins/lens/public/_mixins.scss +++ b/x-pack/plugins/lens/public/_mixins.scss @@ -47,3 +47,45 @@ @mixin lnsDroppableNotAllowed { opacity: .5; } + +// Removes EUI focus ring +@mixin removeEuiFocusRing { + @include kbnThemeStyle('v7') { + animation: none !important; // sass-lint:disable-line no-important + } + + @include kbnThemeStyle('v8') { + outline: none; + + &:focus-visible { + outline-style: none; + } + } +} + +// Passes focus ring styles down to a child of a focused element +@mixin passDownFocusRing($target) { + @include removeEuiFocusRing; + + #{$target} { + @include euiFocusBackground; + + @include kbnThemeStyle('v7') { + @include euiFocusRing; + } + + @include kbnThemeStyle('v8') { + outline: $euiFocusRingSize solid currentColor; // Safari & Firefox + } + } + + @include kbnThemeStyle('v8') { + &:focus-visible #{$target} { + outline-style: auto; // Chrome + } + + &:not(:focus-visible) #{$target} { + outline: none; + } + } +} \ No newline at end of file diff --git a/x-pack/plugins/lens/public/app_plugin/app.test.tsx b/x-pack/plugins/lens/public/app_plugin/app.test.tsx index 1c49527d9eca8..6bd75c585f954 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.test.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.test.tsx @@ -30,7 +30,7 @@ import { esFilters, FilterManager, IFieldType, - IIndexPattern, + IndexPattern, Query, } from '../../../../../src/plugins/data/public'; import { TopNavMenuData } from '../../../../../src/plugins/navigation/public'; @@ -182,7 +182,7 @@ describe('Lens App', () => { it('updates global filters with store state', async () => { const services = makeDefaultServices(sessionIdSubject); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; const pinnedFilter = esFilters.buildExistsFilter(pinnedField, indexPattern); services.data.query.filterManager.getFilters = jest.fn().mockImplementation(() => { @@ -634,7 +634,7 @@ describe('Lens App', () => { }); it('saves app filters and does not save pinned filters', async () => { - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; const unpinned = esFilters.buildExistsFilter(field, indexPattern); @@ -816,7 +816,7 @@ describe('Lens App', () => { it('updates the filters when the user changes them', async () => { const { instance, services, lensStore } = await mountWith({}); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; expect(lensStore.getState()).toEqual({ lens: expect.objectContaining({ @@ -871,7 +871,7 @@ describe('Lens App', () => { searchSessionId: `sessionId-3`, }), }); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; act(() => services.data.query.filterManager.setFilters([ @@ -1006,7 +1006,7 @@ describe('Lens App', () => { query: { query: 'new', language: 'lucene' }, }) ); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; const unpinned = esFilters.buildExistsFilter(field, indexPattern); @@ -1063,7 +1063,7 @@ describe('Lens App', () => { query: { query: 'new', language: 'lucene' }, }) ); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; const unpinned = esFilters.buildExistsFilter(field, indexPattern); diff --git a/x-pack/plugins/lens/public/drag_drop/drag_drop.scss b/x-pack/plugins/lens/public/drag_drop/drag_drop.scss index 9c5bc79ba044a..5522b65fca261 100644 --- a/x-pack/plugins/lens/public/drag_drop/drag_drop.scss +++ b/x-pack/plugins/lens/public/drag_drop/drag_drop.scss @@ -20,7 +20,15 @@ transform: translate(-12px, 8px); z-index: $lnsZLevel3; pointer-events: none; - box-shadow: 0 0 0 $euiFocusRingSize $euiFocusRingColor; + + @include kbnThemeStyle('v7') { + box-shadow: 0 0 0 $euiFocusRingSize $euiFocusRingColor; + } + + @include kbnThemeStyle('v8') { + outline: $euiFocusRingSize solid currentColor; // Safari & Firefox + outline-style: auto; // Chrome + } } // Draggable item @@ -133,6 +141,7 @@ &:focus-within { @include euiFocusRing; pointer-events: none; + z-index: $lnsZLevel2; } } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx index c7147e75af59a..d4a9870056b34 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx @@ -199,7 +199,7 @@ export function LayerPanels( })} content={i18n.translate('xpack.lens.xyChart.addLayerTooltip', { defaultMessage: - 'Use multiple layers to combine chart types or visualize different index patterns.', + 'Use multiple layers to combine visualization types or visualize different index patterns.', })} position="bottom" > diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.scss index 788bf049b779b..fd37a7bada02f 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.scss @@ -1,3 +1,5 @@ +@import '../../../mixins'; + .lnsLayerPanel { margin-bottom: $euiSizeS; @@ -132,12 +134,7 @@ width: 100%; &:focus { + @include passDownFocusRing('.lnsLayerPanel__triggerTextLabel'); background-color: transparent; - animation: none !important; // sass-lint:disable-line no-important - } - - &:focus .lnsLayerPanel__triggerTextLabel, - &:focus-within .lnsLayerPanel__triggerTextLabel { - background-color: transparentize($euiColorVis1, .9); } } \ No newline at end of file diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx index 6445038e40d7c..44fb47001631e 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx @@ -16,7 +16,7 @@ import { } from '../../mocks'; import { act } from 'react-dom/test-utils'; import { ReactExpressionRendererType } from '../../../../../../src/plugins/expressions/public'; -import { esFilters, IFieldType, IIndexPattern } from '../../../../../../src/plugins/data/public'; +import { esFilters, IFieldType, IndexPattern } from '../../../../../../src/plugins/data/public'; import { SuggestionPanel, SuggestionPanelProps } from './suggestion_panel'; import { getSuggestions, Suggestion } from './suggestion_helpers'; import { EuiIcon, EuiPanel, EuiToolTip } from '@elastic/eui'; @@ -291,7 +291,7 @@ describe('suggestion_panel', () => { (mockVisualization.toPreviewExpression as jest.Mock).mockReturnValueOnce('test | expression'); mockDatasource.toExpression.mockReturnValue('datasource_expression'); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; mountWithProvider( diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx index f948ec6a59687..314989ecc9758 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx @@ -370,7 +370,7 @@ export const ChartSwitch = memo(function ChartSwitch(props: Props) { 'xpack.lens.chartSwitch.dataLossDescription', { defaultMessage: - 'Selecting this chart type will result in a partial loss of currently applied configuration selections.', + 'Selecting this visualization type will result in a partial loss of currently applied configuration selections.', } )} iconProps={{ @@ -439,8 +439,8 @@ export const ChartSwitch = memo(function ChartSwitch(props: Props) { - {i18n.translate('xpack.lens.configPanel.chartType', { - defaultMessage: 'Chart type', + {i18n.translate('xpack.lens.configPanel.visualizationType', { + defaultMessage: 'Visualization type', })} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index 4feb13fcfffd9..784455cc9f6d1 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -28,7 +28,7 @@ import { ReactWrapper } from 'enzyme'; import { DragDrop, ChildDragDropProvider } from '../../../drag_drop'; import { fromExpression } from '@kbn/interpreter/common'; import { coreMock } from 'src/core/public/mocks'; -import { esFilters, IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; +import { esFilters, IFieldType, IndexPattern } from '../../../../../../../src/plugins/data/public'; import { UiActionsStart } from '../../../../../../../src/plugins/ui_actions/public'; import { uiActionsPluginMock } from '../../../../../../../src/plugins/ui_actions/public/mocks'; import { TriggerContract } from '../../../../../../../src/plugins/ui_actions/public/triggers'; @@ -443,7 +443,7 @@ describe('workspace_panel', () => { expect(expressionRendererMock).toHaveBeenCalledTimes(1); - const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; + const indexPattern = ({ id: 'index1' } as unknown) as IndexPattern; const field = ({ name: 'myfield' } as unknown) as IFieldType; await act(async () => { diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index 77b2b06389240..e26466be6f81b 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -12,7 +12,6 @@ import type { ExecutionContextServiceStart } from 'src/core/public'; import { ExecutionContextSearch, Filter, - IIndexPattern, Query, TimefilterContract, TimeRange, @@ -83,7 +82,7 @@ export type LensByReferenceInput = SavedObjectEmbeddableInput & LensBaseEmbeddab export type LensEmbeddableInput = LensByValueInput | LensByReferenceInput; export interface LensEmbeddableOutput extends EmbeddableOutput { - indexPatterns?: IIndexPattern[]; + indexPatterns?: IndexPattern[]; } export interface LensEmbeddableDeps { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx index 0a41e7e65212a..e643ea12528ee 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx @@ -70,7 +70,7 @@ export function ChangeIndexPattern({
{i18n.translate('xpack.lens.indexPattern.changeIndexPatternTitle', { - defaultMessage: 'Change index pattern', + defaultMessage: 'Index pattern', })} = { // Wrapper around esQuery.buildEsQuery, handling errors (e.g. because a query can't be parsed) by // returning a query dsl object not matching anything function buildSafeEsQuery( - indexPattern: IIndexPattern, + indexPattern: IndexPattern, query: Query, filters: Filter[], queryConfig: EsQueryConfig @@ -164,7 +164,7 @@ export function IndexPatternDataPanel({ })); const dslQuery = buildSafeEsQuery( - indexPatterns[currentIndexPatternId] as IIndexPattern, + indexPatterns[currentIndexPatternId], query, filters, esQuery.getEsQueryConfig(core.uiSettings) @@ -269,7 +269,7 @@ const defaultFieldGroups: { }; const fieldFiltersLabel = i18n.translate('xpack.lens.indexPatterns.fieldFiltersLabel', { - defaultMessage: 'Field filters', + defaultMessage: 'Filter by type', }); const htmlId = htmlIdGenerator('datapanel'); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx index d757d8573f25a..5318255792641 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx @@ -6,6 +6,7 @@ */ import { ReactWrapper, ShallowWrapper } from 'enzyme'; +import 'jest-canvas-mock'; import React, { ChangeEvent, MouseEvent, ReactElement } from 'react'; import { act } from 'react-dom/test-utils'; import { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx index 2c6463f6b8e96..21251b59d4533 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx @@ -10,6 +10,7 @@ import { ReactWrapper, ShallowWrapper } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { EuiComboBox } from '@elastic/eui'; import { mountWithIntl as mount } from '@kbn/test/jest'; +import 'jest-canvas-mock'; import type { IUiSettingsClient, SavedObjectsClientContract, HttpSetup } from 'kibana/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import type { DataPublicPluginStart } from 'src/plugins/data/public'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss index a652a18752949..b96a670144d37 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss @@ -1,5 +1,23 @@ +@import '../mixins'; + .lnsFieldItem { width: 100%; + + &.kbnFieldButton { + &:focus-within, + &-isActive { + @include removeEuiFocusRing; + } + } + + .kbnFieldButton__button:focus { + @include passDownFocusRing('.kbnFieldButton__name > span'); + + .kbnFieldButton__name > span { + text-decoration: underline; + } + } + .lnsFieldItem__infoIcon { visibility: hidden; opacity: 0; @@ -14,25 +32,6 @@ transition: opacity $euiAnimSpeedFast ease-in-out 1s; } } - - &:focus, - &:focus-within, - .kbnFieldButton__button:focus:focus-visible, - &.kbnFieldButton-isActive { - @include kbnThemeStyle('v7') { - animation: none !important; // sass-lint:disable-line no-important - } - @include kbnThemeStyle('v8') { - outline: none !important; // sass-lint:disable-line no-important - } - } - - &:focus .kbnFieldButton__name span, - &:focus-within .kbnFieldButton__name span, - &.kbnFieldButton-isActive .kbnFieldButton__name span { - background-color: transparentize($euiColorVis1, .9) !important; - text-decoration: underline !important; - } } .kbnFieldButton.lnsDragDrop_ghost { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx index 013bb46500d0d..5ceb452038426 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx @@ -44,7 +44,6 @@ import { ES_FIELD_TYPES, Filter, esQuery, - IIndexPattern, } from '../../../../../src/plugins/data/public'; import { FieldButton } from '../../../../../src/plugins/kibana_react/public'; import { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; @@ -169,7 +168,7 @@ export const InnerFieldItem = function InnerFieldItem(props: FieldItemProps) { .post(`/api/lens/index_stats/${indexPattern.id}/field`, { body: JSON.stringify({ dslQuery: esQuery.buildEsQuery( - indexPattern as IIndexPattern, + indexPattern, query, filters, esQuery.getEsQueryConfig(core.uiSettings) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts index bf0d022f0ad9b..261a73287dba9 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts @@ -5,6 +5,8 @@ * 2.0. */ +import React from 'react'; +import 'jest-canvas-mock'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { getIndexPatternDatasource, IndexPatternColumn } from './indexpattern'; import { DatasourcePublicAPI, Operation, Datasource, FramePublicAPI } from '../types'; @@ -18,8 +20,6 @@ import { operationDefinitionMap, getErrorMessages } from './operations'; import { createMockedFullReference } from './operations/mocks'; import { indexPatternFieldEditorPluginMock } from 'src/plugins/index_pattern_field_editor/public/mocks'; import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; -import React from 'react'; - jest.mock('./loader'); jest.mock('../id_generator'); jest.mock('./operations'); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx index 93ea3069894d3..4b8bbc09c6799 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx @@ -8,6 +8,7 @@ import { DatasourceSuggestion } from '../types'; import { generateId } from '../id_generator'; import type { IndexPatternPrivateState } from './types'; +import 'jest-canvas-mock'; import { getDatasourceSuggestionsForField, getDatasourceSuggestionsFromCurrentState, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx index a458a1edcfa16..4e2f69c927a18 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx @@ -19,11 +19,7 @@ import { import { uniq } from 'lodash'; import { CoreStart } from 'kibana/public'; import { FieldStatsResponse } from '../../../../../common'; -import { - AggFunctionsMapping, - esQuery, - IIndexPattern, -} from '../../../../../../../../src/plugins/data/public'; +import { AggFunctionsMapping, esQuery } from '../../../../../../../../src/plugins/data/public'; import { buildExpressionFunction } from '../../../../../../../../src/plugins/expressions/public'; import { updateColumnParam, isReferenced } from '../../layer_helpers'; import { DataType, FramePublicAPI } from '../../../../types'; @@ -99,7 +95,7 @@ function getDisallowedTermsMessage( body: JSON.stringify({ fieldName, dslQuery: esQuery.buildEsQuery( - indexPattern as IIndexPattern, + indexPattern, frame.query, frame.filters, esQuery.getEsQueryConfig(core.uiSettings) diff --git a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx index ac0aa6cd4b1f1..d25726951ea8f 100644 --- a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx +++ b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx @@ -250,7 +250,7 @@ export function PieComponent( { visible: true, }); }); + + test('it should format the boolean values correctly', () => { + const data: LensMultiTable = { + type: 'lens_multitable', + tables: { + first: { + type: 'datatable', + columns: [ + { + id: 'a', + name: 'a', + meta: { type: 'number', params: { id: 'number', params: { pattern: '0,0.000' } } }, + }, + { + id: 'b', + name: 'b', + meta: { type: 'number', params: { id: 'number', params: { pattern: '000,0' } } }, + }, + { + id: 'c', + name: 'c', + meta: { + type: 'boolean', + params: { id: 'boolean' }, + }, + }, + ], + rows: [ + { a: 5, b: 2, c: 0 }, + { a: 19, b: 5, c: 1 }, + ], + }, + }, + dateRange: { + fromDate: new Date('2019-01-02T05:00:00.000Z'), + toDate: new Date('2019-01-03T05:00:00.000Z'), + }, + }; + const timeSampleLayer: LayerArgs = { + layerId: 'first', + seriesType: 'line', + xAccessor: 'c', + accessors: ['a', 'b'], + xScaleType: 'ordinal', + yScaleType: 'linear', + isHistogram: false, + palette: mockPaletteOutput, + }; + const args = createArgsWithLayers([timeSampleLayer]); + + const getCustomFormatSpy = jest.fn(); + getCustomFormatSpy.mockReturnValue({ convert: jest.fn((x) => Boolean(x)) }); + + const component = shallow( + + ); + + expect(component.find(LineSeries).at(1).prop('data')).toEqual([ + { + a: 5, + b: 2, + c: false, + }, + { + a: 19, + b: 5, + c: true, + }, + ]); + }); }); describe('calculateMinInterval', () => { diff --git a/x-pack/plugins/lens/public/xy_visualization/expression.tsx b/x-pack/plugins/lens/public/xy_visualization/expression.tsx index 8eb7ec1e0f623..b7f22ebf8968d 100644 --- a/x-pack/plugins/lens/public/xy_visualization/expression.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/expression.tsx @@ -616,7 +616,7 @@ export function XYChart({ for (const column of table.columns) { const record = newRow[column.id]; if ( - record && + record != null && // pre-format values for ordinal x axes because there can only be a single x axis formatter on chart level (!isPrimitive(record) || (column.id === xAccessor && xScaleType === 'ordinal')) ) { diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.tsx index 69ec0740948fc..f0cec4abf0b14 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.tsx @@ -10,7 +10,7 @@ import React, { ReactElement } from 'react'; import { i18n } from '@kbn/i18n'; import rison from 'rison-node'; import { Feature } from 'geojson'; -import { SearchResponse } from 'elasticsearch'; +import type { estypes } from '@elastic/elasticsearch'; import { convertCompositeRespToGeoJson, convertRegularRespToGeoJson, @@ -274,7 +274,7 @@ export class ESGeoGridSource extends AbstractESAggSource implements ITiledSingle const requestId: string = afterKey ? `${this.getId()} afterKey ${afterKey.geoSplit}` : this.getId(); - const esResponse: SearchResponse = await this._runEsQuery({ + const esResponse: estypes.SearchResponse = await this._runEsQuery({ requestId, requestName: `${layerName} (${requestCount})`, searchSource, @@ -291,8 +291,10 @@ export class ESGeoGridSource extends AbstractESAggSource implements ITiledSingle features.push(...convertCompositeRespToGeoJson(esResponse, this._descriptor.requestType)); - afterKey = esResponse.aggregations.compositeSplit.after_key; - if (esResponse.aggregations.compositeSplit.buckets.length < gridsPerRequest) { + const aggr = esResponse.aggregations + ?.compositeSplit as estypes.AggregationsCompositeBucketAggregate; + afterKey = aggr.after_key; + if (aggr.buckets.length < gridsPerRequest) { // Finished because request did not get full resultset back break; } diff --git a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts index 9b637ab4bab99..3e85c5db28a6c 100644 --- a/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts +++ b/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.ts @@ -87,7 +87,7 @@ export class ESTooltipProperty implements ITooltipProperty { existsFilter.meta.negate = true; return [existsFilter]; } else { - return [esFilters.buildPhraseFilter(indexPatternField, value, this._indexPattern)]; + return [esFilters.buildPhraseFilter(indexPatternField, value as string, this._indexPattern)]; } } } diff --git a/x-pack/plugins/maps/public/embeddable/types.ts b/x-pack/plugins/maps/public/embeddable/types.ts index dfd87bca19ac3..fd8160c567530 100644 --- a/x-pack/plugins/maps/public/embeddable/types.ts +++ b/x-pack/plugins/maps/public/embeddable/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IIndexPattern } from '../../../../../src/plugins/data/common/index_patterns'; +import type { IndexPattern } from '../../../../../src/plugins/data/common/index_patterns'; import { EmbeddableInput, EmbeddableOutput, @@ -41,5 +41,5 @@ export type MapByReferenceInput = SavedObjectEmbeddableInput & { export type MapEmbeddableInput = MapByValueInput | MapByReferenceInput; export type MapEmbeddableOutput = EmbeddableOutput & { - indexPatterns: IIndexPattern[]; + indexPatterns: IndexPattern[]; }; diff --git a/x-pack/plugins/ml/common/constants/index_patterns.ts b/x-pack/plugins/ml/common/constants/index_patterns.ts index cec692217546d..d7d6c343e282b 100644 --- a/x-pack/plugins/ml/common/constants/index_patterns.ts +++ b/x-pack/plugins/ml/common/constants/index_patterns.ts @@ -11,4 +11,3 @@ export const ML_ANNOTATIONS_INDEX_PATTERN = '.ml-annotations-6'; export const ML_RESULTS_INDEX_PATTERN = '.ml-anomalies-*'; export const ML_NOTIFICATION_INDEX_PATTERN = '.ml-notifications*'; -export const ML_NOTIFICATION_INDEX_02 = '.ml-notifications-000002'; diff --git a/x-pack/plugins/ml/common/types/data_frame_analytics.ts b/x-pack/plugins/ml/common/types/data_frame_analytics.ts index 3305eeaaf4794..ec2a244c75468 100644 --- a/x-pack/plugins/ml/common/types/data_frame_analytics.ts +++ b/x-pack/plugins/ml/common/types/data_frame_analytics.ts @@ -80,9 +80,9 @@ export interface DataFrameAnalyticsConfig { runtime_mappings?: RuntimeMappings; }; analysis: AnalysisConfig; - analyzed_fields: { - includes: string[]; - excludes: string[]; + analyzed_fields?: { + includes?: string[]; + excludes?: string[]; }; model_memory_limit: string; max_num_threads?: number; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx index 6c158f103aade..48477acfe7be8 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_page_wrapper/exploration_page_wrapper.tsx @@ -116,8 +116,8 @@ export const ExplorationPageWrapper: FC = ({ const resultsField = jobConfig?.dest.results_field ?? ''; const scatterplotFieldOptions = useScatterplotFieldOptions( indexPattern, - jobConfig?.analyzed_fields.includes, - jobConfig?.analyzed_fields.excludes, + jobConfig?.analyzed_fields?.includes, + jobConfig?.analyzed_fields?.excludes, resultsField ); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx index 5f013c634e4c4..abd1870babfb9 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx @@ -92,8 +92,8 @@ export const OutlierExploration: FC = React.memo(({ jobId }) = const scatterplotFieldOptions = useScatterplotFieldOptions( indexPattern, - jobConfig?.analyzed_fields.includes, - jobConfig?.analyzed_fields.excludes, + jobConfig?.analyzed_fields?.includes, + jobConfig?.analyzed_fields?.excludes, resultsField ); diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_messages_pane.tsx b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_messages_pane.tsx index 9a4d6036428f8..92662f409d0f3 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_messages_pane.tsx +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_messages_pane.tsx @@ -30,6 +30,7 @@ export const JobMessagesPane: FC = React.memo( const canCreateJob = checkPermission('canCreateJob'); const [messages, setMessages] = useState([]); + const [notificationIndices, setNotificationIndices] = useState([]); const [isLoading, setIsLoading] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const [isClearing, setIsClearing] = useState(false); @@ -42,7 +43,10 @@ export const JobMessagesPane: FC = React.memo( const fetchMessages = async () => { setIsLoading(true); try { - setMessages(await ml.jobs.jobAuditMessages({ jobId, start, end })); + const messagesResp = await ml.jobs.jobAuditMessages({ jobId, start, end }); + + setMessages(messagesResp.messages); + setNotificationIndices(messagesResp.notificationIndices); setIsLoading(false); } catch (error) { setIsLoading(false); @@ -63,7 +67,7 @@ export const JobMessagesPane: FC = React.memo( const clearMessages = useCallback(async () => { setIsClearing(true); try { - await clearJobAuditMessages(jobId); + await clearJobAuditMessages(jobId, notificationIndices); setIsClearing(false); if (typeof refreshJobList === 'function') { refreshJobList(); @@ -77,13 +81,13 @@ export const JobMessagesPane: FC = React.memo( }) ); } - }, [jobId]); + }, [jobId, JSON.stringify(notificationIndices)]); useEffect(() => { fetchMessages(); }, []); - const disabled = messages.length > 0 && messages[0].clearable === false; + const disabled = notificationIndices.length === 0; const clearButton = ( ({ ...(start !== undefined && end !== undefined ? { start, end } : {}), }; - return httpService.http({ + return httpService.http<{ messages: JobMessage[]; notificationIndices: string[] }>({ path: `${ML_BASE_PATH}/job_audit_messages/messages${jobIdString}`, method: 'GET', query, }); }, - clearJobAuditMessages(jobId: string) { - const body = JSON.stringify({ jobId }); + clearJobAuditMessages(jobId: string, notificationIndices: string[]) { + const body = JSON.stringify({ jobId, notificationIndices }); return httpService.http<{ success: boolean; latest_cleared: number }>({ path: `${ML_BASE_PATH}/job_audit_messages/clear_messages`, method: 'PUT', diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/validation.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/validation.ts index 216a4379c7c89..b39debbe664d3 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/validation.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/validation.ts @@ -448,7 +448,7 @@ export async function validateAnalyticsJob( ) { const messages = await getValidationCheckMessages( client.asCurrentUser, - job.analyzed_fields.includes, + job?.analyzed_fields?.includes || [], job.analysis, job.source ); diff --git a/x-pack/plugins/ml/server/models/job_audit_messages/is_clearable.test.ts b/x-pack/plugins/ml/server/models/job_audit_messages/is_clearable.test.ts new file mode 100644 index 0000000000000..8b84bfeb888b2 --- /dev/null +++ b/x-pack/plugins/ml/server/models/job_audit_messages/is_clearable.test.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isClearable } from './job_audit_messages'; + +const supportedNotificationIndices = [ + '.ml-notifications-000002', + '.ml-notifications-000003', + '.ml-notifications-000004', +]; + +const unsupportedIndices = ['.ml-notifications-000001', 'index-does-not-exist']; + +describe('jobAuditMessages - isClearable', () => { + it('should return true for indices ending in a six digit number with the last number >= 2', () => { + supportedNotificationIndices.forEach((index) => { + expect(isClearable(index)).toEqual(true); + }); + }); + + it('should return false for indices not ending in a six digit number with the last number >= 2', () => { + unsupportedIndices.forEach((index) => { + expect(isClearable(index)).toEqual(false); + }); + }); + + it('should return false for empty string or missing argument', () => { + expect(isClearable('')).toEqual(false); + expect(isClearable()).toEqual(false); + }); +}); diff --git a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.d.ts b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.d.ts index 60ea866978f1a..d3748163957db 100644 --- a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.d.ts +++ b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.d.ts @@ -8,6 +8,9 @@ import { IScopedClusterClient } from 'kibana/server'; import type { MlClient } from '../../lib/ml_client'; import type { JobSavedObjectService } from '../../saved_objects'; +import { JobMessage } from '../../../common/types/audit_message'; + +export function isClearable(index?: string): boolean; export function jobAuditMessagesProvider( client: IScopedClusterClient, @@ -21,7 +24,10 @@ export function jobAuditMessagesProvider( start?: string; end?: string; } - ) => any; + ) => { messages: JobMessage[]; notificationIndices: string[] }; getAuditMessagesSummary: (jobIds?: string[]) => any; - clearJobAuditMessages: (jobId: string) => any; + clearJobAuditMessages: ( + jobId: string, + notificationIndices: string[] + ) => { success: boolean; last_cleared: number }; }; diff --git a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js index 137df3a6f3151..311df2ac418c0 100644 --- a/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js +++ b/x-pack/plugins/ml/server/models/job_audit_messages/job_audit_messages.js @@ -5,10 +5,7 @@ * 2.0. */ -import { - ML_NOTIFICATION_INDEX_PATTERN, - ML_NOTIFICATION_INDEX_02, -} from '../../../common/constants/index_patterns'; +import { ML_NOTIFICATION_INDEX_PATTERN } from '../../../common/constants/index_patterns'; import { MESSAGE_LEVEL } from '../../../common/constants/message_levels'; import moment from 'moment'; @@ -39,6 +36,14 @@ const anomalyDetectorTypeFilter = { }, }; +export function isClearable(index) { + if (typeof index === 'string') { + const match = index.match(/\d{6}$/); + return match !== null && match.length && Number(match[match.length - 1]) >= 2; + } + return false; +} + export function jobAuditMessagesProvider({ asInternalUser }, mlClient) { // search for audit messages, // jobId is optional. without it, all jobs will be listed. @@ -126,18 +131,25 @@ export function jobAuditMessagesProvider({ asInternalUser }, mlClient) { }); let messages = []; + const notificationIndices = []; + if (body.hits.total.value > 0) { - messages = body.hits.hits.map((hit) => ({ - clearable: hit._index === ML_NOTIFICATION_INDEX_02, - ...hit._source, - })); + let notificationIndex; + body.hits.hits.forEach((hit) => { + if (notificationIndex !== hit._index && isClearable(hit._index)) { + notificationIndices.push(hit._index); + notificationIndex = hit._index; + } + + messages.push(hit._source); + }); } messages = await jobSavedObjectService.filterJobsForSpace( 'anomaly-detector', messages, 'job_id' ); - return messages; + return { messages, notificationIndices }; } // search highest, most recent audit messages for all jobs for the last 24hrs. @@ -281,7 +293,7 @@ export function jobAuditMessagesProvider({ asInternalUser }, mlClient) { const clearedTime = new Date().getTime(); // Sets 'cleared' to true for messages in the last 24hrs and index new message for clear action - async function clearJobAuditMessages(jobId) { + async function clearJobAuditMessages(jobId, notificationIndices) { const newClearedMessage = { job_id: jobId, job_type: 'anomaly_detection', @@ -309,9 +321,9 @@ export function jobAuditMessagesProvider({ asInternalUser }, mlClient) { }, }; - await Promise.all([ + const promises = [ asInternalUser.updateByQuery({ - index: ML_NOTIFICATION_INDEX_02, + index: notificationIndices.join(','), ignore_unavailable: true, refresh: false, conflicts: 'proceed', @@ -323,12 +335,16 @@ export function jobAuditMessagesProvider({ asInternalUser }, mlClient) { }, }, }), - asInternalUser.index({ - index: ML_NOTIFICATION_INDEX_02, - body: newClearedMessage, - refresh: 'wait_for', - }), - ]); + ...notificationIndices.map((index) => + asInternalUser.index({ + index, + body: newClearedMessage, + refresh: 'wait_for', + }) + ), + ]; + + await Promise.all(promises); return { success: true, last_cleared: clearedTime }; } diff --git a/x-pack/plugins/ml/server/routes/job_audit_messages.ts b/x-pack/plugins/ml/server/routes/job_audit_messages.ts index 1548427797e16..4dcaca573fc17 100644 --- a/x-pack/plugins/ml/server/routes/job_audit_messages.ts +++ b/x-pack/plugins/ml/server/routes/job_audit_messages.ts @@ -121,8 +121,8 @@ export function jobAuditMessagesRoutes({ router, routeGuard }: RouteInitializati async ({ client, mlClient, request, response, jobSavedObjectService }) => { try { const { clearJobAuditMessages } = jobAuditMessagesProvider(client, mlClient); - const { jobId } = request.body; - const resp = await clearJobAuditMessages(jobId); + const { jobId, notificationIndices } = request.body; + const resp = await clearJobAuditMessages(jobId, notificationIndices); return response.ok({ body: resp, diff --git a/x-pack/plugins/ml/server/routes/schemas/job_audit_messages_schema.ts b/x-pack/plugins/ml/server/routes/schemas/job_audit_messages_schema.ts index 525ac73fde120..aeff76f057fc6 100644 --- a/x-pack/plugins/ml/server/routes/schemas/job_audit_messages_schema.ts +++ b/x-pack/plugins/ml/server/routes/schemas/job_audit_messages_schema.ts @@ -20,4 +20,5 @@ export const jobAuditMessagesQuerySchema = schema.object({ export const clearJobAuditMessagesBodySchema = schema.object({ jobId: schema.string(), + notificationIndices: schema.arrayOf(schema.string()), }); diff --git a/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx b/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx index fadf4c5872507..827ce958deb11 100644 --- a/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx +++ b/x-pack/plugins/monitoring/public/alerts/enable_alerts_modal.tsx @@ -134,7 +134,10 @@ export const EnableAlertsModal: React.FC = ({ alerts }: Props) => { - + 1 ? esFilters.buildPhrasesFilter(indexField, value, indexPattern) - : esFilters.buildPhraseFilter(indexField, value, indexPattern); + : esFilters.buildPhraseFilter(indexField, value as string, indexPattern); filter.meta.type = value instanceof Array && value.length > 1 ? 'phrases' : 'phrase'; diff --git a/x-pack/plugins/reporting/common/constants.ts b/x-pack/plugins/reporting/common/constants.ts index c9a763fae52fe..16839173708e3 100644 --- a/x-pack/plugins/reporting/common/constants.ts +++ b/x-pack/plugins/reporting/common/constants.ts @@ -7,8 +7,6 @@ export const PLUGIN_ID = 'reporting'; -export const BROWSER_TYPE = 'chromium'; - export const JOB_COMPLETION_NOTIFICATIONS_SESSION_KEY = 'xpack.reporting.jobCompletionNotifications'; @@ -93,13 +91,10 @@ export const API_DIAGNOSE_URL = `${API_BASE_URL}/diagnose`; export const API_GET_ILM_POLICY_STATUS = `${API_BASE_URL}/ilm_policy_status`; export const API_MIGRATE_ILM_POLICY_URL = `${API_BASE_URL}/deprecations/migrate_ilm_policy`; +export const API_BASE_URL_V1 = '/api/reporting/v1'; // export const ILM_POLICY_NAME = 'kibana-reporting'; -// hacky endpoint: download CSV without queueing a report -export const API_BASE_URL_V1 = '/api/reporting/v1'; // -export const API_GENERATE_IMMEDIATE = `${API_BASE_URL_V1}/generate/immediate/csv_searchsource`; - // Management UI route export const REPORTING_MANAGEMENT_HOME = '/app/management/insightsAndAlerting/reporting'; @@ -109,6 +104,13 @@ export enum JOB_STATUSES { PROCESSING = 'processing', COMPLETED = 'completed', FAILED = 'failed', - CANCELLED = 'cancelled', WARNINGS = 'completed_with_warnings', } + +// Test Subjects +export const REPORT_TABLE_ID = 'reportJobListing'; +export const REPORT_TABLE_ROW_ID = 'reportJobRow'; + +// hacky endpoint: download CSV without queueing a report +// FIXME: find a way to make these endpoints "generic" instead of hardcoded, as are the queued report export types +export const API_GENERATE_IMMEDIATE = `${API_BASE_URL_V1}/generate/immediate/csv_searchsource`; diff --git a/x-pack/plugins/reporting/common/types.ts b/x-pack/plugins/reporting/common/types.ts index 308245a696d92..dfd4f75508494 100644 --- a/x-pack/plugins/reporting/common/types.ts +++ b/x-pack/plugins/reporting/common/types.ts @@ -50,7 +50,6 @@ export interface TaskRunResult { size: number; csv_contains_formulas?: boolean; max_size_reached?: boolean; - needs_sorting?: boolean; warnings?: string[]; } @@ -120,8 +119,10 @@ export type JobStatus = | 'processing' // Report job has been claimed and is executing | 'failed'; // Report was not successful, and all retries are done. Nothing to download. +// payload for retrieving the error message of a failed job export interface JobContent { - content: string; + content: TaskRunResult['content']; + content_type: false; } /* diff --git a/x-pack/plugins/reporting/public/lib/__snapshots__/stream_handler.test.ts.snap b/x-pack/plugins/reporting/public/lib/__snapshots__/stream_handler.test.ts.snap index f1d9d747a7236..3d49e8e695f9b 100644 --- a/x-pack/plugins/reporting/public/lib/__snapshots__/stream_handler.test.ts.snap +++ b/x-pack/plugins/reporting/public/lib/__snapshots__/stream_handler.test.ts.snap @@ -86,7 +86,7 @@ Array [ size="m" title="The reporting job failed" > - this is the completed report data + this is the failed report error

diff --git a/x-pack/plugins/reporting/public/lib/job.ts b/x-pack/plugins/reporting/public/lib/job.ts deleted file mode 100644 index c882e8b92986b..0000000000000 --- a/x-pack/plugins/reporting/public/lib/job.ts +++ /dev/null @@ -1,75 +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 { JobId, ReportApiJSON, ReportSource, TaskRunResult } from '../../common/types'; - -type ReportPayload = ReportSource['payload']; - -/* - * This class represents a report job for the UI - * It can be instantiated with ReportApiJSON: the response data format for the report job APIs - */ -export class Job { - public id: JobId; - public index: string; - - public objectType: ReportPayload['objectType']; - public title: ReportPayload['title']; - public isDeprecated: ReportPayload['isDeprecated']; - public browserTimezone?: ReportPayload['browserTimezone']; - public layout: ReportPayload['layout']; - - public jobtype: ReportSource['jobtype']; - public created_by: ReportSource['created_by']; - public created_at: ReportSource['created_at']; - public started_at: ReportSource['started_at']; - public completed_at: ReportSource['completed_at']; - public status: ReportSource['status']; - public attempts: ReportSource['attempts']; - public max_attempts: ReportSource['max_attempts']; - - public timeout: ReportSource['timeout']; - public kibana_name: ReportSource['kibana_name']; - public kibana_id: ReportSource['kibana_id']; - public browser_type: ReportSource['browser_type']; - - public size?: TaskRunResult['size']; - public content_type?: TaskRunResult['content_type']; - public csv_contains_formulas?: TaskRunResult['csv_contains_formulas']; - public max_size_reached?: TaskRunResult['max_size_reached']; - public warnings?: TaskRunResult['warnings']; - - constructor(report: ReportApiJSON) { - this.id = report.id; - this.index = report.index; - - this.jobtype = report.jobtype; - this.objectType = report.payload.objectType; - this.title = report.payload.title; - this.layout = report.payload.layout; - this.created_by = report.created_by; - this.created_at = report.created_at; - this.started_at = report.started_at; - this.completed_at = report.completed_at; - this.status = report.status; - this.attempts = report.attempts; - this.max_attempts = report.max_attempts; - - this.timeout = report.timeout; - this.kibana_name = report.kibana_name; - this.kibana_id = report.kibana_id; - this.browser_type = report.browser_type; - this.browserTimezone = report.payload.browserTimezone; - this.size = report.output?.size; - this.content_type = report.output?.content_type; - - this.isDeprecated = report.payload.isDeprecated || false; - this.csv_contains_formulas = report.output?.csv_contains_formulas; - this.max_size_reached = report.output?.max_size_reached; - this.warnings = report.output?.warnings; - } -} diff --git a/x-pack/plugins/reporting/public/lib/job.tsx b/x-pack/plugins/reporting/public/lib/job.tsx new file mode 100644 index 0000000000000..96967dc9226c9 --- /dev/null +++ b/x-pack/plugins/reporting/public/lib/job.tsx @@ -0,0 +1,269 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiText, EuiTextColor } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import moment from 'moment'; +import React from 'react'; +import { JOB_STATUSES } from '../../common/constants'; +import { JobId, ReportApiJSON, ReportSource, TaskRunResult } from '../../common/types'; + +const { COMPLETED, FAILED, PENDING, PROCESSING, WARNINGS } = JOB_STATUSES; + +type ReportPayload = ReportSource['payload']; + +/* + * This class represents a report job for the UI + * It can be instantiated with ReportApiJSON: the response data format for the report job APIs + */ +export class Job { + public id: JobId; + public index: string; + + public objectType: ReportPayload['objectType']; + public title: ReportPayload['title']; + public isDeprecated: ReportPayload['isDeprecated']; + public browserTimezone?: ReportPayload['browserTimezone']; + public layout: ReportPayload['layout']; + + public jobtype: ReportSource['jobtype']; + public created_by: ReportSource['created_by']; + public created_at: ReportSource['created_at']; + public started_at: ReportSource['started_at']; + public completed_at: ReportSource['completed_at']; + public status: JOB_STATUSES; // FIXME: can not use ReportSource['status'] due to type mismatch + public attempts: ReportSource['attempts']; + public max_attempts: ReportSource['max_attempts']; + + public timeout: ReportSource['timeout']; + public kibana_name: ReportSource['kibana_name']; + public kibana_id: ReportSource['kibana_id']; + public browser_type: ReportSource['browser_type']; + + public size?: TaskRunResult['size']; + public content_type?: TaskRunResult['content_type']; + public csv_contains_formulas?: TaskRunResult['csv_contains_formulas']; + public max_size_reached?: TaskRunResult['max_size_reached']; + public warnings?: TaskRunResult['warnings']; + + constructor(report: ReportApiJSON) { + this.id = report.id; + this.index = report.index; + + this.jobtype = report.jobtype; + this.objectType = report.payload.objectType; + this.title = report.payload.title; + this.layout = report.payload.layout; + this.created_by = report.created_by; + this.created_at = report.created_at; + this.started_at = report.started_at; + this.completed_at = report.completed_at; + this.status = report.status as JOB_STATUSES; + this.attempts = report.attempts; + this.max_attempts = report.max_attempts; + + this.timeout = report.timeout; + this.kibana_name = report.kibana_name; + this.kibana_id = report.kibana_id; + this.browser_type = report.browser_type; + this.browserTimezone = report.payload.browserTimezone; + this.size = report.output?.size; + this.content_type = report.output?.content_type; + + this.isDeprecated = report.payload.isDeprecated || false; + this.csv_contains_formulas = report.output?.csv_contains_formulas; + this.max_size_reached = report.output?.max_size_reached; + this.warnings = report.output?.warnings; + } + + getStatusMessage() { + const status = this.status; + let smallMessage; + if (status === PENDING) { + smallMessage = i18n.translate('xpack.reporting.jobStatusDetail.pendingStatusReachedText', { + defaultMessage: 'Waiting for job to be processed.', + }); + } else if (status === PROCESSING) { + smallMessage = i18n.translate('xpack.reporting.jobStatusDetail.attemptXofY', { + defaultMessage: 'Attempt {attempts} of {max_attempts}.', + values: { attempts: this.attempts, max_attempts: this.max_attempts }, + }); + } else if (this.getWarnings()) { + smallMessage = i18n.translate('xpack.reporting.jobStatusDetail.warningsText', { + defaultMessage: 'See report info for warnings.', + }); + } else if (this.getError()) { + smallMessage = i18n.translate('xpack.reporting.jobStatusDetail.errorText', { + defaultMessage: 'See report info for error details.', + }); + } + + if (smallMessage) { + return ( + + {smallMessage} + + ); + } + + return null; + } + + getStatus() { + const statusLabel = jobStatusLabelsMap.get(this.status) as string; + const statusTimestamp = this.getStatusTimestamp(); + + if (statusTimestamp) { + return ( + {this.formatDate(statusTimestamp)} + ), + }} + /> + ); + } + + return statusLabel; + } + + getStatusLabel() { + return ( + <> + {this.getStatus()} + {this.getStatusMessage()} + + ); + } + + getCreatedAtLabel() { + if (this.created_by) { + return ( + <> +

{this.formatDate(this.created_at)}
+ {this.created_by} + + ); + } + return this.formatDate(this.created_at); + } + + /* + * We use `output.warnings` to show the error of a failed report job, + * and to show warnings of a job that completed with warnings. + */ + + // There is no error unless the status is 'failed' + getError() { + if (this.status === FAILED) { + return this.warnings; + } + } + + getWarnings() { + if (this.status !== FAILED) { + const warnings: string[] = []; + if (this.isDeprecated) { + warnings.push( + i18n.translate('xpack.reporting.jobWarning.exportTypeDeprecated', { + defaultMessage: + 'This is a deprecated export type. Automation of this report will need to be re-created for compatibility with future versions of Kibana.', + }) + ); + } + if (this.csv_contains_formulas) { + warnings.push( + i18n.translate('xpack.reporting.jobWarning.csvContainsFormulas', { + defaultMessage: + 'Your CSV contains characters which spreadsheet applications can interpret as formulas.', + }) + ); + } + if (this.max_size_reached) { + warnings.push( + i18n.translate('xpack.reporting.jobWarning.maxSizeReachedTooltip', { + defaultMessage: 'Max size reached, contains partial data.', + }) + ); + } + + if (this.warnings?.length) { + warnings.push(...this.warnings); + } + + if (warnings.length) { + return ( +
    + {warnings.map((w, i) => { + return
  • {w}
  • ; + })} +
+ ); + } + } + } + + private formatDate(timestamp: string) { + try { + return moment(timestamp).format('YYYY-MM-DD @ hh:mm A'); + } catch (error) { + // ignore parse error and display unformatted value + return timestamp; + } + } + + private getStatusTimestamp() { + const status = this.status; + if (status === PROCESSING && this.started_at) { + return this.started_at; + } + + if (this.completed_at && ([COMPLETED, FAILED, WARNINGS] as string[]).includes(status)) { + return this.completed_at; + } + + return this.created_at; + } +} + +const jobStatusLabelsMap = new Map([ + [ + PENDING, + i18n.translate('xpack.reporting.jobStatuses.pendingText', { + defaultMessage: 'Pending', + }), + ], + [ + PROCESSING, + i18n.translate('xpack.reporting.jobStatuses.processingText', { + defaultMessage: 'Processing', + }), + ], + [ + COMPLETED, + i18n.translate('xpack.reporting.jobStatuses.completedText', { + defaultMessage: 'Completed', // NOTE: a job is `completed` not `completed_with_warings` if it has reached max size or possibly contains csv characters + }), + ], + [ + WARNINGS, + i18n.translate('xpack.reporting.jobStatuses.warningText', { + defaultMessage: 'Completed', + }), + ], + [ + FAILED, + i18n.translate('xpack.reporting.jobStatuses.failedText', { + defaultMessage: 'Failed', + }), + ], +]); diff --git a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts index 90411884332c8..9396f23277496 100644 --- a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts +++ b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import { stringify } from 'query-string'; import rison from 'rison-node'; import { HttpSetup } from 'src/core/public'; @@ -19,11 +20,6 @@ import { DownloadReportFn, JobId, ManagementLinkFn, ReportApiJSON } from '../../ import { add } from '../../notifier/job_completion_notifications'; import { Job } from '../job'; -export interface JobContent { - content: string; - content_type: boolean; -} - export interface DiagnoseResponse { help: string[]; success: boolean; @@ -46,7 +42,7 @@ interface IReportingAPI { deleteReport(jobId: string): Promise; list(page: number, jobIds: string[]): Promise; // gets the first 10 report of the page total(): Promise; - getError(jobId: string): Promise; + getError(jobId: string): Promise; getInfo(jobId: string): Promise; findForJobIds(jobIds: string[]): Promise; @@ -108,8 +104,16 @@ export class ReportingAPIClient implements IReportingAPI { } public async getError(jobId: string) { - return await this.http.get(`${API_LIST_URL}/output/${jobId}`, { - asSystemRequest: true, + const job = await this.getInfo(jobId); + + if (job.warnings?.[0]) { + // the error message of a failed report is a singular string in the warnings array + return job.warnings[0]; + } + + return i18n.translate('xpack.reporting.apiClient.unknownError', { + defaultMessage: `Report job {job} failed: Unknown error.`, + values: { job: jobId }, }); } diff --git a/x-pack/plugins/reporting/public/lib/stream_handler.test.ts b/x-pack/plugins/reporting/public/lib/stream_handler.test.ts index 58fde5cbd83ad..661370446011f 100644 --- a/x-pack/plugins/reporting/public/lib/stream_handler.test.ts +++ b/x-pack/plugins/reporting/public/lib/stream_handler.test.ts @@ -27,11 +27,10 @@ const mockJobsFound: Job[] = [ ].map((j) => new Job(j as ReportApiJSON)); // prettier-ignore const jobQueueClientMock = new ReportingAPIClient(coreMock.createSetup().http); -jobQueueClientMock.findForJobIds = async (jobIds: string[]) => mockJobsFound; +jobQueueClientMock.findForJobIds = async () => mockJobsFound; jobQueueClientMock.getInfo = () => Promise.resolve(({ content: 'this is the completed report data' } as unknown) as Job); -jobQueueClientMock.getError = () => - Promise.resolve({ content: 'this is the completed report data' }); +jobQueueClientMock.getError = () => Promise.resolve('this is the failed report error'); jobQueueClientMock.getManagementLink = () => '/#management'; jobQueueClientMock.getDownloadLink = () => '/reporting/download/job-123'; diff --git a/x-pack/plugins/reporting/public/lib/stream_handler.ts b/x-pack/plugins/reporting/public/lib/stream_handler.ts index 8e41d34d054ec..304b4fb73374d 100644 --- a/x-pack/plugins/reporting/public/lib/stream_handler.ts +++ b/x-pack/plugins/reporting/public/lib/stream_handler.ts @@ -74,9 +74,9 @@ export class ReportingNotifierStreamHandler { // no download link available for (const job of failedJobs) { - const { content } = await this.apiClient.getError(job.id); + const errorText = await this.apiClient.getError(job.id); this.notifications.toasts.addDanger( - getFailureToast(content, job, this.apiClient.getManagementLink) + getFailureToast(errorText, job, this.apiClient.getManagementLink) ); } return { completed: completedJobs, failed: failedJobs }; diff --git a/x-pack/plugins/reporting/public/management/__snapshots__/report_info_button.test.tsx.snap b/x-pack/plugins/reporting/public/management/__snapshots__/report_info_button.test.tsx.snap index 3417aa59f9d72..4ab50750bbc52 100644 --- a/x-pack/plugins/reporting/public/management/__snapshots__/report_info_button.test.tsx.snap +++ b/x-pack/plugins/reporting/public/management/__snapshots__/report_info_button.test.tsx.snap @@ -176,7 +176,7 @@ Array [ className="euiTitle euiTitle--medium" id="flyoutTitle" > - Job Info + Report info
@@ -226,7 +226,7 @@ Array [ className="euiTitle euiTitle--medium" id="flyoutTitle" > - Job Info + Report info diff --git a/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap b/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap index d0ed2d737b584..d78a09bc6af52 100644 --- a/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap +++ b/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap @@ -340,12 +340,14 @@ exports[`ReportListing Report job listing with some items 1`] = ` >
@@ -521,15 +524,47 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent euiTableCellContent--overflowingContent" >
+ 2020-04-14 @ 05:01 PM + , + } + } > - Pending - waiting for job to be processed + Pending at + + 2020-04-14 @ 05:01 PM + + +
+ + + Waiting for job to be processed. + + +
+
@@ -648,6 +683,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent__hoverItem" >
@@ -779,25 +815,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } - license$={ - Object { - "subscribe": [Function], - } - } - navigateToUrl={[MockFunction]} - pollConfig={ - Object { - "jobCompletionNotifier": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - "jobsRefresh": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - } - } - record={ + job={ Job { "attempts": 0, "browserTimezone": "America/Phoenix", @@ -831,6 +849,24 @@ exports[`ReportListing Report job listing with some items 1`] = ` "warnings": undefined, } } + license$={ + Object { + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } redirect={[MockFunction]} toasts={ Object { @@ -852,7 +888,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` } } /> - - - - - @@ -1652,12 +1351,14 @@ exports[`ReportListing Report job listing with some items 1`] = `
@@ -1833,14 +1535,15 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent euiTableCellContent--overflowingContent" >
@@ -1849,13 +1552,30 @@ exports[`ReportListing Report job listing with some items 1`] = ` } } > - Processing (attempt 1 of 1) at + Processing at 2020-04-14 @ 05:01 PM + +
+ + + Attempt 1 of 1. + + +
+
@@ -1974,6 +1694,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent__hoverItem" >
@@ -2105,25 +1826,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } - license$={ - Object { - "subscribe": [Function], - } - } - navigateToUrl={[MockFunction]} - pollConfig={ - Object { - "jobCompletionNotifier": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - "jobsRefresh": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - } - } - record={ + job={ Job { "attempts": 1, "browserTimezone": "America/Phoenix", @@ -2157,10 +1860,28 @@ exports[`ReportListing Report job listing with some items 1`] = ` "warnings": undefined, } } - redirect={[MockFunction]} - toasts={ + license$={ Object { - "add": [MockFunction], + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } + redirect={[MockFunction]} + toasts={ + Object { + "add": [MockFunction], "addDanger": [MockFunction], "addError": [MockFunction], "addInfo": [MockFunction], @@ -2178,7 +1899,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` } } /> - - - - - @@ -2978,12 +2362,14 @@ exports[`ReportListing Report job listing with some items 1`] = `
@@ -3159,11 +2546,12 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent euiTableCellContent--overflowingContent" >
@@ -3431,25 +2820,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } - license$={ - Object { - "subscribe": [Function], - } - } - navigateToUrl={[MockFunction]} - pollConfig={ - Object { - "jobCompletionNotifier": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - "jobsRefresh": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - } - } - record={ + job={ Job { "attempts": 1, "browserTimezone": "America/Phoenix", @@ -3483,6 +2854,24 @@ exports[`ReportListing Report job listing with some items 1`] = ` "warnings": undefined, } } + license$={ + Object { + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } redirect={[MockFunction]} toasts={ Object { @@ -3551,7 +2940,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` - - - - - @@ -4351,12 +3403,14 @@ exports[`ReportListing Report job listing with some items 1`] = `
@@ -4532,14 +3587,15 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent euiTableCellContent--overflowingContent" >
@@ -4548,7 +3604,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` } } > - Completed with warnings at + Completed at @@ -4567,13 +3623,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` - - Errors occurred: see job info for details. - + See report info for warnings.
@@ -4700,6 +3750,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` className="euiTableCellContent__hoverItem" >
@@ -4831,25 +3882,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } - license$={ - Object { - "subscribe": [Function], - } - } - navigateToUrl={[MockFunction]} - pollConfig={ - Object { - "jobCompletionNotifier": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - "jobsRefresh": Object { - "interval": 5000, - "intervalErrorMultiplier": 3, - }, - } - } - record={ + job={ Job { "attempts": 1, "browserTimezone": "America/Phoenix", @@ -4885,6 +3918,24 @@ exports[`ReportListing Report job listing with some items 1`] = ` ], } } + license$={ + Object { + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } redirect={[MockFunction]} toasts={ Object { @@ -4907,7 +3958,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` } > @@ -4953,7 +4004,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` - - - - - - - - - - - - - - -
-
- - -
- - - -
- - - - -
- - -
- -
-
- - -
- - - - -
- Report -
-
-
-
- My Canvas Workpad -
- -
- - - canvas workpad - - -
-
-
-
- -
- - -
- Created at -
-
-
-
- 2020-04-14 @ 01:19 PM -
- - elastic - -
-
- -
- - -
- Status -
-
-
- - 2020-04-14 @ 01:19 PM - , - } - } - > - Completed at - - 2020-04-14 @ 01:19 PM - - -
-
- -
- - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
- -
- - - - - - -
- - -
- -
-
- - -
- - - - -
- Report -
-
-
-
- My Canvas Workpad -
- -
- - - canvas workpad - - -
-
-
-
- -
- - -
- Created at -
-
-
-
- 2020-04-14 @ 01:19 PM -
- - elastic - -
-
- -
- - -
- Status -
-
-
- - 2020-04-14 @ 01:19 PM - , - } - } - > - Completed at - - 2020-04-14 @ 01:19 PM - - -
-
- -
- - -
- - -
-
- - - - - - - - - - - - - - @@ -8455,16 +4423,16 @@ exports[`ReportListing Report job listing with some items 1`] = ` >
-
- - - - -
- Created at -
-
-
-
- 2020-04-14 @ 01:17 PM -
- - elastic - -
-
- -
- - -
- Status -
-
-
- - 2020-04-14 @ 01:18 PM - , - } - } - > - Completed at - - 2020-04-14 @ 01:18 PM - - -
-
- -
- - -
- - + My Canvas Workpad +
+
-
- + - - - - - - - - - + +
+ +
+
+ +
+ + +
+ Created at +
+
+
+
+ 2020-04-14 @ 01:19 PM +
+ + elastic + +
+
+ +
+ + +
+ Status +
+
+
+ + 2020-04-14 @ 01:19 PM + , + } + } + > + Completed at + + 2020-04-14 @ 01:19 PM + + +
+
+ +
+ + +
+ + +
+
+ - - + } + > + + + + + + + + @@ -9876,15 +5512,17 @@ exports[`ReportListing Report job listing with some items 1`] = `
- 2020-04-14 @ 01:12 PM + 2020-04-14 @ 01:19 PM
elastic @@ -10030,7 +5669,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
- 2020-04-14 @ 01:13 PM + 2020-04-14 @ 01:19 PM , } } @@ -10077,7 +5717,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` - 2020-04-14 @ 01:13 PM + 2020-04-14 @ 01:19 PM
@@ -10087,7 +5727,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` @@ -10117,12 +5757,12 @@ exports[`ReportListing Report job listing with some items 1`] = ` "attempts": 1, "browserTimezone": "America/Phoenix", "browser_type": "chromium", - "completed_at": "2020-04-14T17:13:03.719Z", + "completed_at": "2020-04-14T17:19:36.822Z", "content_type": "application/pdf", - "created_at": "2020-04-14T17:12:51.985Z", + "created_at": "2020-04-14T17:19:23.578Z", "created_by": "elastic", "csv_contains_formulas": undefined, - "id": "k905zdw11d34cbae0c3y6tzh", + "id": "k9067s1m1d4wcbae0cdnvcms", "index": ".reporting-2020.04.12", "isDeprecated": false, "jobtype": "printable_pdf", @@ -10139,14 +5779,14 @@ exports[`ReportListing Report job listing with some items 1`] = ` "max_size_reached": undefined, "objectType": "canvas workpad", "size": 80262, - "started_at": "2020-04-14T17:12:52.431Z", + "started_at": "2020-04-14T17:19:25.247Z", "status": "completed", "timeout": 300000, "title": "My Canvas Workpad", "warnings": undefined, } } - itemId="k905zdw11d34cbae0c3y6tzh" + itemId="k9067s1m1d4wcbae0cdnvcms" key=".0" >
@@ -10329,127 +5970,920 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } + job={ + Job { + "attempts": 1, + "browserTimezone": "America/Phoenix", + "browser_type": "chromium", + "completed_at": "2020-04-14T17:19:36.822Z", + "content_type": "application/pdf", + "created_at": "2020-04-14T17:19:23.578Z", + "created_by": "elastic", + "csv_contains_formulas": undefined, + "id": "k9067s1m1d4wcbae0cdnvcms", + "index": ".reporting-2020.04.12", + "isDeprecated": false, + "jobtype": "printable_pdf", + "kibana_id": "5b2de169-2785-441b-ae8c-186a1936b17d", + "kibana_name": "spicy.local", + "layout": Object { + "dimensions": Object { + "height": 720, + "width": 1080, + }, + "id": "preserve_layout", + }, + "max_attempts": 1, + "max_size_reached": undefined, + "objectType": "canvas workpad", + "size": 80262, + "started_at": "2020-04-14T17:19:25.247Z", + "status": "completed", + "timeout": 300000, + "title": "My Canvas Workpad", + "warnings": undefined, + } + } + license$={ + Object { + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } + redirect={[MockFunction]} + toasts={ + Object { + "add": [MockFunction], + "addDanger": [MockFunction], + "addError": [MockFunction], + "addInfo": [MockFunction], + "addSuccess": [MockFunction], + "addWarning": [MockFunction], + "get$": [MockFunction], + "remove": [MockFunction], + } + } + urlService={ + Object { + "locators": Object { + "get": [Function], + }, + } + } + > + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+ +
+ + + + +
+ + +
+ +
+
+ + +
+ + + + +
+ Report +
+
+
+
+ My Canvas Workpad +
+ +
+ + - - - - - - - - - + +
+
+
+
+ +
+ + +
+ Created at +
+
+
+
+ 2020-04-14 @ 01:17 PM +
+ + elastic + +
+
+ +
+ + +
+ Status +
+
+
+ + 2020-04-14 @ 01:18 PM + , + } + } + > + Completed at + + 2020-04-14 @ 01:18 PM + + +
+
+ +
+ + +
+ + +
+
+ - - + } + > + + + + + + + + @@ -11249,15 +7594,17 @@ exports[`ReportListing Report job listing with some items 1`] = `
- count + My Canvas Workpad
- visualization + canvas workpad
@@ -11362,7 +7709,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
- 2020-04-09 @ 03:09 PM + 2020-04-14 @ 01:12 PM
elastic @@ -11403,7 +7751,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
- 2020-04-09 @ 03:10 PM + 2020-04-14 @ 01:13 PM , } } @@ -11450,7 +7799,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` - 2020-04-09 @ 03:10 PM + 2020-04-14 @ 01:13 PM
@@ -11460,7 +7809,7 @@ exports[`ReportListing Report job listing with some items 1`] = ` @@ -11490,36 +7839,36 @@ exports[`ReportListing Report job listing with some items 1`] = ` "attempts": 1, "browserTimezone": "America/Phoenix", "browser_type": "chromium", - "completed_at": "2020-04-09T19:10:10.049Z", - "content_type": "image/png", - "created_at": "2020-04-09T19:09:52.139Z", + "completed_at": "2020-04-14T17:13:03.719Z", + "content_type": "application/pdf", + "created_at": "2020-04-14T17:12:51.985Z", "created_by": "elastic", "csv_contains_formulas": undefined, - "id": "k8t4ylcb07mi9d006214ifyg", - "index": ".reporting-2020.04.05", + "id": "k905zdw11d34cbae0c3y6tzh", + "index": ".reporting-2020.04.12", "isDeprecated": false, - "jobtype": "PNG", - "kibana_id": "f2e59b4e-f79b-4a48-8a7d-6d50a3c1d914", + "jobtype": "printable_pdf", + "kibana_id": "5b2de169-2785-441b-ae8c-186a1936b17d", "kibana_name": "spicy.local", "layout": Object { "dimensions": Object { - "height": 1575, - "width": 1423, + "height": 720, + "width": 1080, }, - "id": "png", + "id": "preserve_layout", }, "max_attempts": 1, "max_size_reached": undefined, - "objectType": "visualization", - "size": 123456789, - "started_at": "2020-04-09T19:09:54.570Z", + "objectType": "canvas workpad", + "size": 80262, + "started_at": "2020-04-14T17:12:52.431Z", "status": "completed", "timeout": 300000, - "title": "count", + "title": "My Canvas Workpad", "warnings": undefined, } } - itemId="k8t4ylcb07mi9d006214ifyg" + itemId="k905zdw11d34cbae0c3y6tzh" key=".0" >
@@ -11702,127 +8052,920 @@ exports[`ReportListing Report job listing with some items 1`] = ` "timeZone": null, } } + job={ + Job { + "attempts": 1, + "browserTimezone": "America/Phoenix", + "browser_type": "chromium", + "completed_at": "2020-04-14T17:13:03.719Z", + "content_type": "application/pdf", + "created_at": "2020-04-14T17:12:51.985Z", + "created_by": "elastic", + "csv_contains_formulas": undefined, + "id": "k905zdw11d34cbae0c3y6tzh", + "index": ".reporting-2020.04.12", + "isDeprecated": false, + "jobtype": "printable_pdf", + "kibana_id": "5b2de169-2785-441b-ae8c-186a1936b17d", + "kibana_name": "spicy.local", + "layout": Object { + "dimensions": Object { + "height": 720, + "width": 1080, + }, + "id": "preserve_layout", + }, + "max_attempts": 1, + "max_size_reached": undefined, + "objectType": "canvas workpad", + "size": 80262, + "started_at": "2020-04-14T17:12:52.431Z", + "status": "completed", + "timeout": 300000, + "title": "My Canvas Workpad", + "warnings": undefined, + } + } + license$={ + Object { + "subscribe": [Function], + } + } + navigateToUrl={[MockFunction]} + pollConfig={ + Object { + "jobCompletionNotifier": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + "jobsRefresh": Object { + "interval": 5000, + "intervalErrorMultiplier": 3, + }, + } + } + redirect={[MockFunction]} + toasts={ + Object { + "add": [MockFunction], + "addDanger": [MockFunction], + "addError": [MockFunction], + "addInfo": [MockFunction], + "addSuccess": [MockFunction], + "addWarning": [MockFunction], + "get$": [MockFunction], + "remove": [MockFunction], + } + } + urlService={ + Object { + "locators": Object { + "get": [Function], + }, + } + } + > + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+ + + + + + +
+ + +
+ +
+
+ + +
+ + + + +
+ Report +
+
+
+
+ count +
+ +
+ + - - - - - - - - - + +
+
+
+
+ +
+ + +
+ Created at +
+
+
+
+ 2020-04-09 @ 03:09 PM +
+ + elastic + +
+
+ +
+ + +
+ Status +
+
+
+ + 2020-04-09 @ 03:10 PM + , + } + } + > + Completed at + + 2020-04-09 @ 03:10 PM + + +
+
+ +
+ + +
+ + +
+
+ - - + } + > + + + + + + + + diff --git a/x-pack/plugins/reporting/public/management/index.ts b/x-pack/plugins/reporting/public/management/index.ts index c107993ef3074..4d324135288db 100644 --- a/x-pack/plugins/reporting/public/management/index.ts +++ b/x-pack/plugins/reporting/public/management/index.ts @@ -5,7 +5,25 @@ * 2.0. */ -export { ReportErrorButton } from './report_error_button'; -export { ReportDeleteButton } from './report_delete_button'; -export { ReportDownloadButton } from './report_download_button'; -export { ReportInfoButton } from './report_info_button'; +import { InjectedIntl } from '@kbn/i18n/react'; +import { ApplicationStart, ToastsSetup } from 'src/core/public'; +import { LicensingPluginSetup } from '../../../licensing/public'; +import { UseIlmPolicyStatusReturn } from '../lib/ilm_policy_status_context'; +import { ReportingAPIClient } from '../lib/reporting_api_client'; +import { ClientConfigType } from '../plugin'; +import type { SharePluginSetup } from '../shared_imports'; + +export interface ListingProps { + intl: InjectedIntl; + apiClient: ReportingAPIClient; + capabilities: ApplicationStart['capabilities']; + license$: LicensingPluginSetup['license$']; // FIXME: license$ is deprecated + pollConfig: ClientConfigType['poll']; + redirect: ApplicationStart['navigateToApp']; + navigateToUrl: ApplicationStart['navigateToUrl']; + toasts: ToastsSetup; + urlService: SharePluginSetup['url']; + ilmPolicyContextValue: UseIlmPolicyStatusReturn; +} + +export { ReportListing } from './report_listing'; diff --git a/x-pack/plugins/reporting/public/management/mount_management_section.tsx b/x-pack/plugins/reporting/public/management/mount_management_section.tsx index 20ea2988f3b8b..0f0c06f830205 100644 --- a/x-pack/plugins/reporting/public/management/mount_management_section.tsx +++ b/x-pack/plugins/reporting/public/management/mount_management_section.tsx @@ -16,7 +16,7 @@ import { IlmPolicyStatusContextProvider } from '../lib/ilm_policy_status_context import { ClientConfigType } from '../plugin'; import type { ManagementAppMountParams, SharePluginSetup } from '../shared_imports'; import { KibanaContextProvider } from '../shared_imports'; -import { ReportListing } from './report_listing'; +import { ReportListing } from '.'; export async function mountManagementSection( coreSetup: CoreSetup, diff --git a/x-pack/plugins/reporting/public/management/report_delete_button.tsx b/x-pack/plugins/reporting/public/management/report_delete_button.tsx index 7009a653c1bf6..da1ce9dd9e1cb 100644 --- a/x-pack/plugins/reporting/public/management/report_delete_button.tsx +++ b/x-pack/plugins/reporting/public/management/report_delete_button.tsx @@ -8,7 +8,7 @@ import { EuiButton, EuiConfirmModal } from '@elastic/eui'; import React, { Fragment, PureComponent } from 'react'; import { Job } from '../lib/job'; -import { Props as ListingProps } from './report_listing'; +import { ListingProps } from './'; type DeleteFn = () => Promise; type Props = { jobsToDelete: Job[]; performDelete: DeleteFn } & ListingProps; diff --git a/x-pack/plugins/reporting/public/management/report_diagnostic.tsx b/x-pack/plugins/reporting/public/management/report_diagnostic.tsx index c7f5518ec9c1f..7525cf3ba7303 100644 --- a/x-pack/plugins/reporting/public/management/report_diagnostic.tsx +++ b/x-pack/plugins/reporting/public/management/report_diagnostic.tsx @@ -120,7 +120,7 @@ export const ReportDiagnostic = ({ apiClient }: Props) => { apiClient.verifyConfig(), statuses.configStatus)} iconType={configStatus === 'complete' ? 'check' : undefined} > { apiClient.verifyBrowser(), statuses.chromeStatus)} isLoading={isBusy && chromeStatus === 'incomplete'} iconType={chromeStatus === 'complete' ? 'check' : undefined} > @@ -177,7 +177,7 @@ export const ReportDiagnostic = ({ apiClient }: Props) => { apiClient.verifyScreenCapture(), statuses.screenshotStatus)} isLoading={isBusy && screenshotStatus === 'incomplete'} iconType={screenshotStatus === 'complete' ? 'check' : undefined} > diff --git a/x-pack/plugins/reporting/public/management/report_download_button.tsx b/x-pack/plugins/reporting/public/management/report_download_button.tsx index b421271037722..f21c83fbf42da 100644 --- a/x-pack/plugins/reporting/public/management/report_download_button.tsx +++ b/x-pack/plugins/reporting/public/management/report_download_button.tsx @@ -6,23 +6,28 @@ */ import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; +import { InjectedIntl } from '@kbn/i18n/react'; import React, { FunctionComponent } from 'react'; import { JOB_STATUSES } from '../../common/constants'; import { Job as ListingJob } from '../lib/job'; -import { Props as ListingProps } from './report_listing'; +import { ReportingAPIClient } from '../lib/reporting_api_client'; -type Props = { record: ListingJob } & ListingProps; +interface Props { + intl: InjectedIntl; + apiClient: ReportingAPIClient; + job: ListingJob; +} export const ReportDownloadButton: FunctionComponent = (props: Props) => { - const { record, apiClient, intl } = props; + const { job, apiClient, intl } = props; - if (record.status !== JOB_STATUSES.COMPLETED && record.status !== JOB_STATUSES.WARNINGS) { + if (job.status !== JOB_STATUSES.COMPLETED && job.status !== JOB_STATUSES.WARNINGS) { return null; } const button = ( apiClient.downloadReport(record.id)} + onClick={() => apiClient.downloadReport(job.id)} iconType="importAction" aria-label={intl.formatMessage({ id: 'xpack.reporting.listing.table.downloadReportAriaLabel', @@ -31,28 +36,14 @@ export const ReportDownloadButton: FunctionComponent = (props: Props) => /> ); - if (record.csv_contains_formulas) { + const warnings = job.getWarnings(); + if (warnings) { return ( - {button} - - ); - } - - if (record.max_size_reached) { - return ( - {button} diff --git a/x-pack/plugins/reporting/public/management/report_error_button.tsx b/x-pack/plugins/reporting/public/management/report_error_button.tsx deleted file mode 100644 index ee0c0e162cb7d..0000000000000 --- a/x-pack/plugins/reporting/public/management/report_error_button.tsx +++ /dev/null @@ -1,124 +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 { EuiButtonIcon, EuiCallOut, EuiPopover } from '@elastic/eui'; -import { InjectedIntl, injectI18n } from '@kbn/i18n/react'; -import React, { Component } from 'react'; -import { JOB_STATUSES } from '../../common/constants'; -import { Job as ListingJob } from '../lib/job'; -import { JobContent, ReportingAPIClient } from '../lib/reporting_api_client'; - -interface Props { - intl: InjectedIntl; - apiClient: ReportingAPIClient; - record: ListingJob; -} - -interface State { - isLoading: boolean; - isPopoverOpen: boolean; - calloutTitle: string; - error?: string; -} - -class ReportErrorButtonUi extends Component { - private mounted?: boolean; - - constructor(props: Props) { - super(props); - - this.state = { - isLoading: false, - isPopoverOpen: false, - calloutTitle: props.intl.formatMessage({ - id: 'xpack.reporting.errorButton.unableToGenerateReportTitle', - defaultMessage: 'Unable to generate report', - }), - }; - } - - public render() { - const { record, intl } = this.props; - - if (record.status !== JOB_STATUSES.FAILED) { - return null; - } - - const button = ( - - ); - - return ( - - -

{this.state.error}

-
-
- ); - } - - public componentWillUnmount() { - this.mounted = false; - } - - public componentDidMount() { - this.mounted = true; - } - - private togglePopover = () => { - this.setState((prevState) => { - return { isPopoverOpen: !prevState.isPopoverOpen }; - }); - - if (!this.state.error) { - this.loadError(); - } - }; - - private closePopover = () => { - this.setState({ isPopoverOpen: false }); - }; - - private loadError = async () => { - const { record, apiClient, intl } = this.props; - - this.setState({ isLoading: true }); - try { - const reportContent: JobContent = await apiClient.getError(record.id); - if (this.mounted) { - this.setState({ isLoading: false, error: reportContent.content }); - } - } catch (kfetchError) { - if (this.mounted) { - this.setState({ - isLoading: false, - calloutTitle: intl.formatMessage({ - id: 'xpack.reporting.errorButton.unableToFetchReportContentTitle', - defaultMessage: 'Unable to fetch report content', - }), - error: kfetchError.message, - }); - } - } - }; -} - -export const ReportErrorButton = injectI18n(ReportErrorButtonUi); diff --git a/x-pack/plugins/reporting/public/management/report_info_button.test.tsx b/x-pack/plugins/reporting/public/management/report_info_button.test.tsx index 119856042a326..147e18410200b 100644 --- a/x-pack/plugins/reporting/public/management/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/management/report_info_button.test.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test/jest'; +import { Job } from '../lib/job'; import { ReportInfoButton } from './report_info_button'; jest.mock('../lib/reporting_api_client'); @@ -15,16 +16,37 @@ import { ReportingAPIClient } from '../lib/reporting_api_client'; const httpSetup = {} as any; const apiClient = new ReportingAPIClient(httpSetup); +const job = new Job({ + id: 'abc-123', + index: '.reporting-2020.04.12', + migration_version: '7.15.0', + attempts: 0, + browser_type: 'chromium', + created_at: '2020-04-14T21:01:13.064Z', + created_by: 'elastic', + jobtype: 'printable_pdf', + max_attempts: 1, + meta: { layout: 'preserve_layout', objectType: 'canvas workpad' }, + payload: { + browserTimezone: 'America/Phoenix', + layout: { dimensions: { height: 720, width: 1080 }, id: 'preserve_layout' }, + objectType: 'canvas workpad', + title: 'My Canvas Workpad', + }, + process_expiration: '1970-01-01T00:00:00.000Z', + status: 'pending', + timeout: 300000, +}); describe('ReportInfoButton', () => { it('handles button click flyout on click', () => { - const wrapper = mountWithIntl(); + const wrapper = mountWithIntl(); const input = wrapper.find('[data-test-subj="reportInfoButton"]').hostNodes(); expect(input).toMatchSnapshot(); }); it('opens flyout with info', async () => { - const wrapper = mountWithIntl(); + const wrapper = mountWithIntl(); const input = wrapper.find('[data-test-subj="reportInfoButton"]').hostNodes(); input.simulate('click'); @@ -33,7 +55,7 @@ describe('ReportInfoButton', () => { expect(flyout).toMatchSnapshot(); expect(apiClient.getInfo).toHaveBeenCalledTimes(1); - expect(apiClient.getInfo).toHaveBeenCalledWith('abc-456'); + expect(apiClient.getInfo).toHaveBeenCalledWith('abc-123'); }); it('opens flyout with fetch error info', () => { @@ -42,7 +64,7 @@ describe('ReportInfoButton', () => { throw new Error('Could not fetch the job info'); }); - const wrapper = mountWithIntl(); + const wrapper = mountWithIntl(); const input = wrapper.find('[data-test-subj="reportInfoButton"]').hostNodes(); input.simulate('click'); @@ -51,6 +73,6 @@ describe('ReportInfoButton', () => { expect(flyout).toMatchSnapshot(); expect(apiClient.getInfo).toHaveBeenCalledTimes(1); - expect(apiClient.getInfo).toHaveBeenCalledWith('abc-789'); + expect(apiClient.getInfo).toHaveBeenCalledWith('abc-123'); }); }); diff --git a/x-pack/plugins/reporting/public/management/report_info_button.tsx b/x-pack/plugins/reporting/public/management/report_info_button.tsx index 92acaa386bd56..8513558fb89cc 100644 --- a/x-pack/plugins/reporting/public/management/report_info_button.tsx +++ b/x-pack/plugins/reporting/public/management/report_info_button.tsx @@ -22,11 +22,11 @@ import React, { Component } from 'react'; import { USES_HEADLESS_JOB_TYPES } from '../../common/constants'; import { Job } from '../lib/job'; import { ReportingAPIClient } from '../lib/reporting_api_client'; -import { Props as ListingProps } from './report_listing'; +import { ListingProps } from '.'; interface Props extends Pick { - jobId: string; apiClient: ReportingAPIClient; + job: Job; } interface State { @@ -58,7 +58,10 @@ class ReportInfoButtonUi extends Component { this.state = { isLoading: false, isFlyoutVisible: false, - calloutTitle: 'Job Info', + calloutTitle: props.intl.formatMessage({ + id: 'xpack.reporting.listing.table.reportCalloutTitle', + defaultMessage: 'Report info', + }), info: null, error: null, }; @@ -76,58 +79,177 @@ class ReportInfoButtonUi extends Component { return null; } - const jobType = info.jobtype || NA; - const attempts = info.attempts ? info.attempts.toString() : NA; - const maxAttempts = info.max_attempts ? info.max_attempts.toString() : NA; const timeout = info.timeout ? info.timeout.toString() : NA; - const warnings = info.warnings?.join(',') ?? null; const jobInfo = [ - { title: 'Title', description: info.title || NA }, - { title: 'Created By', description: info.created_by || NA }, - { title: 'Created At', description: info.created_at || NA }, - { title: 'Timezone', description: info.browserTimezone || NA }, - { title: 'Status', description: info.status || NA }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.titleInfo', + defaultMessage: 'Title', + }), + description: info.title || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.createdAtInfo', + defaultMessage: 'Created At', + }), + description: info.getCreatedAtLabel(), + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.statusInfo', + defaultMessage: 'Status', + }), + description: info.getStatus(), + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.tzInfo', + defaultMessage: 'Timezone', + }), + description: info.browserTimezone || NA, + }, ]; const processingInfo = [ - { title: 'Started At', description: info.started_at || NA }, - { title: 'Completed At', description: info.completed_at || NA }, { - title: 'Processed By', + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.startedAtInfo', + defaultMessage: 'Started At', + }), + description: info.started_at || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.completedAtInfo', + defaultMessage: 'Completed At', + }), + description: info.completed_at || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.processedByInfo', + defaultMessage: 'Processed By', + }), description: info.kibana_name && info.kibana_id ? `${info.kibana_name} (${info.kibana_id})` : NA, }, - { title: 'Content Type', description: info.content_type || NA }, - { title: 'Size in Bytes', description: info.size?.toString() || NA }, - { title: 'Attempts', description: attempts }, - { title: 'Max Attempts', description: maxAttempts }, - { title: 'Timeout', description: timeout }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.contentTypeInfo', + defaultMessage: 'Content Type', + }), + description: info.content_type || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.sizeInfo', + defaultMessage: 'Size in Bytes', + }), + description: info.size?.toString() || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.attemptsInfo', + defaultMessage: 'Attempts', + }), + description: info.attempts.toString(), + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.maxAttemptsInfo', + defaultMessage: 'Max Attempts', + }), + description: info.max_attempts?.toString() || NA, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.timeoutInfo', + defaultMessage: 'Timeout', + }), + description: timeout, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.exportTypeInfo', + defaultMessage: 'Export Type', + }), + description: info.isDeprecated + ? this.props.intl.formatMessage( + { + id: 'xpack.reporting.listing.table.reportCalloutExportTypeDeprecated', + defaultMessage: '{jobtype} (DEPRECATED)', + }, + { jobtype: info.jobtype } + ) + : info.jobtype, + }, + + // TODO when https://github.com/elastic/kibana/pull/106137 is merged, add kibana version field ]; const jobScreenshot = [ - { title: 'Dimensions', description: getDimensions(info) }, - { title: 'Layout', description: info.layout?.id || UNKNOWN }, - { title: 'Browser Type', description: info.browser_type || NA }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.dimensionsInfo', + defaultMessage: 'Dimensions', + }), + description: getDimensions(info), + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.layoutInfo', + defaultMessage: 'Layout', + }), + description: info.layout?.id || UNKNOWN, + }, + { + title: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.infoPanel.browserTypeInfo', + defaultMessage: 'Browser Type', + }), + description: info.browser_type || NA, + }, + ]; + + const warnings = info.getWarnings(); + const warningsInfo = warnings && [ + { + title: Warnings, + description: {warnings}, + }, ]; - const warningInfo = warnings && [{ title: 'Errors', description: warnings }]; + const errored = info.getError(); + const errorInfo = errored && [ + { + title: Error, + description: {errored}, + }, + ]; return ( <> - {USES_HEADLESS_JOB_TYPES.includes(jobType) ? ( + {USES_HEADLESS_JOB_TYPES.includes(info.jobtype) ? ( <> ) : null} - {warningInfo ? ( + {warningsInfo ? ( + <> + + + + ) : null} + {errorInfo ? ( <> - + ) : null} @@ -143,6 +265,7 @@ class ReportInfoButtonUi extends Component { } public render() { + const job = this.props.job; let flyout; if (this.state.isFlyoutVisible) { @@ -168,21 +291,44 @@ class ReportInfoButtonUi extends Component { ); } + let message = this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.table.reportInfoButtonTooltip', + defaultMessage: 'See report info', + }); + if (job.getError()) { + message = this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.table.reportInfoAndErrorButtonTooltip', + defaultMessage: 'See report info and error message', + }); + } else if (job.getWarnings()) { + message = this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.table.reportInfoAndWarningsButtonTooltip', + defaultMessage: 'See report info and warnings', + }); + } + + let buttonIconType = 'iInCircle'; + let buttonColor: 'primary' | 'danger' | 'warning' = 'primary'; + if (job.getWarnings() || job.getError()) { + buttonIconType = 'alert'; + buttonColor = 'danger'; + } + if (job.getWarnings()) { + buttonColor = 'warning'; + } + return ( <> - + {flyout} @@ -193,7 +339,7 @@ class ReportInfoButtonUi extends Component { private loadInfo = async () => { this.setState({ isLoading: true }); try { - const info = await this.props.apiClient.getInfo(this.props.jobId); + const info = await this.props.apiClient.getInfo(this.props.job.id); if (this.mounted) { this.setState({ isLoading: false, info }); } @@ -201,7 +347,10 @@ class ReportInfoButtonUi extends Component { if (this.mounted) { this.setState({ isLoading: false, - calloutTitle: 'Unable to fetch report info', + calloutTitle: this.props.intl.formatMessage({ + id: 'xpack.reporting.listing.table.reportInfoUnableToFetch', + defaultMessage: 'Unable to fetch report info', + }), info: null, error: err, }); diff --git a/x-pack/plugins/reporting/public/management/report_listing.test.tsx b/x-pack/plugins/reporting/public/management/report_listing.test.tsx index b2eb6f0029580..47969edb72fda 100644 --- a/x-pack/plugins/reporting/public/management/report_listing.test.tsx +++ b/x-pack/plugins/reporting/public/management/report_listing.test.tsx @@ -23,7 +23,7 @@ import { IlmPolicyStatusContextProvider } from '../lib/ilm_policy_status_context import { Job } from '../lib/job'; import { InternalApiClientClientProvider, ReportingAPIClient } from '../lib/reporting_api_client'; import { KibanaContextProvider } from '../shared_imports'; -import { Props, ReportListing } from './report_listing'; +import { ListingProps as Props, ReportListing } from '.'; jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => { return { diff --git a/x-pack/plugins/reporting/public/management/report_listing.tsx b/x-pack/plugins/reporting/public/management/report_listing.tsx index 9ba0026999137..4e183380a6b41 100644 --- a/x-pack/plugins/reporting/public/management/report_listing.tsx +++ b/x-pack/plugins/reporting/public/management/report_listing.tsx @@ -16,39 +16,25 @@ import { EuiTextColor, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; -import moment from 'moment'; +import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; import { Component, default as React, Fragment } from 'react'; import { Subscription } from 'rxjs'; -import { ApplicationStart, ToastsSetup } from 'src/core/public'; -import { ILicense, LicensingPluginSetup } from '../../../licensing/public'; -import { JOB_STATUSES as JobStatuses } from '../../common/constants'; +import { ILicense } from '../../../licensing/public'; +import { REPORT_TABLE_ID, REPORT_TABLE_ROW_ID } from '../../common/constants'; import { Poller } from '../../common/poller'; import { durationToNumber } from '../../common/schema_utils'; -import { useIlmPolicyStatus, UseIlmPolicyStatusReturn } from '../lib/ilm_policy_status_context'; +import { useIlmPolicyStatus } from '../lib/ilm_policy_status_context'; import { Job } from '../lib/job'; import { checkLicense } from '../lib/license_check'; -import { ReportingAPIClient, useInternalApiClient } from '../lib/reporting_api_client'; -import { ClientConfigType } from '../plugin'; -import type { SharePluginSetup } from '../shared_imports'; +import { useInternalApiClient } from '../lib/reporting_api_client'; import { useKibana } from '../shared_imports'; -import { ReportDeleteButton, ReportDownloadButton, ReportErrorButton, ReportInfoButton } from './'; import { IlmPolicyLink } from './ilm_policy_link'; import { MigrateIlmPolicyCallOut } from './migrate_ilm_policy_callout'; +import { ReportDeleteButton } from './report_delete_button'; import { ReportDiagnostic } from './report_diagnostic'; - -export interface Props { - intl: InjectedIntl; - apiClient: ReportingAPIClient; - capabilities: ApplicationStart['capabilities']; - license$: LicensingPluginSetup['license$']; - pollConfig: ClientConfigType['poll']; - redirect: ApplicationStart['navigateToApp']; - navigateToUrl: ApplicationStart['navigateToUrl']; - toasts: ToastsSetup; - urlService: SharePluginSetup['url']; - ilmPolicyContextValue: UseIlmPolicyStatusReturn; -} +import { ReportDownloadButton } from './report_download_button'; +import { ReportInfoButton } from './report_info_button'; +import { ListingProps as Props } from './'; interface State { page: number; @@ -61,45 +47,6 @@ interface State { badLicenseMessage: string; } -const jobStatusLabelsMap = new Map([ - [ - JobStatuses.PENDING, - i18n.translate('xpack.reporting.jobStatuses.pendingText', { - defaultMessage: 'Pending', - }), - ], - [ - JobStatuses.PROCESSING, - i18n.translate('xpack.reporting.jobStatuses.processingText', { - defaultMessage: 'Processing', - }), - ], - [ - JobStatuses.COMPLETED, - i18n.translate('xpack.reporting.jobStatuses.completedText', { - defaultMessage: 'Completed', - }), - ], - [ - JobStatuses.WARNINGS, - i18n.translate('xpack.reporting.jobStatuses.warningText', { - defaultMessage: 'Completed with warnings', - }), - ], - [ - JobStatuses.FAILED, - i18n.translate('xpack.reporting.jobStatuses.failedText', { - defaultMessage: 'Failed', - }), - ], - [ - JobStatuses.CANCELLED, - i18n.translate('xpack.reporting.jobStatuses.cancelledText', { - defaultMessage: 'Cancelled', - }), - ], -]); - class ReportListingUi extends Component { private isInitialJobsFetch: boolean; private licenseSubscription?: Subscription; @@ -212,9 +159,9 @@ class ReportListingUi extends Component { this.setState((current) => ({ ...current, selectedJobs: jobs })); }; - private removeRecord = (record: Job) => { + private removeJob = (job: Job) => { const { jobs } = this.state; - const filtered = jobs.filter((j) => j.id !== record.id); + const filtered = jobs.filter((j) => j.id !== job.id); this.setState((current) => ({ ...current, jobs: filtered })); }; @@ -223,17 +170,17 @@ class ReportListingUi extends Component { if (selectedJobs.length === 0) return undefined; const performDelete = async () => { - for (const record of selectedJobs) { + for (const job of selectedJobs) { try { - await this.props.apiClient.deleteReport(record.id); - this.removeRecord(record); + await this.props.apiClient.deleteReport(job.id); + this.removeJob(job); this.props.toasts.addSuccess( this.props.intl.formatMessage( { id: 'xpack.reporting.listing.table.deleteConfim', defaultMessage: `The {reportTitle} report was deleted`, }, - { reportTitle: record.title } + { reportTitle: job.title } ) ); } catch (error) { @@ -316,15 +263,6 @@ class ReportListingUi extends Component { return this.state.showLinks && this.state.enableLinks; }; - private formatDate(timestamp: string) { - try { - return moment(timestamp).format('YYYY-MM-DD @ hh:mm A'); - } catch (error) { - // ignore parse error and display unformatted value - return timestamp; - } - } - private renderTable() { const { intl } = this.props; @@ -335,12 +273,12 @@ class ReportListingUi extends Component { id: 'xpack.reporting.listing.tableColumns.reportTitle', defaultMessage: 'Report', }), - render: (objectTitle: string, record: Job) => { + render: (objectTitle: string, job: Job) => { return (
{objectTitle}
- {record.objectType} + {job.objectType}
); @@ -352,17 +290,9 @@ class ReportListingUi extends Component { id: 'xpack.reporting.listing.tableColumns.createdAtTitle', defaultMessage: 'Created at', }), - render: (createdAt: string, record: Job) => { - if (record.created_by) { - return ( -
-
{this.formatDate(createdAt)}
- {record.created_by} -
- ); - } - return this.formatDate(createdAt); - }, + render: (_createdAt: string, job: Job) => ( +
{job.getCreatedAtLabel()}
+ ), }, { field: 'status', @@ -370,89 +300,9 @@ class ReportListingUi extends Component { id: 'xpack.reporting.listing.tableColumns.statusTitle', defaultMessage: 'Status', }), - render: (status: string, record: Job) => { - if (status === 'pending') { - return ( -
- -
- ); - } - - let maxSizeReached; - if (record.max_size_reached) { - maxSizeReached = ( - - - - ); - } - - let warnings; - if (record.warnings) { - warnings = ( - - - - - - ); - } - - let statusTimestamp; - if (status === JobStatuses.PROCESSING && record.started_at) { - statusTimestamp = this.formatDate(record.started_at); - } else if ( - record.completed_at && - ([ - JobStatuses.COMPLETED, - JobStatuses.FAILED, - JobStatuses.WARNINGS, - ] as string[]).includes(status) - ) { - statusTimestamp = this.formatDate(record.completed_at); - } - - let statusLabel = jobStatusLabelsMap.get(status as JobStatuses) || status; - - if (status === JobStatuses.PROCESSING) { - statusLabel = statusLabel + ` (attempt ${record.attempts} of ${record.max_attempts})`; - } - - if (statusTimestamp) { - return ( -
- {statusTimestamp}, - }} - /> - {maxSizeReached} - {warnings} -
- ); - } - - // unknown status - return ( -
- {statusLabel} - {maxSizeReached} -
- ); - }, + render: (_status: string, job: Job) => ( +
{job.getStatusLabel()}
+ ), }, { name: intl.formatMessage({ @@ -461,12 +311,11 @@ class ReportListingUi extends Component { }), actions: [ { - render: (record: Job) => { + render: (job: Job) => { return ( -
- - - +
+ +
); }, @@ -520,7 +369,8 @@ class ReportListingUi extends Component { selection={selection} isSelectable={true} onChange={this.onTableChange} - data-test-subj="reportJobListing" + data-test-subj={REPORT_TABLE_ID} + rowProps={() => ({ 'data-test-subj': REPORT_TABLE_ROW_ID })} /> ); diff --git a/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/index.ts b/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/index.ts index eb2abf4036c03..7aaa9c78602a9 100644 --- a/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/index.ts +++ b/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/index.ts @@ -17,7 +17,6 @@ import { InnerSubscriber } from 'rxjs/internal/InnerSubscriber'; import { ignoreElements, map, mergeMap, tap } from 'rxjs/operators'; import { getChromiumDisconnectedError } from '../'; import { ReportingCore } from '../../..'; -import { BROWSER_TYPE } from '../../../../common/constants'; import { durationToNumber } from '../../../../common/schema_utils'; import { CaptureConfig } from '../../../../server/types'; import { LevelLogger } from '../../../lib'; @@ -70,7 +69,7 @@ export class HeadlessChromiumDriverFactory { }); } - type = BROWSER_TYPE; + type = 'chromium'; /* * Return an observable to objects which will drive screenshot capture for a page diff --git a/x-pack/plugins/reporting/server/export_types/csv/execute_job.test.ts b/x-pack/plugins/reporting/server/export_types/csv/execute_job.test.ts index 32b5370371cce..0e8a7016b853b 100644 --- a/x-pack/plugins/reporting/server/export_types/csv/execute_job.test.ts +++ b/x-pack/plugins/reporting/server/export_types/csv/execute_job.test.ts @@ -175,7 +175,7 @@ describe('CSV Execute Job', function () { ); expect(mockEsClient.scroll).toHaveBeenCalledWith( - expect.objectContaining({ scroll_id: scrollId }) + expect.objectContaining({ body: { scroll_id: scrollId } }) ); }); @@ -261,7 +261,7 @@ describe('CSV Execute Job', function () { ); expect(mockEsClient.clearScroll).toHaveBeenCalledWith( - expect.objectContaining({ scroll_id: lastScrollId }) + expect.objectContaining({ body: { scroll_id: lastScrollId } }) ); }); @@ -295,7 +295,7 @@ describe('CSV Execute Job', function () { ); expect(mockEsClient.clearScroll).toHaveBeenCalledWith( - expect.objectContaining({ scroll_id: lastScrollId }) + expect.objectContaining({ body: { scroll_id: lastScrollId } }) ); }); }); @@ -753,7 +753,7 @@ describe('CSV Execute Job', function () { expect(mockEsClient.clearScroll).toHaveBeenCalledWith( expect.objectContaining({ - scroll_id: scrollId, + body: { scroll_id: scrollId }, }) ); }); @@ -1150,7 +1150,7 @@ describe('CSV Execute Job', function () { await runTask('job123', jobParams, cancellationToken); expect(mockEsClient.scroll).toHaveBeenCalledWith( - expect.objectContaining({ scroll: scrollDuration }) + expect.objectContaining({ body: { scroll: scrollDuration, scroll_id: 'scrollId' } }) ); }); }); diff --git a/x-pack/plugins/reporting/server/export_types/csv/generate_csv/hit_iterator.ts b/x-pack/plugins/reporting/server/export_types/csv/generate_csv/hit_iterator.ts index 72935e64dd6b5..9014e4f85b3b2 100644 --- a/x-pack/plugins/reporting/server/export_types/csv/generate_csv/hit_iterator.ts +++ b/x-pack/plugins/reporting/server/export_types/csv/generate_csv/hit_iterator.ts @@ -60,12 +60,14 @@ export function createHitIterator(logger: LevelLogger) { ); } - async function scroll(scrollId: string | undefined) { + async function scroll(scrollId: string) { logger.debug('executing scroll request'); return parseResponse( await elasticsearchClient.scroll({ - scroll_id: scrollId, - scroll: scrollSettings.duration, + body: { + scroll_id: scrollId, + scroll: scrollSettings.duration, + }, }) ); } @@ -74,7 +76,7 @@ export function createHitIterator(logger: LevelLogger) { logger.debug('executing clearScroll request'); try { await elasticsearchClient.clearScroll({ - scroll_id: scrollId, + body: { scroll_id: scrollId }, }); } catch (err) { // Do not throw the error, as the job can still be completed successfully diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts index 254bc0ae21f6c..a38e0d58abf89 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts +++ b/x-pack/plugins/reporting/server/export_types/csv_searchsource/generate_csv/generate_csv.ts @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import { SearchResponse } from 'elasticsearch'; +import type { estypes } from '@elastic/elasticsearch'; import { IScopedClusterClient, IUiSettingsClient } from 'src/core/server'; import { IScopedSearchClient } from 'src/plugins/data/server'; import { Datatable } from 'src/plugins/expressions/server'; @@ -93,7 +93,7 @@ export class CsvGenerator { }; const results = ( await this.clients.data.search(searchParams, { strategy: ES_SEARCH_STRATEGY }).toPromise() - ).rawResponse as SearchResponse; + ).rawResponse as estypes.SearchResponse; return results; } @@ -107,7 +107,7 @@ export class CsvGenerator { scroll_id: scrollId, }, }) - ).body as SearchResponse; + ).body; return results; } @@ -321,13 +321,13 @@ export class CsvGenerator { if (this.cancellationToken.isCancelled()) { break; } - let results: SearchResponse | undefined; + let results: estypes.SearchResponse | undefined; if (scrollId == null) { // open a scroll cursor in Elasticsearch results = await this.scan(index, searchSource, scrollSettings); scrollId = results?._scroll_id; if (results.hits?.total != null) { - totalRecords = results.hits.total; + totalRecords = results.hits.total as number; this.logger.debug(`Total search results: ${totalRecords}`); } } else { diff --git a/x-pack/plugins/reporting/server/routes/generation.ts b/x-pack/plugins/reporting/server/routes/generation.ts index 5c9fd25b76c39..ce6d1a2f2641f 100644 --- a/x-pack/plugins/reporting/server/routes/generation.ts +++ b/x-pack/plugins/reporting/server/routes/generation.ts @@ -6,7 +6,6 @@ */ import Boom from '@hapi/boom'; -import { errors as elasticsearchErrors } from 'elasticsearch'; import { kibanaResponseFactory } from 'src/core/server'; import { ReportingCore } from '../'; import { API_BASE_URL } from '../../common/constants'; @@ -16,8 +15,6 @@ import { registerGenerateFromJobParams } from './generate_from_jobparams'; import { registerGenerateCsvFromSavedObjectImmediate } from './csv_searchsource_immediate'; import { HandlerFunction } from './types'; -const esErrors = elasticsearchErrors as Record; - const getDownloadBaseUrl = (reporting: ReportingCore) => { const config = reporting.getConfig(); return config.kbnConfig.get('server', 'basePath') + `${API_BASE_URL}/jobs/download`; @@ -77,24 +74,6 @@ export function registerJobGenerationRoutes(reporting: ReportingCore, logger: Lo }); } - if (err instanceof esErrors['401']) { - return res.unauthorized({ - body: `Sorry, you aren't authenticated`, - }); - } - - if (err instanceof esErrors['403']) { - return res.forbidden({ - body: `Sorry, you are not authorized`, - }); - } - - if (err instanceof esErrors['404']) { - return res.notFound({ - body: err.message, - }); - } - // unknown error, can't convert to 4xx throw err; } diff --git a/x-pack/plugins/reporting/server/routes/jobs.ts b/x-pack/plugins/reporting/server/routes/jobs.ts index 0d0332983d6bc..37557c3afb0c7 100644 --- a/x-pack/plugins/reporting/server/routes/jobs.ts +++ b/x-pack/plugins/reporting/server/routes/jobs.ts @@ -93,49 +93,6 @@ export function registerJobInfoRoutes(reporting: ReportingCore) { }) ); - // return the raw output from a job - router.get( - { - path: `${MAIN_ENTRY}/output/{docId}`, - validate: { - params: schema.object({ - docId: schema.string({ minLength: 2 }), - }), - }, - }, - userHandler(async (user, context, req, res) => { - // ensure the async dependencies are loaded - if (!context.reporting) { - return handleUnavailable(res); - } - - const { docId } = req.params; - const { - management: { jobTypes = [] }, - } = await reporting.getLicenseInfo(); - - const jobsQuery = jobsQueryFactory(reporting); - const result = await jobsQuery.getContent(user, docId); - - if (!result) { - throw Boom.notFound(); - } - - const { jobtype: jobType, output } = result; - - if (!jobTypes.includes(jobType)) { - throw Boom.unauthorized(`Sorry, you are not authorized to download ${jobType} reports`); - } - - return res.ok({ - body: output?.content ?? {}, - headers: { - 'content-type': 'application/json', - }, - }); - }) - ); - // return some info about the job router.get( { diff --git a/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts b/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts index 76896a7472d59..a0d6962074a70 100644 --- a/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts +++ b/x-pack/plugins/reporting/server/routes/lib/jobs_query.ts @@ -12,7 +12,8 @@ import { i18n } from '@kbn/i18n'; import { UnwrapPromise } from '@kbn/utility-types'; import { ElasticsearchClient } from 'src/core/server'; import { ReportingCore } from '../../'; -import { ReportApiJSON, ReportDocument, ReportSource } from '../../../common/types'; +import { JobContent, ReportApiJSON, ReportDocument, ReportSource } from '../../../common/types'; +import { statuses } from '../../lib/statuses'; import { Report } from '../../lib/store'; import { ReportingUser } from '../../types'; @@ -47,6 +48,7 @@ interface JobsQueryFactory { count(jobTypes: string[], user: ReportingUser): Promise; get(user: ReportingUser, id: string): Promise; getContent(user: ReportingUser, id: string): Promise; + getError(user: ReportingUser, id: string): Promise<(ReportContent & JobContent) | void>; delete(deleteIndex: string, id: string): Promise>; } @@ -205,6 +207,20 @@ export function jobsQueryFactory(reportingCore: ReportingCore): JobsQueryFactory }; }, + async getError(user, id) { + const content = await this.getContent(user, id); + if (content && content?.output?.content) { + if (content.status !== statuses.JOB_STATUS_FAILED) { + throw new Error(`Can not get error for ${id}`); + } + return { + ...content, + content: content.output.content, + content_type: false, + }; + } + }, + async delete(deleteIndex, id) { try { const { asInternalUser: elasticsearchClient } = await reportingCore.getEsClient(); diff --git a/x-pack/plugins/rule_registry/server/mocks.ts b/x-pack/plugins/rule_registry/server/mocks.ts new file mode 100644 index 0000000000000..cc5c3cfd484a7 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/mocks.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createLifecycleAlertServicesMock } from './utils/lifecycle_alert_services_mock'; + +export const ruleRegistryMocks = { + createLifecycleAlertServices: createLifecycleAlertServicesMock, +}; diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_executor_mock.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_executor_mock.ts new file mode 100644 index 0000000000000..c519674569a51 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_executor_mock.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AlertTypeParams, + AlertTypeState, + AlertInstanceState, + AlertInstanceContext, +} from '../../../../plugins/alerting/server'; +import { AlertExecutorOptionsWithExtraServices } from '../types'; + +import { LifecycleAlertServices, LifecycleRuleExecutor } from './create_lifecycle_executor'; + +export const createLifecycleRuleExecutorMock = < + Params extends AlertTypeParams = never, + State extends AlertTypeState = never, + InstanceState extends AlertInstanceState = never, + InstanceContext extends AlertInstanceContext = never, + ActionGroupIds extends string = never +>( + executor: LifecycleRuleExecutor +) => async ( + options: AlertExecutorOptionsWithExtraServices< + Params, + State, + InstanceState, + InstanceContext, + ActionGroupIds, + LifecycleAlertServices + > +) => await executor(options); diff --git a/x-pack/plugins/rule_registry/server/utils/lifecycle_alert_services_mock.ts b/x-pack/plugins/rule_registry/server/utils/lifecycle_alert_services_mock.ts new file mode 100644 index 0000000000000..37b4847bc9c69 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/lifecycle_alert_services_mock.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertInstanceContext, AlertInstanceState } from '../../../alerting/server'; +import { alertsMock } from '../../../alerting/server/mocks'; +import { LifecycleAlertServices } from './create_lifecycle_executor'; + +/** + * This wraps the alerts to enable the preservation of the generic type + * arguments of the factory function. + **/ +class AlertsMockWrapper< + InstanceState extends AlertInstanceState = AlertInstanceState, + InstanceContext extends AlertInstanceContext = AlertInstanceContext +> { + createAlertServices() { + return alertsMock.createAlertServices(); + } +} + +type AlertServices< + InstanceState extends AlertInstanceState = AlertInstanceState, + InstanceContext extends AlertInstanceContext = AlertInstanceContext +> = ReturnType['createAlertServices']>; + +export const createLifecycleAlertServicesMock = < + InstanceState extends AlertInstanceState = never, + InstanceContext extends AlertInstanceContext = never, + ActionGroupIds extends string = never +>( + alertServices: AlertServices +): LifecycleAlertServices => ({ + alertWithLifecycle: ({ id }) => alertServices.alertInstanceFactory(id), +}); diff --git a/x-pack/plugins/security/server/routes/authorization/spaces/share_saved_object_permissions.test.ts b/x-pack/plugins/security/server/routes/authorization/spaces/share_saved_object_permissions.test.ts index 03736c3bfb4bc..11849a1f50bce 100644 --- a/x-pack/plugins/security/server/routes/authorization/spaces/share_saved_object_permissions.test.ts +++ b/x-pack/plugins/security/server/routes/authorization/spaces/share_saved_object_permissions.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; import type { RequestHandler, RouteConfig } from 'src/core/server'; import { kibanaResponseFactory } from 'src/core/server'; import { httpServerMock } from 'src/core/server/mocks'; diff --git a/x-pack/plugins/security_solution/cypress/README.md b/x-pack/plugins/security_solution/cypress/README.md index 1bc4a47d6d9c6..d70011f864860 100644 --- a/x-pack/plugins/security_solution/cypress/README.md +++ b/x-pack/plugins/security_solution/cypress/README.md @@ -2,6 +2,48 @@ The `security_solution/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). +Currently with Cypress you can develop `functional` tests and coming soon `CCS` and `Upgrade` functional tests. + +If you are still having doubts, questions or queries, please feel free to ping our Cypress champions: + +- Functional Tests: + - Gloria Hornero, Frank Hassanabad and Patryk Kopycinsky + +- CCS Tests: + - Technical questions around the https://github.com/elastic/integration-test repo: + - Domenico Andreoli + - Doubts regarding testing CCS and Cypress best practices: + - Gloria Hornero + +## Table of Contents + +[**How to add a new Cypress test**](#how-to-add-a-new-cypress-test) + +[**Running the tests**](#running-the-tests) + +[**Debugging your test**](#debugging-your-test) + +[**Folder structure**](#folder-structure) + +[**Test data**](#test-data) + +[**Development Best Practices**](#development-best-practices) + +[**Test Artifacts**](#test-artifacts) + +[**Linting**](#linting) + +## How to add a new Cypress test + +Before considering adding a new Cypress tests, please make sure you have added unit and API tests first. Note that, the aim of Cypress + is to test that the user interface operates as expected, hence, you should not be using this tool to test REST API or data contracts. + +First take a look to the [**Development Best Practices**](#development-best-practices) section. +Then check check [**Folder structure**](#folder-structure) section to know where is the best place to put your test, [**Test data**](#test-data) section if you need to create any type +of data for your test, [**Running the tests**](#running-the-tests) to know how to execute the tests and [**Debugging your test**](#debugging-your-test) to debug your test if needed. + +Please, before opening a PR with the new test, please make sure that the test fails. If you never see your test fail you don’t know if your test is actually testing the right thing, or testing anything at all. + ## Running the tests There are currently four ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. @@ -165,7 +207,7 @@ node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solut # launch the cypress test runner with overridden environment variables cd x-pack/plugins/security_solution -CYPRESS_BASE_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD=password yarn cypress:run +CYPRESS_base_url=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD= CYPRESS_protocol= CYPRESS_hostname= CYPRESS_configport= CYPRESS_KIBANA_URL= yarn cypress:run ``` #### Custom Target + Headless (Firefox) @@ -183,7 +225,7 @@ node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solut # launch the cypress test runner with overridden environment variables cd x-pack/plugins/security_solution -CYPRESS_BASE_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD=password yarn cypress:run:firefox +CYPRESS_base_url=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD= CYPRESS_protocol= CYPRESS_hostname= CYPRESS_configport= CYPRESS_KIBANA_URL= yarn cypress:run:firefox ``` #### CCS Custom Target + Headless @@ -216,8 +258,16 @@ Similar sequence, just ending with `yarn cypress:open:ccs`, can be used for inte Appending `--browser firefox` to the `yarn cypress:run:ccs` command above will run the tests on Firefox instead of Chrome. +## Debugging your test +In order to be able to debug any Cypress test you need to open Cypress on visual mode. [Here](https://docs.cypress.io/guides/guides/debugging) +you can find an extended guide about how to proceed. + +If you are debugging a flaky test, a good tip is to insert a `cy.wait()` around async parts of the tes code base, such as network calls which can make an indeterministic test, deterministically fail locally. + ## Folder Structure +Below you can find the folder structure used on our Cypress tests. + ### ccs_integration/ Contains the specs that are executed in a Cross Cluster Search configuration. @@ -352,6 +402,11 @@ export const unmappedCCSRule: CustomRule = { Similar approach should be used in defining all index patterns, rules, and queries to be applied on remote data. ## Development Best Practices +Below you will a set of best practices that should be followed when writing Cypress tests. + +### Make sure your test fail + +Before open a PR with the new test, please make sure that the test fail. If you never see your test fail you don’t know if your test is actually testing the right thing, or testing anything at all. ### Clean up the state @@ -372,6 +427,14 @@ taken into consideration until another solution is implemented: Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. +### Cypress-pipe +It is very common in the code to don't have click handlers regitered. In this specific case, please use [Cypress pipe](https://www.cypress.io/blog/2019/01/22/when-can-the-test-click/). + +### CCS test specific +When testing CCS we want to put our focus in making sure that our `Source` instance is receiving properly the data that comes from the `Remote` instances, as well as the data is displayed as we expect on the `Source`. + +For that reason and in order to make our test more stable, use the API to execute all the actions needed before the assertions, and use Cypress to assert that the UI is displaying all the expected things. + ## Test Artifacts When Cypress tests are run headless on the command line, artifacts diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts index a89ddf3e0b250..5e851cecbd86b 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/data_providers.spec.ts @@ -44,7 +44,7 @@ describe('timeline data providers', () => { closeTimeline(); }); - it('renders the data provider of a host dragged from the All Hosts widget on the hosts page', () => { + it.skip('renders the data provider of a host dragged from the All Hosts widget on the hosts page', () => { dragAndDropFirstHostToTimeline(); openTimelineUsingToggle(); cy.get(`${TIMELINE_FLYOUT} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) @@ -78,7 +78,7 @@ describe('timeline data providers', () => { }); }); - it('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { + it.skip('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { dragFirstHostToTimeline(); cy.get(IS_DRAGGING_DATA_PROVIDERS) @@ -87,7 +87,7 @@ describe('timeline data providers', () => { .should('have.class', 'drop-target-data-providers'); }); - it('render an extra highlighted area in dataProvider when the user starts dragging a host AND is hovering over the data providers', () => { + it.skip('render an extra highlighted area in dataProvider when the user starts dragging a host AND is hovering over the data providers', () => { dragFirstHostToEmptyTimelineDataProviders(); cy.get(IS_DRAGGING_DATA_PROVIDERS) diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts index 38c6f41f1049c..ac34d65f0fd0a 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/flyout_button.spec.ts @@ -79,7 +79,7 @@ describe('timeline flyout button', () => { closeTimelineUsingCloseButton(); }); - it('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { + it.skip('sets correct classes when the user starts dragging a host, but is not hovering over the data providers', () => { dragFirstHostToTimeline(); cy.get(IS_DRAGGING_DATA_PROVIDERS) diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts index 615421b1ef323..cf1bac421b447 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/all_hosts.ts @@ -7,6 +7,6 @@ export const ALL_HOSTS_TABLE = '[data-test-subj="table-allHosts-loading-false"]'; -export const HOSTS_NAMES = '[data-test-subj="draggable-content-host.name"] a.euiLink'; +export const HOSTS_NAMES = '[data-test-subj="render-content-host.name"] a.euiLink'; -export const HOSTS_NAMES_DRAGGABLE = '[data-test-subj="draggable-content-host.name"]'; +export const HOSTS_NAMES_DRAGGABLE = '[data-test-subj="render-content-host.name"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts b/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts index 536379654862c..f2a712f868850 100644 --- a/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts +++ b/x-pack/plugins/security_solution/cypress/screens/hosts/uncommon_processes.ts @@ -5,6 +5,6 @@ * 2.0. */ -export const PROCESS_NAME_FIELD = '[data-test-subj="draggable-content-process.name"]'; +export const PROCESS_NAME_FIELD = '[data-test-subj="render-content-process.name"]'; export const UNCOMMON_PROCESSES_TABLE = '[data-test-subj="table-uncommonProcesses-loading-false"]'; diff --git a/x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx index 6d87b5d3a68b9..ad15f0a5fa9fb 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx @@ -340,13 +340,9 @@ describe.each(chartDataSets)('BarChart with stackByField', () => { const dataProviderId = `draggableId.content.draggable-legend-item-uuid_v4()-${escapeDataProviderId( stackByField )}-${escapeDataProviderId(datum.key)}`; - - expect( - wrapper - .find(`[draggableId="${dataProviderId}"] [data-test-subj="providerContainer"]`) - .first() - .text() - ).toEqual(datum.key); + expect(wrapper.find(`div[data-provider-id="${dataProviderId}"]`).first().text()).toEqual( + datum.key + ); }); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx index 6017501f87dcc..493ce4da78eba 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx @@ -46,6 +46,7 @@ const DraggableLegendItemComponent: React.FC<{ data-test-subj={`legend-item-${dataProviderId}`} field={field} id={dataProviderId} + isDraggable={false} timelineId={timelineId} value={value} /> diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap index aa8214938c2b0..0b25ff2c8c5ee 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap @@ -17,6 +17,7 @@ exports[`DraggableWrapper rendering it renders against the snapshot 1`] = ` }, } } + isDraggable={true} render={[Function]} /> `; diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx index bdc5545880e1c..d27ad96ff3c4f 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx @@ -42,7 +42,11 @@ describe('DraggableWrapper', () => { const wrapper = shallow( - message} /> + message} + /> ); @@ -54,7 +58,11 @@ describe('DraggableWrapper', () => { const wrapper = mount( - message} /> + message} + /> ); @@ -66,19 +74,27 @@ describe('DraggableWrapper', () => { const wrapper = mount( - message} /> + message} + /> ); - expect(wrapper.find('[data-test-subj="copy-to-clipboard"]').exists()).toBe(false); + expect(wrapper.find('[data-test-subj="hover-actions-copy-button"]').exists()).toBe(false); }); test('it renders hover actions when the mouse is over the text of draggable wrapper', async () => { const wrapper = mount( - message} /> + message} + /> ); @@ -88,7 +104,7 @@ describe('DraggableWrapper', () => { wrapper.update(); jest.runAllTimers(); wrapper.update(); - expect(wrapper.find('[data-test-subj="copy-to-clipboard"]').exists()).toBe(true); + expect(wrapper.find('[data-test-subj="hover-actions-copy-button"]').exists()).toBe(true); }); }); }); @@ -98,7 +114,12 @@ describe('DraggableWrapper', () => { const wrapper = mount( - message} truncate /> + message} + truncate + /> ); @@ -112,7 +133,11 @@ describe('DraggableWrapper', () => { const wrapper = mount( - message} /> + message} + /> ); diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx index 9db5b3899d8bc..d008aad213392 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx @@ -7,7 +7,7 @@ import { EuiScreenReaderOnly } from '@elastic/eui'; import { DRAGGABLE_KEYBOARD_WRAPPER_CLASS_NAME } from '@kbn/securitysolution-t-grid'; -import React, { useCallback, useEffect, useMemo, useState, useRef } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Draggable, DraggableProvided, @@ -25,12 +25,13 @@ import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../../../timelines/com import { TruncatableText } from '../truncatable_text'; import { WithHoverActions } from '../with_hover_actions'; -import { DraggableWrapperHoverContent, useGetTimelineId } from './draggable_wrapper_hover_content'; + import { getDraggableId, getDroppableId } from './helpers'; import { ProviderContainer } from './provider_container'; import * as i18n from './translations'; import { useKibana } from '../../lib/kibana'; +import { useHoverActions } from '../hover_actions/use_hover_actions'; // As right now, we do not know what we want there, we will keep it as a placeholder export const DragEffects = styled.div``; @@ -80,7 +81,7 @@ const Wrapper = styled.div` Wrapper.displayName = 'Wrapper'; -const ProviderContentWrapper = styled.span` +export const ProviderContentWrapper = styled.span` > span.euiToolTipAnchor { display: block; /* allow EuiTooltip content to be truncatable */ } @@ -95,6 +96,7 @@ type RenderFunctionProp = ( interface Props { dataProvider: DataProvider; disabled?: boolean; + isDraggable?: boolean; inline?: boolean; render: RenderFunctionProp; timelineId?: string; @@ -121,55 +123,35 @@ export const getStyle = ( }; }; -const draggableContainsLinks = (draggableElement: HTMLDivElement | null) => { - const links = draggableElement?.querySelectorAll('.euiLink') ?? []; - return links.length > 0; -}; - -const DraggableWrapperComponent: React.FC = ({ +const DraggableOnWrapperComponent: React.FC = ({ dataProvider, onFilterAdded, render, timelineId, truncate, }) => { - const keyboardHandlerRef = useRef(null); - const draggableRef = useRef(null); - const [closePopOverTrigger, setClosePopOverTrigger] = useState(false); - const [showTopN, setShowTopN] = useState(false); - const [goGetTimelineId, setGoGetTimelineId] = useState(false); - const timelineIdFind = useGetTimelineId(draggableRef, goGetTimelineId); const [providerRegistered, setProviderRegistered] = useState(false); const isDisabled = dataProvider.id.includes(`-${ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID}-`); - const [hoverActionsOwnFocus, setHoverActionsOwnFocus] = useState(false); const dispatch = useDispatch(); const { timelines } = useKibana().services; - - const handleClosePopOverTrigger = useCallback(() => { - setClosePopOverTrigger((prevClosePopOverTrigger) => !prevClosePopOverTrigger); - setHoverActionsOwnFocus((prevHoverActionsOwnFocus) => { - if (prevHoverActionsOwnFocus) { - setTimeout(() => { - keyboardHandlerRef.current?.focus(); - }, 0); - } - return false; // always give up ownership - }); - - setTimeout(() => { - setHoverActionsOwnFocus(false); - }, 0); // invoked on the next tick, because we want to restore focus first - }, [keyboardHandlerRef]); - - const toggleTopN = useCallback(() => { - setShowTopN((prevShowTopN) => { - const newShowTopN = !prevShowTopN; - if (newShowTopN === false) { - handleClosePopOverTrigger(); - } - return newShowTopN; - }); - }, [handleClosePopOverTrigger]); + const { + closePopOverTrigger, + handleClosePopOverTrigger, + hoverActionsOwnFocus, + hoverContent, + keyboardHandlerRef, + onCloseRequested, + openPopover, + onFocus, + setContainerRef, + showTopN, + } = useHoverActions({ + dataProvider, + onFilterAdded, + render, + timelineId, + truncate, + }); const registerProvider = useCallback(() => { if (!isDisabled) { @@ -192,49 +174,6 @@ const DraggableWrapperComponent: React.FC = ({ [unRegisterProvider] ); - const hoverContent = useMemo(() => { - // display links as additional content in the hover menu to enable keyboard - // navigation of links (when the draggable contains them): - const additionalContent = - hoverActionsOwnFocus && !showTopN && draggableContainsLinks(draggableRef.current) ? ( - - {render(dataProvider, null, { isDragging: false, isDropAnimating: false })} - - ) : null; - - return ( - - ); - }, [ - dataProvider, - handleClosePopOverTrigger, - hoverActionsOwnFocus, - onFilterAdded, - render, - showTopN, - timelineId, - timelineIdFind, - toggleTopN, - ]); - const RenderClone = useCallback( (provided, snapshot) => ( @@ -264,7 +203,7 @@ const DraggableWrapperComponent: React.FC = ({ {...provided.dragHandleProps} ref={(e: HTMLDivElement) => { provided.innerRef(e); - draggableRef.current = e; + setContainerRef(e); }} data-test-subj="providerContainer" isDragging={snapshot.isDragging} @@ -292,13 +231,9 @@ const DraggableWrapperComponent: React.FC = ({ )} ), - [dataProvider, registerProvider, render, truncate] + [dataProvider, registerProvider, render, setContainerRef, truncate] ); - const openPopover = useCallback(() => { - setHoverActionsOwnFocus(true); - }, []); - const { onBlur, onKeyDown } = timelines.getUseDraggableKeyboardWrapper()({ closePopover: handleClosePopOverTrigger, draggableId: getDraggableId(dataProvider.id), @@ -307,24 +242,6 @@ const DraggableWrapperComponent: React.FC = ({ openPopover, }); - const onFocus = useCallback(() => { - if (!hoverActionsOwnFocus) { - keyboardHandlerRef.current?.focus(); - } - }, [hoverActionsOwnFocus, keyboardHandlerRef]); - - const onCloseRequested = useCallback(() => { - setShowTopN(false); - - if (hoverActionsOwnFocus) { - setHoverActionsOwnFocus(false); - - setTimeout(() => { - onFocus(); // return focus to this draggable on the next tick, because we owned focus - }, 0); - } - }, [onFocus, hoverActionsOwnFocus]); - const DroppableContent = useCallback( (droppableProvided) => (
@@ -350,7 +267,7 @@ const DraggableWrapperComponent: React.FC = ({ {droppableProvided.placeholder}
), - [DraggableContent, dataProvider.id, isDisabled, onBlur, onFocus, onKeyDown] + [DraggableContent, dataProvider.id, isDisabled, keyboardHandlerRef, onBlur, onFocus, onKeyDown] ); const content = useMemo( @@ -385,6 +302,75 @@ const DraggableWrapperComponent: React.FC = ({ ); }; +const DraggableWrapperComponent: React.FC = ({ + dataProvider, + isDraggable = false, + onFilterAdded, + render, + timelineId, + truncate, +}) => { + const { + closePopOverTrigger, + hoverActionsOwnFocus, + hoverContent, + onCloseRequested, + setContainerRef, + showTopN, + } = useHoverActions({ + dataProvider, + isDraggable, + onFilterAdded, + render, + timelineId, + truncate, + }); + const renderContent = useCallback( + () => ( +
{ + setContainerRef(e); + }} + tabIndex={-1} + data-provider-id={getDraggableId(dataProvider.id)} + > + {truncate ? ( + + {render(dataProvider, null, { isDragging: false, isDropAnimating: false })} + + ) : ( + + {render(dataProvider, null, { isDragging: false, isDropAnimating: false })} + + )} +
+ ), + [dataProvider, render, setContainerRef, truncate] + ); + if (!isDraggable) { + return ( + + ); + } + return ( + + ); +}; + export const DraggableWrapper = React.memo(DraggableWrapperComponent); DraggableWrapper.displayName = 'DraggableWrapper'; diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx deleted file mode 100644 index 2531780ec4bd5..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx +++ /dev/null @@ -1,564 +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 { waitFor } from '@testing-library/react'; -import { mount, ReactWrapper } from 'enzyme'; - -import { coreMock } from '../../../../../../../src/core/public/mocks'; -import { mockBrowserFields } from '../../containers/source/mock'; -import '../../mock/match_media'; -import { useKibana } from '../../lib/kibana'; -import { TestProviders } from '../../mock'; -import { FilterManager } from '../../../../../../../src/plugins/data/public'; -import { useSourcererScope } from '../../containers/sourcerer'; -import { DraggableWrapperHoverContent } from './draggable_wrapper_hover_content'; -import { TimelineId } from '../../../../common/types/timeline'; -import { useDeepEqualSelector } from '../../../common/hooks/use_selector'; - -jest.mock('../link_to'); -jest.mock('../../lib/kibana'); -jest.mock('../../containers/sourcerer', () => { - const original = jest.requireActual('../../containers/sourcerer'); - - return { - ...original, - useSourcererScope: jest.fn(), - }; -}); - -jest.mock('uuid', () => { - return { - v1: jest.fn(() => 'uuid.v1()'), - v4: jest.fn(() => 'uuid.v4()'), - }; -}); -const mockStartDragToTimeline = jest.fn(); -jest.mock('../../../../../timelines/public/hooks/use_add_to_timeline', () => { - const original = jest.requireActual('../../../../../timelines/public/hooks/use_add_to_timeline'); - return { - ...original, - useAddToTimeline: () => ({ startDragToTimeline: mockStartDragToTimeline }), - }; -}); -const mockAddFilters = jest.fn(); -jest.mock('../../../common/hooks/use_selector', () => ({ - useShallowEqualSelector: jest.fn(), - useDeepEqualSelector: jest.fn(), -})); -jest.mock('../../../common/hooks/use_invalid_filter_query.tsx'); - -const mockUiSettingsForFilterManager = coreMock.createStart().uiSettings; -const timelineId = TimelineId.active; -const field = 'process.name'; -const value = 'nice'; -const toggleTopN = jest.fn(); -const goGetTimelineId = jest.fn(); -const defaultProps = { - field, - goGetTimelineId, - ownFocus: false, - showTopN: false, - timelineId, - toggleTopN, - value, -}; - -describe('DraggableWrapperHoverContent', () => { - beforeAll(() => { - mockStartDragToTimeline.mockReset(); - (useDeepEqualSelector as jest.Mock).mockReturnValue({ - filterManager: { addFilters: mockAddFilters }, - }); - (useSourcererScope as jest.Mock).mockReturnValue({ - browserFields: mockBrowserFields, - selectedPatterns: [], - indexPattern: {}, - }); - }); - - /** - * The tests for "Filter for value" and "Filter out value" are similar enough - * to combine them into "table tests" using this array - */ - const forOrOut = ['for', 'out']; - - forOrOut.forEach((hoverAction) => { - describe(`Filter ${hoverAction} value`, () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - test(`it renders the 'Filter ${hoverAction} value' button when showTopN is false`, () => { - const wrapper = mount( - - - - ); - - expect( - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().exists() - ).toBe(true); - }); - - test(`it does NOT render the 'Filter ${hoverAction} value' button when showTopN is true`, () => { - const wrapper = mount( - - - - ); - - expect( - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().exists() - ).toBe(false); - }); - - test(`it should call goGetTimelineId when user is over the 'Filter ${hoverAction} value' button`, () => { - const wrapper = mount( - - - - ); - const button = wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first(); - button.simulate('mouseenter'); - expect(goGetTimelineId).toHaveBeenCalledWith(true); - }); - - describe('when run in the context of a timeline', () => { - let wrapper: ReactWrapper; - let onFilterAdded: () => void; - - beforeEach(() => { - onFilterAdded = jest.fn(); - - wrapper = mount( - - - - ); - }); - - test('when clicked, it adds a filter to the timeline when running in the context of a timeline', () => { - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(mockAddFilters).toBeCalledWith({ - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: hoverAction === 'out' ? true : false, - params: { query: 'nice' }, - type: 'phrase', - value: 'nice', - }, - query: { match: { 'process.name': { query: 'nice', type: 'phrase' } } }, - }); - }); - - test('when clicked, invokes onFilterAdded when running in the context of a timeline', () => { - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(onFilterAdded).toBeCalled(); - }); - }); - - describe('when NOT run in the context of a timeline', () => { - let wrapper: ReactWrapper; - let onFilterAdded: () => void; - const kibana = useKibana(); - - beforeEach(() => { - kibana.services.data.query.filterManager.addFilters = jest.fn(); - onFilterAdded = jest.fn(); - - wrapper = mount( - - - - ); - }); - - test('when clicked, it adds a filter to the global filters when NOT running in the context of a timeline', () => { - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(kibana.services.data.query.filterManager.addFilters).toBeCalledWith({ - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: hoverAction === 'out' ? true : false, - params: { query: 'nice' }, - type: 'phrase', - value: 'nice', - }, - query: { match: { 'process.name': { query: 'nice', type: 'phrase' } } }, - }); - }); - - test('when clicked, invokes onFilterAdded when NOT running in the context of a timeline', () => { - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(onFilterAdded).toBeCalled(); - }); - }); - - describe('an empty string value when run in the context of a timeline', () => { - let filterManager: FilterManager; - let wrapper: ReactWrapper; - let onFilterAdded: () => void; - - beforeEach(() => { - filterManager = new FilterManager(mockUiSettingsForFilterManager); - filterManager.addFilters = jest.fn(); - onFilterAdded = jest.fn(); - - wrapper = mount( - - - - ); - }); - - const expectedFilterTypeDescription = - hoverAction === 'for' ? 'a "NOT exists"' : 'an "exists"'; - test(`when clicked, it adds ${expectedFilterTypeDescription} filter to the timeline when run in the context of a timeline`, () => { - const expected = - hoverAction === 'for' - ? { - exists: { field: 'process.name' }, - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: true, - type: 'exists', - value: 'exists', - }, - } - : { - exists: { field: 'process.name' }, - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: false, - type: 'exists', - value: 'exists', - }, - }; - - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(mockAddFilters).toBeCalledWith(expected); - }); - }); - - describe('an empty string value when NOT run in the context of a timeline', () => { - let wrapper: ReactWrapper; - let onFilterAdded: () => void; - const kibana = useKibana(); - - beforeEach(() => { - kibana.services.data.query.filterManager.addFilters = jest.fn(); - onFilterAdded = jest.fn(); - - wrapper = mount( - - - - ); - }); - - const expectedFilterTypeDescription = - hoverAction === 'for' ? 'a "NOT exists"' : 'an "exists"'; - test(`when clicked, it adds ${expectedFilterTypeDescription} filter to the global filters when NOT running in the context of a timeline`, () => { - const expected = - hoverAction === 'for' - ? { - exists: { field: 'process.name' }, - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: true, - type: 'exists', - value: 'exists', - }, - } - : { - exists: { field: 'process.name' }, - meta: { - alias: null, - disabled: false, - key: 'process.name', - negate: false, - type: 'exists', - value: 'exists', - }, - }; - - wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); - wrapper.update(); - - expect(kibana.services.data.query.filterManager.addFilters).toBeCalledWith(expected); - }); - }); - }); - }); - - describe('Add to timeline', () => { - const aggregatableStringField = 'cloud.account.id'; - const draggableId = 'draggable.id'; - - [false, true].forEach((showTopN) => { - [value, null].forEach((maybeValue) => { - [draggableId, undefined].forEach((maybeDraggableId) => { - const shouldRender = !showTopN && maybeValue != null && maybeDraggableId != null; - const assertion = shouldRender ? 'should render' : 'should NOT render'; - - test(`it ${assertion} the 'Add to timeline investigation' button when showTopN is ${showTopN}, value is ${maybeValue}, and a draggableId is ${maybeDraggableId}`, () => { - const wrapper = mount( - - - - ); - - expect(wrapper.find('[data-test-subj="add-to-timeline"]').first().exists()).toBe( - shouldRender - ); - }); - }); - }); - }); - - test('when clicked, it invokes the `startDragToTimeline` function returned by the `useAddToTimeline` hook', async () => { - const wrapper = mount( - - - - ); - - wrapper.find('[data-test-subj="add-to-timeline"]').first().simulate('click'); - - await waitFor(() => { - wrapper.update(); - expect(mockStartDragToTimeline).toHaveBeenCalled(); - }); - }); - }); - - describe('Top N', () => { - test(`it renders the 'Show top field' button when showTopN is false and an aggregatable string field is provided`, () => { - const aggregatableStringField = 'cloud.account.id'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect(wrapper.find('[data-test-subj="show-top-field"]').first().exists()).toBe(true); - }); - - test(`it renders the 'Show top field' button when showTopN is false and a allowlisted signal field is provided`, () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect(wrapper.find('[data-test-subj="show-top-field"]').first().exists()).toBe(true); - }); - - test(`it does NOT render the 'Show top field' button when showTopN is false and a field not known to BrowserFields is provided`, () => { - const notKnownToBrowserFields = 'unknown.field'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect(wrapper.find('[data-test-subj="show-top-field"]').first().exists()).toBe(false); - }); - - test(`it should invokes goGetTimelineId when user is over the 'Show top field' button`, async () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - const button = wrapper.find(`[data-test-subj="show-top-field"]`).first(); - button.simulate('mouseenter'); - await waitFor(() => { - expect(goGetTimelineId).toHaveBeenCalledWith(true); - }); - }); - - test(`invokes the toggleTopN function when the 'Show top field' button is clicked`, () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - wrapper.find('[data-test-subj="show-top-field"]').first().simulate('click'); - wrapper.update(); - - expect(toggleTopN).toBeCalled(); - }); - - test(`it does NOT render the Top N histogram when when showTopN is false`, () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect(wrapper.find('[data-test-subj="eventsByDatasetOverviewPanel"]').first().exists()).toBe( - false - ); - }); - - test(`it does NOT render the 'Show top field' button when showTopN is true`, () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect(wrapper.find('[data-test-subj="show-top-field"]').first().exists()).toBe(false); - }); - - test(`it renders the Top N histogram when when showTopN is true`, () => { - const allowlistedField = 'signal.rule.name'; - const wrapper = mount( - - - - ); - - wrapper.update(); - - expect( - wrapper.find('[data-test-subj="eventsByDatasetOverview-uuid.v4()Panel"]').first().exists() - ).toBe(true); - }); - }); - - describe('Copy to Clipboard', () => { - test(`it renders the 'Copy to Clipboard' button when showTopN is false`, () => { - const wrapper = mount( - - - - ); - - expect(wrapper.find(`[data-test-subj="copy-to-clipboard"]`).first().exists()).toBe(true); - }); - - test(`it does NOT render the 'Copy to Clipboard' button when showTopN is true`, () => { - const wrapper = mount( - - - - ); - - expect(wrapper.find(`[data-test-subj="copy-to-clipboard"]`).first().exists()).toBe(false); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx deleted file mode 100644 index 71c3114015a03..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx +++ /dev/null @@ -1,425 +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 { - EuiButtonIcon, - EuiFocusTrap, - EuiPanel, - EuiScreenReaderOnly, - EuiToolTip, -} from '@elastic/eui'; - -import React, { useCallback, useEffect, useRef, useMemo, useState } from 'react'; -import { DraggableId } from 'react-beautiful-dnd'; -import styled from 'styled-components'; - -import { getAllFieldsByName } from '../../containers/source'; -import { COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME } from '../../lib/clipboard/clipboard'; -import { WithCopyToClipboard } from '../../lib/clipboard/with_copy_to_clipboard'; -import { useKibana } from '../../lib/kibana'; -import { createFilter } from '../add_filter_to_global_search_bar'; -import { StatefulTopN } from '../top_n'; - -import { allowTopN } from './helpers'; -import * as i18n from './translations'; -import { useDeepEqualSelector } from '../../hooks/use_selector'; -import { TimelineId } from '../../../../common/types/timeline'; -import { SELECTOR_TIMELINE_GLOBAL_CONTAINER } from '../../../timelines/components/timeline/styles'; -import { SourcererScopeName } from '../../store/sourcerer/model'; -import { useSourcererScope } from '../../containers/sourcerer'; -import { timelineSelectors } from '../../../timelines/store/timeline'; -import { stopPropagationAndPreventDefault } from '../../../../../timelines/public'; -import { TooltipWithKeyboardShortcut } from '../accessibility'; - -export const AdditionalContent = styled.div` - padding: 2px; -`; - -AdditionalContent.displayName = 'AdditionalContent'; - -const getAdditionalScreenReaderOnlyContext = ({ - field, - value, -}: { - field: string; - value?: string[] | string | null; -}): string => { - if (value == null) { - return field; - } - - return Array.isArray(value) ? `${field} ${value.join(' ')}` : `${field} ${value}`; -}; - -const FILTER_FOR_VALUE_KEYBOARD_SHORTCUT = 'f'; -const FILTER_OUT_VALUE_KEYBOARD_SHORTCUT = 'o'; -const ADD_TO_TIMELINE_KEYBOARD_SHORTCUT = 'a'; -const SHOW_TOP_N_KEYBOARD_SHORTCUT = 't'; -const COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT = 'c'; - -interface Props { - additionalContent?: React.ReactNode; - closePopOver?: () => void; - draggableId?: DraggableId; - field: string; - goGetTimelineId?: (args: boolean) => void; - onFilterAdded?: () => void; - ownFocus: boolean; - showTopN: boolean; - timelineId?: string | null; - toggleTopN: () => void; - value?: string[] | string | null; -} - -/** Returns a value for the `disabled` prop of `EuiFocusTrap` */ -const isFocusTrapDisabled = ({ - ownFocus, - showTopN, -}: { - ownFocus: boolean; - showTopN: boolean; -}): boolean => { - if (showTopN) { - return false; // we *always* want to trap focus when showing Top N - } - - return !ownFocus; -}; - -const DraggableWrapperHoverContentComponent: React.FC = ({ - additionalContent = null, - closePopOver, - draggableId, - field, - goGetTimelineId, - onFilterAdded, - ownFocus, - showTopN, - timelineId, - toggleTopN, - value, -}) => { - const kibana = useKibana(); - const { timelines } = kibana.services; - const { startDragToTimeline } = timelines.getUseAddToTimeline()({ - draggableId, - fieldName: field, - }); - const filterManagerBackup = useMemo(() => kibana.services.data.query.filterManager, [ - kibana.services.data.query.filterManager, - ]); - const getManageTimeline = useMemo(() => timelineSelectors.getManageTimelineById(), []); - const { filterManager: activeFilterMananager } = useDeepEqualSelector((state) => - getManageTimeline(state, timelineId ?? '') - ); - const defaultFocusedButtonRef = useRef(null); - const panelRef = useRef(null); - - const filterManager = useMemo( - () => (timelineId === TimelineId.active ? activeFilterMananager : filterManagerBackup), - [timelineId, activeFilterMananager, filterManagerBackup] - ); - - // Regarding data from useManageTimeline: - // * `indexToAdd`, which enables the alerts index to be appended to - // the `indexPattern` returned by `useWithSource`, may only be populated when - // this component is rendered in the context of the active timeline. This - // behavior enables the 'All events' view by appending the alerts index - // to the index pattern. - const activeScope: SourcererScopeName = - timelineId === TimelineId.active - ? SourcererScopeName.timeline - : timelineId != null && - [TimelineId.detectionsPage, TimelineId.detectionsRulesDetailsPage].includes( - timelineId as TimelineId - ) - ? SourcererScopeName.detections - : SourcererScopeName.default; - const { browserFields, indexPattern } = useSourcererScope(activeScope); - const handleStartDragToTimeline = useCallback(() => { - startDragToTimeline(); - if (closePopOver != null) { - closePopOver(); - } - }, [closePopOver, startDragToTimeline]); - - const filterForValue = useCallback(() => { - const filter = - value?.length === 0 ? createFilter(field, undefined) : createFilter(field, value); - const activeFilterManager = filterManager; - - if (activeFilterManager != null) { - activeFilterManager.addFilters(filter); - if (closePopOver != null) { - closePopOver(); - } - if (onFilterAdded != null) { - onFilterAdded(); - } - } - }, [closePopOver, field, value, filterManager, onFilterAdded]); - - const filterOutValue = useCallback(() => { - const filter = - value?.length === 0 ? createFilter(field, null, false) : createFilter(field, value, true); - const activeFilterManager = filterManager; - - if (activeFilterManager != null) { - activeFilterManager.addFilters(filter); - - if (closePopOver != null) { - closePopOver(); - } - if (onFilterAdded != null) { - onFilterAdded(); - } - } - }, [closePopOver, field, value, filterManager, onFilterAdded]); - - const isInit = useRef(true); - - useEffect(() => { - if (isInit.current && goGetTimelineId != null && timelineId == null) { - isInit.current = false; - goGetTimelineId(true); - } - }, [goGetTimelineId, timelineId]); - - useEffect(() => { - if (ownFocus) { - setTimeout(() => { - defaultFocusedButtonRef.current?.focus(); - }, 0); - } - }, [ownFocus]); - - const onKeyDown = useCallback( - (keyboardEvent: React.KeyboardEvent) => { - if (!ownFocus) { - return; - } - - switch (keyboardEvent.key) { - case FILTER_FOR_VALUE_KEYBOARD_SHORTCUT: - stopPropagationAndPreventDefault(keyboardEvent); - filterForValue(); - break; - case FILTER_OUT_VALUE_KEYBOARD_SHORTCUT: - stopPropagationAndPreventDefault(keyboardEvent); - filterOutValue(); - break; - case ADD_TO_TIMELINE_KEYBOARD_SHORTCUT: - stopPropagationAndPreventDefault(keyboardEvent); - handleStartDragToTimeline(); - break; - case SHOW_TOP_N_KEYBOARD_SHORTCUT: - stopPropagationAndPreventDefault(keyboardEvent); - toggleTopN(); - break; - case COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT: - stopPropagationAndPreventDefault(keyboardEvent); - const copyToClipboardButton = panelRef.current?.querySelector( - `.${COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME}` - ); - if (copyToClipboardButton != null) { - copyToClipboardButton.click(); - if (closePopOver != null) { - closePopOver(); - } - } - break; - case 'Enter': - break; - case 'Escape': - stopPropagationAndPreventDefault(keyboardEvent); - if (closePopOver != null) { - closePopOver(); - } - break; - default: - break; - } - }, - - [closePopOver, filterForValue, filterOutValue, handleStartDragToTimeline, ownFocus, toggleTopN] - ); - - return ( - - - -

{i18n.YOU_ARE_IN_A_DIALOG_CONTAINING_OPTIONS(field)}

-
- - {additionalContent != null && {additionalContent}} - - {!showTopN && value != null && ( - - } - > - - - )} - - {!showTopN && value != null && ( - - } - > - - - )} - - {!showTopN && value != null && draggableId != null && ( - - } - > - - - )} - - <> - {allowTopN({ - browserField: getAllFieldsByName(browserFields)[field], - fieldName: field, - }) && ( - <> - {!showTopN && ( - - } - > - - - )} - - {showTopN && ( - - )} - - )} - - - {!showTopN && ( - - )} -
-
- ); -}; - -DraggableWrapperHoverContentComponent.displayName = 'DraggableWrapperHoverContentComponent'; - -export const DraggableWrapperHoverContent = React.memo(DraggableWrapperHoverContentComponent); - -export const useGetTimelineId = function ( - elem: React.MutableRefObject, - getTimelineId: boolean = false -) { - const [timelineId, setTimelineId] = useState(null); - - useEffect(() => { - let startElem: Element | (Node & ParentNode) | null = elem.current; - if (startElem != null && getTimelineId) { - for (; startElem && startElem !== document; startElem = startElem.parentNode) { - const myElem: Element = startElem as Element; - if ( - myElem != null && - myElem.classList != null && - myElem.classList.contains(SELECTOR_TIMELINE_GLOBAL_CONTAINER) && - myElem.hasAttribute('data-timeline-id') - ) { - setTimelineId(myElem.getAttribute('data-timeline-id')); - break; - } - } - } - }, [elem, getTimelineId]); - - return timelineId; -}; diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/use_get_timeline_id_from_dom.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/use_get_timeline_id_from_dom.tsx new file mode 100644 index 0000000000000..fcb547842aec4 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/use_get_timeline_id_from_dom.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState } from 'react'; + +import { SELECTOR_TIMELINE_GLOBAL_CONTAINER } from '../../../timelines/components/timeline/styles'; + +export const useGetTimelineId = function ( + elem: React.MutableRefObject, + getTimelineId: boolean = false +) { + const [timelineId, setTimelineId] = useState(null); + + useEffect(() => { + let startElem: Element | (Node & ParentNode) | null = elem.current; + if (startElem != null && getTimelineId) { + for (; startElem && startElem !== document; startElem = startElem.parentNode) { + const myElem: Element = startElem as Element; + if ( + myElem != null && + myElem.classList != null && + myElem.classList.contains(SELECTOR_TIMELINE_GLOBAL_CONTAINER) && + myElem.hasAttribute('data-timeline-id') + ) { + setTimelineId(myElem.getAttribute('data-timeline-id')); + break; + } + } + } + }, [elem, getTimelineId]); + + return timelineId; +}; diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap index 93608a181adff..6b27cf5969f1a 100644 --- a/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap @@ -36,6 +36,7 @@ exports[`draggables rendering it renders the default DefaultDraggable 1`] = ` }, } } + isDraggable={true} render={[Function]} /> `; diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx index df92da0c7d056..6ac1746d77709 100644 --- a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx @@ -20,6 +20,7 @@ import { Provider } from '../../../timelines/components/timeline/data_providers/ export interface DefaultDraggableType { id: string; + isDraggable?: boolean; field: string; value?: string | null; name?: string | null; @@ -79,6 +80,7 @@ Content.displayName = 'Content'; * that's only displayed when the specified value is non-`null`. * * @param id - a unique draggable id, which typically follows the format `${contextId}-${eventId}-${field}-${value}` + * @param isDraggable - optional prop to disable drag & drop and it will defaulted to true * @param field - the name of the field, e.g. `network.transport` * @param value - value of the field e.g. `tcp` * @param name - defaulting to `field`, this optional human readable name is used by the `DataProvider` that represents the data @@ -88,7 +90,17 @@ Content.displayName = 'Content'; * @param queryValue - defaults to `value`, this query overrides the `queryMatch.value` used by the `DataProvider` that represents the data */ export const DefaultDraggable = React.memo( - ({ id, field, value, name, children, timelineId, tooltipContent, queryValue }) => { + ({ + id, + isDraggable = true, + field, + value, + name, + children, + timelineId, + tooltipContent, + queryValue, + }) => { const dataProviderProp: DataProvider = useMemo( () => ({ and: [], @@ -125,6 +137,7 @@ export const DefaultDraggable = React.memo( return ( @@ -155,6 +168,7 @@ export type BadgeDraggableType = Omit & { * @param field - the name of the field, e.g. `network.transport` * @param value - value of the field e.g. `tcp` * @param iconType -the (optional) type of icon e.g. `snowflake` to display on the badge + * @param isDraggable * @param name - defaulting to `field`, this optional human readable name is used by the `DataProvider` that represents the data * @param color - defaults to `hollow`, optionally overwrite the color of the badge icon * @param children - defaults to displaying `value`, this allows an arbitrary visualization to be displayed in lieu of the default behavior @@ -168,6 +182,7 @@ const DraggableBadgeComponent: React.FC = ({ field, value, iconType, + isDraggable, name, color = 'hollow', children, @@ -177,6 +192,7 @@ const DraggableBadgeComponent: React.FC = ({ value != null ? ( = ({ key={key} contextId={key} eventId={eventId} + isDraggable={false} fieldName={fieldName || 'unknown'} value={value} /> diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_fields_browser.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_fields_browser.test.tsx index 80c014771ae68..28a90e94c0ca4 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/event_fields_browser.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_fields_browser.test.tsx @@ -245,7 +245,7 @@ describe('EventFieldsBrowser', () => { /> ); - expect(wrapper.find('[data-test-subj="draggable-content-@timestamp"]').at(0).text()).toEqual( + expect(wrapper.find('[data-test-subj="localized-date-tool-tip"]').at(0).text()).toEqual( 'Feb 28, 2019 @ 16:50:54.621' ); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/table/action_cell.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/table/action_cell.tsx index f5cf600e281ad..67b1874eea0a0 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/table/action_cell.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/table/action_cell.tsx @@ -6,11 +6,10 @@ */ import React, { useCallback, useState, useRef } from 'react'; -import { getDraggableId } from '@kbn/securitysolution-t-grid'; import { HoverActions } from '../../hover_actions'; import { useActionCellDataProvider } from './use_action_cell_data_provider'; import { EventFieldsData } from '../types'; -import { useGetTimelineId } from '../../drag_and_drop/draggable_wrapper_hover_content'; +import { useGetTimelineId } from '../../drag_and_drop/use_get_timeline_id_from_dom'; import { ColumnHeaderOptions } from '../../../../../common/types/timeline'; import { BrowserField } from '../../../containers/source'; @@ -66,11 +65,10 @@ export const ActionCell: React.FC = React.memo( }); }, []); - const draggableIds = actionCellConfig?.idList.map((id) => getDraggableId(id)); return ( ({ + and: [], + enabled: true, + id: escapeDataProviderId(id), + name: field, + excluded: false, + kqlQuery: '', + queryMatch: { + field, + value, + operator: IS_OPERATOR, + }, +}); + export const useActionCellDataProvider = ({ contextId, eventId, @@ -50,72 +66,90 @@ export const useActionCellDataProvider = ({ isObjectArray, linkValue, values, -}: UseActionCellDataProvider): { idList: string[]; stringValues: string[] } | null => { - if (values === null || values === undefined) return null; - - const stringifiedValues: string[] = []; - const arrayValues = Array.isArray(values) ? values : [values]; +}: UseActionCellDataProvider): { + stringValues: string[]; + dataProvider: DataProvider[]; +} | null => { + const cellData = useMemo(() => { + if (values === null || values === undefined) return null; + const arrayValues = Array.isArray(values) ? values : [values]; + return arrayValues.reduce<{ + stringValues: string[]; + dataProvider: DataProvider[]; + }>( + (memo, value, index) => { + let id: string = ''; + let valueAsString: string = isString(value) ? value : `${values}`; + const appendedUniqueId = `${contextId}-${eventId}-${field}-${index}-${value}`; + if (fieldFromBrowserField == null) { + memo.stringValues.push(valueAsString); + return memo; + } - const idList: string[] = arrayValues.reduce((memo, value, index) => { - let id = null; - let valueAsString: string = isString(value) ? value : `${values}`; - if (fieldFromBrowserField == null) { - stringifiedValues.push(valueAsString); - return memo; - } - const appendedUniqueId = `${contextId}-${eventId}-${field}-${index}-${value}-${eventId}-${field}-${value}`; - if (isObjectArray || fieldType === GEO_FIELD_TYPE || [MESSAGE_FIELD_NAME].includes(field)) { - stringifiedValues.push(valueAsString); - return memo; - } else if (fieldType === IP_FIELD_TYPE) { - id = `formatted-ip-data-provider-${contextId}-${field}-${value}-${eventId}`; - if (isString(value) && !isEmpty(value)) { - try { - const addresses = JSON.parse(value); - if (isArray(addresses)) { - valueAsString = addresses.join(','); + if (isObjectArray || fieldType === GEO_FIELD_TYPE || [MESSAGE_FIELD_NAME].includes(field)) { + memo.stringValues.push(valueAsString); + return memo; + } else if (fieldType === IP_FIELD_TYPE) { + id = `formatted-ip-data-provider-${contextId}-${field}-${value}-${eventId}`; + if (isString(value) && !isEmpty(value)) { + try { + const addresses = JSON.parse(value); + if (isArray(addresses)) { + valueAsString = addresses.join(','); + addresses.forEach((ip) => memo.dataProvider.push(getDataProvider(field, id, ip))); + } + } catch (_) { + // Default to keeping the existing string value + } + memo.stringValues.push(valueAsString); + return memo; } - } catch (_) { - // Default to keeping the existing string value + } else if (PORT_NAMES.some((portName) => field === portName)) { + id = `port-default-draggable-${appendedUniqueId}`; + } else if (field === EVENT_DURATION_FIELD_NAME) { + id = `duration-default-draggable-${appendedUniqueId}`; + } else if (field === HOST_NAME_FIELD_NAME) { + id = `event-details-value-default-draggable-${appendedUniqueId}`; + } else if (fieldFormat === BYTES_FORMAT) { + id = `bytes-default-draggable-${appendedUniqueId}`; + } else if (field === SIGNAL_RULE_NAME_FIELD_NAME) { + id = `event-details-value-default-draggable-${appendedUniqueId}-${linkValue}`; + } else if (field === EVENT_MODULE_FIELD_NAME) { + id = `event-details-value-default-draggable-${appendedUniqueId}-${value}`; + } else if (field === SIGNAL_STATUS_FIELD_NAME) { + id = `alert-details-value-default-draggable-${appendedUniqueId}`; + } else if (field === AGENT_STATUS_FIELD_NAME) { + const valueToUse = typeof value === 'string' ? value : ''; + id = `event-details-value-default-draggable-${appendedUniqueId}`; + valueAsString = valueToUse; + } else if ( + [ + RULE_REFERENCE_FIELD_NAME, + REFERENCE_URL_FIELD_NAME, + EVENT_URL_FIELD_NAME, + INDICATOR_REFERENCE, + ].includes(field) + ) { + id = `event-details-value-default-draggable-${appendedUniqueId}-${value}`; + } else { + id = `event-details-value-default-draggable-${appendedUniqueId}`; } - } - } else if (PORT_NAMES.some((portName) => field === portName)) { - id = `port-default-draggable-${appendedUniqueId}`; - } else if (field === EVENT_DURATION_FIELD_NAME) { - id = `duration-default-draggable-${appendedUniqueId}`; - } else if (field === HOST_NAME_FIELD_NAME) { - id = `event-details-value-default-draggable-${appendedUniqueId}`; - } else if (fieldFormat === BYTES_FORMAT) { - id = `bytes-default-draggable-${appendedUniqueId}`; - } else if (field === SIGNAL_RULE_NAME_FIELD_NAME) { - id = `event-details-value-default-draggable-${appendedUniqueId}-${linkValue}`; - } else if (field === EVENT_MODULE_FIELD_NAME) { - id = `event-details-value-default-draggable-${appendedUniqueId}-${value}`; - } else if (field === SIGNAL_STATUS_FIELD_NAME) { - id = `alert-details-value-default-draggable-${appendedUniqueId}`; - } else if (field === AGENT_STATUS_FIELD_NAME) { - const valueToUse = typeof value === 'string' ? value : ''; - id = `event-details-value-default-draggable-${appendedUniqueId}`; - valueAsString = valueToUse; - } else if ( - [ - RULE_REFERENCE_FIELD_NAME, - REFERENCE_URL_FIELD_NAME, - EVENT_URL_FIELD_NAME, - INDICATOR_REFERENCE, - ].includes(field) - ) { - id = `event-details-value-default-draggable-${appendedUniqueId}-${value}`; - } else { - id = `event-details-value-default-draggable-${appendedUniqueId}`; - } - stringifiedValues.push(valueAsString); - memo.push(escapeDataProviderId(id)); - return memo; - }, [] as string[]); - - return { - idList, - stringValues: stringifiedValues, - }; + memo.stringValues.push(valueAsString); + memo.dataProvider.push(getDataProvider(field, id, value)); + return memo; + }, + { stringValues: [], dataProvider: [] } + ); + }, [ + contextId, + eventId, + field, + fieldFormat, + fieldFromBrowserField, + fieldType, + isObjectArray, + linkValue, + values, + ]); + return cellData; }; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx index 5347ee875181b..83006f09a14be 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx @@ -823,7 +823,8 @@ describe('Exception helpers', () => { }, ]); }); - + }); + describe('ransomware protection exception items', () => { test('it should return pre-populated ransomware items for event code `ransomware`', () => { const defaultItems = defaultEndpointExceptionItems('list_id', 'my_rule', { _id: '123', @@ -938,7 +939,9 @@ describe('Exception helpers', () => { }, ]); }); + }); + describe('memory protection exception items', () => { test('it should return pre-populated memory signature items for event code `memory_signature`', () => { const defaultItems = defaultEndpointExceptionItems('list_id', 'my_rule', { _id: '123', @@ -990,6 +993,44 @@ describe('Exception helpers', () => { ]); }); + test('it should return pre-populated memory signature items for event code `memory_signature` and skip Empty', () => { + const defaultItems = defaultEndpointExceptionItems('list_id', 'my_rule', { + _id: '123', + process: { + name: '', // name is empty + // executable: '', left intentionally commented + hash: { + sha256: 'some hash', + }, + }, + // eslint-disable-next-line @typescript-eslint/naming-convention + Memory_protection: { + feature: 'signature', + }, + event: { + code: 'memory_signature', + }, + }); + + // should not contain name or executable + expect(defaultItems[0].entries).toEqual([ + { + field: 'Memory_protection.feature', + operator: 'included', + type: 'match', + value: 'signature', + id: '123', + }, + { + field: 'process.hash.sha256', + operator: 'included', + type: 'match', + value: 'some hash', + id: '123', + }, + ]); + }); + test('it should return pre-populated memory shellcode items for event code `malicious_thread`', () => { const defaultItems = defaultEndpointExceptionItems('list_id', 'my_rule', { _id: '123', @@ -1085,7 +1126,115 @@ describe('Exception helpers', () => { value: '4000', id: '123', }, - { field: 'region_size', operator: 'included', type: 'match', value: '4000', id: '123' }, + { + field: 'region_size', + operator: 'included', + type: 'match', + value: '4000', + id: '123', + }, + { + field: 'region_protection', + operator: 'included', + type: 'match', + value: 'RWX', + id: '123', + }, + { + field: 'memory_pe.imphash', + operator: 'included', + type: 'match', + value: 'a hash', + id: '123', + }, + ], + id: '123', + }, + ]); + }); + + test('it should return pre-populated memory shellcode items for event code `malicious_thread` and skip empty', () => { + const defaultItems = defaultEndpointExceptionItems('list_id', 'my_rule', { + _id: '123', + process: { + name: '', // name is empty + // executable: '', left intentionally commented + Ext: { + token: { + integrity_level_name: 'high', + }, + }, + }, + // eslint-disable-next-line @typescript-eslint/naming-convention + Memory_protection: { + feature: 'shellcode_thread', + self_injection: true, + }, + event: { + code: 'malicious_thread', + }, + Target: { + process: { + thread: { + Ext: { + start_address_allocation_offset: 0, + start_address_bytes_disasm_hash: 'a disam hash', + start_address_details: { + // allocation_type: '', left intentionally commented + allocation_size: 4000, + region_size: 4000, + region_protection: 'RWX', + memory_pe: { + imphash: 'a hash', + }, + }, + }, + }, + }, + }, + }); + + // no name, no exceutable, no allocation_type + expect(defaultItems[0].entries).toEqual([ + { + field: 'Memory_protection.feature', + operator: 'included', + type: 'match', + value: 'shellcode_thread', + id: '123', + }, + { + field: 'Memory_protection.self_injection', + operator: 'included', + type: 'match', + value: 'true', + id: '123', + }, + { + field: 'process.Ext.token.integrity_level_name', + operator: 'included', + type: 'match', + value: 'high', + id: '123', + }, + { + field: 'Target.process.thread.Ext.start_address_details', + type: 'nested', + entries: [ + { + field: 'allocation_size', + operator: 'included', + type: 'match', + value: '4000', + id: '123', + }, + { + field: 'region_size', + operator: 'included', + type: 'match', + value: '4000', + id: '123', + }, { field: 'region_protection', operator: 'included', diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx index 613d295545461..62250a0933ffb 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx @@ -343,6 +343,29 @@ export const getCodeSignatureValue = ( } }; +// helper type to filter empty-valued exception entries +interface ExceptionEntry { + value?: string; + entries?: ExceptionEntry[]; +} + +/** + * Takes an array of Entries and filter out the ones with empty values. + * It will also filter out empty values for nested entries. + */ +function filterEmptyExceptionEntries(entries: T[]): T[] { + const finalEntries: T[] = []; + for (const entry of entries) { + if (entry.entries !== undefined) { + entry.entries = entry.entries.filter((el) => el.value !== undefined && el.value.length > 0); + finalEntries.push(entry); + } else if (entry.value !== undefined && entry.value.length > 0) { + finalEntries.push(entry); + } + } + return finalEntries; +} + /** * Returns the default values from the alert data to autofill new endpoint exceptions */ @@ -510,34 +533,35 @@ export const getPrepopulatedMemorySignatureException = ({ alertEcsData: Flattened; }): ExceptionsBuilderExceptionItem => { const { process } = alertEcsData; + const entries = filterEmptyExceptionEntries([ + { + field: 'Memory_protection.feature', + operator: 'included' as const, + type: 'match' as const, + value: alertEcsData.Memory_protection?.feature ?? '', + }, + { + field: 'process.executable.caseless', + operator: 'included' as const, + type: 'match' as const, + value: process?.executable ?? '', + }, + { + field: 'process.name.caseless', + operator: 'included' as const, + type: 'match' as const, + value: process?.name ?? '', + }, + { + field: 'process.hash.sha256', + operator: 'included' as const, + type: 'match' as const, + value: process?.hash?.sha256 ?? '', + }, + ]); return { ...getNewExceptionItem({ listId, namespaceType: listNamespace, ruleName }), - entries: addIdToEntries([ - { - field: 'Memory_protection.feature', - operator: 'included', - type: 'match', - value: alertEcsData.Memory_protection?.feature ?? '', - }, - { - field: 'process.executable.caseless', - operator: 'included', - type: 'match', - value: process?.executable ?? '', - }, - { - field: 'process.name.caseless', - operator: 'included', - type: 'match', - value: process?.name ?? '', - }, - { - field: 'process.hash.sha256', - operator: 'included', - type: 'match', - value: process?.hash?.sha256 ?? '', - }, - ]), + entries: addIdToEntries(entries), }; }; export const getPrepopulatedMemoryShellcodeException = ({ @@ -554,81 +578,83 @@ export const getPrepopulatedMemoryShellcodeException = ({ alertEcsData: Flattened; }): ExceptionsBuilderExceptionItem => { const { process, Target } = alertEcsData; + const entries = filterEmptyExceptionEntries([ + { + field: 'Memory_protection.feature', + operator: 'included' as const, + type: 'match' as const, + value: alertEcsData.Memory_protection?.feature ?? '', + }, + { + field: 'Memory_protection.self_injection', + operator: 'included' as const, + type: 'match' as const, + value: String(alertEcsData.Memory_protection?.self_injection) ?? '', + }, + { + field: 'process.executable.caseless', + operator: 'included' as const, + type: 'match' as const, + value: process?.executable ?? '', + }, + { + field: 'process.name.caseless', + operator: 'included' as const, + type: 'match' as const, + value: process?.name ?? '', + }, + { + field: 'process.Ext.token.integrity_level_name', + operator: 'included' as const, + type: 'match' as const, + value: process?.Ext?.token?.integrity_level_name ?? '', + }, + { + field: 'Target.process.thread.Ext.start_address_details', + type: 'nested' as const, + entries: [ + { + field: 'allocation_type', + operator: 'included' as const, + type: 'match' as const, + value: Target?.process?.thread?.Ext?.start_address_details?.allocation_type ?? '', + }, + { + field: 'allocation_size', + operator: 'included' as const, + type: 'match' as const, + value: String(Target?.process?.thread?.Ext?.start_address_details?.allocation_size) ?? '', + }, + { + field: 'region_size', + operator: 'included' as const, + type: 'match' as const, + value: String(Target?.process?.thread?.Ext?.start_address_details?.region_size) ?? '', + }, + { + field: 'region_protection', + operator: 'included' as const, + type: 'match' as const, + value: + String(Target?.process?.thread?.Ext?.start_address_details?.region_protection) ?? '', + }, + { + field: 'memory_pe.imphash', + operator: 'included' as const, + type: 'match' as const, + value: + String(Target?.process?.thread?.Ext?.start_address_details?.memory_pe?.imphash) ?? '', + }, + ], + }, + ]); + return { ...getNewExceptionItem({ listId, namespaceType: listNamespace, ruleName }), - entries: addIdToEntries([ - { - field: 'Memory_protection.feature', - operator: 'included', - type: 'match', - value: alertEcsData.Memory_protection?.feature ?? '', - }, - { - field: 'Memory_protection.self_injection', - operator: 'included', - type: 'match', - value: String(alertEcsData.Memory_protection?.self_injection) ?? '', - }, - { - field: 'process.executable.caseless', - operator: 'included', - type: 'match', - value: process?.executable ?? '', - }, - { - field: 'process.name.caseless', - operator: 'included', - type: 'match', - value: process?.name ?? '', - }, - { - field: 'process.Ext.token.integrity_level_name', - operator: 'included', - type: 'match', - value: process?.Ext?.token?.integrity_level_name ?? '', - }, - { - field: 'Target.process.thread.Ext.start_address_details', - type: 'nested', - entries: [ - { - field: 'allocation_type', - operator: 'included', - type: 'match', - value: Target?.process?.thread?.Ext?.start_address_details?.allocation_type ?? '', - }, - { - field: 'allocation_size', - operator: 'included', - type: 'match', - value: - String(Target?.process?.thread?.Ext?.start_address_details?.allocation_size) ?? '', - }, - { - field: 'region_size', - operator: 'included', - type: 'match', - value: String(Target?.process?.thread?.Ext?.start_address_details?.region_size) ?? '', - }, - { - field: 'region_protection', - operator: 'included', - type: 'match', - value: - String(Target?.process?.thread?.Ext?.start_address_details?.region_protection) ?? '', - }, - { - field: 'memory_pe.imphash', - operator: 'included', - type: 'match', - value: - String(Target?.process?.thread?.Ext?.start_address_details?.memory_pe?.imphash) ?? '', - }, - ], - }, - ]), + entries: addIdToEntries(entries), }; }; + /** * Determines whether or not any entries within the given exceptionItems contain values not in the specified ECS mapping */ diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx index 31bdf78626e7c..a1ba33f30cc55 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx @@ -6,16 +6,17 @@ */ import { EuiFocusTrap, EuiScreenReaderOnly } from '@elastic/eui'; -import React, { useCallback, useEffect, useRef, useMemo } from 'react'; +import React, { useCallback, useEffect, useRef, useMemo, useState } from 'react'; import { DraggableId } from 'react-beautiful-dnd'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; -import { getAllFieldsByName } from '../../containers/source'; -import { COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME } from '../../lib/clipboard/clipboard'; +import { isEmpty } from 'lodash'; + import { useKibana } from '../../lib/kibana'; +import { getAllFieldsByName } from '../../containers/source'; import { allowTopN } from './utils'; import { useDeepEqualSelector } from '../../hooks/use_selector'; -import { ColumnHeaderOptions, TimelineId } from '../../../../common/types/timeline'; +import { ColumnHeaderOptions, DataProvider, TimelineId } from '../../../../common/types/timeline'; import { SourcererScopeName } from '../../store/sourcerer/model'; import { useSourcererScope } from '../../containers/sourcerer'; import { timelineSelectors } from '../../../timelines/store/timeline'; @@ -38,43 +39,51 @@ export const AdditionalContent = styled.div` AdditionalContent.displayName = 'AdditionalContent'; -const StyledHoverActionsContainer = styled.div<{ $showTopN: boolean }>` +const StyledHoverActionsContainer = styled.div<{ $showTopN: boolean; $showOwnFocus: boolean }>` padding: ${(props) => `0 ${props.theme.eui.paddingSizes.s}`}; display: flex; - &:focus-within { - .timelines__hoverActionButton, - .securitySolution__hoverActionButton { - opacity: 1; + ${(props) => + props.$showOwnFocus + ? ` + &:focus-within { + .timelines__hoverActionButton, + .securitySolution__hoverActionButton { + opacity: 1; + } } - } - &:hover { - .timelines__hoverActionButton, - .securitySolution__hoverActionButton { - opacity: 1; + &:hover { + .timelines__hoverActionButton, + .securitySolution__hoverActionButton { + opacity: 1; + } } - } .timelines__hoverActionButton, .securitySolution__hoverActionButton { - opacity: ${(props) => (props.$showTopN ? 1 : 0)}; + opacity: ${props.$showTopN ? 1 : 0}; - &:focus { - opacity: 1; + &:focus { + opacity: 1; + } } - } + ` + : ''} `; interface Props { additionalContent?: React.ReactNode; + closePopOver?: () => void; + dataProvider?: DataProvider | DataProvider[]; dataType?: string; - draggableIds?: DraggableId[]; + draggableId?: DraggableId; field: string; goGetTimelineId?: (args: boolean) => void; isObjectArray: boolean; onFilterAdded?: () => void; ownFocus: boolean; + showOwnFocus?: boolean; showTopN: boolean; timelineId?: string | null; toggleColumn?: (column: ColumnHeaderOptions) => void; @@ -100,13 +109,15 @@ const isFocusTrapDisabled = ({ export const HoverActions: React.FC = React.memo( ({ additionalContent = null, + dataProvider, dataType, - draggableIds, + draggableId, field, goGetTimelineId, isObjectArray, onFilterAdded, ownFocus, + showOwnFocus = true, showTopN, timelineId, toggleColumn, @@ -117,29 +128,13 @@ export const HoverActions: React.FC = React.memo( const { timelines } = kibana.services; // Common actions used by the alert table and alert flyout const { - addToTimeline: { - AddToTimelineButton, - keyboardShortcut: addToTimelineKeyboardShortcut, - useGetHandleStartDragToTimeline, - }, - columnToggle: { - ColumnToggleButton, - columnToggleFn, - keyboardShortcut: columnToggleKeyboardShortcut, - }, - copy: { CopyButton, keyboardShortcut: copyKeyboardShortcut }, - filterForValue: { - FilterForValueButton, - filterForValueFn, - keyboardShortcut: filterForValueKeyboardShortcut, - }, - filterOutValue: { - FilterOutValueButton, - filterOutValueFn, - keyboardShortcut: filterOutValueKeyboardShortcut, - }, + getAddToTimelineButton, + getColumnToggleButton, + getCopyButton, + getFilterForValueButton, + getFilterOutValueButton, } = timelines.getHoverActions(); - + const [stKeyboardEvent, setStKeyboardEvent] = useState(); const filterManagerBackup = useMemo(() => kibana.services.data.query.filterManager, [ kibana.services.data.query.filterManager, ]); @@ -169,30 +164,8 @@ export const HoverActions: React.FC = React.memo( : SourcererScopeName.default; const { browserFields } = useSourcererScope(activeScope); - const handleStartDragToTimeline = (() => { - const handleStartDragToTimelineFns = draggableIds?.map((draggableId) => { - // eslint-disable-next-line react-hooks/rules-of-hooks - return useGetHandleStartDragToTimeline({ draggableId, field }); - }); - return () => handleStartDragToTimelineFns?.forEach((dragFn) => dragFn()); - })(); - - const handleFilterForValue = useCallback(() => { - filterForValueFn({ field, value: values, filterManager, onFilterAdded }); - }, [filterForValueFn, field, values, filterManager, onFilterAdded]); - - const handleFilterOutValue = useCallback(() => { - filterOutValueFn({ field, value: values, filterManager, onFilterAdded }); - }, [filterOutValueFn, field, values, filterManager, onFilterAdded]); - - const handleToggleColumn = useCallback( - () => (toggleColumn ? columnToggleFn({ toggleColumn, field }) : null), - [columnToggleFn, field, toggleColumn] - ); - const isInit = useRef(true); const defaultFocusedButtonRef = useRef(null); - const panelRef = useRef(null); useEffect(() => { if (isInit.current && goGetTimelineId != null && timelineId == null) { @@ -215,31 +188,6 @@ export const HoverActions: React.FC = React.memo( return; } switch (keyboardEvent.key) { - case addToTimelineKeyboardShortcut: - stopPropagationAndPreventDefault(keyboardEvent); - handleStartDragToTimeline(); - break; - case columnToggleKeyboardShortcut: - stopPropagationAndPreventDefault(keyboardEvent); - handleToggleColumn(); - break; - case copyKeyboardShortcut: - stopPropagationAndPreventDefault(keyboardEvent); - const copyToClipboardButton = panelRef.current?.querySelector( - `.${COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME}` - ); - if (copyToClipboardButton != null) { - copyToClipboardButton.click(); - } - break; - case filterForValueKeyboardShortcut: - stopPropagationAndPreventDefault(keyboardEvent); - handleFilterForValue(); - break; - case filterOutValueKeyboardShortcut: - stopPropagationAndPreventDefault(keyboardEvent); - handleFilterOutValue(); - break; case SHOW_TOP_N_KEYBOARD_SHORTCUT: stopPropagationAndPreventDefault(keyboardEvent); toggleTopN(); @@ -250,33 +198,26 @@ export const HoverActions: React.FC = React.memo( stopPropagationAndPreventDefault(keyboardEvent); break; default: + setStKeyboardEvent(keyboardEvent); break; } }, - [ - addToTimelineKeyboardShortcut, - columnToggleKeyboardShortcut, - copyKeyboardShortcut, - filterForValueKeyboardShortcut, - filterOutValueKeyboardShortcut, - handleFilterForValue, - handleFilterOutValue, - handleStartDragToTimeline, - handleToggleColumn, - ownFocus, - toggleTopN, - ] + [ownFocus, toggleTopN] ); const showFilters = values != null; return ( - - +

{YOU_ARE_IN_A_DIALOG_CONTAINING_OPTIONS(field)}

@@ -286,46 +227,58 @@ export const HoverActions: React.FC = React.memo( {showFilters && ( <> - - +
+ {getFilterForValueButton({ + defaultFocusedButtonRef, + field, + filterManager, + keyboardEvent: stKeyboardEvent, + onFilterAdded, + ownFocus, + showTooltip: true, + value: values, + })} +
+
+ {getFilterOutValueButton({ + field, + filterManager, + keyboardEvent: stKeyboardEvent, + onFilterAdded, + ownFocus, + showTooltip: true, + value: values, + })} +
)} {toggleColumn && ( - +
+ {getColumnToggleButton({ + field, + isDisabled: isObjectArray && dataType !== 'geo_point', + isObjectArray, + keyboardEvent: stKeyboardEvent, + ownFocus, + showTooltip: true, + toggleColumn, + value: values, + })} +
)} - {showFilters && draggableIds != null && ( - + {showFilters && (draggableId != null || !isEmpty(dataProvider)) && ( +
+ {getAddToTimelineButton({ + dataProvider, + draggableId, + field, + keyboardEvent: stKeyboardEvent, + ownFocus, + showTooltip: true, + value: values, + })} +
)} {allowTopN({ browserField: getAllFieldsByName(browserFields)[field], @@ -342,18 +295,20 @@ export const HoverActions: React.FC = React.memo( value={values} /> )} - {showFilters && ( - + {field != null && ( +
+ {getCopyButton({ + field, + isHoverAction: true, + keyboardEvent: stKeyboardEvent, + ownFocus, + showTooltip: true, + value: values, + })} +
)} -
-
+ + ); } ); diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx new file mode 100644 index 0000000000000..373f944b70a81 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/use_hover_actions.tsx @@ -0,0 +1,178 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo, useState, useRef } from 'react'; +import { DraggableProvided, DraggableStateSnapshot } from 'react-beautiful-dnd'; +import { HoverActions } from '.'; + +import { DataProvider } from '../../../../common/types'; +import { ProviderContentWrapper } from '../drag_and_drop/draggable_wrapper'; +import { getDraggableId } from '../drag_and_drop/helpers'; +import { useGetTimelineId } from '../drag_and_drop/use_get_timeline_id_from_dom'; + +const draggableContainsLinks = (draggableElement: HTMLDivElement | null) => { + const links = draggableElement?.querySelectorAll('.euiLink') ?? []; + return links.length > 0; +}; + +type RenderFunctionProp = ( + props: DataProvider, + provided: DraggableProvided | null, + state: DraggableStateSnapshot +) => React.ReactNode; + +interface Props { + dataProvider: DataProvider; + disabled?: boolean; + isDraggable?: boolean; + inline?: boolean; + render: RenderFunctionProp; + timelineId?: string; + truncate?: boolean; + onFilterAdded?: () => void; +} + +export const useHoverActions = ({ + dataProvider, + isDraggable, + onFilterAdded, + render, + timelineId, +}: Props) => { + const containerRef = useRef(null); + const keyboardHandlerRef = useRef(null); + const [closePopOverTrigger, setClosePopOverTrigger] = useState(false); + const [showTopN, setShowTopN] = useState(false); + const [hoverActionsOwnFocus, setHoverActionsOwnFocus] = useState(false); + const [goGetTimelineId, setGoGetTimelineId] = useState(false); + const timelineIdFind = useGetTimelineId(containerRef, goGetTimelineId); + + const handleClosePopOverTrigger = useCallback(() => { + setClosePopOverTrigger((prevClosePopOverTrigger) => !prevClosePopOverTrigger); + setHoverActionsOwnFocus((prevHoverActionsOwnFocus) => { + if (prevHoverActionsOwnFocus) { + setTimeout(() => { + keyboardHandlerRef.current?.focus(); + }, 0); + } + return false; // always give up ownership + }); + + setTimeout(() => { + setHoverActionsOwnFocus(false); + }, 0); // invoked on the next tick, because we want to restore focus first + }, [keyboardHandlerRef]); + + const toggleTopN = useCallback(() => { + setShowTopN((prevShowTopN) => { + const newShowTopN = !prevShowTopN; + if (newShowTopN === false) { + handleClosePopOverTrigger(); + } + return newShowTopN; + }); + }, [handleClosePopOverTrigger]); + + const hoverContent = useMemo(() => { + // display links as additional content in the hover menu to enable keyboard + // navigation of links (when the draggable contains them): + const additionalContent = + hoverActionsOwnFocus && !showTopN && draggableContainsLinks(containerRef.current) ? ( + + {render(dataProvider, null, { isDragging: false, isDropAnimating: false })} + + ) : null; + + return ( + + ); + }, [ + dataProvider, + handleClosePopOverTrigger, + hoverActionsOwnFocus, + isDraggable, + onFilterAdded, + render, + showTopN, + timelineId, + timelineIdFind, + toggleTopN, + ]); + + const setContainerRef = useCallback((e: HTMLDivElement) => { + containerRef.current = e; + }, []); + + const onFocus = useCallback(() => { + if (!hoverActionsOwnFocus) { + keyboardHandlerRef.current?.focus(); + } + }, [hoverActionsOwnFocus, keyboardHandlerRef]); + + const onCloseRequested = useCallback(() => { + setShowTopN(false); + + if (hoverActionsOwnFocus) { + setHoverActionsOwnFocus(false); + + setTimeout(() => { + onFocus(); // return focus to this draggable on the next tick, because we owned focus + }, 0); + } + }, [onFocus, hoverActionsOwnFocus]); + + const openPopover = useCallback(() => { + setHoverActionsOwnFocus(true); + }, []); + + return useMemo( + () => ({ + closePopOverTrigger, + handleClosePopOverTrigger, + hoverActionsOwnFocus, + hoverContent, + keyboardHandlerRef, + onCloseRequested, + onFocus, + openPopover, + setContainerRef, + showTopN, + }), + [ + closePopOverTrigger, + handleClosePopOverTrigger, + hoverActionsOwnFocus, + hoverContent, + onCloseRequested, + onFocus, + openPopover, + setContainerRef, + showTopN, + ] + ); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx index 2ecda8482e340..45883019b9ff8 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx @@ -70,67 +70,6 @@ describe('get_anomalies_host_table_columns', () => { expect(columns.some((col) => col.name === i18n.HOST_NAME)).toEqual(false); }); - test('on host page, we should escape the draggable id', () => { - const columns = getAnomaliesHostTableColumnsCurated( - HostsType.page, - startDate, - endDate, - interval, - narrowDateRange - ); - const column = columns.find((col) => col.name === i18n.SCORE) as Columns< - string, - AnomaliesByHost - >; - const anomaly: AnomaliesByHost = { - hostName: 'host.name', - anomaly: { - detectorIndex: 0, - entityName: 'entity-name-1', - entityValue: 'entity-value-1', - influencers: [], - jobId: 'job-1', - rowId: 'row-1', - severity: 100, - time: new Date('01/01/2000').valueOf(), - source: { - job_id: 'job-1', - result_type: 'result-1', - probability: 50, - multi_bucket_impact: 0, - record_score: 0, - initial_record_score: 0, - bucket_span: 0, - detector_index: 0, - is_interim: true, - timestamp: new Date('01/01/2000').valueOf(), - by_field_name: 'some field name', - by_field_value: 'some field value', - partition_field_name: 'partition field name', - partition_field_value: 'partition field value', - function: 'function-1', - function_description: 'description-1', - typical: [5, 3], - actual: [7, 4], - influencers: [], - }, - }, - }; - if (column != null && column.render != null) { - const wrapper = mount({column.render('', anomaly)}); - expect( - wrapper - .find( - '[draggableId="draggableId.content.anomalies-host-table-severity-host_name-entity-name-1-entity-value-1-100-job-1"]' - ) - .first() - .exists() - ).toBe(true); - } else { - expect(column).not.toBe(null); - } - }); - test('on host page, undefined influencers should turn into an empty column string', () => { const columns = getAnomaliesHostTableColumnsCurated( HostsType.page, diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx index 48c2ec3ee38d8..817205ce22808 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx @@ -43,62 +43,6 @@ describe('get_anomalies_network_table_columns', () => { expect(columns.some((col) => col.name === i18n.NETWORK_NAME)).toEqual(false); }); - test('on network page, we should escape the draggable id', () => { - const columns = getAnomaliesNetworkTableColumnsCurated(NetworkType.page, startDate, endDate); - const column = columns.find((col) => col.name === i18n.SCORE) as Columns< - string, - AnomaliesByNetwork - >; - const anomaly: AnomaliesByNetwork = { - type: 'source.ip', - ip: '127.0.0.1', - anomaly: { - detectorIndex: 0, - entityName: 'entity-name-1', - entityValue: 'entity-value-1', - influencers: [], - jobId: 'job-1', - rowId: 'row-1', - severity: 100, - time: new Date('01/01/2000').valueOf(), - source: { - job_id: 'job-1', - result_type: 'result-1', - probability: 50, - multi_bucket_impact: 0, - record_score: 0, - initial_record_score: 0, - bucket_span: 0, - detector_index: 0, - is_interim: true, - timestamp: new Date('01/01/2000').valueOf(), - by_field_name: 'some field name', - by_field_value: 'some field value', - partition_field_name: 'partition field name', - partition_field_value: 'partition field value', - function: 'function-1', - function_description: 'description-1', - typical: [5, 3], - actual: [7, 4], - influencers: [], - }, - }, - }; - if (column != null && column.render != null) { - const wrapper = mount({column.render('', anomaly)}); - expect( - wrapper - .find( - '[draggableId="draggableId.content.anomalies-network-table-severity-127_0_0_1-entity-name-1-entity-value-1-100-job-1"]' - ) - .first() - .exists() - ).toBe(true); - } else { - expect(column).not.toBe(null); - } - }); - test('on network page, undefined influencers should turn into an empty column string', () => { const columns = getAnomaliesNetworkTableColumnsCurated(NetworkType.page, startDate, endDate); const column = columns.find((col) => col.name === i18n.INFLUENCED_BY) as Columns< diff --git a/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx index c122138f9547a..10e4538c802ad 100644 --- a/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx @@ -55,7 +55,7 @@ describe('Table Helpers', () => { displayCount: 0, }); const wrapper = mount({rowItem}); - expect(wrapper.find('[data-test-subj="draggable-content-attrName"]').first().text()).toBe( + expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( '(Empty String)' ); }); @@ -81,7 +81,7 @@ describe('Table Helpers', () => { render: renderer, }); const wrapper = mount({rowItem}); - expect(wrapper.find('[data-test-subj="draggable-content-attrName"]').first().text()).toBe( + expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( 'Hi item1 renderer' ); }); @@ -116,7 +116,7 @@ describe('Table Helpers', () => { idPrefix: 'idPrefix', }); const wrapper = mount({rowItems}); - expect(wrapper.find('[data-test-subj="draggable-content-attrName"]').first().text()).toBe( + expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( '(Empty String)' ); }); @@ -163,7 +163,7 @@ describe('Table Helpers', () => { displayCount: 2, }); const wrapper = mount({rowItems}); - expect(wrapper.find('[data-test-subj="draggableWrapperDiv"]').hostNodes().length).toBe(2); + expect(wrapper.find('[data-test-subj="withHoverActionsButton"]').hostNodes().length).toBe(2); }); test('it uses custom renderer', () => { @@ -175,7 +175,7 @@ describe('Table Helpers', () => { render: renderer, }); const wrapper = mount({rowItems}); - expect(wrapper.find('[data-test-subj="draggable-content-attrName"]').first().text()).toBe( + expect(wrapper.find('[data-test-subj="render-content-attrName"]').first().text()).toBe( 'Hi item1 renderer' ); }); diff --git a/x-pack/plugins/security_solution/public/network/components/direction/index.tsx b/x-pack/plugins/security_solution/public/network/components/direction/index.tsx index 7c6bb50378d9c..d87756cb9bbab 100644 --- a/x-pack/plugins/security_solution/public/network/components/direction/index.tsx +++ b/x-pack/plugins/security_solution/public/network/components/direction/index.tsx @@ -60,13 +60,15 @@ export const DirectionBadge = React.memo<{ contextId: string; direction?: string | null; eventId: string; -}>(({ contextId, eventId, direction }) => ( + isDraggable?: boolean; +}>(({ contextId, eventId, direction, isDraggable }) => ( )); diff --git a/x-pack/plugins/security_solution/public/network/components/ip/index.tsx b/x-pack/plugins/security_solution/public/network/components/ip/index.tsx index a08b8003f142c..2fa3e988784ca 100644 --- a/x-pack/plugins/security_solution/public/network/components/ip/index.tsx +++ b/x-pack/plugins/security_solution/public/network/components/ip/index.tsx @@ -22,13 +22,15 @@ export const Ip = React.memo<{ contextId: string; eventId: string; fieldName: string; + isDraggable?: boolean; value?: string | null; -}>(({ contextId, eventId, fieldName, value }) => ( +}>(({ contextId, eventId, fieldName, isDraggable, value }) => ( diff --git a/x-pack/plugins/security_solution/public/network/components/port/index.tsx b/x-pack/plugins/security_solution/public/network/components/port/index.tsx index df288c1abfb06..4afd9bc7b892a 100644 --- a/x-pack/plugins/security_solution/public/network/components/port/index.tsx +++ b/x-pack/plugins/security_solution/public/network/components/port/index.tsx @@ -29,7 +29,7 @@ export const Port = React.memo<{ contextId: string; eventId: string; fieldName: string; - isDraggable: boolean; + isDraggable?: boolean; value: string | undefined | null; }>(({ contextId, eventId, fieldName, isDraggable, value }) => isDraggable ? ( @@ -37,6 +37,7 @@ export const Port = React.memo<{ data-test-subj="port" field={fieldName} id={`port-default-draggable-${contextId}-${eventId}-${fieldName}-${value}`} + isDraggable={isDraggable} tooltipContent={fieldName} value={value} > diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/geo_fields.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/geo_fields.tsx index 1f6111cd0bb07..65bd3bf1ec154 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/geo_fields.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/geo_fields.tsx @@ -73,8 +73,9 @@ const GeoFieldValues = React.memo<{ contextId: string; eventId: string; fieldName: string; + isDraggable?: boolean; values?: string[] | null; -}>(({ contextId, eventId, fieldName, values }) => +}>(({ contextId, eventId, fieldName, isDraggable, values }) => values != null ? ( <> {uniq(values).map((value) => ( @@ -92,6 +93,7 @@ const GeoFieldValues = React.memo<{ data-test-subj={fieldName} field={fieldName} id={`geo-field-values-default-draggable-${contextId}-${eventId}-${fieldName}-${value}`} + isDraggable={isDraggable} tooltipContent={fieldName} value={value} /> @@ -114,7 +116,7 @@ GeoFieldValues.displayName = 'GeoFieldValues'; * - `source|destination.geo.city_name` */ export const GeoFields = React.memo((props) => { - const { contextId, eventId, type } = props; + const { contextId, eventId, isDraggable, type } = props; const propNameToFieldName = getGeoFieldPropNameToFieldNameMap(type); return ( @@ -124,6 +126,7 @@ export const GeoFields = React.memo((props) => { contextId={contextId} eventId={eventId} fieldName={geo.fieldName} + isDraggable={isDraggable} key={geo.fieldName} values={get(geo.prop, props)} /> diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/index.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/index.tsx index 57e302d2911fa..d7bcf9f6c5297 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/index.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/index.tsx @@ -36,6 +36,7 @@ export const SourceDestination = React.memo( destinationPackets, destinationPort, eventId, + isDraggable, networkBytes, networkCommunityId, networkDirection, @@ -59,8 +60,9 @@ export const SourceDestination = React.memo( packets={networkPackets} communityId={networkCommunityId} contextId={contextId} - eventId={eventId} direction={networkDirection} + eventId={eventId} + isDraggable={isDraggable} protocol={networkProtocol} transport={transport} /> @@ -79,6 +81,7 @@ export const SourceDestination = React.memo( destinationPackets={destinationPackets} destinationPort={destinationPort} eventId={eventId} + isDraggable={isDraggable} sourceBytes={sourceBytes} sourceGeoContinentName={sourceGeoContinentName} sourceGeoCountryName={sourceGeoCountryName} diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/ip_with_port.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/ip_with_port.tsx index 17b55c4229fcc..e99aecbc535e7 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/ip_with_port.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/ip_with_port.tsx @@ -25,9 +25,10 @@ IpPortSeparator.displayName = 'IpPortSeparator'; const PortWithSeparator = React.memo<{ contextId: string; eventId: string; + isDraggable?: boolean; port?: string | null; portFieldName: string; -}>(({ contextId, eventId, port, portFieldName }) => { +}>(({ contextId, eventId, isDraggable, port, portFieldName }) => { return port != null ? ( @@ -39,7 +40,7 @@ const PortWithSeparator = React.memo<{ data-test-subj="port" eventId={eventId} fieldName={portFieldName} - isDraggable={true} + isDraggable={isDraggable} value={port} /> @@ -58,9 +59,10 @@ export const IpWithPort = React.memo<{ eventId: string; ip?: string | null; ipFieldName: string; + isDraggable?: boolean; port?: string | null; portFieldName: string; -}>(({ contextId, eventId, ip, ipFieldName, port, portFieldName }) => ( +}>(({ contextId, eventId, ip, ipFieldName, isDraggable, port, portFieldName }) => ( @@ -75,6 +78,7 @@ export const IpWithPort = React.memo<{ diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/network.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/network.tsx index c1b454892fddf..88bfd19b7066e 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/network.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/network.tsx @@ -45,97 +45,120 @@ export const Network = React.memo<{ contextId: string; direction?: string[] | null; eventId: string; + isDraggable?: boolean; packets?: string[] | null; protocol?: string[] | null; transport?: string[] | null; -}>(({ bytes, communityId, contextId, direction, eventId, packets, protocol, transport }) => ( - - {direction != null - ? uniq(direction).map((dir) => ( - - - - )) - : null} +}>( + ({ + bytes, + communityId, + contextId, + direction, + eventId, + isDraggable, + packets, + protocol, + transport, + }) => ( + + {direction != null + ? uniq(direction).map((dir) => ( + + + + )) + : null} + + {protocol != null + ? uniq(protocol).map((proto) => ( + + + + )) + : null} - {protocol != null - ? uniq(protocol).map((proto) => ( - - - - )) - : null} + {bytes != null + ? uniq(bytes).map((b) => + !isNaN(Number(b)) ? ( + + + + + + + + + + ) : null + ) + : null} - {bytes != null - ? uniq(bytes).map((b) => - !isNaN(Number(b)) ? ( - + {packets != null + ? uniq(packets).map((p) => ( + - - - + {`${p} ${i18n.PACKETS}`} - ) : null - ) - : null} + )) + : null} - {packets != null - ? uniq(packets).map((p) => ( - - - - {`${p} ${i18n.PACKETS}`} - - - - )) - : null} - - {transport != null - ? uniq(transport).map((trans) => ( - - - - )) - : null} + {transport != null + ? uniq(transport).map((trans) => ( + + + + )) + : null} - {communityId != null - ? uniq(communityId).map((trans) => ( - - - - )) - : null} - -)); + {communityId != null + ? uniq(communityId).map((trans) => ( + + + + )) + : null} + + ) +); Network.displayName = 'Network'; diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_arrows.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_arrows.tsx index ff9edff39b3ad..6858520340aae 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_arrows.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_arrows.tsx @@ -56,10 +56,11 @@ Data.displayName = 'Data'; const SourceArrow = React.memo<{ contextId: string; eventId: string; + isDraggable?: boolean; sourceBytes: string | undefined; sourceBytesPercent: number | undefined; sourcePackets: string | undefined; -}>(({ contextId, eventId, sourceBytes, sourceBytesPercent, sourcePackets }) => { +}>(({ contextId, eventId, isDraggable, sourceBytes, sourceBytesPercent, sourcePackets }) => { const sourceArrowHeight = sourceBytesPercent != null ? getArrowHeightFromPercent(sourceBytesPercent) @@ -76,6 +77,7 @@ const SourceArrow = React.memo<{ @@ -101,6 +103,7 @@ const SourceArrow = React.memo<{ @@ -129,73 +132,85 @@ SourceArrow.displayName = 'SourceArrow'; */ const DestinationArrow = React.memo<{ contextId: string; - eventId: string; destinationBytes: string | undefined; destinationBytesPercent: number | undefined; destinationPackets: string | undefined; -}>(({ contextId, eventId, destinationBytes, destinationBytesPercent, destinationPackets }) => { - const destinationArrowHeight = - destinationBytesPercent != null - ? getArrowHeightFromPercent(destinationBytesPercent) - : DEFAULT_ARROW_HEIGHT; + eventId: string; + isDraggable?: boolean; +}>( + ({ + contextId, + destinationBytes, + destinationBytesPercent, + destinationPackets, + eventId, + isDraggable, + }) => { + const destinationArrowHeight = + destinationBytesPercent != null + ? getArrowHeightFromPercent(destinationBytesPercent) + : DEFAULT_ARROW_HEIGHT; + + return ( + + + + - return ( - - - - + + + - - - + {destinationBytes != null && !isNaN(Number(destinationBytes)) ? ( + + + + {destinationBytesPercent != null ? ( + + {`(${numeral(destinationBytesPercent).format('0.00')}%)`} + + ) : null} + + + + + + + ) : null} - {destinationBytes != null && !isNaN(Number(destinationBytes)) ? ( - - - {destinationBytesPercent != null ? ( - - {`(${numeral(destinationBytesPercent).format('0.00')}%)`} - - ) : null} - - - - - + - ) : null} - - - + {destinationPackets != null && !isNaN(Number(destinationPackets)) ? ( + + + + {`${numeral(destinationPackets).format( + '0,0' + )} ${i18n.PACKETS}`} + + + + ) : null} - {destinationPackets != null && !isNaN(Number(destinationPackets)) ? ( - - - {`${numeral(destinationPackets).format( - '0,0' - )} ${i18n.PACKETS}`} - - + - ) : null} - - - - - - ); -}); + + ); + } +); DestinationArrow.displayName = 'DestinationArrow'; @@ -208,67 +223,79 @@ export const SourceDestinationArrows = React.memo<{ destinationBytes?: string[] | null; destinationPackets?: string[] | null; eventId: string; + isDraggable?: boolean; sourceBytes?: string[] | null; sourcePackets?: string[] | null; -}>(({ contextId, destinationBytes, destinationPackets, eventId, sourceBytes, sourcePackets }) => { - const maybeSourceBytes = - sourceBytes != null && hasOneValue(sourceBytes) ? sourceBytes[0] : undefined; - - const maybeSourcePackets = - sourcePackets != null && hasOneValue(sourcePackets) ? sourcePackets[0] : undefined; - - const maybeDestinationBytes = - destinationBytes != null && hasOneValue(destinationBytes) ? destinationBytes[0] : undefined; - - const maybeDestinationPackets = - destinationPackets != null && hasOneValue(destinationPackets) - ? destinationPackets[0] - : undefined; - - const maybeSourceBytesPercent = - maybeSourceBytes != null && maybeDestinationBytes != null - ? getPercent({ - numerator: Number(maybeSourceBytes), - denominator: Number(maybeSourceBytes) + Number(maybeDestinationBytes), - }) - : undefined; - - const maybeDestinationBytesPercent = - maybeSourceBytesPercent != null ? 100 - maybeSourceBytesPercent : undefined; - - return ( - - {maybeSourceBytes != null ? ( - - - - ) : null} - - {maybeDestinationBytes != null ? ( - - - - ) : null} - - ); -}); +}>( + ({ + contextId, + destinationBytes, + destinationPackets, + eventId, + isDraggable, + sourceBytes, + sourcePackets, + }) => { + const maybeSourceBytes = + sourceBytes != null && hasOneValue(sourceBytes) ? sourceBytes[0] : undefined; + + const maybeSourcePackets = + sourcePackets != null && hasOneValue(sourcePackets) ? sourcePackets[0] : undefined; + + const maybeDestinationBytes = + destinationBytes != null && hasOneValue(destinationBytes) ? destinationBytes[0] : undefined; + + const maybeDestinationPackets = + destinationPackets != null && hasOneValue(destinationPackets) + ? destinationPackets[0] + : undefined; + + const maybeSourceBytesPercent = + maybeSourceBytes != null && maybeDestinationBytes != null + ? getPercent({ + numerator: Number(maybeSourceBytes), + denominator: Number(maybeSourceBytes) + Number(maybeDestinationBytes), + }) + : undefined; + + const maybeDestinationBytesPercent = + maybeSourceBytesPercent != null ? 100 - maybeSourceBytesPercent : undefined; + + return ( + + {maybeSourceBytes != null ? ( + + + + ) : null} + {maybeDestinationBytes != null ? ( + + + + ) : null} + + ); + } +); SourceDestinationArrows.displayName = 'SourceDestinationArrows'; diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx index 91f7ea3d7ac7a..824b9fd11f242 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx @@ -958,6 +958,7 @@ describe('SourceDestinationIp', () => { destinationIp={asArrayIfExists(get(DESTINATION_IP_FIELD_NAME, getMockNetflowData()))} destinationPort={asArrayIfExists(get(DESTINATION_PORT_FIELD_NAME, getMockNetflowData()))} eventId={get(ID_FIELD_NAME, getMockNetflowData())} + isDraggable={true} sourceGeoContinentName={asArrayIfExists( get(SOURCE_GEO_CONTINENT_NAME_FIELD_NAME, getMockNetflowData()) )} @@ -979,7 +980,6 @@ describe('SourceDestinationIp', () => { /> ); - expect( removeExternalLinkText( wrapper.find('[data-test-subj="draggable-content-source.port"]').first().text() @@ -1011,6 +1011,7 @@ describe('SourceDestinationIp', () => { destinationIp={asArrayIfExists(get(DESTINATION_IP_FIELD_NAME, getMockNetflowData()))} destinationPort={asArrayIfExists(get(DESTINATION_PORT_FIELD_NAME, getMockNetflowData()))} eventId={get(ID_FIELD_NAME, getMockNetflowData())} + isDraggable={true} sourceGeoContinentName={asArrayIfExists( get(SOURCE_GEO_CONTINENT_NAME_FIELD_NAME, getMockNetflowData()) )} @@ -1064,6 +1065,7 @@ describe('SourceDestinationIp', () => { destinationIp={asArrayIfExists(get(DESTINATION_IP_FIELD_NAME, getMockNetflowData()))} destinationPort={asArrayIfExists(get(DESTINATION_PORT_FIELD_NAME, getMockNetflowData()))} eventId={get(ID_FIELD_NAME, getMockNetflowData())} + isDraggable={true} sourceGeoContinentName={asArrayIfExists( get(SOURCE_GEO_CONTINENT_NAME_FIELD_NAME, getMockNetflowData()) )} @@ -1118,6 +1120,7 @@ describe('SourceDestinationIp', () => { destinationIp={undefined} destinationPort={asArrayIfExists(get(DESTINATION_PORT_FIELD_NAME, getMockNetflowData()))} eventId={get(ID_FIELD_NAME, getMockNetflowData())} + isDraggable={true} sourceGeoContinentName={asArrayIfExists( get(SOURCE_GEO_CONTINENT_NAME_FIELD_NAME, getMockNetflowData()) )} @@ -1271,6 +1274,7 @@ describe('SourceDestinationIp', () => { destinationIp={asArrayIfExists(get(DESTINATION_IP_FIELD_NAME, getMockNetflowData()))} destinationPort={asArrayIfExists(get(DESTINATION_PORT_FIELD_NAME, getMockNetflowData()))} eventId={get(ID_FIELD_NAME, getMockNetflowData())} + isDraggable={true} sourceGeoContinentName={asArrayIfExists( get(SOURCE_GEO_CONTINENT_NAME_FIELD_NAME, getMockNetflowData()) )} diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.tsx index db9773789bf54..31bae6880fcbe 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.tsx @@ -88,54 +88,67 @@ const IpAdressesWithPorts = React.memo<{ destinationIp?: string[] | null; destinationPort?: Array | null; eventId: string; + isDraggable?: boolean; sourceIp?: string[] | null; sourcePort?: Array | null; type: SourceDestinationType; -}>(({ contextId, destinationIp, destinationPort, eventId, sourceIp, sourcePort, type }) => { - const ip = type === 'source' ? sourceIp : destinationIp; - const ipFieldName = type === 'source' ? SOURCE_IP_FIELD_NAME : DESTINATION_IP_FIELD_NAME; - const port = type === 'source' ? sourcePort : destinationPort; - const portFieldName = type === 'source' ? SOURCE_PORT_FIELD_NAME : DESTINATION_PORT_FIELD_NAME; - - if (ip == null) { - return null; // if ip is not populated as an array, ports will be ignored +}>( + ({ + contextId, + destinationIp, + destinationPort, + eventId, + isDraggable, + sourceIp, + sourcePort, + type, + }) => { + const ip = type === 'source' ? sourceIp : destinationIp; + const ipFieldName = type === 'source' ? SOURCE_IP_FIELD_NAME : DESTINATION_IP_FIELD_NAME; + const port = type === 'source' ? sourcePort : destinationPort; + const portFieldName = type === 'source' ? SOURCE_PORT_FIELD_NAME : DESTINATION_PORT_FIELD_NAME; + + if (ip == null) { + return null; // if ip is not populated as an array, ports will be ignored + } + + // IMPORTANT: The ip and port arrays are parallel arrays; the port at + // index `i` corresponds with the ip address at index `i`. We must + // preserve the relationships between the parallel arrays: + const ipPortPairs: IpPortPair[] = + port != null && ip.length === port.length + ? ip.map((address, i) => ({ + ip: address, + port: port[i] != null ? `${port[i]}` : null, // use the corresponding port in the parallel array + })) + : ip.map((address) => ({ + ip: address, + port: null, // drop the port, because the length of the parallel ip and port arrays is different + })); + + return ( + + {uniqWith(deepEqual, ipPortPairs).map( + (ipPortPair) => + ipPortPair.ip != null && ( + + + + ) + )} + + ); } - - // IMPORTANT: The ip and port arrays are parallel arrays; the port at - // index `i` corresponds with the ip address at index `i`. We must - // preserve the relationships between the parallel arrays: - const ipPortPairs: IpPortPair[] = - port != null && ip.length === port.length - ? ip.map((address, i) => ({ - ip: address, - port: port[i] != null ? `${port[i]}` : null, // use the corresponding port in the parallel array - })) - : ip.map((address) => ({ - ip: address, - port: null, // drop the port, because the length of the parallel ip and port arrays is different - })); - - return ( - - {uniqWith(deepEqual, ipPortPairs).map( - (ipPortPair) => - ipPortPair.ip != null && ( - - - - ) - )} - - ); -}); +); IpAdressesWithPorts.displayName = 'IpAdressesWithPorts'; @@ -159,6 +172,7 @@ export const SourceDestinationIp = React.memo( destinationIp, destinationPort, eventId, + isDraggable, sourceGeoContinentName, sourceGeoCountryName, sourceGeoCountryIsoCode, @@ -189,6 +203,7 @@ export const SourceDestinationIp = React.memo( destinationIp={destinationIp} destinationPort={destinationPort} eventId={eventId} + isDraggable={isDraggable} sourceIp={sourceIp} sourcePort={sourcePort} type={type} @@ -202,7 +217,7 @@ export const SourceDestinationIp = React.memo( data-test-subj="port" eventId={eventId} fieldName={`${type}.port`} - isDraggable={true} + isDraggable={isDraggable} value={port} /> @@ -219,6 +234,7 @@ export const SourceDestinationIp = React.memo( destinationGeoRegionName={destinationGeoRegionName} destinationGeoCityName={destinationGeoCityName} eventId={eventId} + isDraggable={isDraggable} sourceGeoContinentName={sourceGeoContinentName} sourceGeoCountryName={sourceGeoCountryName} sourceGeoCountryIsoCode={sourceGeoCountryIsoCode} diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_with_arrows.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_with_arrows.tsx index 3d6189118ecb0..a010d674291ba 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_with_arrows.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_with_arrows.tsx @@ -32,6 +32,7 @@ export const SourceDestinationWithArrows = React.memo @@ -85,6 +88,7 @@ export const SourceDestinationWithArrows = React.memo | null; eventId: string; + isDraggable?: boolean; sourceGeoContinentName?: string[] | null; sourceGeoCountryName?: string[] | null; sourceGeoCountryIsoCode?: string[] | null; @@ -85,6 +88,7 @@ export interface SourceDestinationWithArrowsProps { destinationPackets?: string[] | null; destinationPort?: string[] | null; eventId: string; + isDraggable?: boolean; sourceBytes?: string[] | null; sourceGeoContinentName?: string[] | null; sourceGeoCountryName?: string[] | null; diff --git a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx index 29775067478a5..296faf208ac91 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx @@ -40,8 +40,9 @@ export const CertificateFingerprint = React.memo<{ certificateType: CertificateType; contextId: string; fieldName: string; + isDraggable?: boolean; value?: string | null; -}>(({ eventId, certificateType, contextId, fieldName, value }) => { +}>(({ eventId, certificateType, contextId, fieldName, isDraggable, value }) => { return ( {fieldName} diff --git a/x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx index 421ba5941eaef..7500fdb122fae 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx @@ -26,6 +26,7 @@ export const Duration = React.memo<{ isDraggable ? ( @@ -24,6 +25,7 @@ exports[`Field Renderers #autonomousSystemRenderer it renders correctly against @@ -58,6 +60,7 @@ exports[`Field Renderers #hostIdRenderer it renders correctly against snapshot 1 }, } } + isDraggable={false} render={[Function]} /> `; @@ -79,6 +82,7 @@ exports[`Field Renderers #hostNameRenderer it renders correctly against snapshot }, } } + isDraggable={false} render={[Function]} /> `; @@ -94,6 +98,7 @@ exports[`Field Renderers #locationRenderer it renders correctly against snapshot @@ -84,6 +85,7 @@ export const autonomousSystemRenderer = ( id={`autonomous-system-renderer-default-draggable-${IpOverviewId}-${ contextID ? `${contextID}-` : '' }${flowTarget}.as.organization.name`} + isDraggable={false} field={`${flowTarget}.as.organization.name`} value={as.organization.name} /> @@ -94,6 +96,7 @@ export const autonomousSystemRenderer = ( id={`autonomous-system-renderer-default-draggable-${IpOverviewId}-${ contextID ? `${contextID}-` : '' }${flowTarget}.as.number`} + isDraggable={false} field={`${flowTarget}.as.number`} value={`${as.number}`} /> @@ -123,6 +126,7 @@ export const hostIdRenderer = ({ id={`host-id-renderer-default-draggable-${IpOverviewId}-${ contextID ? `${contextID}-` : '' }host-id`} + isDraggable={false} field="host.id" value={host.id[0]} > @@ -154,6 +158,7 @@ export const hostNameRenderer = ( id={`host-name-renderer-default-draggable-${IpOverviewId}-${ contextID ? `${contextID}-` : '' }host-name`} + isDraggable={false} field={'host.name'} value={host.name[0]} > @@ -204,7 +209,7 @@ export const DefaultFieldRendererComponent: React.FC )} {typeof rowItem === 'string' && ( - + {render ? render(rowItem) : rowItem} )} diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx index 5014a198e8bd5..5acc0ef9aa46b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx @@ -59,11 +59,11 @@ describe('FieldName', () => { ); await waitFor(() => { - wrapper.find('[data-test-subj="withHoverActionsButton"]').at(0).simulate('mouseenter'); + wrapper.find('[data-test-subj="withHoverActionsButton"]').simulate('mouseenter'); wrapper.update(); jest.runAllTimers(); wrapper.update(); - expect(wrapper.find('[data-test-subj="copy-to-clipboard"]').exists()).toBe(true); + expect(wrapper.find('[data-test-subj="hover-actions-copy-button"]').exists()).toBe(true); }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx index 2e76e43227506..1e081d249cc00 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx @@ -11,11 +11,9 @@ import styled from 'styled-components'; import { OnUpdateColumns } from '../timeline/events'; import { WithHoverActions } from '../../../common/components/with_hover_actions'; -import { - DraggableWrapperHoverContent, - useGetTimelineId, -} from '../../../common/components/drag_and_drop/draggable_wrapper_hover_content'; +import { useGetTimelineId } from '../../../common/components/drag_and_drop/use_get_timeline_id_from_dom'; import { ColumnHeaderOptions } from '../../../../common'; +import { HoverActions } from '../../../common/components/hover_actions'; /** * The name of a (draggable) field @@ -112,9 +110,10 @@ export const FieldName = React.memo<{ const hoverContent = useMemo( () => ( - = ({ return ( (({ contextId, eventId, fieldName, value }) => ( +}>(({ contextId, eventId, fieldName, isDraggable, value }) => ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx index 16ea48890778e..328d310524070 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx @@ -23,6 +23,7 @@ import { JA3_HASH_FIELD_NAME, Ja3Fingerprint } from '../../ja3_fingerprint'; export const Fingerprints = React.memo<{ contextId: string; eventId: string; + isDraggable?: boolean; tlsClientCertificateFingerprintSha1?: string[] | null; tlsFingerprintsJa3Hash?: string[] | null; tlsServerCertificateFingerprintSha1?: string[] | null; @@ -30,6 +31,7 @@ export const Fingerprints = React.memo<{ ({ contextId, eventId, + isDraggable, tlsClientCertificateFingerprintSha1, tlsFingerprintsJa3Hash, tlsServerCertificateFingerprintSha1, @@ -48,6 +50,7 @@ export const Fingerprints = React.memo<{ eventId={eventId} fieldName={JA3_HASH_FIELD_NAME} contextId={contextId} + isDraggable={isDraggable} value={ja3} /> @@ -61,6 +64,7 @@ export const Fingerprints = React.memo<{ certificateType="client" contextId={contextId} fieldName={TLS_CLIENT_CERTIFICATE_FINGERPRINT_SHA1_FIELD_NAME} + isDraggable={isDraggable} value={clientCert} /> @@ -74,6 +78,7 @@ export const Fingerprints = React.memo<{ certificateType="server" contextId={contextId} fieldName={TLS_SERVER_CERTIFICATE_FINGERPRINT_SHA1_FIELD_NAME} + isDraggable={isDraggable} value={serverCert} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx index 05bfe56d1df42..a755aa54fca7b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx @@ -37,6 +37,7 @@ export const Netflow = React.memo( eventId, eventEnd, eventStart, + isDraggable, networkBytes, networkCommunityId, networkDirection, @@ -82,6 +83,7 @@ export const Netflow = React.memo( eventId={eventId} eventEnd={eventEnd} eventStart={eventStart} + isDraggable={isDraggable} networkBytes={networkBytes} networkCommunityId={networkCommunityId} networkDirection={networkDirection} @@ -105,6 +107,7 @@ export const Netflow = React.memo( (({ contextId, eventDuration, eventId, eventEnd, eventStart }) => ( + isDraggable?: boolean; +}>(({ contextId, eventDuration, eventId, eventEnd, eventStart, isDraggable }) => ( @@ -94,6 +97,7 @@ export const DurationEventStartEnd = React.memo<{ data-test-subj="event-end" field={EVENT_END_FIELD_NAME} id={`duration-event-start-end-default-draggable-${contextId}-${eventId}-${EVENT_END_FIELD_NAME}-${end}`} + isDraggable={isDraggable} tooltipContent={null} value={end} > diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx index 4714b561f036b..e319e803e63fe 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx @@ -48,6 +48,7 @@ export const NetflowColumns = React.memo( eventId, eventEnd, eventStart, + isDraggable, networkBytes, networkCommunityId, networkDirection, @@ -76,6 +77,7 @@ export const NetflowColumns = React.memo( @@ -88,6 +90,7 @@ export const NetflowColumns = React.memo( eventId={eventId} eventEnd={eventEnd} eventStart={eventStart} + isDraggable={isDraggable} /> @@ -104,6 +107,7 @@ export const NetflowColumns = React.memo( destinationPackets={destinationPackets} destinationPort={destinationPort} eventId={eventId} + isDraggable={isDraggable} networkBytes={networkBytes} networkCommunityId={networkCommunityId} networkDirection={networkDirection} diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts index 532b35f4cffd0..801df93bfcf37 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts @@ -21,6 +21,7 @@ export interface NetflowColumnsProps { eventId: string; eventEnd?: string[] | null; eventStart?: string[] | null; + isDraggable?: boolean; networkBytes?: string[] | null; networkCommunityId?: string[] | null; networkDirection?: string[] | null; diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx index e6931baeb7017..72de537fee588 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx @@ -22,9 +22,10 @@ export const USER_NAME_FIELD_NAME = 'user.name'; export const UserProcess = React.memo<{ contextId: string; eventId: string; + isDraggable?: boolean; processName?: string[] | null; userName?: string[] | null; -}>(({ contextId, eventId, processName, userName }) => ( +}>(({ contextId, eventId, isDraggable, processName, userName }) => ( @@ -55,6 +57,7 @@ export const UserProcess = React.memo<{ data-test-subj="process-name" eventId={eventId} field={PROCESS_NAME_FIELD_NAME} + isDraggable={isDraggable} value={process} iconType="console" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts b/x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts index a28334e2d45fb..0798345c61da9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts @@ -20,6 +20,7 @@ export interface NetflowProps { eventId: string; eventEnd?: string[] | null; eventStart?: string[] | null; + isDraggable?: boolean; networkBytes?: string[] | null; networkCommunityId?: string[] | null; networkDirection?: string[] | null; diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx index b0384155c5c10..d6aa34f2528e5 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx @@ -26,6 +26,7 @@ const AlertsExampleComponent: React.FC = () => { {alertsRowRenderer.renderRow({ browserFields: {}, data: mockEndpointProcessExecutionMalwarePreventionAlert, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx index 703621bc4c666..2c6ce5886462b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx @@ -23,6 +23,7 @@ const AuditdExampleComponent: React.FC = () => { {auditdRowRenderer.renderRow({ browserFields: {}, data: mockTimelineData[26].ecs, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx index 265a71ef264d1..a525b26571dc8 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx @@ -23,6 +23,7 @@ const AuditdFileExampleComponent: React.FC = () => { {auditdFileRowRenderer.renderRow({ browserFields: {}, data: mockTimelineData[27].ecs, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx index 6198225fcb87d..f8704b63fe47e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx @@ -23,6 +23,7 @@ const LibraryExampleComponent: React.FC = () => { {libraryRowRenderer.renderRow({ browserFields: {}, data: mockEndpointLibraryLoadEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx index cd20b28203246..c5a0f09440899 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx @@ -16,6 +16,7 @@ const NetflowExampleComponent: React.FC = () => ( {netflowRowRenderer.renderRow({ browserFields: {}, data: getMockNetflowData(), + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx index f00db0d94eed8..67859db1a5ea4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx @@ -23,6 +23,7 @@ const RegistryExampleComponent: React.FC = () => { {registryRowRenderer.renderRow({ browserFields: {}, data: mockEndpointRegistryModificationEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx index f22ac0dca6f9d..1e6caca2effa9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx @@ -16,6 +16,7 @@ const SuricataExampleComponent: React.FC = () => ( {suricataRowRenderer.renderRow({ browserFields: {}, data: mockTimelineData[2].ecs, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx index 909d5224fb351..7d38f8feaace6 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx @@ -23,6 +23,7 @@ const SystemExampleComponent: React.FC = () => { {systemRowRenderer.renderRow({ browserFields: {}, data: mockEndgameTerminationEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx index 0f413eed811be..72c5060b27701 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx @@ -19,6 +19,7 @@ const SystemDnsExampleComponent: React.FC = () => { {systemDnsRowRenderer.renderRow({ browserFields: {}, data: mockEndgameDnsRequest, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx index 0e5fe1768c787..6103746b3238b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx @@ -23,6 +23,7 @@ const SystemEndgameProcessExampleComponent: React.FC = () => { {systemEndgameProcessRowRenderer.renderRow({ browserFields: {}, data: mockEndgameCreationEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx index 3db9a93fc37c9..cb8668536f8d2 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx @@ -23,6 +23,7 @@ const SystemFileExampleComponent: React.FC = () => { {systemFileRowRenderer.renderRow({ browserFields: {}, data: mockEndgameFileDeleteEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx index 08ff6a5ddc7c9..12ad132131d1b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx @@ -23,6 +23,7 @@ const SystemFimExampleComponent: React.FC = () => { {systemFimRowRenderer.renderRow({ browserFields: {}, data: mockEndgameFileCreateEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx index 59b5fedbc82fa..8dfb0bf998738 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx @@ -21,6 +21,7 @@ const SystemSecurityEventExampleComponent: React.FC = () => { {systemSecurityEventRowRenderer.renderRow({ browserFields: {}, data: mockEndgameUserLogon, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx index 5175145bae9d9..7fa430e812625 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx @@ -22,6 +22,7 @@ const SystemSocketExampleComponent: React.FC = () => { {systemSocketRowRenderer.renderRow({ browserFields: {}, data: mockEndgameIpv4ConnectionAcceptEvent, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx index 9d7e5d48315e3..73d458a23ca17 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx @@ -16,6 +16,7 @@ const ThreatMatchExampleComponent: React.FC = () => ( {threatMatchRowRenderer.renderRow({ browserFields: {}, data: mockTimelineData[31].ecs, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx index b84942ea8b2a8..83d9e0122e971 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx @@ -16,6 +16,7 @@ const ZeekExampleComponent: React.FC = () => ( {zeekRowRenderer.renderRow({ browserFields: {}, data: mockTimelineData[13].ecs, + isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx index 19abd6841e7e8..cf1f4a26c709d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx @@ -80,6 +80,7 @@ export const StatefulRowRenderer = ({ {rowRenderer.renderRow({ browserFields, data: event.ecs, + isDraggable: true, timelineId, })}
diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap index 92816d499b029..722c7a7aebb00 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap @@ -19,6 +19,7 @@ exports[`empty_column_renderer renders correctly against snapshot 1`] = ` }, } } + isDraggable={true} key="empty-column-renderer-draggable-wrapper-test-source.ip-1-source.ip" render={[Function]} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/agent_statuses.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/agent_statuses.tsx index 417cf0ceee184..edec2d0d823fa 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/agent_statuses.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/agent_statuses.tsx @@ -42,6 +42,7 @@ export const AgentStatuses = React.memo( @@ -60,6 +61,7 @@ export const AgentStatuses = React.memo( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx index bdb650585bdb0..fbb2c2edf8ae3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx @@ -15,9 +15,10 @@ interface Props { contextId: string; eventId: string; processTitle: string | null | undefined; + isDraggable?: boolean; } -export const ArgsComponent = ({ args, contextId, eventId, processTitle }: Props) => { +export const ArgsComponent = ({ args, contextId, eventId, processTitle, isDraggable }: Props) => { if (isNillEmptyOrNotFinite(args) && isNillEmptyOrNotFinite(processTitle)) { return null; } @@ -31,6 +32,7 @@ export const ArgsComponent = ({ args, contextId, eventId, processTitle }: Props) contextId={`${contextId}-args-${i}-${arg}`} eventId={eventId} field="process.args" + isDraggable={isDraggable} value={arg} /> @@ -42,6 +44,7 @@ export const ArgsComponent = ({ args, contextId, eventId, processTitle }: Props) contextId={contextId} eventId={eventId} field="process.title" + isDraggable={isDraggable} value={processTitle} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap index 63b65d3cf36be..684764e39848f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap @@ -98,6 +98,7 @@ exports[`GenericRowRenderer #createGenericAuditRowRenderer renders correctly aga }, } } + isDraggable={true} text="connected using" timelineId="test" /> @@ -222,6 +223,7 @@ exports[`GenericRowRenderer #createGenericFileRowRenderer renders correctly agai } } fileIcon="document" + isDraggable={true} text="opened file using" timelineId="test" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx index 737d0b74bfbf9..fb14d44995c95 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx @@ -36,6 +36,7 @@ interface Props { workingDirectory: string | null | undefined; args: string[] | null | undefined; session: string | null | undefined; + isDraggable?: boolean; } export const AuditdGenericLine = React.memo( @@ -55,6 +56,7 @@ export const AuditdGenericLine = React.memo( result, session, text, + isDraggable, }) => ( ( secondary={secondary} workingDirectory={workingDirectory} session={session} + isDraggable={isDraggable} /> {processExecutable != null && ( @@ -81,9 +84,16 @@ export const AuditdGenericLine = React.memo( processPid={processPid} processName={processName} processExecutable={processExecutable} + isDraggable={isDraggable} /> - + {result != null && ( {i18n.WITH_RESULT} @@ -94,6 +104,7 @@ export const AuditdGenericLine = React.memo( contextId={contextId} eventId={id} field="auditd.result" + isDraggable={isDraggable} queryValue={result} value={result} /> @@ -107,13 +118,14 @@ AuditdGenericLine.displayName = 'AuditdGenericLine'; interface GenericDetailsProps { browserFields: BrowserFields; data: Ecs; + isDraggable?: boolean; contextId: string; text: string; timelineId: string; } export const AuditdGenericDetails = React.memo( - ({ data, contextId, text, timelineId }) => { + ({ data, contextId, isDraggable, text, timelineId }) => { const id = data._id; const session: string | null | undefined = get('auditd.session[0]', data); const hostName: string | null | undefined = get('host.name[0]', data); @@ -146,9 +158,10 @@ export const AuditdGenericDetails = React.memo( primary={primary} result={result} secondary={secondary} + isDraggable={isDraggable} /> - + ); } else { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx index efab1a433c0bb..89fbbf751b0ee 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx @@ -38,6 +38,7 @@ interface Props { workingDirectory: string | null | undefined; args: string[] | null | undefined; session: string | null | undefined; + isDraggable?: boolean; } export const AuditdGenericFileLine = React.memo( @@ -59,6 +60,7 @@ export const AuditdGenericFileLine = React.memo( session, text, fileIcon, + isDraggable, }) => ( ( secondary={secondary} workingDirectory={workingDirectory} session={session} + isDraggable={isDraggable} /> {(filePath != null || processExecutable != null) && ( @@ -81,6 +84,7 @@ export const AuditdGenericFileLine = React.memo( contextId={contextId} eventId={id} field="file.path" + isDraggable={isDraggable} value={filePath} iconType={fileIcon} /> @@ -96,12 +100,19 @@ export const AuditdGenericFileLine = React.memo( endgamePid={undefined} endgameProcessName={undefined} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={processExecutable} /> - + {result != null && ( {i18n.WITH_RESULT} @@ -112,6 +123,7 @@ export const AuditdGenericFileLine = React.memo( contextId={contextId} eventId={id} field="auditd.result" + isDraggable={isDraggable} queryValue={result} value={result} /> @@ -124,15 +136,16 @@ AuditdGenericFileLine.displayName = 'AuditdGenericFileLine'; interface GenericDetailsProps { browserFields: BrowserFields; - data: Ecs; contextId: string; + data: Ecs; text: string; fileIcon: IconType; timelineId: string; + isDraggable?: boolean; } export const AuditdGenericFileDetails = React.memo( - ({ data, contextId, text, fileIcon = 'document', timelineId }) => { + ({ data, contextId, text, fileIcon = 'document', timelineId, isDraggable }) => { const id = data._id; const session: string | null | undefined = get('auditd.session[0]', data); const hostName: string | null | undefined = get('host.name[0]', data); @@ -169,9 +182,10 @@ export const AuditdGenericFileDetails = React.memo( secondary={secondary} fileIcon={fileIcon} result={result} + isDraggable={isDraggable} /> - + ); } else { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx index 74a5ff472b581..1f44feb3b394f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx @@ -55,6 +55,7 @@ describe('GenericRowRenderer', () => { const children = connectedToRenderer.renderRow({ browserFields, data: auditd, + isDraggable: true, timelineId: 'test', }); @@ -84,6 +85,7 @@ describe('GenericRowRenderer', () => { const children = connectedToRenderer.renderRow({ browserFields: mockBrowserFields, data: auditd, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -117,6 +119,7 @@ describe('GenericRowRenderer', () => { const children = fileToRenderer.renderRow({ browserFields, data: auditdFile, + isDraggable: true, timelineId: 'test', }); @@ -146,6 +149,7 @@ describe('GenericRowRenderer', () => { const children = fileToRenderer.renderRow({ browserFields: mockBrowserFields, data: auditdFile, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx index 765bfd3d21351..d0522e97157ab 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx @@ -36,11 +36,12 @@ export const createGenericAuditRowRenderer = ({ action.toLowerCase() === actionName ); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx index 8fd8cfd5af9da..5857dc1e30182 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx @@ -21,69 +21,77 @@ interface Props { eventId: string; primary: string | null | undefined; secondary: string | null | undefined; + isDraggable?: boolean; } -export const PrimarySecondary = React.memo(({ contextId, eventId, primary, secondary }) => { - if (nilOrUnSet(primary) && nilOrUnSet(secondary)) { - return null; - } else if (!nilOrUnSet(primary) && nilOrUnSet(secondary)) { - return ( - - ); - } else if (nilOrUnSet(primary) && !nilOrUnSet(secondary)) { - return ( - - ); - } else if (primary === secondary) { - return ( - - ); - } else { - return ( - - - - - - {i18n.AS} - - - - - - ); +export const PrimarySecondary = React.memo( + ({ contextId, eventId, primary, secondary, isDraggable }) => { + if (nilOrUnSet(primary) && nilOrUnSet(secondary)) { + return null; + } else if (!nilOrUnSet(primary) && nilOrUnSet(secondary)) { + return ( + + ); + } else if (nilOrUnSet(primary) && !nilOrUnSet(secondary)) { + return ( + + ); + } else if (primary === secondary) { + return ( + + ); + } else { + return ( + + + + + + {i18n.AS} + + + + + + ); + } } -}); +); PrimarySecondary.displayName = 'PrimarySecondary'; @@ -93,10 +101,11 @@ interface PrimarySecondaryUserInfoProps { userName: string | null | undefined; primary: string | null | undefined; secondary: string | null | undefined; + isDraggable?: boolean; } export const PrimarySecondaryUserInfo = React.memo( - ({ contextId, eventId, userName, primary, secondary }) => { + ({ contextId, eventId, userName, primary, secondary, isDraggable }) => { if (nilOrUnSet(userName) && nilOrUnSet(primary) && nilOrUnSet(secondary)) { return null; } else if ( @@ -111,6 +120,7 @@ export const PrimarySecondaryUserInfo = React.memo @@ -121,6 +131,7 @@ export const PrimarySecondaryUserInfo = React.memo @@ -130,6 +141,7 @@ export const PrimarySecondaryUserInfo = React.memo diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx index a7252064d9774..f90407b882fdf 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx @@ -23,10 +23,21 @@ interface Props { secondary: string | null | undefined; workingDirectory: string | null | undefined; session: string | null | undefined; + isDraggable?: boolean; } export const SessionUserHostWorkingDir = React.memo( - ({ eventId, contextId, hostName, userName, primary, secondary, workingDirectory, session }) => ( + ({ + eventId, + contextId, + hostName, + userName, + primary, + secondary, + workingDirectory, + session, + isDraggable, + }) => ( <> {i18n.SESSION} @@ -38,6 +49,7 @@ export const SessionUserHostWorkingDir = React.memo( field="auditd.session" value={session} iconType="number" + isDraggable={isDraggable} /> @@ -47,6 +59,7 @@ export const SessionUserHostWorkingDir = React.memo( userName={userName} primary={primary} secondary={secondary} + isDraggable={isDraggable} /> {hostName != null && ( @@ -59,6 +72,7 @@ export const SessionUserHostWorkingDir = React.memo( eventId={eventId} workingDirectory={workingDirectory} hostName={hostName} + isDraggable={isDraggable} /> ) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx index e2418334dfc80..8859c601ad56d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx @@ -26,6 +26,7 @@ export const Bytes = React.memo<{ isDraggable ? ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx index 11846632f740e..f2e4555147c50 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx @@ -26,6 +26,7 @@ interface IndicatorDetailsProps { indicatorProvider: string | undefined; indicatorReference: string | undefined; indicatorType: string | undefined; + isDraggable?: boolean; } export const IndicatorDetails: React.FC = ({ @@ -35,6 +36,7 @@ export const IndicatorDetails: React.FC = ({ indicatorProvider, indicatorReference, indicatorType, + isDraggable, }) => ( = ({ data-test-subj="threat-match-indicator-details-indicator-type" eventId={eventId} field={INDICATOR_MATCHED_TYPE} + isDraggable={isDraggable} value={indicatorType} /> @@ -71,6 +74,7 @@ export const IndicatorDetails: React.FC = ({ data-test-subj="threat-match-indicator-details-indicator-dataset" eventId={eventId} field={INDICATOR_DATASET} + isDraggable={isDraggable} value={indicatorDataset} /> @@ -92,6 +96,7 @@ export const IndicatorDetails: React.FC = ({ data-test-subj="threat-match-indicator-details-indicator-provider" eventId={eventId} field={INDICATOR_PROVIDER} + isDraggable={isDraggable} value={indicatorProvider} /> @@ -108,6 +113,7 @@ export const IndicatorDetails: React.FC = ({ data-test-subj="threat-match-indicator-details-indicator-reference" eventId={eventId} fieldName={INDICATOR_REFERENCE} + isDraggable={isDraggable} value={indicatorReference} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx index 2195421301d31..31c5065cde59a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx @@ -16,6 +16,7 @@ import { HorizontalSpacer } from './helpers'; interface MatchDetailsProps { contextId: string; eventId: string; + isDraggable?: boolean; sourceField: string; sourceValue: string; } @@ -23,6 +24,7 @@ interface MatchDetailsProps { export const MatchDetails: React.FC = ({ contextId, eventId, + isDraggable, sourceField, sourceValue, }) => ( @@ -40,6 +42,7 @@ export const MatchDetails: React.FC = ({ data-test-subj="threat-match-details-source-field" eventId={eventId} field={INDICATOR_MATCHED_FIELD} + isDraggable={isDraggable} value={sourceField} /> @@ -57,6 +60,7 @@ export const MatchDetails: React.FC = ({ data-test-subj="threat-match-details-source-value" eventId={eventId} field={sourceField} + isDraggable={isDraggable} value={sourceValue} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx index ba5b0127df526..94ed19e218d74 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx @@ -28,6 +28,7 @@ export interface ThreatMatchRowProps { indicatorProvider: string | undefined; indicatorReference: string | undefined; indicatorType: string | undefined; + isDraggable?: boolean; sourceField: string; sourceValue: string; } @@ -36,10 +37,12 @@ export const ThreatMatchRow = ({ contextId, data, eventId, + isDraggable, }: { contextId: string; data: Fields; eventId: string; + isDraggable?: boolean; }) => { const props = { contextId, @@ -48,6 +51,7 @@ export const ThreatMatchRow = ({ indicatorReference: get(data, EVENT_REFERENCE)[0] as string | undefined, indicatorProvider: get(data, PROVIDER)[0] as string | undefined, indicatorType: get(data, MATCHED_TYPE)[0] as string | undefined, + isDraggable, sourceField: get(data, MATCHED_FIELD)[0] as string, sourceValue: get(data, MATCHED_ATOMIC)[0] as string, }; @@ -62,6 +66,7 @@ export const ThreatMatchRowView = ({ indicatorProvider, indicatorReference, indicatorType, + isDraggable, sourceField, sourceValue, }: ThreatMatchRowProps) => { @@ -76,6 +81,7 @@ export const ThreatMatchRowView = ({ @@ -88,6 +94,7 @@ export const ThreatMatchRowView = ({ indicatorProvider={indicatorProvider} indicatorReference={indicatorReference} indicatorType={indicatorType} + isDraggable={isDraggable} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx index 6687179e5b887..78972442f5018 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx @@ -56,6 +56,7 @@ describe('threatMatchRowRenderer', () => { const children = threatMatchRowRenderer.renderRow({ browserFields: {}, data: threatMatchData, + isDraggable: true, timelineId: 'test', }); const wrapper = shallow({children}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx index f6feb6dd1b126..d2c1f09d903c1 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx @@ -20,7 +20,7 @@ const SpacedContainer = styled.div` margin: ${({ theme }) => theme.eui.paddingSizes.s} 0; `; -export const ThreatMatchRows: RowRenderer['renderRow'] = ({ data, timelineId }) => { +export const ThreatMatchRows: RowRenderer['renderRow'] = ({ data, isDraggable, timelineId }) => { const indicators = get(data, 'threat.indicator') as Fields[]; const eventId = get(data, ID_FIELD_NAME); @@ -31,7 +31,12 @@ export const ThreatMatchRows: RowRenderer['renderRow'] = ({ data, timelineId }) const contextId = `threat-match-row-${timelineId}-${eventId}-${index}`; return ( - + {index < indicators.length - 1 && } ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx index 3a53db2196d8c..90d68eceb7fb3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx @@ -20,46 +20,50 @@ interface Props { browserFields: BrowserFields; contextId: string; data: Ecs; + isDraggable?: boolean; timelineId: string; } -export const DnsRequestEventDetails = React.memo(({ data, contextId, timelineId }) => { - const dnsQuestionName: string | null | undefined = get('dns.question.name[0]', data); - const dnsQuestionType: string | null | undefined = get('dns.question.type[0]', data); - const dnsResolvedIp: string | null | undefined = get('dns.resolved_ip[0]', data); - const dnsResponseCode: string | null | undefined = get('dns.response_code[0]', data); - const eventCode: string | null | undefined = get('event.code[0]', data); - const hostName: string | null | undefined = get('host.name[0]', data); - const id = data._id; - const processExecutable: string | null | undefined = get('process.executable[0]', data); - const processName: string | null | undefined = get('process.name[0]', data); - const processPid: number | null | undefined = get('process.pid[0]', data); - const userDomain: string | null | undefined = get('user.domain[0]', data); - const userName: string | null | undefined = get('user.name[0]', data); - const winlogEventId: string | null | undefined = get('winlog.event_id[0]', data); +export const DnsRequestEventDetails = React.memo( + ({ data, contextId, isDraggable, timelineId }) => { + const dnsQuestionName: string | null | undefined = get('dns.question.name[0]', data); + const dnsQuestionType: string | null | undefined = get('dns.question.type[0]', data); + const dnsResolvedIp: string | null | undefined = get('dns.resolved_ip[0]', data); + const dnsResponseCode: string | null | undefined = get('dns.response_code[0]', data); + const eventCode: string | null | undefined = get('event.code[0]', data); + const hostName: string | null | undefined = get('host.name[0]', data); + const id = data._id; + const processExecutable: string | null | undefined = get('process.executable[0]', data); + const processName: string | null | undefined = get('process.name[0]', data); + const processPid: number | null | undefined = get('process.pid[0]', data); + const userDomain: string | null | undefined = get('user.domain[0]', data); + const userName: string | null | undefined = get('user.name[0]', data); + const winlogEventId: string | null | undefined = get('winlog.event_id[0]', data); - return ( -
- - - -
- ); -}); + return ( +
+ + + +
+ ); + } +); DnsRequestEventDetails.displayName = 'DnsRequestEventDetails'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx index 549abcf6a6d35..ff85336bd47f8 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx @@ -24,6 +24,7 @@ interface Props { eventCode: string | null | undefined; hostName: string | null | undefined; id: string; + isDraggable?: boolean; processExecutable: string | null | undefined; processName: string | null | undefined; processPid: number | null | undefined; @@ -42,6 +43,7 @@ export const DnsRequestEventDetailsLine = React.memo( eventCode, hostName, id, + isDraggable, processExecutable, processName, processPid, @@ -56,6 +58,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} hostName={hostName} + isDraggable={isDraggable} userDomain={userDomain} userName={userName} workingDirectory={undefined} @@ -71,6 +74,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="dns.question.name" + isDraggable={isDraggable} value={dnsQuestionName} />
@@ -87,6 +91,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="dns.question.type" + isDraggable={isDraggable} value={dnsQuestionType} />
@@ -103,6 +108,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="dns.resolved_ip" + isDraggable={isDraggable} value={dnsResolvedIp} /> @@ -122,6 +128,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="dns.response_code" + isDraggable={isDraggable} value={dnsResponseCode} /> @@ -141,6 +148,7 @@ export const DnsRequestEventDetailsLine = React.memo( endgamePid={undefined} endgameProcessName={undefined} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={processExecutable} @@ -155,6 +163,7 @@ export const DnsRequestEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="event.code" + isDraggable={isDraggable} value={eventCode} /> @@ -165,6 +174,7 @@ export const DnsRequestEventDetailsLine = React.memo( eventId={id} iconType="logoWindows" field="winlog.event_id" + isDraggable={isDraggable} value={winlogEventId} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx index 8e2335a2f149b..db568726f1b20 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx @@ -60,6 +60,7 @@ export const emptyColumnRenderer: ColumnRenderer = { kqlQuery: '', and: [], }} + isDraggable={isDraggable} key={`empty-column-renderer-draggable-wrapper-${timelineId}-${columnName}-${eventId}-${field.id}`} render={(dataProvider, _, snapshot) => snapshot.isDragging ? ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx index 515db45e9fcd4..8f39cf933570f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx @@ -20,65 +20,75 @@ interface Props { browserFields: BrowserFields; contextId: string; data: Ecs; + isDraggable?: boolean; timelineId: string; } -export const EndgameSecurityEventDetails = React.memo(({ data, contextId, timelineId }) => { - const endgameLogonType: number | null | undefined = get('endgame.logon_type[0]', data); - const endgameSubjectDomainName: string | null | undefined = get( - 'endgame.subject_domain_name[0]', - data - ); - const endgameSubjectLogonId: string | null | undefined = get('endgame.subject_logon_id[0]', data); - const endgameSubjectUserName: string | null | undefined = get( - 'endgame.subject_user_name[0]', - data - ); - const endgameTargetLogonId: string | null | undefined = get('endgame.target_logon_id[0]', data); - const endgameTargetDomainName: string | null | undefined = get( - 'endgame.target_domain_name[0]', - data - ); - const endgameTargetUserName: string | null | undefined = get('endgame.target_user_name[0]', data); - const eventAction: string | null | undefined = get('event.action[0]', data); - const eventCode: string | null | undefined = get('event.code[0]', data); - const eventOutcome: string | null | undefined = get('event.outcome[0]', data); - const hostName: string | null | undefined = get('host.name[0]', data); - const id = data._id; - const processExecutable: string | null | undefined = get('process.executable[0]', data); - const processName: string | null | undefined = get('process.name[0]', data); - const processPid: number | null | undefined = get('process.pid[0]', data); - const userDomain: string | null | undefined = get('user.domain[0]', data); - const userName: string | null | undefined = get('user.name[0]', data); - const winlogEventId: string | null | undefined = get('winlog.event_id[0]', data); +export const EndgameSecurityEventDetails = React.memo( + ({ data, contextId, isDraggable, timelineId }) => { + const endgameLogonType: number | null | undefined = get('endgame.logon_type[0]', data); + const endgameSubjectDomainName: string | null | undefined = get( + 'endgame.subject_domain_name[0]', + data + ); + const endgameSubjectLogonId: string | null | undefined = get( + 'endgame.subject_logon_id[0]', + data + ); + const endgameSubjectUserName: string | null | undefined = get( + 'endgame.subject_user_name[0]', + data + ); + const endgameTargetLogonId: string | null | undefined = get('endgame.target_logon_id[0]', data); + const endgameTargetDomainName: string | null | undefined = get( + 'endgame.target_domain_name[0]', + data + ); + const endgameTargetUserName: string | null | undefined = get( + 'endgame.target_user_name[0]', + data + ); + const eventAction: string | null | undefined = get('event.action[0]', data); + const eventCode: string | null | undefined = get('event.code[0]', data); + const eventOutcome: string | null | undefined = get('event.outcome[0]', data); + const hostName: string | null | undefined = get('host.name[0]', data); + const id = data._id; + const processExecutable: string | null | undefined = get('process.executable[0]', data); + const processName: string | null | undefined = get('process.name[0]', data); + const processPid: number | null | undefined = get('process.pid[0]', data); + const userDomain: string | null | undefined = get('user.domain[0]', data); + const userName: string | null | undefined = get('user.name[0]', data); + const winlogEventId: string | null | undefined = get('winlog.event_id[0]', data); - return ( -
- - - -
- ); -}); + return ( +
+ + + +
+ ); + } +); EndgameSecurityEventDetails.displayName = 'EndgameSecurityEventDetails'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx index aba6f7346271d..7e5a6dd08765b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx @@ -38,6 +38,7 @@ interface Props { eventOutcome: string | null | undefined; hostName: string | null | undefined; id: string; + isDraggable?: boolean; processExecutable: string | null | undefined; processName: string | null | undefined; processPid: number | null | undefined; @@ -61,6 +62,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( eventOutcome, hostName, id, + isDraggable, processExecutable, processName, processPid, @@ -95,6 +97,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( eventId={id} hostName={hostName} hostNameSeparator={hostNameSeparator} + isDraggable={isDraggable} userDomain={domain} userDomainField={userDomainField} userName={user} @@ -116,6 +119,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="endgame.logon_type" + isDraggable={isDraggable} queryValue={String(endgameLogonType)} value={`${endgameLogonType} - ${getHumanReadableLogonType(endgameLogonType)}`} /> @@ -136,6 +140,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="endgame.target_logon_id" + isDraggable={isDraggable} value={endgameTargetLogonId} /> @@ -155,6 +160,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( endgamePid={undefined} endgameProcessName={undefined} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={processExecutable} @@ -176,6 +182,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="endgame.subject_user_name" + isDraggable={isDraggable} iconType="user" value={endgameSubjectUserName} /> @@ -197,6 +204,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="endgame.subject_domain_name" + isDraggable={isDraggable} value={endgameSubjectDomainName} /> @@ -216,6 +224,7 @@ export const EndgameSecurityEventDetailsLine = React.memo( contextId={contextId} eventId={id} field="endgame.subject_logon_id" + isDraggable={isDraggable} value={endgameSubjectLogonId} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx index 7ac9fe290893f..1f1862daa4e55 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx @@ -15,12 +15,13 @@ interface Props { contextId: string; endgameExitCode: string | null | undefined; eventId: string; + isDraggable?: boolean; processExitCode: number | null | undefined; text: string | null | undefined; } export const ExitCodeDraggable = React.memo( - ({ contextId, endgameExitCode, eventId, processExitCode, text }) => { + ({ contextId, endgameExitCode, eventId, isDraggable, processExitCode, text }) => { if (isNillEmptyOrNotFinite(processExitCode) && isNillEmptyOrNotFinite(endgameExitCode)) { return null; } @@ -39,6 +40,7 @@ export const ExitCodeDraggable = React.memo( contextId={contextId} eventId={eventId} field="process.exit_code" + isDraggable={isDraggable} value={`${processExitCode}`} /> @@ -50,6 +52,7 @@ export const ExitCodeDraggable = React.memo( contextId={contextId} eventId={eventId} field="endgame.exit_code" + isDraggable={isDraggable} value={endgameExitCode} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx index 703b38e627e55..7ff5a0f73ab30 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx @@ -20,6 +20,7 @@ interface Props { fileName: string | null | undefined; filePath: string | null | undefined; fileExtOriginalPath: string | null | undefined; + isDraggable?: boolean; } export const FileDraggable = React.memo( @@ -31,6 +32,7 @@ export const FileDraggable = React.memo( fileExtOriginalPath, fileName, filePath, + isDraggable, }) => { if ( isNillEmptyOrNotFinite(fileName) && @@ -52,6 +54,7 @@ export const FileDraggable = React.memo( contextId={contextId} eventId={eventId} field="file.name" + isDraggable={isDraggable} value={fileName} iconType="document" /> @@ -62,6 +65,7 @@ export const FileDraggable = React.memo( contextId={contextId} eventId={eventId} field="endgame.file_name" + isDraggable={isDraggable} value={endgameFileName} iconType="document" /> @@ -80,6 +84,7 @@ export const FileDraggable = React.memo( contextId={contextId} eventId={eventId} field="file.path" + isDraggable={isDraggable} value={filePath} iconType="document" /> @@ -90,6 +95,7 @@ export const FileDraggable = React.memo( contextId={contextId} eventId={eventId} field="endgame.file_path" + isDraggable={isDraggable} value={endgameFilePath} iconType="document" /> @@ -106,6 +112,7 @@ export const FileDraggable = React.memo( contextId={contextId} eventId={eventId} field="file.Ext.original.path" + isDraggable={isDraggable} value={fileExtOriginalPath} iconType="document" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx index 9e624ba17c921..13b024e0a5359 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx @@ -21,9 +21,10 @@ interface Props { contextId: string; eventId: string; fileHashSha256: string | null | undefined; + isDraggable?: boolean; } -export const FileHash = React.memo(({ contextId, eventId, fileHashSha256 }) => { +export const FileHash = React.memo(({ contextId, eventId, fileHashSha256, isDraggable }) => { if (isNillEmptyOrNotFinite(fileHashSha256)) { return null; } @@ -35,6 +36,7 @@ export const FileHash = React.memo(({ contextId, eventId, fileHashSha256 contextId={contextId} eventId={eventId} field="file.hash.sha256" + isDraggable={isDraggable} iconType="number" value={fileHashSha256} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx index aa6c7beb9139e..06ed901110962 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx @@ -86,6 +86,7 @@ const FormattedFieldValueComponent: React.FC<{ @@ -214,6 +215,7 @@ const FormattedFieldValueComponent: React.FC<{ = ({ @@ -95,6 +96,7 @@ export const RenderRuleName: React.FC = ({ @@ -150,6 +152,7 @@ export const renderEventModule = ({ @@ -218,6 +221,7 @@ export const renderUrl = ({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx index 104550f138f16..6b76aba92678d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx @@ -54,6 +54,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: nonSuricata, + isDraggable: true, timelineId: 'test', }); @@ -66,6 +67,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: nonSuricata, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -81,6 +83,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: suricata, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -99,6 +102,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: suricata, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -117,6 +121,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: zeek, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -135,6 +140,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: system, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -153,6 +159,7 @@ describe('get_column_renderer', () => { const row = rowRenderer?.renderRow({ browserFields: mockBrowserFields, data: auditd, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx index abd4731ec4b66..060b539950d83 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx @@ -93,6 +93,7 @@ const HostNameComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx index de307d1af7f93..fef9a5d5c0201 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx @@ -17,10 +17,11 @@ interface Props { eventId: string; hostName: string | null | undefined; workingDirectory: string | null | undefined; + isDraggable?: boolean; } export const HostWorkingDir = React.memo( - ({ contextId, eventId, hostName, workingDirectory }) => ( + ({ contextId, eventId, hostName, workingDirectory, isDraggable }) => ( <> ( eventId={eventId} field="host.name" value={hostName} + isDraggable={isDraggable} /> {workingDirectory != null && ( @@ -42,6 +44,7 @@ export const HostWorkingDir = React.memo( field="process.working_directory" value={workingDirectory} iconType="folderOpen" + isDraggable={isDraggable} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx index 18f56d8b03066..d6ea939c966ac 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx @@ -60,52 +60,58 @@ import { interface NetflowRendererProps { data: Ecs; timelineId: string; + isDraggable?: boolean; } -export const NetflowRenderer = React.memo(({ data, timelineId }) => ( - -)); +export const NetflowRenderer = React.memo( + ({ data, timelineId, isDraggable }) => ( + + ) +); NetflowRenderer.displayName = 'NetflowRenderer'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap index d7bdacbcc61ef..a9ecbe8428aee 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap @@ -67,6 +67,7 @@ exports[`netflowRowRenderer renders correctly against snapshot 1`] = ` "2018-11-12T19:03:25.836Z", ] } + isDraggable={true} networkBytes={ Array [ 100, diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx index fc97624dbfc96..01e05bbc365e9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx @@ -38,6 +38,7 @@ describe('netflowRowRenderer', () => { const children = netflowRowRenderer.renderRow({ browserFields, data: getMockNetflowData(), + isDraggable: true, timelineId: 'test', }); @@ -107,6 +108,7 @@ describe('netflowRowRenderer', () => { const children = netflowRowRenderer.renderRow({ browserFields: mockBrowserFields, data: getMockNetflowData(), + isDraggable: true, timelineId: 'test', }); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx index 35406dce6ff72..272912b855af0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx @@ -90,7 +90,7 @@ export const netflowRowRenderer: RowRenderer = { isInstance: (ecs) => eventCategoryMatches(get(EVENT_CATEGORY_FIELD, ecs)) || eventActionMatches(get(EVENT_ACTION_FIELD, ecs)), - renderRow: ({ data, timelineId }) => ( + renderRow: ({ data, isDraggable, timelineId }) => (
( contextId, endgameParentProcessName, eventId, + isDraggable, processParentName, processParentPid, processPpid, @@ -56,6 +58,7 @@ export const ParentProcessDraggable = React.memo( contextId={contextId} eventId={eventId} field="process.parent.name" + isDraggable={isDraggable} value={processParentName} /> @@ -67,6 +70,7 @@ export const ParentProcessDraggable = React.memo( contextId={contextId} eventId={eventId} field="endgame.parent_process_name" + isDraggable={isDraggable} value={endgameParentProcessName} /> @@ -78,6 +82,7 @@ export const ParentProcessDraggable = React.memo( contextId={contextId} eventId={eventId} field="process.parent.pid" + isDraggable={isDraggable} queryValue={String(processParentPid)} value={`(${String(processParentPid)})`} /> @@ -90,6 +95,7 @@ export const ParentProcessDraggable = React.memo( contextId={contextId} eventId={eventId} field="process.ppid" + isDraggable={isDraggable} queryValue={String(processPpid)} value={`(${String(processPpid)})`} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx index 666fb254aaa2c..f28c72253a4e7 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx @@ -24,6 +24,7 @@ describe('plain_row_renderer', () => { const children = plainRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockDatum, + isDraggable: true, timelineId: 'test', }); const wrapper = shallow({children}); @@ -38,6 +39,7 @@ describe('plain_row_renderer', () => { const children = plainRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockDatum, + isDraggable: true, timelineId: 'test', }); const wrapper = mount({children}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx index 705eff8873204..db7e3ae6f06c9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx @@ -21,6 +21,7 @@ interface Props { processExecutable: string | undefined | null; processPid: number | undefined | null; processName: string | undefined | null; + isDraggable?: boolean; } export const ProcessDraggable = React.memo( @@ -32,6 +33,7 @@ export const ProcessDraggable = React.memo( processExecutable, processName, processPid, + isDraggable, }) => { if ( isNillEmptyOrNotFinite(processName) && @@ -53,6 +55,7 @@ export const ProcessDraggable = React.memo( field="process.name" value={processName} iconType="console" + isDraggable={isDraggable} /> ) : !isNillEmptyOrNotFinite(processExecutable) ? ( @@ -63,6 +66,7 @@ export const ProcessDraggable = React.memo( field="process.executable" value={processExecutable} iconType="console" + isDraggable={isDraggable} /> ) : !isNillEmptyOrNotFinite(endgameProcessName) ? ( @@ -73,6 +77,7 @@ export const ProcessDraggable = React.memo( field="endgame.process_name" value={endgameProcessName} iconType="console" + isDraggable={isDraggable} /> ) : null} @@ -85,6 +90,7 @@ export const ProcessDraggable = React.memo( field="process.pid" queryValue={String(processPid)} value={`(${String(processPid)})`} + isDraggable={isDraggable} /> ) : !isNillEmptyOrNotFinite(endgamePid) ? ( @@ -95,6 +101,7 @@ export const ProcessDraggable = React.memo( field="endgame.pid" queryValue={String(endgamePid)} value={`(${String(endgamePid)})`} + isDraggable={isDraggable} /> ) : null} @@ -114,6 +121,7 @@ export const ProcessDraggableWithNonExistentProcess = React.memo( processExecutable, processName, processPid, + isDraggable, }) => { if ( endgamePid == null && @@ -133,6 +141,7 @@ export const ProcessDraggableWithNonExistentProcess = React.memo( processExecutable={processExecutable} processName={processName} processPid={processPid} + isDraggable={isDraggable} /> ); } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx index 32432afbf205c..dd4f588a14bb7 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx @@ -20,27 +20,31 @@ const HashFlexGroup = styled(EuiFlexGroup)` interface Props { contextId: string; eventId: string; + isDraggable?: boolean; processHashSha256: string | null | undefined; } -export const ProcessHash = React.memo(({ contextId, eventId, processHashSha256 }) => { - if (isNillEmptyOrNotFinite(processHashSha256)) { - return null; +export const ProcessHash = React.memo( + ({ contextId, eventId, isDraggable, processHashSha256 }) => { + if (isNillEmptyOrNotFinite(processHashSha256)) { + return null; + } + + return ( + + + + + + ); } - - return ( - - - - - - ); -}); +); ProcessHash.displayName = 'ProcessHash'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx index 0bfb03168019a..da31f75e2fa10 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx @@ -18,10 +18,11 @@ interface Props { browserFields: BrowserFields; contextId: string; data: Ecs; + isDraggable?: boolean; text: string; } -const RegistryEventDetailsComponent: React.FC = ({ contextId, data, text }) => { +const RegistryEventDetailsComponent: React.FC = ({ contextId, data, isDraggable, text }) => { const hostName: string | null | undefined = get('host.name[0]', data); const id = data._id; const processName: string | null | undefined = get('process.name[0]', data); @@ -41,6 +42,7 @@ const RegistryEventDetailsComponent: React.FC = ({ contextId, data, text contextId={contextId} hostName={hostName} id={id} + isDraggable={isDraggable} processName={processName} processPid={processPid} registryKey={registryKey} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx index b85ae25ed2509..8d9f52da88fdd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx @@ -19,6 +19,7 @@ interface Props { contextId: string; hostName: string | null | undefined; id: string; + isDraggable?: boolean; processName: string | null | undefined; processPid: number | null | undefined; registryKey: string | null | undefined; @@ -32,6 +33,7 @@ const RegistryEventDetailsLineComponent: React.FC = ({ contextId, hostName, id, + isDraggable, processName, processPid, registryKey, @@ -71,6 +73,7 @@ const RegistryEventDetailsLineComponent: React.FC = ({ contextId={contextId} eventId={id} hostName={hostName} + isDraggable={isDraggable} userDomain={userDomain} userName={userName} workingDirectory={undefined} @@ -86,6 +89,7 @@ const RegistryEventDetailsLineComponent: React.FC = ({ contextId={contextId} eventId={id} field="registry.key" + isDraggable={isDraggable} tooltipContent={registryKeyTooltipContent} value={registryKey} /> @@ -103,6 +107,7 @@ const RegistryEventDetailsLineComponent: React.FC = ({ contextId={contextId} eventId={id} field="registry.path" + isDraggable={isDraggable} tooltipContent={registryPathTooltipContent} value={registryPath} /> @@ -120,6 +125,7 @@ const RegistryEventDetailsLineComponent: React.FC = ({ endgamePid={undefined} endgameProcessName={undefined} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={undefined} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx index 126bfae996ef7..09248b832490a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx @@ -42,6 +42,7 @@ const RuleStatusComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap index 2934d35dc184d..eeb8786b2cfa3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap @@ -525,6 +525,7 @@ exports[`suricata_row_renderer renders correctly against snapshot 1`] = ` }, } } + isDraggable={true} timelineId="test" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx index 82eb11d455543..f096cd906f619 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx @@ -26,8 +26,9 @@ Details.displayName = 'Details'; export const SuricataDetails = React.memo<{ browserFields: BrowserFields; data: Ecs; + isDraggable?: boolean; timelineId: string; -}>(({ data, timelineId }) => { +}>(({ data, isDraggable, timelineId }) => { const signature: string | null | undefined = get('suricata.eve.alert.signature[0]', data); const signatureId: number | null | undefined = get('suricata.eve.alert.signature_id[0]', data); @@ -37,12 +38,13 @@ export const SuricataDetails = React.memo<{ - +
); } else { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx index 998233b2278c9..661fc562cc34c 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx @@ -45,6 +45,7 @@ describe('suricata_row_renderer', () => { const children = suricataRowRenderer.renderRow({ browserFields: mockBrowserFields, data: nonSuricata, + isDraggable: true, timelineId: 'test', }); @@ -64,6 +65,7 @@ describe('suricata_row_renderer', () => { const children = suricataRowRenderer.renderRow({ browserFields: mockBrowserFields, data: suricata, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -81,6 +83,7 @@ describe('suricata_row_renderer', () => { const children = suricataRowRenderer.renderRow({ browserFields: mockBrowserFields, data: suricata, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx index aa482926bf007..0faa6a4fbba74 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx @@ -21,9 +21,14 @@ export const suricataRowRenderer: RowRenderer = { const module: string | null | undefined = get('event.module[0]', ecs); return module != null && module.toLowerCase() === 'suricata'; }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( - + ), }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx index a4e16c66f4fef..2a5b57d77498f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx @@ -57,65 +57,69 @@ export const Tokens = React.memo<{ tokens: string[] }>(({ tokens }) => ( Tokens.displayName = 'Tokens'; -export const DraggableSignatureId = React.memo<{ id: string; signatureId: number }>( - ({ id, signatureId }) => { - const dataProviderProp = useMemo( - () => ({ - and: [], - enabled: true, - id: escapeDataProviderId(`suricata-draggable-signature-id-${id}-sig-${signatureId}`), - name: String(signatureId), - excluded: false, - kqlQuery: '', - queryMatch: { - field: SURICATA_SIGNATURE_ID_FIELD_NAME, - value: signatureId, - operator: IS_OPERATOR as QueryOperator, - }, - }), - [id, signatureId] - ); - - const render = useCallback( - (dataProvider, _, snapshot) => - snapshot.isDragging ? ( - - - - ) : ( - - - {signatureId} - - - ), - [signatureId] - ); - - return ( - - - - ); - } -); +export const DraggableSignatureId = React.memo<{ + id: string; + isDraggable?: boolean; + signatureId: number; +}>(({ id, isDraggable, signatureId }) => { + const dataProviderProp = useMemo( + () => ({ + and: [], + enabled: true, + id: escapeDataProviderId(`suricata-draggable-signature-id-${id}-sig-${signatureId}`), + name: String(signatureId), + excluded: false, + kqlQuery: '', + queryMatch: { + field: SURICATA_SIGNATURE_ID_FIELD_NAME, + value: signatureId, + operator: IS_OPERATOR as QueryOperator, + }, + }), + [id, signatureId] + ); + + const render = useCallback( + (dataProvider, _, snapshot) => + snapshot.isDragging ? ( + + + + ) : ( + + + {signatureId} + + + ), + [signatureId] + ); + + return ( + + + + ); +}); DraggableSignatureId.displayName = 'DraggableSignatureId'; export const SuricataSignature = React.memo<{ contextId: string; id: string; + isDraggable?: boolean; signature: string; signatureId: number; -}>(({ contextId, id, signature, signatureId }) => { +}>(({ contextId, id, isDraggable, signature, signatureId }) => { const tokens = getBeginningTokens(signature); return ( @@ -124,6 +128,7 @@ export const SuricataSignature = React.memo<{ data-test-subj="draggable-signature-link" field={SURICATA_SIGNATURE_FIELD_NAME} id={`suricata-signature-default-draggable-${contextId}-${id}-${SURICATA_SIGNATURE_FIELD_NAME}`} + isDraggable={isDraggable} value={signature} >
diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap index d2c405a46acf8..15443058f434e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap @@ -56,6 +56,7 @@ exports[`GenericRowRenderer #createGenericFileRowRenderer renders correctly agai }, } } + isDraggable={true} text="some text" timelineId="test" /> @@ -119,6 +120,7 @@ exports[`GenericRowRenderer #createGenericSystemRowRenderer renders correctly ag }, } } + isDraggable={true} text="some text" timelineId="test" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx index 4dcb90637a817..7de03a2ae2356 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx @@ -13,35 +13,40 @@ import { TokensFlexItem } from '../helpers'; interface Props { contextId: string; eventId: string; + isDraggable?: boolean; sshSignature: string | null | undefined; sshMethod: string | null | undefined; } -export const AuthSsh = React.memo(({ contextId, eventId, sshSignature, sshMethod }) => ( - <> - {sshSignature != null && ( - - - - )} - {sshMethod != null && ( - - - - )} - -)); +export const AuthSsh = React.memo( + ({ contextId, eventId, isDraggable, sshSignature, sshMethod }) => ( + <> + {sshSignature != null && ( + + + + )} + {sshMethod != null && ( + + + + )} + + ) +); AuthSsh.displayName = 'AuthSsh'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx index 19d5fd2a0dab1..2cf42ecc9c670 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx @@ -27,6 +27,7 @@ interface Props { contextId: string; hostName: string | null | undefined; id: string; + isDraggable?: boolean; message: string | null | undefined; outcome: string | null | undefined; packageName: string | null | undefined; @@ -48,6 +49,7 @@ export const SystemGenericLine = React.memo( contextId, hostName, id, + isDraggable, message, outcome, packageName, @@ -68,9 +70,10 @@ export const SystemGenericLine = React.memo( @@ -82,6 +85,7 @@ export const SystemGenericLine = React.memo( endgamePid={undefined} endgameProcessName={undefined} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={processExecutable} @@ -97,6 +101,7 @@ export const SystemGenericLine = React.memo( contextId={contextId} eventId={id} field="event.outcome" + isDraggable={isDraggable} queryValue={outcome} value={outcome} /> @@ -104,12 +109,14 @@ export const SystemGenericLine = React.memo( ( - ({ data, contextId, text, timelineId }) => { + ({ contextId, data, isDraggable, text, timelineId }) => { const id = data._id; const message: string | null = data.message != null ? data.message[0] : null; const hostName: string | null | undefined = get('host.name[0]', data); @@ -165,6 +173,7 @@ export const SystemGenericDetails = React.memo( contextId={contextId} hostName={hostName} id={id} + isDraggable={isDraggable} message={message} outcome={outcome} packageName={packageName} @@ -181,7 +190,7 @@ export const SystemGenericDetails = React.memo( workingDirectory={workingDirectory} /> - + ); } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx index 6df583656ff2d..ae31dbff7f063 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx @@ -45,6 +45,7 @@ interface Props { filePath: string | null | undefined; hostName: string | null | undefined; id: string; + isDraggable?: boolean; message: string | null | undefined; outcome: string | null | undefined; packageName: string | null | undefined; @@ -87,6 +88,7 @@ export const SystemGenericFileLine = React.memo( filePath, hostName, id, + isDraggable, message, outcome, packageName, @@ -116,6 +118,7 @@ export const SystemGenericFileLine = React.memo( ( fileExtOriginalPath={fileExtOriginalPath} fileName={fileName} filePath={filePath} + isDraggable={isDraggable} /> )} {showVia(eventAction) && ( @@ -147,6 +151,7 @@ export const SystemGenericFileLine = React.memo( endgamePid={endgamePid} endgameProcessName={endgameProcessName} eventId={id} + isDraggable={isDraggable} processPid={processPid} processName={processName} processExecutable={processExecutable} @@ -157,6 +162,7 @@ export const SystemGenericFileLine = React.memo( contextId={contextId} endgameExitCode={endgameExitCode} eventId={id} + isDraggable={isDraggable} processExitCode={processExitCode} text={i18n.WITH_EXIT_CODE} /> @@ -165,6 +171,7 @@ export const SystemGenericFileLine = React.memo( contextId={contextId} endgameParentProcessName={endgameParentProcessName} eventId={id} + isDraggable={isDraggable} processParentName={processParentName} processParentPid={processParentPid} processPpid={processPpid} @@ -181,6 +188,7 @@ export const SystemGenericFileLine = React.memo( contextId={contextId} eventId={id} field="event.outcome" + isDraggable={isDraggable} queryValue={outcome} value={outcome} /> @@ -188,22 +196,34 @@ export const SystemGenericFileLine = React.memo( {!skipRedundantFileDetails && ( - + )} {!skipRedundantProcessDetails && ( - + )} {message != null && showMessage && ( @@ -226,8 +246,9 @@ SystemGenericFileLine.displayName = 'SystemGenericFileLine'; interface GenericDetailsProps { browserFields: BrowserFields; - data: Ecs; contextId: string; + data: Ecs; + isDraggable?: boolean; showMessage?: boolean; skipRedundantFileDetails?: boolean; skipRedundantProcessDetails?: boolean; @@ -237,8 +258,9 @@ interface GenericDetailsProps { export const SystemGenericFileDetails = React.memo( ({ - data, contextId, + data, + isDraggable, showMessage = true, skipRedundantFileDetails = false, skipRedundantProcessDetails = false, @@ -323,9 +345,10 @@ export const SystemGenericFileDetails = React.memo( sshSignature={sshSignature} sshMethod={sshMethod} outcome={outcome} + isDraggable={isDraggable} /> - + ); } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx index 6f5b225f0690b..516d279765904 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx @@ -118,6 +118,7 @@ describe('GenericRowRenderer', () => { const children = connectedToRenderer.renderRow({ browserFields, data: system, + isDraggable: true, timelineId: 'test', }); @@ -147,6 +148,7 @@ describe('GenericRowRenderer', () => { const children = connectedToRenderer.renderRow({ browserFields: mockBrowserFields, data: system, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -180,6 +182,7 @@ describe('GenericRowRenderer', () => { const children = fileToRenderer.renderRow({ browserFields, data: systemFile, + isDraggable: true, timelineId: 'test', }); @@ -208,6 +211,7 @@ describe('GenericRowRenderer', () => { const children = fileToRenderer.renderRow({ browserFields: mockBrowserFields, data: systemFile, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( @@ -239,6 +243,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileCreationMalwarePreventionAlert, + isDraggable: true, timelineId: 'test', })} @@ -266,6 +271,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileCreationMalwareDetectionAlert, + isDraggable: true, timelineId: 'test', })} @@ -295,6 +301,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFilesEncryptedRansomwarePreventionAlert, + isDraggable: true, timelineId: 'test', })} @@ -324,6 +331,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFilesEncryptedRansomwareDetectionAlert, + isDraggable: true, timelineId: 'test', })} @@ -353,6 +361,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileModificationMalwarePreventionAlert, + isDraggable: true, timelineId: 'test', })} @@ -382,6 +391,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileModificationMalwareDetectionAlert, + isDraggable: true, timelineId: 'test', })} @@ -409,6 +419,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileRenameMalwarePreventionAlert, + isDraggable: true, timelineId: 'test', })} @@ -436,6 +447,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileRenameMalwareDetectionAlert, + isDraggable: true, timelineId: 'test', })} @@ -465,6 +477,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessExecutionMalwarePreventionAlert, + isDraggable: true, timelineId: 'test', })} @@ -494,6 +507,7 @@ describe('GenericRowRenderer', () => { endpointAlertsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessExecutionMalwareDetectionAlert, + isDraggable: true, timelineId: 'test', })} @@ -521,6 +535,7 @@ describe('GenericRowRenderer', () => { endpointProcessStartRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessExecEvent, + isDraggable: true, timelineId: 'test', })} @@ -546,6 +561,7 @@ describe('GenericRowRenderer', () => { endpointProcessStartRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessForkEvent, + isDraggable: true, timelineId: 'test', })} @@ -571,6 +587,7 @@ describe('GenericRowRenderer', () => { endpointProcessStartRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessStartEvent, + isDraggable: true, timelineId: 'test', })} @@ -599,6 +616,7 @@ describe('GenericRowRenderer', () => { endgameProcessCreationEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameCreationEvent, + isDraggable: true, timelineId: 'test', })} @@ -624,6 +642,7 @@ describe('GenericRowRenderer', () => { endpointProcessEndRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointProcessEndEvent, + isDraggable: true, timelineId: 'test', })} @@ -652,6 +671,7 @@ describe('GenericRowRenderer', () => { endgameProcessTerminationEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameTerminationEvent, + isDraggable: true, timelineId: 'test', })} @@ -680,6 +700,7 @@ describe('GenericRowRenderer', () => { endgameProcessCreationEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameCreationEvent, + isDraggable: true, timelineId: 'test', })} @@ -710,6 +731,7 @@ describe('GenericRowRenderer', () => { endgameProcessCreationEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameCreationEvent, + isDraggable: true, timelineId: 'test', })} @@ -740,6 +762,7 @@ describe('GenericRowRenderer', () => { endgameProcessCreationEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameCreationEvent, + isDraggable: true, timelineId: 'test', })} @@ -765,6 +788,7 @@ describe('GenericRowRenderer', () => { endpointFileCreationRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileCreationEvent, + isDraggable: true, timelineId: 'test', })} @@ -793,6 +817,7 @@ describe('GenericRowRenderer', () => { endgameFileCreateEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameFileCreateEvent, + isDraggable: true, timelineId: 'test', })} @@ -818,6 +843,7 @@ describe('GenericRowRenderer', () => { endpointFileDeletionRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileDeletionEvent, + isDraggable: true, timelineId: 'test', })} @@ -843,6 +869,7 @@ describe('GenericRowRenderer', () => { endpointFileModificationRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileModificationEvent, + isDraggable: true, timelineId: 'test', })} @@ -868,6 +895,7 @@ describe('GenericRowRenderer', () => { endpointFileOverwriteRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileOverwriteEvent, + isDraggable: true, timelineId: 'test', })} @@ -893,6 +921,7 @@ describe('GenericRowRenderer', () => { endpointFileRenameRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointFileRenameEvent, + isDraggable: true, timelineId: 'test', })} @@ -921,6 +950,7 @@ describe('GenericRowRenderer', () => { endgameFileDeleteEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameFileDeleteEvent, + isDraggable: true, timelineId: 'test', })} @@ -949,6 +979,7 @@ describe('GenericRowRenderer', () => { fileCreatedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: fimFileCreatedEvent, + isDraggable: true, timelineId: 'test', })} @@ -975,6 +1006,7 @@ describe('GenericRowRenderer', () => { fileDeletedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: fimFileDeletedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1003,6 +1035,7 @@ describe('GenericRowRenderer', () => { endgameFileCreateEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameFileCreateEvent, + isDraggable: true, timelineId: 'test', })} @@ -1033,6 +1066,7 @@ describe('GenericRowRenderer', () => { endgameFileCreateEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: endgameFileCreateEvent, + isDraggable: true, timelineId: 'test', })} @@ -1063,6 +1097,7 @@ describe('GenericRowRenderer', () => { fileCreatedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: fimFileCreatedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1090,6 +1125,7 @@ describe('GenericRowRenderer', () => { endpointConnectionAcceptedRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointNetworkConnectionAcceptedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1118,6 +1154,7 @@ describe('GenericRowRenderer', () => { endpointRegistryModificationRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointRegistryModificationEvent, + isDraggable: true, timelineId: 'test', })} @@ -1145,6 +1182,7 @@ describe('GenericRowRenderer', () => { endpointLibraryLoadRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointLibraryLoadEvent, + isDraggable: true, timelineId: 'test', })} @@ -1171,6 +1209,7 @@ describe('GenericRowRenderer', () => { endpointHttpRequestEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointNetworkHttpRequestEvent, + isDraggable: true, timelineId: 'test', })} @@ -1199,6 +1238,7 @@ describe('GenericRowRenderer', () => { endgameIpv4ConnectionAcceptEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: ipv4ConnectionAcceptEvent, + isDraggable: true, timelineId: 'test', })} @@ -1227,6 +1267,7 @@ describe('GenericRowRenderer', () => { endgameIpv6ConnectionAcceptEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: ipv6ConnectionAcceptEvent, + isDraggable: true, timelineId: 'test', })} @@ -1252,6 +1293,7 @@ describe('GenericRowRenderer', () => { endpointDisconnectReceivedRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointDisconnectReceivedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1280,6 +1322,7 @@ describe('GenericRowRenderer', () => { endgameIpv4DisconnectReceivedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: ipv4DisconnectReceivedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1308,6 +1351,7 @@ describe('GenericRowRenderer', () => { endgameIpv6DisconnectReceivedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: ipv6DisconnectReceivedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1336,6 +1380,7 @@ describe('GenericRowRenderer', () => { socketOpenedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: socketOpenedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1364,6 +1409,7 @@ describe('GenericRowRenderer', () => { socketClosedEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: socketClosedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1392,6 +1438,7 @@ describe('GenericRowRenderer', () => { endgameIpv4ConnectionAcceptEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: ipv4ConnectionAcceptEvent, + isDraggable: true, timelineId: 'test', })} @@ -1413,6 +1460,7 @@ describe('GenericRowRenderer', () => { securityLogOnRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointSecurityLogOnSuccessEvent, + isDraggable: true, timelineId: 'test', })} @@ -1434,6 +1482,7 @@ describe('GenericRowRenderer', () => { securityLogOnRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointSecurityLogOnFailureEvent, + isDraggable: true, timelineId: 'test', })} @@ -1458,6 +1507,7 @@ describe('GenericRowRenderer', () => { userLogonEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: userLogonEvent, + isDraggable: true, timelineId: 'test', })} @@ -1482,6 +1532,7 @@ describe('GenericRowRenderer', () => { adminLogonEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: adminLogonEvent, + isDraggable: true, timelineId: 'test', })} @@ -1506,6 +1557,7 @@ describe('GenericRowRenderer', () => { explicitUserLogonEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: explicitUserLogonEvent, + isDraggable: true, timelineId: 'test', })} @@ -1527,6 +1579,7 @@ describe('GenericRowRenderer', () => { securityLogOffRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointSecurityLogOffEvent, + isDraggable: true, timelineId: 'test', })} @@ -1551,6 +1604,7 @@ describe('GenericRowRenderer', () => { userLogoffEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: userLogoffEvent, + isDraggable: true, timelineId: 'test', })} @@ -1575,6 +1629,7 @@ describe('GenericRowRenderer', () => { userLogonEventRowRenderer.renderRow({ browserFields: mockBrowserFields, data: userLogonEvent, + isDraggable: true, timelineId: 'test', })} @@ -1594,6 +1649,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointNetworkLookupRequestedEvent, + isDraggable: true, timelineId: 'test', })} @@ -1613,6 +1669,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockEndpointNetworkLookupResultEvent, + isDraggable: true, timelineId: 'test', })} @@ -1636,6 +1693,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: requestEvent, + isDraggable: true, timelineId: 'test', })} @@ -1659,6 +1717,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: dnsEvent, + isDraggable: true, timelineId: 'test', })} @@ -1688,6 +1747,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: requestEvent, + isDraggable: true, timelineId: 'test', })} @@ -1715,6 +1775,7 @@ describe('GenericRowRenderer', () => { dnsRowRenderer.renderRow({ browserFields: mockBrowserFields, data: requestEvent, + isDraggable: true, timelineId: 'test', })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx index c6845d7d672d2..b1027bf12b7d2 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx @@ -40,12 +40,13 @@ export const createGenericSystemRowRenderer = ({ action.toLowerCase() === actionName ); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( @@ -71,12 +72,13 @@ export const createEndgameProcessRowRenderer = ({ action?.toLowerCase() === actionName ); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( @@ -239,12 +245,13 @@ export const createSocketRowRenderer = ({ const action: string | null | undefined = get('event.action[0]', ecs); return action != null && action.toLowerCase() === actionName; }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( @@ -268,12 +275,13 @@ export const createSecurityEventRowRenderer = ({ action?.toLowerCase() === actionName ); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( @@ -287,12 +295,13 @@ export const createDnsRowRenderer = (): RowRenderer => ({ const dnsQuestionName: string | null | undefined = get('dns.question.name[0]', ecs); return !isNillEmptyOrNotFinite(dnsQuestionType) && !isNillEmptyOrNotFinite(dnsQuestionName); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( @@ -315,12 +324,13 @@ export const createEndpointRegistryRowRenderer = ({ dataset?.toLowerCase() === 'endpoint.events.registry' && action?.toLowerCase() === actionName ); }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx index 7952154da1293..296c099da22a4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx @@ -13,13 +13,14 @@ import { TokensFlexItem } from '../helpers'; interface Props { contextId: string; eventId: string; + isDraggable?: boolean; packageName: string | null | undefined; packageSummary: string | null | undefined; packageVersion: string | null | undefined; } export const Package = React.memo( - ({ contextId, eventId, packageName, packageSummary, packageVersion }) => { + ({ contextId, eventId, isDraggable, packageName, packageSummary, packageVersion }) => { if (packageName != null || packageSummary != null || packageVersion != null) { return ( <> @@ -28,6 +29,7 @@ export const Package = React.memo( contextId={contextId} eventId={eventId} field="system.audit.package.name" + isDraggable={isDraggable} value={packageName} iconType="document" /> @@ -37,6 +39,7 @@ export const Package = React.memo( contextId={contextId} eventId={eventId} field="system.audit.package.version" + isDraggable={isDraggable} value={packageVersion} iconType="document" /> @@ -46,6 +49,7 @@ export const Package = React.memo( contextId={contextId} eventId={eventId} field="system.audit.package.summary" + isDraggable={isDraggable} value={packageSummary} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx index 7cff1166cd0de..b61e00f1752b8 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx @@ -242,6 +242,7 @@ describe('UserHostWorkingDir', () => { { ); - expect(wrapper.find('[data-test-subj="draggable-content-user.domain"]').exists()).toBe(true); + expect(wrapper.find('[data-test-subj="render-content-user.domain"]').exists()).toBe(true); }); test('it renders a draggable with an overridden field name when userDomain is provided, and userDomainField is also specified as a prop', () => { @@ -261,6 +262,7 @@ describe('UserHostWorkingDir', () => { { ); - expect( - wrapper.find('[data-test-subj="draggable-content-overridden.field.name"]').exists() - ).toBe(true); + expect(wrapper.find('[data-test-subj="render-content-overridden.field.name"]').exists()).toBe( + true + ); }); test('it renders a draggable `user.name` field (by default) when userName is provided, and userNameField is NOT specified as a prop', () => { @@ -283,6 +285,7 @@ describe('UserHostWorkingDir', () => { { ); - expect(wrapper.find('[data-test-subj="draggable-content-user.name"]').exists()).toBe(true); + expect(wrapper.find('[data-test-subj="render-content-user.name"]').exists()).toBe(true); }); test('it renders a draggable with an overridden field name when userName is provided, and userNameField is also specified as a prop', () => { @@ -302,6 +305,7 @@ describe('UserHostWorkingDir', () => { { ); - expect( - wrapper.find('[data-test-subj="draggable-content-overridden.field.name"]').exists() - ).toBe(true); + expect(wrapper.find('[data-test-subj="render-content-overridden.field.name"]').exists()).toBe( + true + ); }); }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx index 0ab3624970c28..9e789cbd7aba2 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx @@ -14,12 +14,13 @@ import { HostWorkingDir } from './host_working_dir'; interface Props { contextId: string; eventId: string; + isDraggable?: boolean; + hostName: string | null | undefined; + hostNameSeparator?: string; userDomain: string | null | undefined; userDomainField?: string; userName: string | null | undefined; userNameField?: string; - hostName: string | null | undefined; - hostNameSeparator?: string; workingDirectory: string | null | undefined; } @@ -29,6 +30,7 @@ export const UserHostWorkingDir = React.memo( eventId, hostName, hostNameSeparator = '@', + isDraggable, userDomain, userDomainField = 'user.domain', userName, @@ -42,6 +44,7 @@ export const UserHostWorkingDir = React.memo( contextId={contextId} eventId={eventId} field={userNameField} + isDraggable={isDraggable} value={userName} iconType="user" /> @@ -61,6 +64,7 @@ export const UserHostWorkingDir = React.memo( contextId={contextId} eventId={eventId} field={userDomainField} + isDraggable={isDraggable} value={userDomain} /> @@ -76,6 +80,7 @@ export const UserHostWorkingDir = React.memo( contextId={contextId} eventId={eventId} hostName={hostName} + isDraggable={isDraggable} workingDirectory={workingDirectory} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap index 6c59df606cd36..94cbe43e93d2d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap @@ -525,6 +525,7 @@ exports[`zeek_row_renderer renders correctly against snapshot 1`] = ` }, } } + isDraggable={true} timelineId="test" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx index 7b44862040f2d..a4dbde1a5626d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx @@ -24,15 +24,16 @@ Details.displayName = 'Details'; interface ZeekDetailsProps { browserFields: BrowserFields; data: Ecs; + isDraggable?: boolean; timelineId: string; } -export const ZeekDetails = React.memo(({ data, timelineId }) => +export const ZeekDetails = React.memo(({ data, isDraggable, timelineId }) => data.zeek != null ? (
- + - +
) : null ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx index 6b154d4d32707..12f2fd08163ba 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx @@ -44,6 +44,7 @@ describe('zeek_row_renderer', () => { const children = zeekRowRenderer.renderRow({ browserFields: mockBrowserFields, data: nonZeek, + isDraggable: true, timelineId: 'test', }); @@ -63,6 +64,7 @@ describe('zeek_row_renderer', () => { const children = zeekRowRenderer.renderRow({ browserFields: mockBrowserFields, data: zeek, + isDraggable: true, timelineId: 'test', }); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx index 2b6311b8cae83..0a265fa7522b1 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx @@ -21,9 +21,14 @@ export const zeekRowRenderer: RowRenderer = { const module: string | null | undefined = get('event.module[0]', ecs); return module != null && module.toLowerCase() === 'zeek'; }, - renderRow: ({ browserFields, data, timelineId }) => ( + renderRow: ({ browserFields, data, isDraggable, timelineId }) => ( - + ), }; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx index e4d5a6a86682d..412fd9d04fe7c 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx @@ -67,9 +67,10 @@ export const sha1StringRenderer: StringRenderer = (value: string) => export const DraggableZeekElement = React.memo<{ id: string; field: string; + isDraggable?: boolean; value: string | null | undefined; stringRenderer?: StringRenderer; -}>(({ id, field, value, stringRenderer = defaultStringRenderer }) => { +}>(({ id, field, isDraggable, value, stringRenderer = defaultStringRenderer }) => { const dataProviderProp = useMemo( () => ({ and: [], @@ -105,7 +106,7 @@ export const DraggableZeekElement = React.memo<{ return value != null ? ( - + ) : null; }); @@ -203,10 +204,11 @@ export const constructDroppedValue = (dropped: boolean | null | undefined): stri interface ZeekSignatureProps { data: Ecs; + isDraggable?: boolean; timelineId: string; } -export const ZeekSignature = React.memo(({ data, timelineId }) => { +export const ZeekSignature = React.memo(({ data, isDraggable, timelineId }) => { const id = `zeek-signature-draggable-zeek-element-${timelineId}-${data._id}`; const sessionId: string | null | undefined = get('zeek.session_id[0]', data); const dataSet: string | null | undefined = get('event.dataset[0]', data); @@ -234,42 +236,92 @@ export const ZeekSignature = React.memo(({ data, timelineId return ( <> - + - - - - - - - - + + + + + + + + diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts index a68617536c6af..ef47b474350c7 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { DataProvider } from '../../components/timeline/data_providers/data_provider'; import { EqlOptionsSelected } from '../../../../common/search_strategy/timeline'; import type { TimelineEventsType, @@ -26,8 +25,6 @@ export type TimelineModel = TGridModelForTimeline & { prevActiveTab: TimelineTabs; /** Timeline saved object owner */ createdBy?: string; - /** The sources of the event data shown in the timeline */ - dataProviders: DataProvider[]; /** A summary of the events and notes in this timeline */ description: string; eqlOptions: EqlOptionsSelected; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts b/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts index 6e98dcd59e3ec..642be5fc737f7 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/mocks.ts @@ -9,6 +9,7 @@ import { TelemetryEventsSender } from './sender'; import { TelemetryDiagTask } from './diagnostic_task'; import { TelemetryEndpointTask } from './endpoint_task'; +import { TelemetryTrustedAppsTask } from './trusted_apps_task'; import { PackagePolicy } from '../../../../fleet/common/types/models/package_policy'; /** @@ -24,6 +25,7 @@ export const createMockTelemetryEventsSender = ( fetchDiagnosticAlerts: jest.fn(), fetchEndpointMetrics: jest.fn(), fetchEndpointPolicyResponses: jest.fn(), + fetchTrustedApplications: jest.fn(), queueTelemetryEvents: jest.fn(), processEvents: jest.fn(), isTelemetryOptedIn: jest.fn().mockReturnValue(enableTelemtry ?? jest.fn()), @@ -65,3 +67,10 @@ export class MockTelemetryDiagnosticTask extends TelemetryDiagTask { export class MockTelemetryEndpointTask extends TelemetryEndpointTask { public runTask = jest.fn(); } + +/** + * Creates a mocked Telemetry trusted app Task + */ +export class MockTelemetryTrustedAppTask extends TelemetryTrustedAppsTask { + public runTask = jest.fn(); +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts index bdd301d9fea1d..e8ef18ec798ae 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts @@ -19,8 +19,11 @@ import { } from '../../../../task_manager/server'; import { TelemetryDiagTask } from './diagnostic_task'; import { TelemetryEndpointTask } from './endpoint_task'; +import { TelemetryTrustedAppsTask } from './trusted_apps_task'; import { EndpointAppContextService } from '../../endpoint/endpoint_app_context_services'; import { AgentService, AgentPolicyServiceInterface } from '../../../../fleet/server'; +import { ExceptionListClient } from '../../../../lists/server'; +import { getTrustedAppsList } from '../../endpoint/routes/trusted_apps/service'; type BaseSearchTypes = string | number | boolean | object; export type SearchTypes = BaseSearchTypes | BaseSearchTypes[] | undefined; @@ -57,10 +60,12 @@ export class TelemetryEventsSender { private isOptedIn?: boolean = true; // Assume true until the first check private diagTask?: TelemetryDiagTask; private epMetricsTask?: TelemetryEndpointTask; + private trustedAppsTask?: TelemetryTrustedAppsTask; private agentService?: AgentService; private agentPolicyService?: AgentPolicyServiceInterface; private esClient?: ElasticsearchClient; - private savedObjectClient?: SavedObjectsClientContract; + private savedObjectsClient?: SavedObjectsClientContract; + private exceptionListClient?: ExceptionListClient; constructor(logger: Logger) { this.logger = logger.get('telemetry_events'); @@ -72,6 +77,7 @@ export class TelemetryEventsSender { if (taskManager) { this.diagTask = new TelemetryDiagTask(this.logger, taskManager, this); this.epMetricsTask = new TelemetryEndpointTask(this.logger, taskManager, this); + this.trustedAppsTask = new TelemetryTrustedAppsTask(this.logger, taskManager, this); } } @@ -79,18 +85,21 @@ export class TelemetryEventsSender { core?: CoreStart, telemetryStart?: TelemetryPluginStart, taskManager?: TaskManagerStartContract, - endpointContextService?: EndpointAppContextService + endpointContextService?: EndpointAppContextService, + exceptionListClient?: ExceptionListClient ) { this.telemetryStart = telemetryStart; this.esClient = core?.elasticsearch.client.asInternalUser; this.agentService = endpointContextService?.getAgentService(); this.agentPolicyService = endpointContextService?.getAgentPolicyService(); - this.savedObjectClient = (core?.savedObjects.createInternalRepository() as unknown) as SavedObjectsClientContract; + this.savedObjectsClient = (core?.savedObjects.createInternalRepository() as unknown) as SavedObjectsClientContract; + this.exceptionListClient = exceptionListClient; if (taskManager && this.diagTask && this.epMetricsTask) { this.logger.debug(`Starting diagnostic and endpoint telemetry tasks`); this.diagTask.start(taskManager); this.epMetricsTask.start(taskManager); + this.trustedAppsTask?.start(taskManager); } this.logger.debug(`Starting local task`); @@ -139,7 +148,7 @@ export class TelemetryEventsSender { } public async fetchEndpointMetrics(executeFrom: string, executeTo: string) { - if (this.esClient === undefined) { + if (this.esClient === undefined || this.esClient === null) { throw Error('could not fetch policy responses. es client is not available'); } @@ -186,7 +195,7 @@ export class TelemetryEventsSender { } public async fetchFleetAgents() { - if (this.esClient === undefined) { + if (this.esClient === undefined || this.esClient === null) { throw Error('could not fetch policy responses. es client is not available'); } @@ -199,15 +208,15 @@ export class TelemetryEventsSender { } public async fetchPolicyConfigs(id: string) { - if (this.savedObjectClient === undefined) { + if (this.savedObjectsClient === undefined || this.savedObjectsClient === null) { throw Error('could not fetch endpoint policy configs. saved object client is not available'); } - return this.agentPolicyService?.get(this.savedObjectClient, id); + return this.agentPolicyService?.get(this.savedObjectsClient, id); } public async fetchEndpointPolicyResponses(executeFrom: string, executeTo: string) { - if (this.esClient === undefined) { + if (this.esClient === undefined || this.esClient === null) { throw Error('could not fetch policy responses. es client is not available'); } @@ -253,6 +262,14 @@ export class TelemetryEventsSender { return this.esClient.search(query); } + public async fetchTrustedApplications() { + if (this?.exceptionListClient === undefined || this?.exceptionListClient === null) { + throw Error('could not fetch trusted applications. exception list client not available.'); + } + + return getTrustedAppsList(this.exceptionListClient, { page: 1, per_page: 10_000 }); + } + public queueTelemetryEvents(events: TelemetryEvent[]) { const qlength = this.queue.length; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts new file mode 100644 index 0000000000000..5cd67a9c9c215 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.test.ts @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { loggingSystemMock } from 'src/core/server/mocks'; +import { TaskStatus } from '../../../../task_manager/server'; +import { taskManagerMock } from '../../../../task_manager/server/mocks'; + +import { TelemetryTrustedAppsTask, TelemetryTrustedAppsTaskConstants } from './trusted_apps_task'; +import { createMockTelemetryEventsSender, MockTelemetryTrustedAppTask } from './mocks'; + +describe('test trusted apps telemetry task functionality', () => { + let logger: ReturnType; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + }); + + test('the trusted apps task can register', () => { + const telemetryTrustedAppsTask = new TelemetryTrustedAppsTask( + logger, + taskManagerMock.createSetup(), + createMockTelemetryEventsSender(true) + ); + + expect(telemetryTrustedAppsTask).toBeInstanceOf(TelemetryTrustedAppsTask); + }); + + test('the trusted apps task should be registered', () => { + const mockTaskManager = taskManagerMock.createSetup(); + new TelemetryTrustedAppsTask(logger, mockTaskManager, createMockTelemetryEventsSender(true)); + + expect(mockTaskManager.registerTaskDefinitions).toHaveBeenCalled(); + }); + + test('the trusted apps task should be scheduled', async () => { + const mockTaskManagerSetup = taskManagerMock.createSetup(); + const telemetryTrustedAppsTask = new TelemetryTrustedAppsTask( + logger, + mockTaskManagerSetup, + createMockTelemetryEventsSender(true) + ); + + const mockTaskManagerStart = taskManagerMock.createStart(); + await telemetryTrustedAppsTask.start(mockTaskManagerStart); + expect(mockTaskManagerStart.ensureScheduled).toHaveBeenCalled(); + }); + + test('the trusted apps task should not query elastic if telemetry is not opted in', async () => { + const mockSender = createMockTelemetryEventsSender(false); + const mockTaskManager = taskManagerMock.createSetup(); + new MockTelemetryTrustedAppTask(logger, mockTaskManager, mockSender); + + const mockTaskInstance = { + id: TelemetryTrustedAppsTaskConstants.TYPE, + runAt: new Date(), + attempts: 0, + ownerId: '', + status: TaskStatus.Running, + startedAt: new Date(), + scheduledAt: new Date(), + retryAt: new Date(), + params: {}, + state: {}, + taskType: TelemetryTrustedAppsTaskConstants.TYPE, + }; + const createTaskRunner = + mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ + TelemetryTrustedAppsTaskConstants.TYPE + ].createTaskRunner; + const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); + await taskRunner.run(); + expect(mockSender.fetchTrustedApplications).not.toHaveBeenCalled(); + }); + + test('the trusted apps task should query elastic if telemetry opted in', async () => { + const mockSender = createMockTelemetryEventsSender(true); + const mockTaskManager = taskManagerMock.createSetup(); + const telemetryTrustedAppsTask = new MockTelemetryTrustedAppTask( + logger, + mockTaskManager, + mockSender + ); + + const mockTaskInstance = { + id: TelemetryTrustedAppsTaskConstants.TYPE, + runAt: new Date(), + attempts: 0, + ownerId: '', + status: TaskStatus.Running, + startedAt: new Date(), + scheduledAt: new Date(), + retryAt: new Date(), + params: {}, + state: {}, + taskType: TelemetryTrustedAppsTaskConstants.TYPE, + }; + const createTaskRunner = + mockTaskManager.registerTaskDefinitions.mock.calls[0][0][ + TelemetryTrustedAppsTaskConstants.TYPE + ].createTaskRunner; + const taskRunner = createTaskRunner({ taskInstance: mockTaskInstance }); + await taskRunner.run(); + expect(telemetryTrustedAppsTask.runTask).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts new file mode 100644 index 0000000000000..f91f3e8428d04 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/trusted_apps_task.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import { Logger } from 'src/core/server'; +import { + ConcreteTaskInstance, + TaskManagerSetupContract, + TaskManagerStartContract, +} from '../../../../task_manager/server'; + +import { getPreviousEpMetaTaskTimestamp, batchTelemetryRecords } from './helpers'; +import { TelemetryEventsSender } from './sender'; + +export const TelemetryTrustedAppsTaskConstants = { + TIMEOUT: '1m', + TYPE: 'security:trusted-apps-telemetry', + INTERVAL: '24h', + VERSION: '1.0.0', +}; + +/** Telemetry Trusted Apps Task + * + * The Trusted Apps task is a daily batch job that collects and transmits non-sensitive + * trusted apps hashes + file paths for supported operating systems. This helps test + * efficacy of our protections. + */ +export class TelemetryTrustedAppsTask { + private readonly logger: Logger; + private readonly sender: TelemetryEventsSender; + + constructor( + logger: Logger, + taskManager: TaskManagerSetupContract, + sender: TelemetryEventsSender + ) { + this.logger = logger; + this.sender = sender; + + taskManager.registerTaskDefinitions({ + [TelemetryTrustedAppsTaskConstants.TYPE]: { + title: 'Security Solution Telemetry Endpoint Metrics and Info task', + timeout: TelemetryTrustedAppsTaskConstants.TIMEOUT, + createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => { + const { state } = taskInstance; + + return { + run: async () => { + const taskExecutionTime = moment().utc().toISOString(); + const lastExecutionTimestamp = getPreviousEpMetaTaskTimestamp( + taskExecutionTime, + taskInstance.state?.lastExecutionTimestamp + ); + + const hits = await this.runTask( + taskInstance.id, + lastExecutionTimestamp, + taskExecutionTime + ); + + return { + state: { + lastExecutionTimestamp: taskExecutionTime, + runs: (state.runs || 0) + 1, + hits, + }, + }; + }, + cancel: async () => {}, + }; + }, + }, + }); + } + + public start = async (taskManager: TaskManagerStartContract) => { + try { + await taskManager.ensureScheduled({ + id: this.getTaskId(), + taskType: TelemetryTrustedAppsTaskConstants.TYPE, + scope: ['securitySolution'], + schedule: { + interval: TelemetryTrustedAppsTaskConstants.INTERVAL, + }, + state: { runs: 0 }, + params: { version: TelemetryTrustedAppsTaskConstants.VERSION }, + }); + } catch (e) { + this.logger.error(`Error scheduling task, received ${e.message}`); + } + }; + + private getTaskId = (): string => { + return `${TelemetryTrustedAppsTaskConstants.TYPE}:${TelemetryTrustedAppsTaskConstants.VERSION}`; + }; + + public runTask = async (taskId: string, executeFrom: string, executeTo: string) => { + if (taskId !== this.getTaskId()) { + this.logger.debug(`Outdated task running: ${taskId}`); + return 0; + } + + const isOptedIn = await this.sender.isTelemetryOptedIn(); + if (!isOptedIn) { + this.logger.debug(`Telemetry is not opted-in.`); + return 0; + } + + const response = await this.sender.fetchTrustedApplications(); + this.logger.debug(`Trusted Apps: ${response}`); + + batchTelemetryRecords(response.data, 1_000).forEach((telemetryBatch) => + this.sender.sendOnDemand('lists-trustedapps', telemetryBatch) + ); + + return response.data.length; + }; +} diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 2c0be2ac93321..a68280379fad3 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -391,6 +391,8 @@ export class Plugin implements IPlugin ({ logHealthMetrics: jest.fn(), })); -// FLAKY: https://github.com/elastic/kibana/issues/106388 -describe.skip('healthRoute', () => { +describe('healthRoute', () => { beforeEach(() => { jest.resetAllMocks(); }); @@ -161,7 +160,7 @@ describe.skip('healthRoute', () => { summarizeMonitoringStats(warnWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[2][0]).toMatchObject({ + expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ id, timestamp: expect.any(String), status: expect.any(String), @@ -234,7 +233,7 @@ describe.skip('healthRoute', () => { summarizeMonitoringStats(errorWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[2][0]).toMatchObject({ + expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ id, timestamp: expect.any(String), status: expect.any(String), diff --git a/x-pack/plugins/timelines/common/types/timeline/rows/index.ts b/x-pack/plugins/timelines/common/types/timeline/rows/index.ts index b598d13273798..089f886e1c221 100644 --- a/x-pack/plugins/timelines/common/types/timeline/rows/index.ts +++ b/x-pack/plugins/timelines/common/types/timeline/rows/index.ts @@ -15,10 +15,12 @@ export interface RowRenderer { renderRow: ({ browserFields, data, + isDraggable, timelineId, }: { browserFields: BrowserFields; data: Ecs; + isDraggable: boolean; timelineId: string; }) => React.ReactNode; } diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx index eb9c95f0998c6..dd5ef27c32a89 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx @@ -5,18 +5,20 @@ * 2.0. */ -import React, { useCallback } from 'react'; +import React, { useCallback, useEffect } from 'react'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { DraggableId } from 'react-beautiful-dnd'; +import { useDispatch } from 'react-redux'; + +import { isEmpty } from 'lodash'; +import { DataProvider, stopPropagationAndPreventDefault, TimelineId } from '../../../../common'; import { TooltipWithKeyboardShortcut } from '../../tooltip_with_keyboard_shortcut'; import { getAdditionalScreenReaderOnlyContext } from '../utils'; import { useAddToTimeline } from '../../../hooks/use_add_to_timeline'; import { HoverActionComponentProps } from './types'; - -const ADD_TO_TIMELINE = i18n.translate('xpack.timelines.hoverActions.addToTimeline', { - defaultMessage: 'Add to timeline investigation', -}); +import { tGridActions } from '../../..'; +import { useAppToasts } from '../../../hooks/use_app_toasts'; +import * as i18n from './translations'; export const ADD_TO_TIMELINE_KEYBOARD_SHORTCUT = 'a'; @@ -25,7 +27,7 @@ export interface UseGetHandleStartDragToTimelineArgs { draggableId: DraggableId | undefined; } -export const useGetHandleStartDragToTimeline = ({ +const useGetHandleStartDragToTimeline = ({ field, draggableId, }: UseGetHandleStartDragToTimelineArgs): (() => void) => { @@ -41,8 +43,59 @@ export const useGetHandleStartDragToTimeline = ({ return handleStartDragToTimeline; }; -export const AddToTimelineButton: React.FC = React.memo( - ({ field, onClick, ownFocus, showTooltip = false, value }) => { +export interface AddToTimelineButtonProps extends HoverActionComponentProps { + draggableId?: DraggableId; + dataProvider?: DataProvider[] | DataProvider; +} + +const AddToTimelineButton: React.FC = React.memo( + ({ + closePopOver, + dataProvider, + defaultFocusedButtonRef, + draggableId, + field, + keyboardEvent, + ownFocus, + showTooltip = false, + value, + }) => { + const dispatch = useDispatch(); + const { addSuccess } = useAppToasts(); + const startDragToTimeline = useGetHandleStartDragToTimeline({ draggableId, field }); + const handleStartDragToTimeline = useCallback(() => { + if (draggableId != null) { + startDragToTimeline(); + } else if (!isEmpty(dataProvider)) { + const addDataProvider = Array.isArray(dataProvider) ? dataProvider : [dataProvider]; + addDataProvider.forEach((provider) => { + if (provider) { + dispatch( + tGridActions.addProviderToTimeline({ + id: TimelineId.active, + dataProvider: provider, + }) + ); + addSuccess(i18n.ADDED_TO_TIMELINE_MESSAGE(provider.name)); + } + }); + } + + if (closePopOver != null) { + closePopOver(); + } + }, [addSuccess, closePopOver, dataProvider, dispatch, draggableId, startDragToTimeline]); + + useEffect(() => { + if (!ownFocus) { + return; + } + if (keyboardEvent?.key === ADD_TO_TIMELINE_KEYBOARD_SHORTCUT) { + stopPropagationAndPreventDefault(keyboardEvent); + handleStartDragToTimeline(); + } + }, [handleStartDragToTimeline, keyboardEvent, ownFocus]); + return showTooltip ? ( = React.me field, value, })} - content={ADD_TO_TIMELINE} + content={i18n.ADD_TO_TIMELINE} shortcut={ADD_TO_TIMELINE_KEYBOARD_SHORTCUT} showShortcut={ownFocus} /> } > ) : ( ); } ); AddToTimelineButton.displayName = 'AddToTimelineButton'; + +// eslint-disable-next-line import/no-default-export +export { AddToTimelineButton as default }; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx index 52d8fb439526f..d59383b8553ea 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx @@ -5,9 +5,11 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback, useEffect } from 'react'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; + +import { stopPropagationAndPreventDefault } from '../../../../common'; import { TooltipWithKeyboardShortcut } from '../../tooltip_with_keyboard_shortcut'; import { getAdditionalScreenReaderOnlyContext } from '../utils'; import { defaultColumnHeaderType } from '../../t_grid/body/column_headers/default_headers'; @@ -30,28 +32,48 @@ export const NESTED_COLUMN = (field: string) => export const COLUMN_TOGGLE_KEYBOARD_SHORTCUT = 'i'; -export interface ColumnToggleFnArgs { - toggleColumn: (column: ColumnHeaderOptions) => void; - field: string; -} - -export const columnToggleFn = ({ toggleColumn, field }: ColumnToggleFnArgs): void => { - return toggleColumn({ - columnHeaderType: defaultColumnHeaderType, - id: field, - initialWidth: DEFAULT_COLUMN_MIN_WIDTH, - }); -}; - export interface ColumnToggleProps extends HoverActionComponentProps { isDisabled: boolean; isObjectArray: boolean; + toggleColumn: (column: ColumnHeaderOptions) => void; } -export const ColumnToggleButton: React.FC = React.memo( - ({ field, isDisabled, isObjectArray, onClick, ownFocus, showTooltip = false, value }) => { +const ColumnToggleButton: React.FC = React.memo( + ({ + closePopOver, + defaultFocusedButtonRef, + field, + isDisabled, + isObjectArray, + keyboardEvent, + ownFocus, + showTooltip = false, + toggleColumn, + value, + }) => { const label = isObjectArray ? NESTED_COLUMN(field) : COLUMN_TOGGLE(field); + const handleToggleColumn = useCallback(() => { + toggleColumn({ + columnHeaderType: defaultColumnHeaderType, + id: field, + initialWidth: DEFAULT_COLUMN_MIN_WIDTH, + }); + if (closePopOver != null) { + closePopOver(); + } + }, [closePopOver, field, toggleColumn]); + + useEffect(() => { + if (!ownFocus) { + return; + } + if (keyboardEvent?.key === COLUMN_TOGGLE_KEYBOARD_SHORTCUT) { + stopPropagationAndPreventDefault(keyboardEvent); + handleToggleColumn(); + } + }, [handleToggleColumn, keyboardEvent, ownFocus]); + return showTooltip ? ( = React.memo( > = React.memo( id={field} iconSize="s" iconType="listAdd" - onClick={onClick} + onClick={handleToggleColumn} /> ) : ( = React.memo( id={field} iconSize="s" iconType="listAdd" - onClick={onClick} + onClick={handleToggleColumn} /> ); } ); ColumnToggleButton.displayName = 'ColumnToggleButton'; + +// eslint-disable-next-line import/no-default-export +export { ColumnToggleButton as default }; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx index 33cc71e12c46f..1b567dee50683 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx @@ -5,10 +5,12 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect, useRef } from 'react'; import { i18n } from '@kbn/i18n'; +import { stopPropagationAndPreventDefault } from '../../../../common'; import { WithCopyToClipboard } from '../../clipboard/with_copy_to_clipboard'; import { HoverActionComponentProps } from './types'; +import { COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME } from '../../clipboard'; export const FIELD = i18n.translate('xpack.timelines.hoverActions.fieldLabel', { defaultMessage: 'Field', @@ -16,22 +18,45 @@ export const FIELD = i18n.translate('xpack.timelines.hoverActions.fieldLabel', { export const COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT = 'c'; -export type CopyProps = Omit & { +export interface CopyProps extends HoverActionComponentProps { isHoverAction?: boolean; -}; +} -export const CopyButton: React.FC = React.memo( - ({ field, isHoverAction, ownFocus, value }) => { +const CopyButton: React.FC = React.memo( + ({ closePopOver, field, isHoverAction, keyboardEvent, ownFocus, value }) => { + const panelRef = useRef(null); + useEffect(() => { + if (!ownFocus) { + return; + } + if (keyboardEvent?.key === COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT) { + stopPropagationAndPreventDefault(keyboardEvent); + const copyToClipboardButton = panelRef.current?.querySelector( + `.${COPY_TO_CLIPBOARD_BUTTON_CLASS_NAME}` + ); + if (copyToClipboardButton != null) { + copyToClipboardButton.click(); + } + if (closePopOver != null) { + closePopOver(); + } + } + }, [closePopOver, keyboardEvent, ownFocus]); return ( - +
+ +
); } ); CopyButton.displayName = 'CopyButton'; + +// eslint-disable-next-line import/no-default-export +export { CopyButton as default }; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx index 421cd0089c1b7..58f7b4a831e51 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx @@ -5,9 +5,11 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonIcon, EuiButtonIconPropsForButton, EuiToolTip } from '@elastic/eui'; +import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; + +import { stopPropagationAndPreventDefault } from '../../../../common'; import { TooltipWithKeyboardShortcut } from '../../tooltip_with_keyboard_shortcut'; import { createFilter, getAdditionalScreenReaderOnlyContext } from '../utils'; import { HoverActionComponentProps, FilterValueFnArgs } from './types'; @@ -17,34 +19,50 @@ export const FILTER_FOR_VALUE = i18n.translate('xpack.timelines.hoverActions.fil }); export const FILTER_FOR_VALUE_KEYBOARD_SHORTCUT = 'f'; -export const filterForValueFn = ({ - field, - value, - filterManager, - onFilterAdded, -}: FilterValueFnArgs): void => { - const makeFilter = (currentVal: string | null | undefined) => - currentVal?.length === 0 ? createFilter(field, undefined) : createFilter(field, currentVal); - const filters = Array.isArray(value) - ? value.map((currentVal: string | null | undefined) => makeFilter(currentVal)) - : makeFilter(value); +export type FilterForValueProps = HoverActionComponentProps & FilterValueFnArgs; - const activeFilterManager = filterManager; +const FilterForValueButton: React.FC = React.memo( + ({ + closePopOver, + defaultFocusedButtonRef, + field, + filterManager, + keyboardEvent, + onFilterAdded, + ownFocus, + showTooltip = false, + value, + }) => { + const filterForValueFn = useCallback(() => { + const makeFilter = (currentVal: string | null | undefined) => + currentVal?.length === 0 ? createFilter(field, undefined) : createFilter(field, currentVal); + const filters = Array.isArray(value) + ? value.map((currentVal: string | null | undefined) => makeFilter(currentVal)) + : makeFilter(value); - if (activeFilterManager != null) { - activeFilterManager.addFilters(filters); - if (onFilterAdded != null) { - onFilterAdded(); - } - } -}; + const activeFilterManager = filterManager; -export interface FilterForValueProps extends HoverActionComponentProps { - defaultFocusedButtonRef: EuiButtonIconPropsForButton['buttonRef']; -} + if (activeFilterManager != null) { + activeFilterManager.addFilters(filters); + if (onFilterAdded != null) { + onFilterAdded(); + } + } + if (closePopOver != null) { + closePopOver(); + } + }, [closePopOver, field, filterManager, onFilterAdded, value]); + + useEffect(() => { + if (!ownFocus) { + return; + } + if (keyboardEvent?.key === FILTER_FOR_VALUE_KEYBOARD_SHORTCUT) { + stopPropagationAndPreventDefault(keyboardEvent); + filterForValueFn(); + } + }, [filterForValueFn, keyboardEvent, ownFocus]); -export const FilterForValueButton: React.FC = React.memo( - ({ defaultFocusedButtonRef, field, onClick, ownFocus, showTooltip = false, value }) => { return showTooltip ? ( = React.memo( data-test-subj="filter-for-value" iconSize="s" iconType="plusInCircle" - onClick={onClick} + onClick={filterForValueFn} /> ) : ( @@ -77,10 +95,13 @@ export const FilterForValueButton: React.FC = React.memo( data-test-subj="filter-for-value" iconSize="s" iconType="plusInCircle" - onClick={onClick} + onClick={filterForValueFn} /> ); } ); FilterForValueButton.displayName = 'FilterForValueButton'; + +// eslint-disable-next-line import/no-default-export +export { FilterForValueButton as default }; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx index bfa7848025bf4..03150d6371397 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx @@ -5,9 +5,11 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; + +import { stopPropagationAndPreventDefault } from '../../../../common'; import { TooltipWithKeyboardShortcut } from '../../tooltip_with_keyboard_shortcut'; import { createFilter, getAdditionalScreenReaderOnlyContext } from '../utils'; import { HoverActionComponentProps, FilterValueFnArgs } from './types'; @@ -18,32 +20,50 @@ export const FILTER_OUT_VALUE = i18n.translate('xpack.timelines.hoverActions.fil export const FILTER_OUT_VALUE_KEYBOARD_SHORTCUT = 'o'; -export const filterOutValueFn = ({ - field, - value, - filterManager, - onFilterAdded, -}: FilterValueFnArgs) => { - const makeFilter = (currentVal: string | null | undefined) => - currentVal?.length === 0 - ? createFilter(field, null, false) - : createFilter(field, currentVal, true); - const filters = Array.isArray(value) - ? value.map((currentVal: string | null | undefined) => makeFilter(currentVal)) - : makeFilter(value); +const FilterOutValueButton: React.FC = React.memo( + ({ + closePopOver, + defaultFocusedButtonRef, + field, + filterManager, + keyboardEvent, + onFilterAdded, + ownFocus, + showTooltip = false, + value, + }) => { + const filterOutValueFn = useCallback(() => { + const makeFilter = (currentVal: string | null | undefined) => + currentVal?.length === 0 + ? createFilter(field, null, false) + : createFilter(field, currentVal, true); + const filters = Array.isArray(value) + ? value.map((currentVal: string | null | undefined) => makeFilter(currentVal)) + : makeFilter(value); - const activeFilterManager = filterManager; + const activeFilterManager = filterManager; - if (activeFilterManager != null) { - activeFilterManager.addFilters(filters); - if (onFilterAdded != null) { - onFilterAdded(); - } - } -}; + if (activeFilterManager != null) { + activeFilterManager.addFilters(filters); + if (onFilterAdded != null) { + onFilterAdded(); + } + } + if (closePopOver != null) { + closePopOver(); + } + }, [closePopOver, field, filterManager, onFilterAdded, value]); + + useEffect(() => { + if (!ownFocus) { + return; + } + if (keyboardEvent?.key === FILTER_OUT_VALUE_KEYBOARD_SHORTCUT) { + stopPropagationAndPreventDefault(keyboardEvent); + filterOutValueFn(); + } + }, [filterOutValueFn, keyboardEvent, ownFocus]); -export const FilterOutValueButton: React.FC = React.memo( - ({ field, onClick, ownFocus, showTooltip = false, value }) => { return showTooltip ? ( = React.m > ) : ( ); } ); FilterOutValueButton.displayName = 'FilterOutValueButton'; + +// eslint-disable-next-line import/no-default-export +export { FilterOutValueButton as default }; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx b/x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx new file mode 100644 index 0000000000000..2f8587ddfab49 --- /dev/null +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ADD_TO_TIMELINE = i18n.translate('xpack.timelines.hoverActions.addToTimeline', { + defaultMessage: 'Add to timeline investigation', +}); + +export const ADDED_TO_TIMELINE_MESSAGE = (fieldOrValue: string) => + i18n.translate('xpack.timelines.hoverActions.addToTimeline.addedFieldMessage', { + values: { fieldOrValue }, + defaultMessage: `Added {fieldOrValue} to timeline`, + }); diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts b/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts index 4999638e0fe81..fdef1403e3dc2 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts +++ b/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +import { EuiButtonIconPropsForButton } from '@elastic/eui'; import { FilterManager } from '../../../../../../../src/plugins/data/public'; export interface FilterValueFnArgs { @@ -14,8 +16,10 @@ export interface FilterValueFnArgs { } export interface HoverActionComponentProps { + closePopOver?: () => void; + defaultFocusedButtonRef?: EuiButtonIconPropsForButton['buttonRef']; field: string; - onClick?: () => void; + keyboardEvent?: React.KeyboardEvent; ownFocus: boolean; showTooltip?: boolean; value?: string[] | string | null; diff --git a/x-pack/plugins/timelines/public/components/hover_actions/index.tsx b/x-pack/plugins/timelines/public/components/hover_actions/index.tsx index 2329134d85626..fc8fcfa488a76 100644 --- a/x-pack/plugins/timelines/public/components/hover_actions/index.tsx +++ b/x-pack/plugins/timelines/public/components/hover_actions/index.tsx @@ -4,86 +4,83 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React from 'react'; -import { - AddToTimelineButton, - ADD_TO_TIMELINE_KEYBOARD_SHORTCUT, - UseGetHandleStartDragToTimelineArgs, - useGetHandleStartDragToTimeline, -} from './actions/add_to_timeline'; -import { - ColumnToggleButton, - columnToggleFn, - ColumnToggleFnArgs, - ColumnToggleProps, - COLUMN_TOGGLE_KEYBOARD_SHORTCUT, -} from './actions/column_toggle'; -import { CopyButton, CopyProps, COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT } from './actions/copy'; -import { - FilterForValueButton, - filterForValueFn, - FilterForValueProps, - FILTER_FOR_VALUE_KEYBOARD_SHORTCUT, -} from './actions/filter_for_value'; -import { - FilterOutValueButton, - filterOutValueFn, - FILTER_OUT_VALUE_KEYBOARD_SHORTCUT, -} from './actions/filter_out_value'; -import { HoverActionComponentProps, FilterValueFnArgs } from './actions/types'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import { I18nProvider } from '@kbn/i18n/react'; +import React, { ReactElement } from 'react'; +import { Provider } from 'react-redux'; +import { Store } from 'redux'; +import type { AddToTimelineButtonProps } from './actions/add_to_timeline'; +import type { ColumnToggleProps } from './actions/column_toggle'; +import type { CopyProps } from './actions/copy'; +import type { HoverActionComponentProps, FilterValueFnArgs } from './actions/types'; export interface HoverActionsConfig { - addToTimeline: { - AddToTimelineButton: React.FC; - keyboardShortcut: string; - useGetHandleStartDragToTimeline: (args: UseGetHandleStartDragToTimelineArgs) => () => void; - }; - columnToggle: { - ColumnToggleButton: React.FC; - columnToggleFn: (args: ColumnToggleFnArgs) => void; - keyboardShortcut: string; - }; - copy: { - CopyButton: React.FC; - keyboardShortcut: string; - }; - filterForValue: { - FilterForValueButton: React.FC; - filterForValueFn: (args: FilterValueFnArgs) => void; - keyboardShortcut: string; - }; - filterOutValue: { - FilterOutValueButton: React.FC; - filterOutValueFn: (args: FilterValueFnArgs) => void; - keyboardShortcut: string; - }; + getAddToTimelineButton: ( + props: AddToTimelineButtonProps + ) => ReactElement; + getColumnToggleButton: (props: ColumnToggleProps) => ReactElement; + getCopyButton: (props: CopyProps) => ReactElement; + getFilterForValueButton: ( + props: HoverActionComponentProps & FilterValueFnArgs + ) => ReactElement; + getFilterOutValueButton: ( + props: HoverActionComponentProps & FilterValueFnArgs + ) => ReactElement; } -export const addToTimeline = { - AddToTimelineButton, - keyboardShortcut: ADD_TO_TIMELINE_KEYBOARD_SHORTCUT, - useGetHandleStartDragToTimeline, +const AddToTimelineButtonLazy = React.lazy(() => import('./actions/add_to_timeline')); +const getAddToTimelineButtonLazy = (store: Store, props: AddToTimelineButtonProps) => { + return ( + }> + + + + + + + ); }; -export const columnToggle = { - ColumnToggleButton, - columnToggleFn, - keyboardShortcut: COLUMN_TOGGLE_KEYBOARD_SHORTCUT, +const ColumnToggleButtonLazy = React.lazy(() => import('./actions/column_toggle')); +const getColumnToggleButtonLazy = (props: ColumnToggleProps) => { + return ( + }> + + + ); }; -export const copy = { - CopyButton, - keyboardShortcut: COPY_TO_CLIPBOARD_KEYBOARD_SHORTCUT, +const CopyButtonLazy = React.lazy(() => import('./actions/copy')); +const getCopyButtonLazy = (props: CopyProps) => { + return ( + }> + + + ); }; -export const filterForValue = { - FilterForValueButton, - filterForValueFn, - keyboardShortcut: FILTER_FOR_VALUE_KEYBOARD_SHORTCUT, +const FilterForValueButtonLazy = React.lazy(() => import('./actions/filter_for_value')); +const getFilterForValueButtonLazy = (props: HoverActionComponentProps & FilterValueFnArgs) => { + return ( + }> + + + ); }; -export const filterOutValue = { - FilterOutValueButton, - filterOutValueFn, - keyboardShortcut: FILTER_OUT_VALUE_KEYBOARD_SHORTCUT, +const FilterOutValueButtonLazy = React.lazy(() => import('./actions/filter_out_value')); +const getFilterOutValueButtonLazy = (props: HoverActionComponentProps & FilterValueFnArgs) => { + return ( + }> + + + ); }; + +export const getHoverActions = (store?: Store): HoverActionsConfig => ({ + getAddToTimelineButton: getAddToTimelineButtonLazy.bind(null, store!), + getColumnToggleButton: getColumnToggleButtonLazy, + getCopyButton: getCopyButtonLazy, + getFilterForValueButton: getFilterForValueButtonLazy, + getFilterOutValueButton: getFilterOutValueButtonLazy, +}); diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_row_renderer/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_row_renderer/index.tsx index 65762b93cd43f..0d606ad28eff2 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_row_renderer/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/events/stateful_row_renderer/index.tsx @@ -80,6 +80,7 @@ export const StatefulRowRenderer = ({ {rowRenderer.renderRow({ browserFields, data: event.ecs, + isDraggable: false, timelineId, })}
diff --git a/x-pack/plugins/timelines/public/components/t_grid/body/renderers/plain_row_renderer.test.tsx b/x-pack/plugins/timelines/public/components/t_grid/body/renderers/plain_row_renderer.test.tsx index 5cd709d2de3c7..1a4bfcb0e4ab5 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/body/renderers/plain_row_renderer.test.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/body/renderers/plain_row_renderer.test.tsx @@ -23,6 +23,7 @@ describe('plain_row_renderer', () => { const children = plainRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockDatum, + isDraggable: false, timelineId: 'test', }); const wrapper = shallow({children}); @@ -37,6 +38,7 @@ describe('plain_row_renderer', () => { const children = plainRowRenderer.renderRow({ browserFields: mockBrowserFields, data: mockDatum, + isDraggable: false, timelineId: 'test', }); const wrapper = mount({children}); diff --git a/x-pack/plugins/timelines/public/mock/global_state.ts b/x-pack/plugins/timelines/public/mock/global_state.ts index f7d3297738373..610d1b26f2351 100644 --- a/x-pack/plugins/timelines/public/mock/global_state.ts +++ b/x-pack/plugins/timelines/public/mock/global_state.ts @@ -17,6 +17,7 @@ export const mockGlobalState: TimelineState = { start: '2020-07-07T08:20:18.966Z', end: '2020-07-08T08:20:18.966Z', }, + dataProviders: [], deletedEventIds: [], excludedRowRendererIds: [], expandedDetail: {}, diff --git a/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx b/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx index 52ea1fa827136..5a8afb2036abf 100644 --- a/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx +++ b/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx @@ -8,28 +8,9 @@ import React from 'react'; /* eslint-disable react/display-name */ export const mockHoverActions = { - addToTimeline: { - AddToTimelineButton: () => <>{'Add To Timeline'}, - keyboardShortcut: 'timelineAddShortcut', - useGetHandleStartDragToTimeline: () => jest.fn, - }, - columnToggle: { - ColumnToggleButton: () => <>{'Column Toggle'}, - columnToggleFn: jest.fn, - keyboardShortcut: 'columnToggleShortcut', - }, - copy: { - CopyButton: () => <>{'Copy button'}, - keyboardShortcut: 'copyShortcut', - }, - filterForValue: { - FilterForValueButton: () => <>{'Filter button'}, - filterForValueFn: jest.fn, - keyboardShortcut: 'filterForShortcut', - }, - filterOutValue: { - FilterOutValueButton: () => <>{'Filter out button'}, - filterOutValueFn: jest.fn, - keyboardShortcut: 'filterOutShortcut', - }, + getAddToTimelineButton: () => <>{'Add To Timeline'}, + getColumnToggleButton: () => <>{'Column Toggle'}, + getCopyButton: () => <>{'Copy button'}, + getFilterForValueButton: () => <>{'Filter button'}, + getFilterOutValueButton: () => <>{'Filter out button'}, }; diff --git a/x-pack/plugins/timelines/public/mock/mock_timeline_data.ts b/x-pack/plugins/timelines/public/mock/mock_timeline_data.ts index 31b6ea9e665ac..56631c498c755 100644 --- a/x-pack/plugins/timelines/public/mock/mock_timeline_data.ts +++ b/x-pack/plugins/timelines/public/mock/mock_timeline_data.ts @@ -1549,6 +1549,7 @@ export const mockTgridModel: TGridModel = { initialWidth: 180, }, ], + dataProviders: [], defaultColumns: [], queryFields: [], dateRange: { diff --git a/x-pack/plugins/timelines/public/plugin.ts b/x-pack/plugins/timelines/public/plugin.ts index 29d84331cffaa..cb931ff53d445 100644 --- a/x-pack/plugins/timelines/public/plugin.ts +++ b/x-pack/plugins/timelines/public/plugin.ts @@ -26,7 +26,7 @@ import type { TimelinesUIStart, TGridProps, TimelinesStartPlugins } from './type import { tGridReducer } from './store/t_grid/reducer'; import { useDraggableKeyboardWrapper } from './components/drag_and_drop/draggable_keyboard_wrapper_hook'; import { useAddToTimeline, useAddToTimelineSensor } from './hooks/use_add_to_timeline'; -import * as hoverActions from './components/hover_actions'; +import { getHoverActions } from './components/hover_actions'; export class TimelinesPlugin implements Plugin { constructor(private readonly initializerContext: PluginInitializerContext) {} private _store: Store | undefined; @@ -41,7 +41,7 @@ export class TimelinesPlugin implements Plugin { } return { getHoverActions: () => { - return hoverActions; + return getHoverActions(this._store!); }, getTGrid: (props: TGridProps) => { return getTGridLazy(props, { diff --git a/x-pack/plugins/timelines/public/store/t_grid/actions.ts b/x-pack/plugins/timelines/public/store/t_grid/actions.ts index 6d9e9e5bc7379..64c4d8a78c7ac 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/actions.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/actions.ts @@ -9,6 +9,7 @@ import actionCreatorFactory from 'typescript-fsa'; import type { TimelineNonEcsData } from '../../../common/search_strategy'; import type { ColumnHeaderOptions, + DataProvider, SortColumnTimeline, TimelineExpandedDetailType, } from '../../../common/types/timeline'; @@ -100,3 +101,7 @@ export const initializeTGridSettings = actionCreator('I export const setTGridSelectAll = actionCreator<{ id: string; selectAll: boolean }>( 'SET_TGRID_SELECT_ALL' ); + +export const addProviderToTimeline = actionCreator<{ id: string; dataProvider: DataProvider }>( + 'ADD_PROVIDER_TO_TIMELINE' +); diff --git a/x-pack/plugins/timelines/public/store/t_grid/helpers.ts b/x-pack/plugins/timelines/public/store/t_grid/helpers.ts index 8bcf246dadb03..dd056f1e9237a 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/helpers.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/helpers.ts @@ -12,7 +12,11 @@ import type { ToggleDetailPanel } from './actions'; import { TGridPersistInput, TimelineById, TimelineId } from './types'; import type { TGridModel, TGridModelSettings } from './model'; -import type { ColumnHeaderOptions, SortColumnTimeline } from '../../../common/types/timeline'; +import type { + ColumnHeaderOptions, + DataProvider, + SortColumnTimeline, +} from '../../../common/types/timeline'; import { getTGridManageDefaults, tGridDefaults } from './defaults'; export const isNotNull = (value: T | null): value is T => value !== null; @@ -421,3 +425,35 @@ export const updateTimelineDetailsPanel = (action: ToggleDetailPanel) => { [expandedTabType]: {}, }; }; + +export const addProviderToTimelineHelper = ( + id: string, + provider: DataProvider, + timelineById: TimelineById +): TimelineById => { + const timeline = timelineById[id]; + const alreadyExistsAtIndex = timeline.dataProviders.findIndex((p) => p.id === provider.id); + + if (alreadyExistsAtIndex > -1 && !isEmpty(timeline.dataProviders[alreadyExistsAtIndex].and)) { + provider.id = `${provider.id}-${ + timeline.dataProviders.filter((p) => p.id === provider.id).length + }`; + } + + const dataProviders = + alreadyExistsAtIndex > -1 && isEmpty(timeline.dataProviders[alreadyExistsAtIndex].and) + ? [ + ...timeline.dataProviders.slice(0, alreadyExistsAtIndex), + provider, + ...timeline.dataProviders.slice(alreadyExistsAtIndex + 1), + ] + : [...timeline.dataProviders, provider]; + + return { + ...timelineById, + [id]: { + ...timeline, + dataProviders, + }, + }; +}; diff --git a/x-pack/plugins/timelines/public/store/t_grid/model.ts b/x-pack/plugins/timelines/public/store/t_grid/model.ts index 2d4f9f0fca35f..4ed4448f4cf35 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/model.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/model.ts @@ -10,6 +10,7 @@ import type { Filter, FilterManager } from '../../../../../../src/plugins/data/p import type { TimelineNonEcsData } from '../../../common/search_strategy'; import type { ColumnHeaderOptions, + DataProvider, TimelineExpandedDetail, SortColumnTimeline, SerializedFilterQuery, @@ -39,6 +40,8 @@ export interface TGridModel extends TGridModelSettings { Pick & ColumnHeaderOptions >; + /** The sources of the event data shown in the timeline */ + dataProviders: DataProvider[]; /** Specifies the granularity of the date range (e.g. 1 Day / Week / Month) applicable to the mini-map */ dateRange: { start: string; @@ -81,6 +84,7 @@ export interface TGridModel extends TGridModelSettings { export type TGridModelForTimeline = Pick< TGridModel, | 'columns' + | 'dataProviders' | 'dateRange' | 'deletedEventIds' | 'excludedRowRendererIds' diff --git a/x-pack/plugins/timelines/public/store/t_grid/reducer.ts b/x-pack/plugins/timelines/public/store/t_grid/reducer.ts index 57c45f857554d..751837691ea10 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/reducer.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/reducer.ts @@ -7,6 +7,7 @@ import { reducerWithInitialState } from 'typescript-fsa-reducers'; import { + addProviderToTimeline, applyDeltaToColumnWidth, clearEventsDeleted, clearEventsLoading, @@ -28,6 +29,7 @@ import { } from './actions'; import { + addProviderToTimelineHelper, applyDeltaToTimelineColumnWidth, createInitTGrid, setInitializeTgridSettings, @@ -209,4 +211,8 @@ export const tGridReducer = reducerWithInitialState(initialTGridState) }, }, })) + .case(addProviderToTimeline, (state, { id, dataProvider }) => ({ + ...state, + timelineById: addProviderToTimelineHelper(id, dataProvider, state.timelineById), + })) .build(); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index 07f4072e02b85..dff2ba17cb3f0 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -247,6 +247,7 @@ export const ExpandedRow: FC = ({ item }) => { onTabClick={() => {}} expand={false} style={{ width: '100%' }} + data-test-subj="transformExpandedRowTabbedContent" /> ); }; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_search_bar_filters.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_search_bar_filters.tsx index 7794d65934d6d..d9ee384f3ec69 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_search_bar_filters.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_search_bar_filters.tsx @@ -9,7 +9,12 @@ import React from 'react'; import { EuiBadge, SearchFilterConfig } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { TermClause, FieldClause, Value } from './common'; -import { TRANSFORM_MODE, TRANSFORM_STATE } from '../../../../../../common/constants'; +import { + TRANSFORM_FUNCTION, + TRANSFORM_MODE, + TRANSFORM_STATE, +} from '../../../../../../common/constants'; +import { isLatestTransform, isPivotTransform } from '../../../../../../common/types/transform'; import { TransformListRow } from '../../../../common'; import { getTaskStateBadge } from './use_columns'; @@ -93,7 +98,20 @@ export const filterTransforms = ( // the status value is an array of string(s) e.g. ['failed', 'stopped'] ts = transforms.filter((transform) => (c.value as Value[]).includes(transform.stats.state)); } else { - ts = transforms.filter((transform) => transform.mode === c.value); + ts = transforms.filter((transform) => { + if (c.field === 'mode') { + return transform.mode === c.value; + } + if (c.field === 'type') { + if (c.value === TRANSFORM_FUNCTION.PIVOT) { + return isPivotTransform(transform.config); + } + if (c.value === TRANSFORM_FUNCTION.LATEST) { + return isLatestTransform(transform.config); + } + } + return false; + }); } } diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx index f3974430b662c..af2325ede2021 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx @@ -20,13 +20,14 @@ describe('Transform: Job List Columns', () => { const columns: ReturnType['columns'] = result.current.columns; - expect(columns).toHaveLength(7); + expect(columns).toHaveLength(8); expect(columns[0].isExpander).toBeTruthy(); expect(columns[1].name).toBe('ID'); expect(columns[2].name).toBe('Description'); - expect(columns[3].name).toBe('Status'); - expect(columns[4].name).toBe('Mode'); - expect(columns[5].name).toBe('Progress'); - expect(columns[6].name).toBe('Actions'); + expect(columns[3].name).toBe('Type'); + expect(columns[4].name).toBe('Status'); + expect(columns[5].name).toBe('Mode'); + expect(columns[6].name).toBe('Progress'); + expect(columns[7].name).toBe('Actions'); }); }); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx index e186acf31d34f..dbdd3409c7e34 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx @@ -23,7 +23,11 @@ import { RIGHT_ALIGNMENT, } from '@elastic/eui'; -import { TransformId } from '../../../../../../common/types/transform'; +import { + isLatestTransform, + isPivotTransform, + TransformId, +} from '../../../../../../common/types/transform'; import { TransformStats } from '../../../../../../common/types/transform_stats'; import { TRANSFORM_STATE } from '../../../../../../common/constants'; @@ -95,6 +99,7 @@ export const useColumns = ( EuiTableComputedColumnType, EuiTableComputedColumnType, EuiTableComputedColumnType, + EuiTableComputedColumnType, EuiTableActionsColumnType ] = [ { @@ -145,6 +150,27 @@ export const useColumns = ( sortable: true, truncateText: true, }, + { + name: i18n.translate('xpack.transform.type', { defaultMessage: 'Type' }), + 'data-test-subj': 'transformListColumnType', + sortable: (item: TransformListRow) => item.mode, + truncateText: true, + render(item: TransformListRow) { + let transformType = i18n.translate('xpack.transform.type.unknown', { + defaultMessage: 'unknown', + }); + if (isPivotTransform(item.config) === true) { + transformType = i18n.translate('xpack.transform.type.pivot', { defaultMessage: 'pivot' }); + } + if (isLatestTransform(item.config) === true) { + transformType = i18n.translate('xpack.transform.type.latest', { + defaultMessage: 'latest', + }); + } + return {transformType}; + }, + width: '100px', + }, { name: i18n.translate('xpack.transform.status', { defaultMessage: 'Status' }), 'data-test-subj': 'transformListColumnStatus', diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 72b3e14bd55be..6c33c5f8e3ba6 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -1715,7 +1715,6 @@ "discover.howToChangeTheTimeTooltip": "時刻を変更するには、グローバル時刻フィルターを使用します。", "discover.howToSeeOtherMatchingDocumentsDescription": "これらは検索条件に一致した初めの {sampleSize} 件のドキュメントです。他の結果を表示するには検索条件を絞ってください。", "discover.howToSeeOtherMatchingDocumentsDescriptionGrid": "これらは検索条件に一致した初めの {sampleSize} 件のドキュメントです。他の結果を表示するには検索条件を絞ってください。", - "discover.inspectorRequestDataTitle": "データ", "discover.inspectorRequestDescriptionDocument": "このリクエストはElasticsearchにクエリをかけ、検索データを取得します。", "discover.json.codeEditorAriaLabel": "Elasticsearch ドキュメントの JSON ビューのみを読み込む", "discover.json.copyToClipboardLabel": "クリップボードにコピー", @@ -5913,11 +5912,6 @@ "xpack.apm.serviceNodeNameMissing": " (空) ", "xpack.apm.serviceOveriew.errorsTableOccurrences": "{occurrencesCount} occ.", "xpack.apm.serviceOverview.dependenciesTableColumnBackend": "バックエンド", - "xpack.apm.serviceOverview.dependenciesTableColumnErrorRate": "エラー率", - "xpack.apm.serviceOverview.dependenciesTableColumnImpact": "インパクト", - "xpack.apm.serviceOverview.dependenciesTableColumnLatency": "レイテンシ (平均) ", - "xpack.apm.serviceOverview.dependenciesTableColumnThroughput": "スループット", - "xpack.apm.serviceOverview.dependenciesTableLinkText": "サービスマップを表示", "xpack.apm.serviceOverview.dependenciesTableTitle": "依存関係", "xpack.apm.serviceOverview.errorsTableColumnLastSeen": "前回の認識", "xpack.apm.serviceOverview.errorsTableColumnName": "名前", @@ -13319,12 +13313,10 @@ "xpack.lens.breadcrumbsByValue": "ビジュアライゼーションを編集", "xpack.lens.breadcrumbsCreate": "作成", "xpack.lens.breadcrumbsTitle": "Visualizeライブラリ", - "xpack.lens.chartSwitch.dataLossDescription": "このグラフタイプを選択すると、現在適用されている構成選択の一部が失われます。", "xpack.lens.chartSwitch.dataLossLabel": "警告", "xpack.lens.chartSwitch.experimentalLabel": "実験的", "xpack.lens.chartSwitch.noResults": "{term}の結果が見つかりませんでした。", "xpack.lens.chartTitle.unsaved": "保存されていないビジュアライゼーション", - "xpack.lens.configPanel.chartType": "チャートタイプ", "xpack.lens.configPanel.color.tooltip.auto": "カスタム色を指定しない場合、Lensは自動的に色を選択します。", "xpack.lens.configPanel.color.tooltip.custom": "[自動]モードに戻すには、カスタム色をオフにしてください。", "xpack.lens.configPanel.color.tooltip.disabled": "レイヤーに「内訳条件」が含まれている場合は、個別の系列をカスタム色にできません。", @@ -13548,7 +13540,6 @@ "xpack.lens.indexPattern.cardinality": "ユニークカウント", "xpack.lens.indexPattern.cardinality.signature": "フィールド:文字列", "xpack.lens.indexPattern.cardinalityOf": "{name} のユニークカウント", - "xpack.lens.indexPattern.changeIndexPatternTitle": "インデックスパターンを変更", "xpack.lens.indexPattern.chooseField": "フィールドを選択", "xpack.lens.indexPattern.chooseFieldLabel": "この関数を使用するには、フィールドを選択してください。", "xpack.lens.indexPattern.chooseSubFunction": "サブ関数を選択", @@ -13782,7 +13773,6 @@ "xpack.lens.indexPatterns.actionsPopoverLabel": "インデックスパターン設定", "xpack.lens.indexPatterns.addFieldButton": "フィールドをインデックスパターンに追加", "xpack.lens.indexPatterns.clearFiltersLabel": "名前とタイプフィルターを消去", - "xpack.lens.indexPatterns.fieldFiltersLabel": "フィールドフィルター", "xpack.lens.indexPatterns.filterByNameLabel": "検索フィールド名", "xpack.lens.indexPatterns.manageFieldButton": "インデックスパターンを管理", "xpack.lens.indexPatterns.noAvailableDataLabel": "データを含むフィールドはありません。", @@ -13812,7 +13802,6 @@ "xpack.lens.pie.groupLabel": "比率", "xpack.lens.pie.groupsizeLabel": "サイズ単位", "xpack.lens.pie.pielabel": "円", - "xpack.lens.pie.pieWithNegativeWarningLabel": "{chartType}グラフは負の値では表示できません。別のグラフタイプを試してください。", "xpack.lens.pie.sliceGroupLabel": "スライス", "xpack.lens.pie.suggestionLabel": "{chartName}", "xpack.lens.pie.treemapGroupLabel": "グループ分けの条件", @@ -13910,7 +13899,6 @@ "xpack.lens.visualizeGeoFieldMessage": "Lensは{fieldType}フィールドを可視化できません", "xpack.lens.xyChart.addLayer": "レイヤーを追加", "xpack.lens.xyChart.addLayerButton": "レイヤーを追加", - "xpack.lens.xyChart.addLayerTooltip": "複数のレイヤーを使用すると、グラフタイプを組み合わせたり、別のインデックスパターンを可視化したりすることができます。", "xpack.lens.xyChart.axisExtent.custom": "カスタム", "xpack.lens.xyChart.axisExtent.dataBounds": "データ境界", "xpack.lens.xyChart.axisExtent.disabledDataBoundsMessage": "折れ線グラフのみをデータ境界に合わせることができます", @@ -19120,9 +19108,6 @@ "xpack.reporting.diagnostic.configSizeMismatch": "xpack.reporting.{KIBANA_MAX_SIZE_BYTES_PATH} ({kibanaMaxContentBytes}) はElasticSearchの{ES_MAX_SIZE_BYTES_PATH} ({elasticSearchMaxContentBytes}) を超えています。ElasticSearchで一致する{ES_MAX_SIZE_BYTES_PATH}を設定してください。あるいは、Kibanaでxpack.reporting.{KIBANA_MAX_SIZE_BYTES_PATH}を低くしてください。", "xpack.reporting.diagnostic.noUsableSandbox": "Chromiumサンドボックスを使用できません。これは「xpack.reporting.capture.browser.chromium.disableSandbox」で無効にすることができます。この作業はご自身の責任で行ってください。{url}を参照してください", "xpack.reporting.diagnostic.screenshotFailureMessage": "Kibanaインストールのスクリーンショットを作成できませんでした。", - "xpack.reporting.errorButton.showReportErrorAriaLabel": "レポートエラーを表示", - "xpack.reporting.errorButton.unableToFetchReportContentTitle": "レポートのコンテンツを取得できません", - "xpack.reporting.errorButton.unableToGenerateReportTitle": "レポートを生成できません", "xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "レポートジョブデータの解読に失敗しました。{encryptionKey}が設定されていることを確認してこのレポートを再生成してください。{err}", "xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "ジョブヘッダーがありません", "xpack.reporting.exportTypes.csv.executeJob.dateFormateSetting": "Kibana の高度な設定「{dateFormatTimezone}」が「ブラウザー」に設定されています。あいまいさを避けるために日付は UTC 形式に変換されます。", @@ -19133,7 +19118,6 @@ "xpack.reporting.exportTypes.printablePdf.logoDescription": "Elastic 提供", "xpack.reporting.exportTypes.printablePdf.pagingDescription": "{pageCount} ページ中 {currentPage} ページ目", "xpack.reporting.jobsQuery.deleteError": "レポートを削除できません:{error}", - "xpack.reporting.jobStatuses.cancelledText": "キャンセル済み", "xpack.reporting.jobStatuses.completedText": "完了", "xpack.reporting.jobStatuses.failedText": "失敗", "xpack.reporting.jobStatuses.pendingText": "保留中", @@ -19159,7 +19143,6 @@ "xpack.reporting.listing.reports.subtitle": "Kibanaアプリケーションで生成されたレポートを取得します。", "xpack.reporting.listing.reportstitle": "レポート", "xpack.reporting.listing.table.captionDescription": "Kibanaアプリケーションでレポートが生成されました", - "xpack.reporting.listing.table.csvContainsFormulas": "CSVには、スプレッドシートアプリケーションで式と解釈される可能性のある文字が含まれています。", "xpack.reporting.listing.table.deleteCancelButton": "キャンセル", "xpack.reporting.listing.table.deleteConfim": "{reportTitle} レポートを削除しました", "xpack.reporting.listing.table.deleteConfirmButton": "削除", @@ -19171,17 +19154,12 @@ "xpack.reporting.listing.table.downloadReport": "レポートをダウンロード", "xpack.reporting.listing.table.downloadReportAriaLabel": "レポートをダウンロード", "xpack.reporting.listing.table.loadingReportsDescription": "レポートを読み込み中です", - "xpack.reporting.listing.table.maxSizeReachedTooltip": "最大サイズに達成、部分データが含まれています。", "xpack.reporting.listing.table.noCreatedReportsDescription": "レポートが作成されていません", "xpack.reporting.listing.table.requestFailedErrorMessage": "リクエストに失敗しました", "xpack.reporting.listing.tableColumns.actionsTitle": "アクション", "xpack.reporting.listing.tableColumns.createdAtTitle": "作成日時:", "xpack.reporting.listing.tableColumns.reportTitle": "レポート", "xpack.reporting.listing.tableColumns.statusTitle": "ステータス", - "xpack.reporting.listing.tableValue.statusDetail.maxSizeReachedText": " - 最大サイズに達成", - "xpack.reporting.listing.tableValue.statusDetail.pendingStatusReachedText": "保留中 - ジョブの処理持ち", - "xpack.reporting.listing.tableValue.statusDetail.statusTimestampText": "{statusTimestamp} 時点で {statusLabel}", - "xpack.reporting.listing.tableValue.statusDetail.warningsText": "エラー発生:詳細はジョブ情報をご覧ください。", "xpack.reporting.management.reportingTitle": "レポート", "xpack.reporting.panelContent.advancedOptions": "高度なオプション", "xpack.reporting.panelContent.copyUrlButtonLabel": "POST URL をコピー", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index aad31db65b19a..af269112574f9 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -1721,11 +1721,9 @@ "discover.helpMenu.appName": "Discover", "discover.hideChart": "隐藏图表", "discover.histogramOfFoundDocumentsAriaLabel": "已找到文档的直方图", - "discover.hitsPluralTitle": "{hits, plural, other {命中}}", "discover.howToChangeTheTimeTooltip": "要更改时间,请使用全局时间筛选。", "discover.howToSeeOtherMatchingDocumentsDescription": "下面是与您的搜索匹配的前 {sampleSize} 个文档,请优化您的搜索以查看其他文档。", "discover.howToSeeOtherMatchingDocumentsDescriptionGrid": "下面是与您的搜索匹配的前 {sampleSize} 个文档,请优化您的搜索以查看其他文档。", - "discover.inspectorRequestDataTitle": "数据", "discover.inspectorRequestDescriptionDocument": "此请求将查询 Elasticsearch 以获取搜索的数据。", "discover.json.codeEditorAriaLabel": "Elasticsearch 文档的只读 JSON 视图", "discover.json.copyToClipboardLabel": "复制到剪贴板", @@ -5949,11 +5947,6 @@ "xpack.apm.serviceNodeNameMissing": "(空)", "xpack.apm.serviceOveriew.errorsTableOccurrences": "{occurrencesCount} 次", "xpack.apm.serviceOverview.dependenciesTableColumnBackend": "后端", - "xpack.apm.serviceOverview.dependenciesTableColumnErrorRate": "错误率", - "xpack.apm.serviceOverview.dependenciesTableColumnImpact": "影响", - "xpack.apm.serviceOverview.dependenciesTableColumnLatency": "延迟(平均值)", - "xpack.apm.serviceOverview.dependenciesTableColumnThroughput": "吞吐量", - "xpack.apm.serviceOverview.dependenciesTableLinkText": "查看服务地图", "xpack.apm.serviceOverview.dependenciesTableTitle": "依赖项", "xpack.apm.serviceOverview.errorsTableColumnLastSeen": "最后看到时间", "xpack.apm.serviceOverview.errorsTableColumnName": "名称", @@ -13666,13 +13659,11 @@ "xpack.lens.breadcrumbsByValue": "编辑可视化", "xpack.lens.breadcrumbsCreate": "创建", "xpack.lens.breadcrumbsTitle": "Visualize 库", - "xpack.lens.chartSwitch.dataLossDescription": "选择此图表类型将使当前应用的配置选择部分丢失。", "xpack.lens.chartSwitch.dataLossLabel": "警告", "xpack.lens.chartSwitch.experimentalLabel": "实验性", "xpack.lens.chartSwitch.noResults": "找不到 {term} 的结果。", "xpack.lens.chartTitle.unsaved": "未保存的可视化", "xpack.lens.chartWarnings.number": "{warningsCount} 个{warningsCount, plural, other {警告}}", - "xpack.lens.configPanel.chartType": "图表类型", "xpack.lens.configPanel.color.tooltip.auto": "Lens 自动为您选取颜色,除非您指定定制颜色。", "xpack.lens.configPanel.color.tooltip.custom": "清除定制颜色以返回到“自动”模式。", "xpack.lens.configPanel.color.tooltip.disabled": "当图层包括“细分依据”,各个系列无法定制颜色。", @@ -13903,7 +13894,6 @@ "xpack.lens.indexPattern.cardinality": "唯一计数", "xpack.lens.indexPattern.cardinality.signature": "field: string", "xpack.lens.indexPattern.cardinalityOf": "{name} 的唯一计数", - "xpack.lens.indexPattern.changeIndexPatternTitle": "更改索引模式", "xpack.lens.indexPattern.chooseField": "选择字段", "xpack.lens.indexPattern.chooseFieldLabel": "要使用此函数,请选择字段。", "xpack.lens.indexPattern.chooseSubFunction": "选择子函数", @@ -14140,7 +14130,6 @@ "xpack.lens.indexPatterns.actionsPopoverLabel": "索引模式设置", "xpack.lens.indexPatterns.addFieldButton": "将字段添加到索引模式", "xpack.lens.indexPatterns.clearFiltersLabel": "清除名称和类型筛选", - "xpack.lens.indexPatterns.fieldFiltersLabel": "字段筛选", "xpack.lens.indexPatterns.fieldSearchLiveRegion": "{availableFields} 个可用{availableFields, plural, other {字段}}。{emptyFields} 个空{emptyFields, plural, other {字段}}。{metaFields} 个元{metaFields, plural,other {字段}}。", "xpack.lens.indexPatterns.filterByNameLabel": "搜索字段名称", "xpack.lens.indexPatterns.manageFieldButton": "管理索引模式字段", @@ -14171,7 +14160,6 @@ "xpack.lens.pie.groupLabel": "比例", "xpack.lens.pie.groupsizeLabel": "大小调整依据", "xpack.lens.pie.pielabel": "饼图", - "xpack.lens.pie.pieWithNegativeWarningLabel": "{chartType} 图表无法使用负值进行呈现。请尝试不同的图表类型。", "xpack.lens.pie.sliceGroupLabel": "切片依据", "xpack.lens.pie.suggestionLabel": "为 {chartName}", "xpack.lens.pie.treemapGroupLabel": "分组依据", @@ -14269,7 +14257,6 @@ "xpack.lens.visualizeGeoFieldMessage": "Lens 无法可视化 {fieldType} 字段", "xpack.lens.xyChart.addLayer": "添加图层", "xpack.lens.xyChart.addLayerButton": "添加图层", - "xpack.lens.xyChart.addLayerTooltip": "使用多个图层以组合图表类型或可视化不同的索引模式。", "xpack.lens.xyChart.axisExtent.custom": "定制", "xpack.lens.xyChart.axisExtent.dataBounds": "数据边界", "xpack.lens.xyChart.axisExtent.disabledDataBoundsMessage": "仅折线图可适应数据边界", @@ -19550,9 +19537,6 @@ "xpack.reporting.diagnostic.configSizeMismatch": "xpack.reporting.{KIBANA_MAX_SIZE_BYTES_PATH} ({kibanaMaxContentBytes}) 大于 ElasticSearch 的 {ES_MAX_SIZE_BYTES_PATH} ({elasticSearchMaxContentBytes})。请在 ElasticSearch 中将 {ES_MAX_SIZE_BYTES_PATH} 设置为匹配或减小 Kibana 中的 xpack.reporting.{KIBANA_MAX_SIZE_BYTES_PATH}。", "xpack.reporting.diagnostic.noUsableSandbox": "无法使用 Chromium 沙盒。您自行承担使用“xpack.reporting.capture.browser.chromium.disableSandbox”禁用此项的风险。请参见 {url}", "xpack.reporting.diagnostic.screenshotFailureMessage": "我们无法拍摄 Kibana 安装的屏幕截图。", - "xpack.reporting.errorButton.showReportErrorAriaLabel": "显示报告错误", - "xpack.reporting.errorButton.unableToFetchReportContentTitle": "无法提取报告内容", - "xpack.reporting.errorButton.unableToGenerateReportTitle": "无法生成报告", "xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "无法解密报告作业数据。请确保已设置 {encryptionKey},然后重新生成此报告。{err}", "xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "作业标头缺失", "xpack.reporting.exportTypes.csv.executeJob.dateFormateSetting": "Kibana 高级设置“{dateFormatTimezone}”已设置为“浏览器”。日期将格式化为 UTC 以避免混淆。", @@ -19563,7 +19547,6 @@ "xpack.reporting.exportTypes.printablePdf.logoDescription": "由 Elastic 提供支持", "xpack.reporting.exportTypes.printablePdf.pagingDescription": "第 {currentPage} 页,共 {pageCount} 页", "xpack.reporting.jobsQuery.deleteError": "无法删除报告:{error}", - "xpack.reporting.jobStatuses.cancelledText": "已取消", "xpack.reporting.jobStatuses.completedText": "已完成", "xpack.reporting.jobStatuses.failedText": "失败", "xpack.reporting.jobStatuses.pendingText": "待处理", @@ -19589,7 +19572,6 @@ "xpack.reporting.listing.reports.subtitle": "获取在 Kibana 应用程序中生成的报告。", "xpack.reporting.listing.reportstitle": "报告", "xpack.reporting.listing.table.captionDescription": "在 Kibana 应用程序中生成的报告", - "xpack.reporting.listing.table.csvContainsFormulas": "您的 CSV 包含电子表格应用程序可解释为公式的字符。", "xpack.reporting.listing.table.deleteCancelButton": "取消", "xpack.reporting.listing.table.deleteConfim": "报告 {reportTitle} 已删除", "xpack.reporting.listing.table.deleteConfirmButton": "删除", @@ -19601,17 +19583,12 @@ "xpack.reporting.listing.table.downloadReport": "下载报告", "xpack.reporting.listing.table.downloadReportAriaLabel": "下载报告", "xpack.reporting.listing.table.loadingReportsDescription": "正在载入报告", - "xpack.reporting.listing.table.maxSizeReachedTooltip": "已达到最大大小,包含部分数据。", "xpack.reporting.listing.table.noCreatedReportsDescription": "未创建任何报告", "xpack.reporting.listing.table.requestFailedErrorMessage": "请求失败", "xpack.reporting.listing.tableColumns.actionsTitle": "操作", "xpack.reporting.listing.tableColumns.createdAtTitle": "创建于", "xpack.reporting.listing.tableColumns.reportTitle": "报告", "xpack.reporting.listing.tableColumns.statusTitle": "状态", - "xpack.reporting.listing.tableValue.statusDetail.maxSizeReachedText": " - 最大大小已达到", - "xpack.reporting.listing.tableValue.statusDetail.pendingStatusReachedText": "待处理 - 正在等候处理作业", - "xpack.reporting.listing.tableValue.statusDetail.statusTimestampText": "{statusTimestamp} 时为 {statusLabel}", - "xpack.reporting.listing.tableValue.statusDetail.warningsText": "发生了错误:请参阅作业信息以了解详情。", "xpack.reporting.management.reportingTitle": "Reporting", "xpack.reporting.panelContent.advancedOptions": "高级选项", "xpack.reporting.panelContent.copyUrlButtonLabel": "复制 POST URL", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/health_check.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/health_check.tsx index 762526dfd7fa7..f990e12ed76e5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/health_check.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/health_check.tsx @@ -153,7 +153,7 @@ const TlsError = ({ docLinks, className }: PromptErrorProps) => (

} diff --git a/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.test.ts b/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.test.ts index de92cfeb29e08..84f405d6ee494 100644 --- a/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.test.ts +++ b/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.test.ts @@ -80,22 +80,6 @@ describe('synthetics runtime types', () => { maxSteps: 1, ref: { screenshotRef: refResult, - blocks: [ - { - id: 'hash1', - synthetics: { - blob: 'image data', - blob_mime: 'image/jpeg', - }, - }, - { - id: 'hash2', - synthetics: { - blob: 'image data', - blob_mime: 'image/jpeg', - }, - }, - ], }, }; }); diff --git a/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.ts b/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.ts index cd6be645c7a62..e7948f4ad532c 100644 --- a/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.ts +++ b/x-pack/plugins/uptime/common/runtime_types/ping/synthetics.ts @@ -82,10 +82,9 @@ export const FullScreenshotType = t.type({ synthetics: t.intersection([ t.partial({ blob: t.string, + blob_mime: t.string, }), t.type({ - blob: t.string, - blob_mime: t.string, step: t.type({ name: t.string, }), @@ -158,6 +157,10 @@ export const ScreenshotBlockDocType = t.type({ export type ScreenshotBlockDoc = t.TypeOf; +export function isScreenshotBlockDoc(data: unknown): data is ScreenshotBlockDoc { + return isRight(ScreenshotBlockDocType.decode(data)); +} + /** * Contains the fields requried by the Synthetics UI when utilizing screenshot refs. */ @@ -166,7 +169,6 @@ export const ScreenshotRefImageDataType = t.type({ maxSteps: t.number, ref: t.type({ screenshotRef: RefResultType, - blocks: t.array(ScreenshotBlockDocType), }), }); diff --git a/x-pack/plugins/uptime/public/components/fleet_package/header_field.tsx b/x-pack/plugins/uptime/public/components/fleet_package/header_field.tsx index eaf9be50e9665..035d71d3c7132 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/header_field.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/header_field.tsx @@ -15,9 +15,15 @@ interface Props { contentMode?: Mode; defaultValue: Record; onChange: (value: Record) => void; + 'data-test-subj'?: string; } -export const HeaderField = ({ contentMode, defaultValue, onChange }: Props) => { +export const HeaderField = ({ + contentMode, + defaultValue, + onChange, + 'data-test-subj': dataTestSubj, +}: Props) => { const defaultValueKeys = Object.keys(defaultValue).filter((key) => key !== 'Content-Type'); // Content-Type is a secret header we hide from the user const formattedDefaultValues: Pair[] = [ ...defaultValueKeys.map((key) => { @@ -55,6 +61,7 @@ export const HeaderField = ({ contentMode, defaultValue, onChange }: Props) => { } defaultPairs={headers} onChange={setHeaders} + data-test-subj={dataTestSubj} /> ); }; diff --git a/x-pack/plugins/uptime/public/components/fleet_package/http/advanced_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/http/advanced_fields.tsx index aeaa452c38db9..267ccd678ddad 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/http/advanced_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/http/advanced_fields.tsx @@ -205,7 +205,6 @@ export const HTTPAdvancedFields = memo(({ validate }) => { defaultMessage="A dictionary of additional HTTP headers to send. By default the client will set the User-Agent header to identify itself." /> } - data-test-subj="syntheticsRequestHeaders" > (({ validate }) => { }), [handleInputChange] )} + data-test-subj="syntheticsRequestHeaders" /> (({ validate }) => { defaultMessage="A list of expected response headers." /> } - data-test-subj="syntheticsResponseHeaders" > (({ validate }) => { }), [handleInputChange] )} + data-test-subj="syntheticsResponseHeaders" /> void; + 'data-test-subj'?: string; } -export const KeyValuePairsField = ({ addPairControlLabel, defaultPairs, onChange }: Props) => { +export const KeyValuePairsField = ({ + addPairControlLabel, + defaultPairs, + onChange, + 'data-test-subj': dataTestSubj, +}: Props) => { const [pairs, setPairs] = useState(defaultPairs); const handleOnChange = useCallback( @@ -89,11 +95,15 @@ export const KeyValuePairsField = ({ addPairControlLabel, defaultPairs, onChange }, [onChange, pairs]); return ( - <> +
- + {addPairControlLabel} @@ -176,6 +186,6 @@ export const KeyValuePairsField = ({ addPairControlLabel, defaultPairs, onChange ); })} - +
); }; diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx b/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx index 8e2dc1b4c24e0..df4c73908b627 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx @@ -57,7 +57,7 @@ export const PingTimestamp = ({ label, checkGroup, initialStepNo = 1 }: Props) = const { data, status } = useFetcher(() => { if (intersection && intersection.intersectionRatio === 1 && !stepImages[stepNumber - 1]) return getJourneyScreenshot(imgPath); - }, [intersection?.intersectionRatio, stepNumber]); + }, [intersection?.intersectionRatio, stepNumber, imgPath]); const [screenshotRef, setScreenshotRef] = useState(undefined); useEffect(() => { diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx b/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx index 6b78c4046da95..73c43da98bfc4 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx @@ -64,7 +64,7 @@ const RecomposedScreenshotImage: React.FC< } > = ({ captionContent, imageCaption, imageData, imgRef, setImageData }) => { // initially an undefined URL value is passed to the image display, and a loading spinner is rendered. - // `useCompositeImage` will call `setUrl` when the image is composited, and the updated `url` will display. + // `useCompositeImage` will call `setImageData` when the image is composited, and the updated `imageData` will display. useCompositeImage(imgRef, setImageData, imageData); return ( diff --git a/x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/step_detail_container.tsx b/x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/step_detail_container.tsx index c24ecd9183865..9d0555d97cbd4 100644 --- a/x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/step_detail_container.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/synthetics/step_detail/step_detail_container.tsx @@ -109,7 +109,7 @@ export const StepDetailContainer: React.FC = ({ checkGroup, stepIndex }) {(!journey || journey.loading) && ( - + )} diff --git a/x-pack/plugins/uptime/public/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx b/x-pack/plugins/uptime/public/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx index 316154929320d..54f73fb39a52a 100644 --- a/x-pack/plugins/uptime/public/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx +++ b/x-pack/plugins/uptime/public/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx @@ -60,8 +60,8 @@ export const StepScreenshots = ({ step }: Props) => { { { // expect only one accordion to be expanded expect(Object.keys(result.current.expandedRows)).toEqual(['0']); }); + + describe('getExpandedStepCallback', () => { + it('matches step index to key', () => { + const callback = getExpandedStepCallback(2); + expect(callback(defaultSteps[0])).toBe(false); + expect(callback(defaultSteps[1])).toBe(true); + }); + }); }); diff --git a/x-pack/plugins/uptime/public/components/synthetics/check_steps/use_expanded_row.tsx b/x-pack/plugins/uptime/public/components/synthetics/check_steps/use_expanded_row.tsx index 4b50a94f602b7..e58e1cca8660b 100644 --- a/x-pack/plugins/uptime/public/components/synthetics/check_steps/use_expanded_row.tsx +++ b/x-pack/plugins/uptime/public/components/synthetics/check_steps/use_expanded_row.tsx @@ -18,6 +18,10 @@ interface HookProps { type ExpandRowType = Record; +export function getExpandedStepCallback(key: number) { + return (step: JourneyStep) => step.synthetics?.step?.index === key; +} + export const useExpandedRow = ({ loading, steps, allSteps }: HookProps) => { const [expandedRows, setExpandedRows] = useState({}); // eui table uses index from 0, synthetics uses 1 @@ -37,21 +41,18 @@ export const useExpandedRow = ({ loading, steps, allSteps }: HookProps) => { useEffect(() => { const expandedRowsN: ExpandRowType = {}; - for (const expandedRowKeyStr in expandedRows) { - if (expandedRows.hasOwnProperty(expandedRowKeyStr)) { - const expandedRowKey = Number(expandedRowKeyStr); - const step = steps.find((stepF) => stepF.synthetics?.step?.index !== expandedRowKey); + for (const expandedRowKey of Object.keys(expandedRows).map((key) => Number(key))) { + const step = steps.find(getExpandedStepCallback(expandedRowKey + 1)); - if (step) { - expandedRowsN[expandedRowKey] = ( - - ); - } + if (step) { + expandedRowsN[expandedRowKey] = ( + + ); } } diff --git a/x-pack/plugins/uptime/public/components/synthetics/executed_step.tsx b/x-pack/plugins/uptime/public/components/synthetics/executed_step.tsx index c3016864c72a7..add34c3f71f0d 100644 --- a/x-pack/plugins/uptime/public/components/synthetics/executed_step.tsx +++ b/x-pack/plugins/uptime/public/components/synthetics/executed_step.tsx @@ -51,7 +51,7 @@ export const ExecutedStep: FC = ({ return ( {loading ? ( - + ) : ( <> diff --git a/x-pack/plugins/uptime/public/components/synthetics/step_screenshot_display.test.tsx b/x-pack/plugins/uptime/public/components/synthetics/step_screenshot_display.test.tsx index 8d35df51c2421..5b86ed525bc31 100644 --- a/x-pack/plugins/uptime/public/components/synthetics/step_screenshot_display.test.tsx +++ b/x-pack/plugins/uptime/public/components/synthetics/step_screenshot_display.test.tsx @@ -30,7 +30,7 @@ describe('StepScreenshotDisplayProps', () => { const { getByAltText } = render( { const { getByAltText } = render( @@ -57,7 +57,7 @@ describe('StepScreenshotDisplayProps', () => { const { getByTestId } = render( { const { getByAltText } = render( = ({ checkGroup, - isScreenshotBlob: isScreenshotBlob, + isFullScreenshot: isScreenshotBlob, isScreenshotRef, stepIndex, stepName, @@ -134,7 +134,7 @@ export const StepScreenshotDisplay: FC = ({ if (isScreenshotRef) { return getJourneyScreenshot(imgSrc); } - }, [basePath, checkGroup, stepIndex, isScreenshotRef]); + }, [basePath, checkGroup, imgSrc, stepIndex, isScreenshotRef]); const refDimensions = useMemo(() => { if (isAScreenshotRef(screenshotRef)) { diff --git a/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts b/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts index 11b5d8a51c9a8..6ed4add217ae7 100644 --- a/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts +++ b/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { esKuery, IIndexPattern } from '../../../../../src/plugins/data/public'; +import { esKuery } from '../../../../../src/plugins/data/public'; +import type { IndexPattern } from '../../../../../src/plugins/data/public'; import { combineFiltersAndUserSearch, stringifyKueries } from '../../common/lib'; const getKueryString = (urlFilters: string): string => { @@ -25,7 +26,7 @@ const getKueryString = (urlFilters: string): string => { }; export const useUpdateKueryString = ( - indexPattern: IIndexPattern | null, + indexPattern: IndexPattern | null, filterQueryString = '', urlFilters: string ): [string?, Error?] => { diff --git a/x-pack/plugins/uptime/public/hooks/use_composite_image.test.tsx b/x-pack/plugins/uptime/public/hooks/use_composite_image.test.tsx new file mode 100644 index 0000000000000..79e0cde1eaab8 --- /dev/null +++ b/x-pack/plugins/uptime/public/hooks/use_composite_image.test.tsx @@ -0,0 +1,200 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 redux from 'react-redux'; +import { renderHook } from '@testing-library/react-hooks'; +import { ScreenshotRefImageData } from '../../common/runtime_types'; +import { ScreenshotBlockCache } from '../state/reducers/synthetics'; +import { shouldCompose, useCompositeImage } from './use_composite_image'; +import * as compose from '../lib/helper/compose_screenshot_images'; + +const MIME = 'image/jpeg'; + +describe('use composite image', () => { + let imageData: string | undefined; + let imgRef: ScreenshotRefImageData; + let curRef: ScreenshotRefImageData; + let blocks: ScreenshotBlockCache; + + beforeEach(() => { + imgRef = { + stepName: 'step-1', + maxSteps: 3, + ref: { + screenshotRef: { + '@timestamp': '123', + monitor: { + check_group: 'check-group', + }, + screenshot_ref: { + width: 100, + height: 200, + blocks: [ + { + hash: 'hash1', + top: 0, + left: 0, + width: 10, + height: 10, + }, + { + hash: 'hash2', + top: 0, + left: 10, + width: 10, + height: 10, + }, + ], + }, + synthetics: { + package_version: 'v1', + step: { index: 0, name: 'first' }, + type: 'step/screenshot_ref', + }, + }, + }, + }; + curRef = { + stepName: 'step-1', + maxSteps: 3, + ref: { + screenshotRef: { + '@timestamp': '234', + monitor: { + check_group: 'check-group-2', + }, + screenshot_ref: { + width: 100, + height: 200, + blocks: [ + { + hash: 'hash1', + top: 0, + left: 0, + width: 10, + height: 10, + }, + { + hash: 'hash2', + top: 0, + left: 10, + width: 10, + height: 10, + }, + ], + }, + synthetics: { + package_version: 'v1', + step: { index: 1, name: 'second' }, + type: 'step/screenshot_ref', + }, + }, + }, + }; + blocks = { + hash1: { + id: 'id1', + synthetics: { + blob: 'blob', + blob_mime: MIME, + }, + }, + hash2: { + id: 'id2', + synthetics: { + blob: 'blob', + blob_mime: MIME, + }, + }, + }; + }); + + describe('shouldCompose', () => { + it('returns true if all blocks are loaded and ref is new', () => { + expect(shouldCompose(imageData, imgRef, curRef, blocks)).toBe(true); + }); + + it('returns false if a required block is pending', () => { + blocks.hash2 = { status: 'pending' }; + expect(shouldCompose(imageData, imgRef, curRef, blocks)).toBe(false); + }); + + it('returns false if a required block is missing', () => { + delete blocks.hash2; + expect(shouldCompose(imageData, imgRef, curRef, blocks)).toBe(false); + }); + + it('returns false if imageData is defined and the refs have matching step index/check_group', () => { + imageData = 'blob'; + curRef.ref.screenshotRef.synthetics.step.index = 0; + curRef.ref.screenshotRef.monitor.check_group = 'check-group'; + expect(shouldCompose(imageData, imgRef, curRef, blocks)).toBe(false); + }); + + it('returns true if imageData is defined and the refs have different step names', () => { + imageData = 'blob'; + curRef.ref.screenshotRef.synthetics.step.index = 0; + expect(shouldCompose(imageData, imgRef, curRef, blocks)).toBe(true); + }); + }); + + describe('useCompositeImage', () => { + let useDispatchMock: jest.Mock; + let canvasMock: unknown; + let removeChildSpy: jest.Mock; + let selectorSpy: jest.SpyInstance; + let composeSpy: jest.SpyInstance; + + beforeEach(() => { + useDispatchMock = jest.fn(); + removeChildSpy = jest.fn(); + canvasMock = { + parentElement: { + removeChild: removeChildSpy, + }, + toDataURL: jest.fn().mockReturnValue('compose success'), + }; + // @ts-expect-error mocking canvas element for testing + jest.spyOn(document, 'createElement').mockReturnValue(canvasMock); + jest.spyOn(redux, 'useDispatch').mockReturnValue(useDispatchMock); + selectorSpy = jest.spyOn(redux, 'useSelector').mockReturnValue({ blocks }); + composeSpy = jest + .spyOn(compose, 'composeScreenshotRef') + .mockReturnValue(new Promise((r) => r([]))); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('does not compose if all blocks are not loaded', () => { + blocks = {}; + renderHook(() => useCompositeImage(imgRef, jest.fn(), imageData)); + + expect(useDispatchMock).toHaveBeenCalledWith({ + payload: ['hash1', 'hash2'], + type: 'FETCH_BLOCKS', + }); + }); + + it('composes when all required blocks are loaded', async () => { + const onComposeImageSuccess = jest.fn(); + const { waitFor } = renderHook(() => useCompositeImage(imgRef, onComposeImageSuccess)); + + expect(selectorSpy).toHaveBeenCalled(); + expect(composeSpy).toHaveBeenCalledTimes(1); + expect(composeSpy.mock.calls[0][0]).toEqual(imgRef); + expect(composeSpy.mock.calls[0][1]).toBe(canvasMock); + expect(composeSpy.mock.calls[0][2]).toBe(blocks); + + await waitFor(() => { + expect(onComposeImageSuccess).toHaveBeenCalledTimes(1); + expect(onComposeImageSuccess).toHaveBeenCalledWith('compose success'); + }); + }); + }); +}); diff --git a/x-pack/plugins/uptime/public/hooks/use_composite_image.ts b/x-pack/plugins/uptime/public/hooks/use_composite_image.ts index 6db3d05b8c968..3af1e798d43e1 100644 --- a/x-pack/plugins/uptime/public/hooks/use_composite_image.ts +++ b/x-pack/plugins/uptime/public/hooks/use_composite_image.ts @@ -5,19 +5,70 @@ * 2.0. */ +import { useDispatch, useSelector } from 'react-redux'; import React from 'react'; import { composeScreenshotRef } from '../lib/helper/compose_screenshot_images'; import { ScreenshotRefImageData } from '../../common/runtime_types/ping/synthetics'; +import { + fetchBlocksAction, + isPendingBlock, + ScreenshotBlockCache, + StoreScreenshotBlock, +} from '../state/reducers/synthetics'; +import { syntheticsSelector } from '../state/selectors'; + +function allBlocksLoaded(blocks: { [key: string]: StoreScreenshotBlock }, hashes: string[]) { + for (const hash of hashes) { + if (!blocks[hash] || isPendingBlock(blocks[hash])) { + return false; + } + } + return true; +} /** * Checks if two refs are the same. If the ref is unchanged, there's no need * to run the expensive draw procedure. + * + * The key fields here are `step.index` and `check_group`, as there's a 1:1 between + * journey and check group, and each step has a unique index within a journey. */ -function isNewRef(a: ScreenshotRefImageData, b: ScreenshotRefImageData): boolean { - if (typeof a === 'undefined' || typeof b === 'undefined') return false; - const stepA = a.ref.screenshotRef.synthetics.step; - const stepB = b.ref.screenshotRef.synthetics.step; - return stepA.index !== stepB.index || stepA.name !== stepB.name; +const isNewRef = ( + { + ref: { + screenshotRef: { + synthetics: { + step: { index: indexA }, + }, + monitor: { check_group: checkGroupA }, + }, + }, + }: ScreenshotRefImageData, + { + ref: { + screenshotRef: { + synthetics: { + step: { index: indexB }, + }, + monitor: { check_group: checkGroupB }, + }, + }, + }: ScreenshotRefImageData +): boolean => indexA !== indexB || checkGroupA !== checkGroupB; + +export function shouldCompose( + imageData: string | undefined, + imgRef: ScreenshotRefImageData, + curRef: ScreenshotRefImageData, + blocks: ScreenshotBlockCache +): boolean { + return ( + allBlocksLoaded( + blocks, + imgRef.ref.screenshotRef.screenshot_ref.blocks.map(({ hash }) => hash) + ) && + (typeof imageData === 'undefined' || isNewRef(imgRef, curRef)) + ); } /** @@ -31,25 +82,34 @@ export const useCompositeImage = ( onComposeImageSuccess: React.Dispatch, imageData?: string ): void => { + const dispatch = useDispatch(); + const { blocks }: { blocks: ScreenshotBlockCache } = useSelector(syntheticsSelector); + + React.useEffect(() => { + dispatch( + fetchBlocksAction(imgRef.ref.screenshotRef.screenshot_ref.blocks.map(({ hash }) => hash)) + ); + }, [dispatch, imgRef.ref.screenshotRef.screenshot_ref.blocks]); + const [curRef, setCurRef] = React.useState(imgRef); React.useEffect(() => { const canvas = document.createElement('canvas'); async function compose() { - await composeScreenshotRef(imgRef, canvas); - const imgData = canvas.toDataURL('image/png', 1.0); + await composeScreenshotRef(imgRef, canvas, blocks); + const imgData = canvas.toDataURL('image/jpg', 1.0); onComposeImageSuccess(imgData); } // if the URL is truthy it means it's already been composed, so there // is no need to call the function - if (typeof imageData === 'undefined' || isNewRef(imgRef, curRef)) { + if (shouldCompose(imageData, imgRef, curRef, blocks)) { compose(); setCurRef(imgRef); } return () => { canvas.parentElement?.removeChild(canvas); }; - }, [imgRef, onComposeImageSuccess, curRef, imageData]); + }, [blocks, curRef, imageData, imgRef, onComposeImageSuccess]); }; diff --git a/x-pack/plugins/uptime/public/lib/__mocks__/screenshot_ref.mock.ts b/x-pack/plugins/uptime/public/lib/__mocks__/screenshot_ref.mock.ts index d3a005d982168..a95aa77371b23 100644 --- a/x-pack/plugins/uptime/public/lib/__mocks__/screenshot_ref.mock.ts +++ b/x-pack/plugins/uptime/public/lib/__mocks__/screenshot_ref.mock.ts @@ -40,23 +40,5 @@ export const mockRef: ScreenshotRefImageData = { }, monitor: { check_group: 'a567cc7a-c891-11eb-bdf9-3e22fb19bf97' }, }, - blocks: [ - { - id: 'd518801fc523cf02727cd520f556c4113b3098c7', - synthetics: { - blob: - '/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABaAKADASIAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAMFBAYHAggB/8QANRAAAQMDAwEHAwMCBwEAAAAAAQACAwQFEQYSITEHE0FRUpLRFBVhIjKBcaEIFiMkMzSxQv/EABkBAQADAQEAAAAAAAAAAAAAAAADBQYEAv/EACYRAQABBAEEAgEFAAAAAAAAAAABAgMEESEFEjFBBjJxE0JRYYH/2gAMAwEAAhEDEQA/APqlERAREQEREBERAREQEREBERAREQEREBERAREQeT4J5qn1XdDZbFU1rWB74wA1p6FxIAz+OVp+ldV3O6UdxfVd0BEWCNzG4ILieOvgAVFk3qcezVeq8Uxt12cK7dtzdp8ROnRTKxmA57QT+cL2CCucOc55LnuLnHkknJKvNNV7xUtpZHF0bwdmT+0jlZPA+WUZWRFmujtiqdRO98+t/lLe6fVbomqJ3ptqIi2KvEWHc7hR2uhlrbjVQUlJCN0k9RII2MGcZLjwOSsprg5oc0gtIyCPFB6REQERQPqIWVDIHSxtnkBc2MuAc4DqQOpwgnREQEREBERAREQcf7QdZXKK+z0FvlENPTkMcCxru8djnOQeOcYUuj7hLdLZWCop6SlxKwsmYxsDJpMEbT0Bdg54Vjr3SlD9ZLfqieSOmG01EDB+qQ8AbT4Z4z/JXP7ncZK90bdoipYRsgp2fsjb+PM+ZPJVhl2MXNwpxu37RqZ9wydzqGX03LquV1zMb3FO+Jj1uPUOiTQvik2yxuY/w3DCptS6vpNHPj3MFXdjhzaUOwImnxkPgSOjeviVV6Wv9dBWU9C+eV9LK7ug3hzoi7gOZnOCCc+S0+5dnepX3CUQNhuj3ykOlhqWOcXE9XBxDh+SVkek/D8TCyv1ci53RHNMTxz/AH/Ol3f+TXc3H1i0TFXifevw+hdI32n1LYqa50zSxsoLXMccljgcFufHnx8Rha7fdeVrNUVWn9KacqL/AHGgZHLXFtVHTRUweMsaXv6vI52gdPHri27ONOP0xpWnoKh7X1Jc6WYt6B7vAf0GB/C5ZZxNQ9rGvaCr1rPpupqaqCrgiLKYtqonRABzTOxxO3G0hp4wtBXFMVzFPh2WJrm3TNz7a5Zvadq+HVnYRrV30VTbrjQYpK6hqMF8EokYcZHDmkEEOHBC3683nUlufRw2LSv3mldTse6o+4xU+1/ILNrhk8AHP5/C5h2g2C22zsj7SbrR6kfqCquggNZUGSEhskbmNAxE0NacEZGPAK8u94rLn2jzabrtVT6atFHaqeriFM6KGWse4nc4SSNd+luACGrylbNYu0enqbRqWpv1tqrNXacy65Ub3tlcxvd941zHN4eHN6dP/CcO3641hcaamraLs5qzQVO18T5btTxy907kPdGTwcHO3OfBc/7N5NLSdoPaxZ6/UUN1tldTULTU11wZI6pibTvEx70EAhhftJH7cDyXrU9c7s40/DcND9okt5ZDLDDTWCsqIa36lrpGs7qJw/1G4BJGM4DcILnUOpNUUfb2Y7TpWruQjsUjI6YXKGFs0f1LP9wNzsDB/RtOHc+S3aW70b9caTprtZDBqGst087HmVrzRYEZli3Dh3JAyODtVDe7lR2j/ERbai51MNJT1WmpqeKWeRrGOkFSx5bkkc4HRZF8qIartu0LPTSxzQy2uveySNwc17T3RBBHBB80Eg7RrrdrtdabRmkKu90lsqH0c9a+thpY3Ts/cyPfkuxnrwP7Z6BbppqihppqymdSVEkTXyU7nNeYXEAlhc0kEg8ZBwccLk3YfqGzWSxXux3i40FuuluvNY2ogqZmxOIdKXNeA4jLSCMEccLrtNPFVU8U9NKyaGVofHJG4Oa9pGQQRwQR4oMhERAREQEREFTqa2/drJV0WQHSt/ST0DgcjP4yAuDXCiqbfVPp6yF8MzDgtcP7jzH5X0aenkoZqaGYDv4mSY8HNB/9U1q9NvhUdS6VTnTFcTqqOP8AHF9A2apuF7pqlsJ+lp373SPGG7hyAD4nOFu2ndL1lJeGVddIwd2S4BhyXk8fwOVu0bGsADWhoHAwMBe8LlyrVOTcprr/AG+EuB06jDt9m9zve36qe96bsV/MRvtmttyMWRGayljm2Z8twOFcIpFkpqXTVipbZNbKWy22C2zHMlJHSRtif0/cwDB6DqPBL1pmw30Q/fLJbLj3IIj+spI5u7B6hu4HH8K5RBUf5cseAPs1uwIjB/1Wf8Z6s6ftPl0WLbNGaXtVa2ttmnLLRVjc7Z6egijkGfJzWgrYUQVN70/Zr/FEy+Wm33KOIl0baymZMGE9SA4HBU1NabdS/Smlt9JCaSPuafu4Wt7iPgbGYH6W8DgccKwRBRXjSWnL1VCqvGn7RcKkANEtXRRyvAHhuc0lWtNBFS08UFNEyGGJoZHHG0NaxoGAABwAB4LIRAREQEREBERAREQEREBERAREQEREBERAREQEREBERBHul9DPcfhN0voZ7j8KREEe6X0M9x+E3S+hnuPwpEQR7pfQz3H4TdL6Ge4/CkRBHul9DPcfhN0voZ7j8KREEe6X0M9x+E3S+hnuPwpEQR7pfQz3H4TdL6Ge4/CkRBHul9DPcfhN0voZ7j8KREEe6X0M9x+E3S+hnuPwpEQR7pfQz3H4TdL6Ge4/CkRBHuk9DPcfhVV1vcdtexssL3ucM4jOcf1zhW/ktF1OT92k5/8AgL3RT3Ty4c/IqsW+6jy//9k=', - blob_mime: 'image/jpeg', - }, - }, - { - id: 'fa90345d5d7b05b1601e9ee645e663bc358869e0', - synthetics: { - blob: - '/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABaAKADASIAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAYIAwUHBAIB/8QANBAAAQQCAQICCAUDBQAAAAAAAQACAwQFEQYSIQcxExQWQVFSVKEiMmGS0RVTcQhDgZHh/8QAGQEBAAIDAAAAAAAAAAAAAAAAAAIEAwUG/8QAHxEBAAEEAwADAAAAAAAAAAAAAAEEExVRAgORBRIh/9oADAMBAAIRAxEAPwC1KIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg+JHBkbnnyaCVyXj3jlhsqMRYs4PP43GZax6rUyViuz1Z8vUWhhe150dtI8vcfcCV1iyCa8oAJJYQAP8KvPg54WZPJ8D4qOY5TKwY/HWn3IuPzVG1xHK2aQtMjiOtwO+rR9zu3ZB3qDL46xYNeDIVJJ+p7TGyZpdtmuoaB3sbG/htZaORpZBshoW61psbul5gla/pPwOj2KrvjvD7J2uD+Kliph5q3KLuYvMozzxGKWWqXMcWxF2vwvBkGx2dvz7LyYvi+Vyd/MTcI4vk+K1TxWTG2GW63qvrVw76Q0bHU73el/nuHcLvPMPByvAYKCT1yfMOstimrSMfFEYI+t4eQ7YOj5AH9dLfR5fGyQVp48hUdDaf6OCQTtLZX7I6WHenHYI0Pgq18A47IefeGcuN4PmcEyhQt1crbs0XRMfY9Vc3rcfftx7Pdrq6gB+XQxcaxvI4cB4acXs8Sz0M/HuStluXDVJr9BmkeHscPNmn93a6Rrz7hBZ0ZKi6+aDbtY3gOo1xK30gHx6d70tJxbnGA5PPlYsPejlfjLD69jbgO7fN7e/dnf83kuI8B48/HZmjjuQcCy9/lsOdfcm5AA6GH0ZcSJvWR+duv9o9j/lfVHhLK2L8WMDZ4rlIn3LslmnNjKbWelqGRjmRQyHTTot2Yt+QIHdBYmhfqZGEy0LVezED0l8Ege3fw2CvWuJ/6fqeTo5TkLLGDFTGlkDYsg/EnFS2ntBBa6vst/DvXU0Dvvz327YgIiINXyPM0ePYS5lstO2ChUjMksh9w/wAe8k6AHvJChHG/FrGZfOY7GW8LnsN/VQX46xk6gjit6G9NcHHRI7gH3a+IC93jfxm5y/wxzeGxfe9Mxj4mF3SJHMka/oJ/Xp0N9t6Wm4/zPOcizGCx0PAsnj44AHZG3lq3oIqpa0dq52esk9hrXbX66DoozGMMDLAyNMwPk9C2T07el0nl0A711fp5rKclRF4UTcrC6R1CuZW+kI+PTvaq6cTySpxanxB3FM66zQ5ay9JdZVLqz4DKSHscO7vPZ0NADZI8ls8txzJY3xYns4XjN+/JazrbbxkcUHRsBO3Tw32OBYwe6N3l27HyQd04/wA1wfIM5l8RjLrZL2LeGWGbA3sebe/4gPIkeRW2gy+MsVp7MGRpy16+/TSMma5sevPqIOh5e9V6yvDMnFl/F3HYXj89bJZWBk2Mvw1AyGSH8JmhZMAA1z9kFuxsg78lro+NXLo5Ba4pw3L8fxrOITY+3WnpGF124QekMjHeRw+fWz/yNhZMZzFCOZ/9UoBkLGySu9YZpjXflc477A7GifNZ7eSo1Kgt27laCq7XTNLK1rDvy04nXdV1wHhnUfybhbbnFZPU5eJj+o+kqPDHXOkdptjXpQSezu4IHwGo9W4ryUcO8Np8zispNjqFe5Xs1H4g3pK0rpn+jc+q/RILOkA67AA+8ILcIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiCOe1Nb6eb7J7U1vp5vsoj5u7r9PkrFuHMZSo3HiW+1Nb6eb7J7U1vp5vsoiiW4MpUbjxLvamt9PN9k9qa30832URRLcGUqNx4l3tTW+nm+ye1Nb6eb7KIoluDKVG48S72prfTzfZPamt9PN9lEUS3BlKjceJd7U1vp5vsntTW/sTfZRFEtwZSo3HiW+1Nf+xN/0Fuq05sQtliawscNj8X/AIucKccYJOJi3+qhz4REfi98fW9nfz+vNteqX5GfuP8ACdUvyM/cf4WRFiblj6pfkZ+4/wAJ1S/Iz9x/hZEQY+qX5GfuP8J1S/Iz9x/hZEQf/9k=', - blob_mime: 'image/jpeg', - }, - }, - ], }, }; diff --git a/x-pack/plugins/uptime/public/lib/__mocks__/uptime_store.mock.ts b/x-pack/plugins/uptime/public/lib/__mocks__/uptime_store.mock.ts index 8ad3379615549..c0b4c893d93d8 100644 --- a/x-pack/plugins/uptime/public/lib/__mocks__/uptime_store.mock.ts +++ b/x-pack/plugins/uptime/public/lib/__mocks__/uptime_store.mock.ts @@ -111,4 +111,9 @@ export const mockState: AppState = { }, journeys: {}, networkEvents: {}, + synthetics: { + blocks: {}, + cacheSize: 0, + hitCount: [], + }, }; diff --git a/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.test.ts b/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.test.ts new file mode 100644 index 0000000000000..0bf809d4e7a40 --- /dev/null +++ b/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.test.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ScreenshotRefImageData } from '../../../common/runtime_types/ping/synthetics'; +import { composeScreenshotRef } from './compose_screenshot_images'; + +describe('composeScreenshotRef', () => { + let getContextMock: jest.Mock; + let drawImageMock: jest.Mock; + let ref: ScreenshotRefImageData; + let contextMock: unknown; + + beforeEach(() => { + drawImageMock = jest.fn(); + contextMock = { + drawImage: drawImageMock, + }; + getContextMock = jest.fn().mockReturnValue(contextMock); + ref = { + stepName: 'step', + maxSteps: 3, + ref: { + screenshotRef: { + '@timestamp': '123', + monitor: { check_group: 'check-group' }, + screenshot_ref: { + blocks: [ + { + hash: '123', + top: 0, + left: 0, + width: 10, + height: 10, + }, + ], + height: 100, + width: 100, + }, + synthetics: { + package_version: 'v1', + step: { + name: 'step-name', + index: 0, + }, + type: 'step/screenshot_ref', + }, + }, + }, + }; + }); + + it('throws error when blob does not exist', async () => { + try { + // @ts-expect-error incomplete invocation for test + await composeScreenshotRef(ref, { getContext: getContextMock }, {}); + } catch (e: any) { + expect(e).toMatchInlineSnapshot( + `[Error: Error processing image. Expected image data with hash 123 is missing]` + ); + expect(getContextMock).toHaveBeenCalled(); + expect(getContextMock.mock.calls[0][0]).toBe('2d'); + expect(getContextMock.mock.calls[0][1]).toEqual({ alpha: false }); + } + }); + + it('throws error when block is pending', async () => { + try { + await composeScreenshotRef( + ref, + // @ts-expect-error incomplete invocation for test + { getContext: getContextMock }, + { '123': { status: 'pending' } } + ); + } catch (e: any) { + expect(e).toMatchInlineSnapshot( + `[Error: Error processing image. Expected image data with hash 123 is missing]` + ); + expect(getContextMock).toHaveBeenCalled(); + expect(getContextMock.mock.calls[0][0]).toBe('2d'); + expect(getContextMock.mock.calls[0][1]).toEqual({ alpha: false }); + } + }); +}); diff --git a/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.ts b/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.ts index 7481a517d3c9e..60cd248c1487a 100644 --- a/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.ts +++ b/x-pack/plugins/uptime/public/lib/helper/compose_screenshot_images.ts @@ -5,7 +5,11 @@ * 2.0. */ -import { ScreenshotRefImageData } from '../../../common/runtime_types'; +import { + isScreenshotBlockDoc, + ScreenshotRefImageData, +} from '../../../common/runtime_types/ping/synthetics'; +import { ScreenshotBlockCache } from '../../state/reducers/synthetics'; /** * Draws image fragments on a canvas. @@ -15,30 +19,30 @@ import { ScreenshotRefImageData } from '../../../common/runtime_types'; */ export async function composeScreenshotRef( data: ScreenshotRefImageData, - canvas: HTMLCanvasElement + canvas: HTMLCanvasElement, + blocks: ScreenshotBlockCache ) { const { - ref: { screenshotRef, blocks }, + ref: { screenshotRef }, } = data; + const ctx = canvas.getContext('2d', { alpha: false }); + canvas.width = screenshotRef.screenshot_ref.width; canvas.height = screenshotRef.screenshot_ref.height; - const ctx = canvas.getContext('2d', { alpha: false }); - /** * We need to treat each operation as an async task, otherwise we will race between drawing image * chunks and extracting the final data URL from the canvas; without this, the image could be blank or incomplete. */ const drawOperations: Array> = []; - for (const block of screenshotRef.screenshot_ref.blocks) { + for (const { hash, top, left, width, height } of screenshotRef.screenshot_ref.blocks) { drawOperations.push( new Promise((resolve, reject) => { const img = new Image(); - const { top, left, width, height, hash } = block; - const blob = blocks.find((b) => b.id === hash); - if (!blob) { + const blob = blocks[hash]; + if (!blob || !isScreenshotBlockDoc(blob)) { reject(Error(`Error processing image. Expected image data with hash ${hash} is missing`)); } else { img.onload = () => { diff --git a/x-pack/plugins/uptime/public/state/api/journey.ts b/x-pack/plugins/uptime/public/state/api/journey.ts index 4e71a07c70b68..8ed3fadf5c346 100644 --- a/x-pack/plugins/uptime/public/state/api/journey.ts +++ b/x-pack/plugins/uptime/public/state/api/journey.ts @@ -12,11 +12,16 @@ import { FailedStepsApiResponseType, JourneyStep, JourneyStepType, + ScreenshotBlockDoc, ScreenshotImageBlob, ScreenshotRefImageData, SyntheticsJourneyApiResponse, SyntheticsJourneyApiResponseType, -} from '../../../common/runtime_types'; +} from '../../../common/runtime_types/ping/synthetics'; + +export async function fetchScreenshotBlockSet(params: string[]): Promise { + return apiService.post('/api/uptime/journey/screenshot/block', { hashes: params }); +} export async function fetchJourneySteps( params: FetchJourneyStepsParams diff --git a/x-pack/plugins/uptime/public/state/effects/index.ts b/x-pack/plugins/uptime/public/state/effects/index.ts index a5e9ffecadaf8..df02180b1c28d 100644 --- a/x-pack/plugins/uptime/public/state/effects/index.ts +++ b/x-pack/plugins/uptime/public/state/effects/index.ts @@ -20,6 +20,11 @@ import { fetchCertificatesEffect } from '../certificates/certificates'; import { fetchAlertsEffect } from '../alerts/alerts'; import { fetchJourneyStepsEffect } from './journey'; import { fetchNetworkEventsEffect } from './network_events'; +import { + fetchScreenshotBlocks, + generateBlockStatsOnPut, + pruneBlockCache, +} from './synthetic_journey_blocks'; export function* rootEffect() { yield fork(fetchMonitorDetailsEffect); @@ -38,4 +43,7 @@ export function* rootEffect() { yield fork(fetchAlertsEffect); yield fork(fetchJourneyStepsEffect); yield fork(fetchNetworkEventsEffect); + yield fork(fetchScreenshotBlocks); + yield fork(generateBlockStatsOnPut); + yield fork(pruneBlockCache); } diff --git a/x-pack/plugins/uptime/public/state/effects/synthetic_journey_blocks.ts b/x-pack/plugins/uptime/public/state/effects/synthetic_journey_blocks.ts new file mode 100644 index 0000000000000..829048747ddf7 --- /dev/null +++ b/x-pack/plugins/uptime/public/state/effects/synthetic_journey_blocks.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Action } from 'redux-actions'; +import { call, fork, put, select, takeEvery, throttle } from 'redux-saga/effects'; +import { ScreenshotBlockDoc } from '../../../common/runtime_types/ping/synthetics'; +import { fetchScreenshotBlockSet } from '../api/journey'; +import { + fetchBlocksAction, + setBlockLoadingAction, + isPendingBlock, + pruneCacheAction, + putBlocksAction, + putCacheSize, + ScreenshotBlockCache, + updateHitCountsAction, +} from '../reducers/synthetics'; +import { syntheticsSelector } from '../selectors'; + +function* fetchBlocks(hashes: string[]) { + yield put(setBlockLoadingAction(hashes)); + const blocks: ScreenshotBlockDoc[] = yield call(fetchScreenshotBlockSet, hashes); + yield put(putBlocksAction({ blocks })); +} + +export function* fetchScreenshotBlocks() { + /** + * We maintain a list of each hash and how many times it is requested so we can avoid + * subsequent re-requests if the block is dropped due to cache pruning. + */ + yield takeEvery(String(fetchBlocksAction), function* (action: Action) { + if (action.payload.length > 0) { + yield put(updateHitCountsAction(action.payload)); + } + }); + + /** + * We do a short delay to allow multiple item renders to queue up before dispatching + * a fetch to the backend. + */ + yield throttle(20, String(fetchBlocksAction), function* () { + const { blocks }: { blocks: ScreenshotBlockCache } = yield select(syntheticsSelector); + const toFetch = Object.keys(blocks).filter((hash) => { + const block = blocks[hash]; + return isPendingBlock(block) && block.status !== 'loading'; + }); + + if (toFetch.length > 0) { + yield fork(fetchBlocks, toFetch); + } + }); +} + +export function* generateBlockStatsOnPut() { + yield takeEvery( + String(putBlocksAction), + function* (action: Action<{ blocks: ScreenshotBlockDoc[] }>) { + const batchSize = action.payload.blocks.reduce((total, cur) => { + return cur.synthetics.blob.length + total; + }, 0); + yield put(putCacheSize(batchSize)); + } + ); +} + +// 4 MB cap for cache size +const MAX_CACHE_SIZE = 4000000; + +export function* pruneBlockCache() { + yield takeEvery(String(putCacheSize), function* (_action: Action) { + const { cacheSize }: { cacheSize: number } = yield select(syntheticsSelector); + + if (cacheSize > MAX_CACHE_SIZE) { + yield put(pruneCacheAction(cacheSize - MAX_CACHE_SIZE)); + } + }); +} diff --git a/x-pack/plugins/uptime/public/state/reducers/index.ts b/x-pack/plugins/uptime/public/state/reducers/index.ts index 05fb7c732466d..53cb6d6bffb0c 100644 --- a/x-pack/plugins/uptime/public/state/reducers/index.ts +++ b/x-pack/plugins/uptime/public/state/reducers/index.ts @@ -23,6 +23,7 @@ import { selectedFiltersReducer } from './selected_filters'; import { alertsReducer } from '../alerts/alerts'; import { journeyReducer } from './journey'; import { networkEventsReducer } from './network_events'; +import { syntheticsReducer } from './synthetics'; export const rootReducer = combineReducers({ monitor: monitorReducer, @@ -42,4 +43,5 @@ export const rootReducer = combineReducers({ alerts: alertsReducer, journeys: journeyReducer, networkEvents: networkEventsReducer, + synthetics: syntheticsReducer, }); diff --git a/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts b/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts index 3fb2ada060d65..d16860850bd78 100644 --- a/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts +++ b/x-pack/plugins/uptime/public/state/reducers/index_pattern.ts @@ -7,10 +7,10 @@ import { handleActions, Action } from 'redux-actions'; import { getIndexPattern, getIndexPatternSuccess, getIndexPatternFail } from '../actions'; -import { IIndexPattern } from '../../../../../../src/plugins/data/common/index_patterns'; +import type { IndexPattern } from '../../../../../../src/plugins/data/common/index_patterns'; export interface IndexPatternState { - index_pattern: IIndexPattern | null; + index_pattern: IndexPattern | null; errors: any[]; loading: boolean; } diff --git a/x-pack/plugins/uptime/public/state/reducers/synthetics.test.ts b/x-pack/plugins/uptime/public/state/reducers/synthetics.test.ts new file mode 100644 index 0000000000000..06d738d01b42f --- /dev/null +++ b/x-pack/plugins/uptime/public/state/reducers/synthetics.test.ts @@ -0,0 +1,429 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + fetchBlocksAction, + isPendingBlock, + pruneCacheAction, + setBlockLoadingAction, + putBlocksAction, + putCacheSize, + syntheticsReducer, + SyntheticsReducerState, + updateHitCountsAction, +} from './synthetics'; + +const MIME = 'image/jpeg'; + +describe('syntheticsReducer', () => { + jest.spyOn(Date, 'now').mockImplementation(() => 10); + + describe('isPendingBlock', () => { + it('returns true for pending block', () => { + expect(isPendingBlock({ status: 'pending' })).toBe(true); + }); + + it('returns true for loading block', () => { + expect(isPendingBlock({ status: 'loading' })).toBe(true); + }); + + it('returns false for non-pending block', () => { + expect(isPendingBlock({ synthetics: { blob: 'blobdata', blob_mime: MIME } })).toBe(false); + expect(isPendingBlock({})).toBe(false); + }); + }); + + describe('prune cache', () => { + let state: SyntheticsReducerState; + + beforeEach(() => { + const blobs = ['large', 'large2', 'large3', 'large4']; + state = { + blocks: { + '123': { + synthetics: { + blob: blobs[0], + blob_mime: MIME, + }, + id: '123', + }, + '234': { + synthetics: { + blob: blobs[1], + blob_mime: MIME, + }, + id: '234', + }, + '345': { + synthetics: { + blob: blobs[2], + blob_mime: MIME, + }, + id: '345', + }, + '456': { + synthetics: { + blob: blobs[3], + blob_mime: MIME, + }, + id: '456', + }, + }, + cacheSize: 23, + hitCount: [ + { hash: '123', hitTime: 89 }, + { hash: '234', hitTime: 23 }, + { hash: '345', hitTime: 4 }, + { hash: '456', hitTime: 1 }, + ], + }; + }); + + it('removes lowest common hits', () => { + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, pruneCacheAction(10))).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "id": "123", + "synthetics": Object { + "blob": "large", + "blob_mime": "image/jpeg", + }, + }, + "234": Object { + "id": "234", + "synthetics": Object { + "blob": "large2", + "blob_mime": "image/jpeg", + }, + }, + }, + "cacheSize": 11, + "hitCount": Array [ + Object { + "hash": "123", + "hitTime": 89, + }, + Object { + "hash": "234", + "hitTime": 23, + }, + ], + } + `); + }); + + it('skips pending blocks', () => { + state.blocks = { ...state.blocks, '000': { status: 'pending' } }; + state.hitCount.push({ hash: '000', hitTime: 1 }); + // @ts-expect-error redux-actions doesn't handle types well + const newState = syntheticsReducer(state, pruneCacheAction(10)); + expect(newState.blocks['000']).toEqual({ status: 'pending' }); + }); + + it('ignores a hash from `hitCount` that does not exist', () => { + state.hitCount.push({ hash: 'not exist', hitTime: 1 }); + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, pruneCacheAction(2))).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "id": "123", + "synthetics": Object { + "blob": "large", + "blob_mime": "image/jpeg", + }, + }, + "234": Object { + "id": "234", + "synthetics": Object { + "blob": "large2", + "blob_mime": "image/jpeg", + }, + }, + "345": Object { + "id": "345", + "synthetics": Object { + "blob": "large3", + "blob_mime": "image/jpeg", + }, + }, + }, + "cacheSize": 17, + "hitCount": Array [ + Object { + "hash": "123", + "hitTime": 89, + }, + Object { + "hash": "234", + "hitTime": 23, + }, + Object { + "hash": "345", + "hitTime": 4, + }, + ], + } + `); + }); + + it('will prune a block with an empty blob', () => { + state.blocks = { + ...state.blocks, + '000': { id: '000', synthetics: { blob: '', blob_mime: MIME } }, + }; + state.hitCount.push({ hash: '000', hitTime: 1 }); + // @ts-expect-error redux-actions doesn't handle types well + const newState = syntheticsReducer(state, pruneCacheAction(10)); + expect(Object.keys(newState.blocks)).not.toContain('000'); + }); + }); + + describe('fetch blocks', () => { + it('sets targeted blocks as pending', () => { + const state: SyntheticsReducerState = { blocks: {}, cacheSize: 0, hitCount: [] }; + const action = fetchBlocksAction(['123', '234']); + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, action)).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "status": "pending", + }, + "234": Object { + "status": "pending", + }, + }, + "cacheSize": 0, + "hitCount": Array [], + } + `); + }); + + it('will not overwrite a cached block', () => { + const state: SyntheticsReducerState = { + blocks: { '123': { id: '123', synthetics: { blob: 'large', blob_mime: MIME } } }, + cacheSize: 'large'.length, + hitCount: [{ hash: '123', hitTime: 1 }], + }; + const action = fetchBlocksAction(['123']); + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, action)).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "id": "123", + "synthetics": Object { + "blob": "large", + "blob_mime": "image/jpeg", + }, + }, + }, + "cacheSize": 5, + "hitCount": Array [ + Object { + "hash": "123", + "hitTime": 1, + }, + ], + } + `); + }); + }); + describe('update hit counts', () => { + let state: SyntheticsReducerState; + + beforeEach(() => { + const blobs = ['large', 'large2', 'large3']; + state = { + blocks: { + '123': { + synthetics: { + blob: blobs[0], + blob_mime: MIME, + }, + id: '123', + }, + '234': { + synthetics: { + blob: blobs[1], + blob_mime: MIME, + }, + id: '234', + }, + '345': { + synthetics: { + blob: blobs[2], + blob_mime: MIME, + }, + id: '345', + }, + }, + cacheSize: 17, + hitCount: [ + { hash: '123', hitTime: 1 }, + { hash: '234', hitTime: 1 }, + ], + }; + }); + + it('increments hit count for selected hashes', () => { + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, updateHitCountsAction(['123', '234'])).hitCount).toEqual([ + { + hash: '123', + hitTime: 10, + }, + { hash: '234', hitTime: 10 }, + ]); + }); + + it('adds new hit count for missing item', () => { + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, updateHitCountsAction(['345'])).hitCount).toEqual([ + { hash: '345', hitTime: 10 }, + { hash: '123', hitTime: 1 }, + { hash: '234', hitTime: 1 }, + ]); + }); + }); + describe('put cache size', () => { + let state: SyntheticsReducerState; + + beforeEach(() => { + state = { + blocks: {}, + cacheSize: 0, + hitCount: [], + }; + }); + + it('updates the cache size', () => { + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, putCacheSize(100))).toEqual({ + blocks: {}, + cacheSize: 100, + hitCount: [], + }); + }); + }); + + describe('in-flight blocks', () => { + let state: SyntheticsReducerState; + + beforeEach(() => { + state = { + blocks: { + '123': { status: 'pending' }, + }, + cacheSize: 1, + hitCount: [{ hash: '123', hitTime: 1 }], + }; + }); + + it('sets pending blocks to loading', () => { + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, setBlockLoadingAction(['123']))).toEqual({ + blocks: { '123': { status: 'loading' } }, + cacheSize: 1, + hitCount: [{ hash: '123', hitTime: 1 }], + }); + }); + }); + + describe('put blocks', () => { + let state: SyntheticsReducerState; + + beforeEach(() => { + state = { + blocks: { + '123': { + status: 'pending', + }, + }, + cacheSize: 0, + hitCount: [{ hash: '123', hitTime: 1 }], + }; + }); + + it('resolves pending blocks', () => { + const action = putBlocksAction({ + blocks: [ + { + id: '123', + synthetics: { + blob: 'reallybig', + blob_mime: MIME, + }, + }, + ], + }); + // @ts-expect-error redux-actions doesn't handle types well + const result = syntheticsReducer(state, action); + expect(result).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "id": "123", + "synthetics": Object { + "blob": "reallybig", + "blob_mime": "image/jpeg", + }, + }, + }, + "cacheSize": 0, + "hitCount": Array [ + Object { + "hash": "123", + "hitTime": 1, + }, + ], + } + `); + }); + + it('keeps unresolved blocks', () => { + const action = putBlocksAction({ + blocks: [ + { + id: '234', + synthetics: { + blob: 'also big', + blob_mime: MIME, + }, + }, + ], + }); + // @ts-expect-error redux-actions doesn't handle types well + expect(syntheticsReducer(state, action)).toMatchInlineSnapshot(` + Object { + "blocks": Object { + "123": Object { + "status": "pending", + }, + "234": Object { + "id": "234", + "synthetics": Object { + "blob": "also big", + "blob_mime": "image/jpeg", + }, + }, + }, + "cacheSize": 0, + "hitCount": Array [ + Object { + "hash": "123", + "hitTime": 1, + }, + ], + } + `); + }); + }); +}); diff --git a/x-pack/plugins/uptime/public/state/reducers/synthetics.ts b/x-pack/plugins/uptime/public/state/reducers/synthetics.ts new file mode 100644 index 0000000000000..1e97c3972444b --- /dev/null +++ b/x-pack/plugins/uptime/public/state/reducers/synthetics.ts @@ -0,0 +1,180 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createAction, handleActions, Action } from 'redux-actions'; +import { + isScreenshotBlockDoc, + ScreenshotBlockDoc, +} from '../../../common/runtime_types/ping/synthetics'; + +export interface PendingBlock { + status: 'pending' | 'loading'; +} + +export function isPendingBlock(data: unknown): data is PendingBlock { + return ['pending', 'loading'].some((s) => s === (data as PendingBlock)?.status); +} +export type StoreScreenshotBlock = ScreenshotBlockDoc | PendingBlock; +export interface ScreenshotBlockCache { + [hash: string]: StoreScreenshotBlock; +} + +export interface CacheHitCount { + hash: string; + hitTime: number; +} + +export interface SyntheticsReducerState { + blocks: ScreenshotBlockCache; + cacheSize: number; + hitCount: CacheHitCount[]; +} + +export interface PutBlocksPayload { + blocks: ScreenshotBlockDoc[]; +} + +// this action denotes a set of blocks is required +export const fetchBlocksAction = createAction('FETCH_BLOCKS'); +// this action denotes a request for a set of blocks is in flight +export const setBlockLoadingAction = createAction('IN_FLIGHT_BLOCKS_ACTION'); +// block data has been received, and should be added to the store +export const putBlocksAction = createAction('PUT_SCREENSHOT_BLOCKS'); +// updates the total size of the image blob data cached in the store +export const putCacheSize = createAction('PUT_CACHE_SIZE'); +// keeps track of the most-requested blocks +export const updateHitCountsAction = createAction('UPDATE_HIT_COUNTS'); +// reduce the cache size to the value in the action payload +export const pruneCacheAction = createAction('PRUNE_SCREENSHOT_BLOCK_CACHE'); + +const initialState: SyntheticsReducerState = { + blocks: {}, + cacheSize: 0, + hitCount: [], +}; + +// using `any` here because `handleActions` is not set up well to handle the multi-type +// nature of all the actions it supports. redux-actions is looking for new maintainers https://github.com/redux-utilities/redux-actions#looking-for-maintainers +// and seems that we should move to something else like Redux Toolkit. +export const syntheticsReducer = handleActions< + SyntheticsReducerState, + string[] & PutBlocksPayload & number +>( + { + /** + * When removing blocks from the cache, we receive an action with a number. + * The number equates to the desired ceiling size of the cache. We then discard + * blocks, ordered by the least-requested. We continue dropping blocks until + * the newly-pruned size will be less than the ceiling supplied by the action. + */ + [String(pruneCacheAction)]: (state, action: Action) => handlePruneAction(state, action), + + /** + * Keep track of the least- and most-requested blocks, so when it is time to + * prune we keep the most commonly-used ones. + */ + [String(updateHitCountsAction)]: (state, action: Action) => + handleUpdateHitCountsAction(state, action), + + [String(putCacheSize)]: (state, action: Action) => ({ + ...state, + cacheSize: state.cacheSize + action.payload, + }), + + [String(fetchBlocksAction)]: (state, action: Action) => ({ + // increment hit counts + ...state, + blocks: { + ...state.blocks, + ...action.payload + // there's no need to overwrite existing blocks because the key + // is either storing a pending req or a cached result + .filter((b) => !state.blocks[b]) + // convert the list of new hashes in the payload to an object that + // will combine with with the existing blocks cache + .reduce( + (acc, cur) => ({ + ...acc, + [cur]: { status: 'pending' }, + }), + {} + ), + }, + }), + + /** + * All hashes contained in the action payload have been requested, so we can + * indicate that they're loading. Subsequent requests will skip them. + */ + [String(setBlockLoadingAction)]: (state, action: Action) => ({ + ...state, + blocks: { + ...state.blocks, + ...action.payload.reduce( + (acc, cur) => ({ + ...acc, + [cur]: { status: 'loading' }, + }), + {} + ), + }, + }), + + [String(putBlocksAction)]: (state, action: Action) => ({ + ...state, + blocks: { + ...state.blocks, + ...action.payload.blocks.reduce((acc, cur) => ({ ...acc, [cur.id]: cur }), {}), + }, + }), + }, + initialState +); + +function handlePruneAction(state: SyntheticsReducerState, action: Action) { + const { blocks, hitCount } = state; + const hashesToPrune: string[] = []; + let sizeToRemove = 0; + let removeIndex = hitCount.length - 1; + while (sizeToRemove < action.payload && removeIndex >= 0) { + const { hash } = hitCount[removeIndex]; + removeIndex--; + if (!blocks[hash]) continue; + const block = blocks[hash]; + if (isScreenshotBlockDoc(block)) { + sizeToRemove += block.synthetics.blob.length; + hashesToPrune.push(hash); + } + } + for (const hash of hashesToPrune) { + delete blocks[hash]; + } + return { + cacheSize: state.cacheSize - sizeToRemove, + blocks: { ...blocks }, + hitCount: hitCount.slice(0, removeIndex + 1), + }; +} + +function handleUpdateHitCountsAction(state: SyntheticsReducerState, action: Action) { + const newHitCount = [...state.hitCount]; + const hitTime = Date.now(); + action.payload.forEach((hash) => { + const countItem = newHitCount.find((item) => item.hash === hash); + if (!countItem) { + newHitCount.push({ hash, hitTime }); + } else { + countItem.hitTime = hitTime; + } + }); + // sorts in descending order + newHitCount.sort((a, b) => b.hitTime - a.hitTime); + return { + ...state, + hitCount: newHitCount, + }; +} diff --git a/x-pack/plugins/uptime/public/state/selectors/index.test.ts b/x-pack/plugins/uptime/public/state/selectors/index.test.ts index e4094c72a6e10..520ebdac0c1e0 100644 --- a/x-pack/plugins/uptime/public/state/selectors/index.test.ts +++ b/x-pack/plugins/uptime/public/state/selectors/index.test.ts @@ -109,6 +109,11 @@ describe('state selectors', () => { }, journeys: {}, networkEvents: {}, + synthetics: { + blocks: {}, + cacheSize: 0, + hitCount: [], + }, }; it('selects base path from state', () => { diff --git a/x-pack/plugins/uptime/public/state/selectors/index.ts b/x-pack/plugins/uptime/public/state/selectors/index.ts index 6c4ea8201398c..222687c78a868 100644 --- a/x-pack/plugins/uptime/public/state/selectors/index.ts +++ b/x-pack/plugins/uptime/public/state/selectors/index.ts @@ -97,3 +97,5 @@ export const monitorIdSelector = ({ ui: { monitorId } }: AppState) => monitorId; export const journeySelector = ({ journeys }: AppState) => journeys; export const networkEventsSelector = ({ networkEvents }: AppState) => networkEvents; + +export const syntheticsSelector = ({ synthetics }: AppState) => synthetics; diff --git a/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.test.ts b/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.test.ts index 3d8bc04a10565..15cee91606e66 100644 --- a/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.test.ts +++ b/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.test.ts @@ -12,6 +12,7 @@ describe('getJourneyScreenshot', () => { it('returns screenshot data', async () => { const screenshotResult = { _id: 'id', + _index: 'index', _source: { synthetics: { blob_mime: 'image/jpeg', @@ -26,8 +27,14 @@ describe('getJourneyScreenshot', () => { expect( await getJourneyScreenshot({ uptimeEsClient: mockSearchResult([], { - // @ts-expect-error incomplete search result - step: { image: { hits: { hits: [screenshotResult] } } }, + step: { + image: { + hits: { + total: 1, + hits: [screenshotResult], + }, + }, + }, }), checkGroup: 'checkGroup', stepIndex: 0, @@ -48,6 +55,7 @@ describe('getJourneyScreenshot', () => { it('returns ref data', async () => { const screenshotRefResult = { _id: 'id', + _index: 'index', _source: { '@timestamp': '123', monitor: { @@ -86,8 +94,7 @@ describe('getJourneyScreenshot', () => { expect( await getJourneyScreenshot({ uptimeEsClient: mockSearchResult([], { - // @ts-expect-error incomplete search result - step: { image: { hits: { hits: [screenshotRefResult] } } }, + step: { image: { hits: { hits: [screenshotRefResult], total: 1 } } }, }), checkGroup: 'checkGroup', stepIndex: 0, diff --git a/x-pack/plugins/uptime/server/rest_api/index.ts b/x-pack/plugins/uptime/server/rest_api/index.ts index d4d0e13bd23db..8ae878669ba32 100644 --- a/x-pack/plugins/uptime/server/rest_api/index.ts +++ b/x-pack/plugins/uptime/server/rest_api/index.ts @@ -12,7 +12,7 @@ import { createGetPingsRoute, createJourneyRoute, createJourneyScreenshotRoute, - createJourneyScreenshotBlockRoute, + createJourneyScreenshotBlocksRoute, } from './pings'; import { createGetDynamicSettingsRoute, createPostDynamicSettingsRoute } from './dynamic_settings'; import { createLogPageViewRoute } from './telemetry'; @@ -52,8 +52,8 @@ export const restApiRoutes: UMRestApiRouteFactory[] = [ createGetMonitorDurationRoute, createJourneyRoute, createJourneyScreenshotRoute, - createJourneyScreenshotBlockRoute, createNetworkEventsRoute, createJourneyFailedStepsRoute, createLastSuccessfulStepRoute, + createJourneyScreenshotBlocksRoute, ]; diff --git a/x-pack/plugins/uptime/server/rest_api/pings/index.ts b/x-pack/plugins/uptime/server/rest_api/pings/index.ts index 45cd23dea42ed..0e1cc7baa9ad1 100644 --- a/x-pack/plugins/uptime/server/rest_api/pings/index.ts +++ b/x-pack/plugins/uptime/server/rest_api/pings/index.ts @@ -9,4 +9,4 @@ export { createGetPingsRoute } from './get_pings'; export { createGetPingHistogramRoute } from './get_ping_histogram'; export { createJourneyRoute } from './journeys'; export { createJourneyScreenshotRoute } from './journey_screenshots'; -export { createJourneyScreenshotBlockRoute } from './journey_screenshot_blocks'; +export { createJourneyScreenshotBlocksRoute } from './journey_screenshot_blocks'; diff --git a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.test.ts b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.test.ts new file mode 100644 index 0000000000000..4909e2eb80108 --- /dev/null +++ b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.test.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createJourneyScreenshotBlocksRoute } from './journey_screenshot_blocks'; + +describe('journey screenshot blocks route', () => { + let libs: unknown; + beforeEach(() => { + libs = { + uptimeEsClient: jest.fn(), + request: { + body: { + hashes: ['hash1', 'hash2'], + }, + }, + response: { + badRequest: jest.fn().mockReturnValue({ status: 400, message: 'Bad request.' }), + ok: jest.fn((responseData) => ({ ...responseData, status: 200, message: 'Ok' })), + notFound: jest.fn().mockReturnValue({ status: 404, message: 'Not found.' }), + }, + }; + }); + + it('returns status code 400 if hash list is invalid', async () => { + // @ts-expect-error incomplete implementation for testing + const route = createJourneyScreenshotBlocksRoute(); + + libs = Object.assign({}, libs, { request: { body: { hashes: undefined } } }); + + // @ts-expect-error incomplete implementation for testing + const response = await route.handler(libs); + expect(response.status).toBe(400); + }); + + it('returns status code 404 if result is empty set', async () => { + const route = createJourneyScreenshotBlocksRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshotBlocks: jest.fn().mockReturnValue([]), + }, + }); + + // @ts-expect-error incomplete implementation for testing + expect((await route.handler(libs)).status).toBe(404); + }); + + it('returns blocks for request', async () => { + const responseData = [ + { + id: 'hash1', + synthetics: { + blob: 'blob1', + blob_mime: 'image/jpeg', + }, + }, + { + id: 'hash2', + synthetics: { + blob: 'blob2', + blob_mime: 'image/jpeg', + }, + }, + ]; + const route = createJourneyScreenshotBlocksRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshotBlocks: jest.fn().mockReturnValue(responseData), + }, + }); + + // @ts-expect-error incomplete implementation for testing + const response = await route.handler(libs); + expect(response.status).toBe(200); + // @ts-expect-error incomplete implementation for testing + expect(response.body).toEqual(responseData); + }); +}); diff --git a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.ts b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.ts index 63c2cfe7e2d48..3127c34590ef5 100644 --- a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.ts +++ b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshot_blocks.ts @@ -10,44 +10,38 @@ import { isRight } from 'fp-ts/lib/Either'; import { schema } from '@kbn/config-schema'; import { UMServerLibs } from '../../lib/lib'; import { UMRestApiRouteFactory } from '../types'; -import { ScreenshotBlockDoc } from '../../../common/runtime_types/ping/synthetics'; -export const createJourneyScreenshotBlockRoute: UMRestApiRouteFactory = (libs: UMServerLibs) => ({ - method: 'GET', +function isStringArray(data: unknown): data is string[] { + return isRight(t.array(t.string).decode(data)); +} + +export const createJourneyScreenshotBlocksRoute: UMRestApiRouteFactory = (libs: UMServerLibs) => ({ + method: 'POST', path: '/api/uptime/journey/screenshot/block', validate: { + body: schema.object({ + hashes: schema.arrayOf(schema.string()), + }), query: schema.object({ - hash: schema.oneOf([schema.string(), schema.arrayOf(schema.string())]), _inspect: schema.maybe(schema.boolean()), }), }, handler: async ({ request, response, uptimeEsClient }) => { - const { hash } = request.query; + const { hashes: blockIds } = request.body; + + if (!isStringArray(blockIds)) return response.badRequest(); + + const result = await libs.requests.getJourneyScreenshotBlocks({ + blockIds, + uptimeEsClient, + }); - const decoded = t.union([t.string, t.array(t.string)]).decode(hash); - if (!isRight(decoded)) { - return response.badRequest(); - } - const { right: data } = decoded; - let result: ScreenshotBlockDoc[]; - try { - result = await libs.requests.getJourneyScreenshotBlocks({ - blockIds: Array.isArray(data) ? data : [data], - uptimeEsClient, - }); - } catch (e: unknown) { - return response.custom({ statusCode: 500, body: { message: e } }); - } if (result.length === 0) { return response.notFound(); } + return response.ok({ body: result, - headers: { - // we can cache these blocks with extreme prejudice as they are inherently unchanging - // when queried by ID, since the ID is the hash of the data - 'Cache-Control': 'max-age=604800', - }, }); }, }); diff --git a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.test.ts b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.test.ts new file mode 100644 index 0000000000000..22aef54fa10bd --- /dev/null +++ b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.test.ts @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createJourneyScreenshotRoute } from './journey_screenshots'; + +describe('journey screenshot route', () => { + let libs: unknown; + beforeEach(() => { + libs = { + uptimeEsClient: jest.fn(), + request: { + params: { + checkGroup: 'check_group', + stepIndex: 0, + }, + }, + response: { + ok: jest.fn((responseData) => ({ ...responseData, status: 200, message: 'Ok' })), + notFound: jest.fn().mockReturnValue({ status: 404, message: 'Not found.' }), + }, + }; + }); + + it('will 404 for missing screenshot', async () => { + const route = createJourneyScreenshotRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshot: jest.fn(), + }, + }); + + // @ts-expect-error incomplete implementation for testing + expect(await route.handler(libs)).toMatchInlineSnapshot(` + Object { + "message": "Not found.", + "status": 404, + } + `); + }); + + it('returns screenshot ref', async () => { + const mock = { + '@timestamp': '123', + monitor: { + check_group: 'check_group', + }, + screenshot_ref: { + width: 100, + height: 200, + blocks: [{ hash: 'hash', top: 0, left: 0, height: 10, width: 10 }], + }, + synthetics: { + package_version: '1.0.0', + step: { + name: 'a step name', + index: 0, + }, + type: 'step/screenshot_ref', + }, + totalSteps: 3, + }; + + const route = createJourneyScreenshotRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshot: jest.fn().mockReturnValue(mock), + }, + }); + + // @ts-expect-error incomplete implementation for testing + const response = await route.handler(libs); + expect(response.status).toBe(200); + // @ts-expect-error response doesn't match interface for testing + expect(response.headers).toMatchInlineSnapshot(` + Object { + "cache-control": "max-age=600", + "caption-name": "a step name", + "max-steps": "3", + } + `); + // @ts-expect-error response doesn't match interface for testing + expect(response.body.screenshotRef).toEqual(mock); + }); + + it('returns full screenshot blob', async () => { + const mock = { + synthetics: { + blob: 'a blob', + blob_mime: 'image/jpeg', + step: { + name: 'a step name', + }, + type: 'step/screenshot', + }, + totalSteps: 3, + }; + const route = createJourneyScreenshotRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshot: jest.fn().mockReturnValue(mock), + }, + }); + + // @ts-expect-error incomplete implementation for testing + expect(await route.handler(libs)).toMatchInlineSnapshot(` + Object { + "body": Object { + "data": Array [ + 105, + 185, + 104, + ], + "type": "Buffer", + }, + "headers": Object { + "cache-control": "max-age=600", + "caption-name": "a step name", + "content-type": "image/jpeg", + "max-steps": "3", + }, + "message": "Ok", + "status": 200, + } + `); + }); + + it('defaults to png when mime is undefined', async () => { + const mock = { + synthetics: { + blob: 'a blob', + step: { + name: 'a step name', + }, + type: 'step/screenshot', + }, + }; + const route = createJourneyScreenshotRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshot: jest.fn().mockReturnValue(mock), + }, + }); + + // @ts-expect-error incomplete implementation for testing + const response = await route.handler(libs); + + expect(response.status).toBe(200); + // @ts-expect-error incomplete implementation for testing + expect(response.headers['content-type']).toBe('image/png'); + }); + + it('returns 404 for screenshot missing blob', async () => { + const route = createJourneyScreenshotRoute({ + // @ts-expect-error incomplete implementation for testing + requests: { + getJourneyScreenshot: jest.fn().mockReturnValue({ + synthetics: { + step: { + name: 'a step name', + }, + type: 'step/screenshot', + }, + }), + }, + }); + + // @ts-expect-error incomplete implementation for testing + expect(await route.handler(libs)).toMatchInlineSnapshot(` + Object { + "message": "Not found.", + "status": 404, + } + `); + }); +}); diff --git a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts index bd7cf6af4f843..5f0825279ecfa 100644 --- a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts +++ b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts @@ -6,11 +6,7 @@ */ import { schema } from '@kbn/config-schema'; -import { - isRefResult, - isFullScreenshot, - ScreenshotBlockDoc, -} from '../../../common/runtime_types/ping/synthetics'; +import { isRefResult, isFullScreenshot } from '../../../common/runtime_types/ping/synthetics'; import { UMServerLibs } from '../../lib/lib'; import { ScreenshotReturnTypesUnion } from '../../lib/requests/get_journey_screenshot'; import { UMRestApiRouteFactory } from '../types'; @@ -39,22 +35,13 @@ export const createJourneyScreenshotRoute: UMRestApiRouteFactory = (libs: UMServ handler: async ({ uptimeEsClient, request, response }) => { const { checkGroup, stepIndex } = request.params; - let result: ScreenshotReturnTypesUnion | null = null; - try { - result = await libs.requests.getJourneyScreenshot({ - uptimeEsClient, - checkGroup, - stepIndex, - }); - } catch (e) { - return response.customError({ body: { message: e }, statusCode: 500 }); - } - - if (isFullScreenshot(result)) { - if (!result.synthetics.blob) { - return response.notFound(); - } + const result: ScreenshotReturnTypesUnion | null = await libs.requests.getJourneyScreenshot({ + uptimeEsClient, + checkGroup, + stepIndex, + }); + if (isFullScreenshot(result) && typeof result.synthetics?.blob !== 'undefined') { return response.ok({ body: Buffer.from(result.synthetics.blob, 'base64'), headers: { @@ -63,22 +50,11 @@ export const createJourneyScreenshotRoute: UMRestApiRouteFactory = (libs: UMServ }, }); } else if (isRefResult(result)) { - const blockIds = result.screenshot_ref.blocks.map(({ hash }) => hash); - let blocks: ScreenshotBlockDoc[]; - try { - blocks = await libs.requests.getJourneyScreenshotBlocks({ - uptimeEsClient, - blockIds, - }); - } catch (e: unknown) { - return response.custom({ statusCode: 500, body: { message: e } }); - } return response.ok({ body: { screenshotRef: result, - blocks, }, - headers: getSharedHeaders(result.synthetics.step.name, result.totalSteps ?? 0), + headers: getSharedHeaders(result.synthetics.step.name, result.totalSteps), }); } diff --git a/x-pack/test/accessibility/apps/index_lifecycle_management.ts b/x-pack/test/accessibility/apps/index_lifecycle_management.ts index 0daeda5ac61f3..dcd690607c64a 100644 --- a/x-pack/test/accessibility/apps/index_lifecycle_management.ts +++ b/x-pack/test/accessibility/apps/index_lifecycle_management.ts @@ -34,6 +34,8 @@ const POLICY_ALL_PHASES = { }, }; +const indexTemplateName = 'ilm-a11y-test-template'; + export default function ({ getService, getPageObjects }: FtrProviderContext) { const { common, indexLifecycleManagement } = getPageObjects([ 'common', @@ -65,11 +67,25 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Index Lifecycle Management', async () => { before(async () => { await esClient.ilm.putLifecycle({ policy: POLICY_NAME, body: POLICY_ALL_PHASES }); + await esClient.indices.putIndexTemplate({ + name: indexTemplateName, + body: { + template: { + settings: { + lifecycle: { + name: POLICY_NAME, + }, + }, + }, + index_patterns: ['test*'], + }, + }); }); after(async () => { // @ts-expect-error @elastic/elasticsearch DeleteSnapshotLifecycleRequest.policy_id is required await esClient.ilm.deleteLifecycle({ policy: POLICY_NAME }); + await esClient.indices.deleteIndexTemplate({ name: indexTemplateName }); }); beforeEach(async () => { @@ -165,5 +181,19 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await a11y.testAppSnapshot(); }); + + it('Index templates flyout', async () => { + const policyRow = await testSubjects.find(`policyTableRow-${POLICY_NAME}`); + const actionsButton = await policyRow.findByTestSubject('viewIndexTemplates'); + + await actionsButton.click(); + + const flyoutTitleSelector = 'indexTemplatesFlyoutHeader'; + await retry.waitFor('Index templates flyout', async () => { + return testSubjects.isDisplayed(flyoutTitleSelector); + }); + + await a11y.testAppSnapshot(); + }); }); } diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts b/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts index 6f9c0f5fc708f..31d4bd147f526 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts @@ -12,7 +12,7 @@ import { MetricExpressionParams } from '../../../../plugins/infra/server/lib/ale import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { - const client = getService('legacyEs'); + const client = getService('es'); const index = 'test-index'; const getSearchParams = (aggType: string) => ({ @@ -42,11 +42,11 @@ export default function ({ getService }: FtrProviderContext) { '@timestamp', timeframe ); - const result = await client.search({ + const { body: result } = await client.search({ index, body: searchBody, }); - expect(result.error).to.not.be.ok(); + expect(result.hits).to.be.ok(); expect(result.aggregations).to.be.ok(); }); @@ -63,11 +63,11 @@ export default function ({ getService }: FtrProviderContext) { undefined, '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' ); - const result = await client.search({ + const { body: result } = await client.search({ index, body: searchBody, }); - expect(result.error).to.not.be.ok(); + expect(result.hits).to.be.ok(); expect(result.aggregations).to.be.ok(); }); @@ -85,11 +85,11 @@ export default function ({ getService }: FtrProviderContext) { timeframe, 'agent.id' ); - const result = await client.search({ + const { body: result } = await client.search({ index, body: searchBody, }); - expect(result.error).to.not.be.ok(); + expect(result.hits).to.be.ok(); expect(result.aggregations).to.be.ok(); }); @@ -106,11 +106,11 @@ export default function ({ getService }: FtrProviderContext) { 'agent.id', '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' ); - const result = await client.search({ + const { body: result } = await client.search({ index, body: searchBody, }); - expect(result.error).to.not.be.ok(); + expect(result.hits).to.be.ok(); expect(result.aggregations).to.be.ok(); }); diff --git a/x-pack/test/api_integration/apis/monitoring/common/mappings_exist.js b/x-pack/test/api_integration/apis/monitoring/common/mappings_exist.js index 1f1151010cefb..f193e0dbe091a 100644 --- a/x-pack/test/api_integration/apis/monitoring/common/mappings_exist.js +++ b/x-pack/test/api_integration/apis/monitoring/common/mappings_exist.js @@ -14,7 +14,7 @@ import * as beatsMetrics from '../../../../../plugins/monitoring/server/lib/metr import * as apmMetrics from '../../../../../plugins/monitoring/server/lib/metrics/apm/metrics'; export default function ({ getService }) { - const es = getService('legacyEs'); + const es = getService('es'); const metricSets = [ { @@ -49,7 +49,7 @@ export default function ({ getService }) { let mappings; before('load mappings', async () => { - const template = await es.indices.getTemplate({ name: indexTemplate }); + const { body: template } = await es.indices.getTemplate({ name: indexTemplate }); mappings = get(template, [indexTemplate, 'mappings', 'properties']); }); diff --git a/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts b/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts index 9319babc3896a..2ea0410419080 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts @@ -8,9 +8,13 @@ import expect from '@kbn/expect'; import { last, omit, pick, sortBy } from 'lodash'; import { ValuesType } from 'utility-types'; +import { Node, NodeType } from '../../../../../plugins/apm/common/connections'; import { createApmApiSupertest } from '../../../common/apm_api_supertest'; import { roundNumber } from '../../../utils'; -import { ENVIRONMENT_ALL } from '../../../../../plugins/apm/common/environment_filter_values'; +import { + ENVIRONMENT_ALL, + ENVIRONMENT_NOT_DEFINED, +} from '../../../../../plugins/apm/common/environment_filter_values'; import { APIReturnType } from '../../../../../plugins/apm/public/services/rest/createCallApmApi'; import archives from '../../../common/fixtures/es_archiver/archives_metadata'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; @@ -24,6 +28,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { const archiveName = 'apm_8.0.0'; const { start, end } = archives[archiveName]; + function getName(node: Node) { + return node.type === NodeType.service ? node.serviceName : node.backendName; + } + registry.when( 'Service overview dependencies when data is not loaded', { config: 'basic', archives: [] }, @@ -228,16 +236,17 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns opbeans-node as a dependency', () => { const opbeansNode = response.body.serviceDependencies.find( - (item) => item.type === 'service' && item.serviceName === 'opbeans-node' + (item) => getName(item.location) === 'opbeans-node' ); expect(opbeansNode !== undefined).to.be(true); const values = { - latency: roundNumber(opbeansNode?.latency.value), - throughput: roundNumber(opbeansNode?.throughput.value), - errorRate: roundNumber(opbeansNode?.errorRate.value), - ...pick(opbeansNode, 'serviceName', 'type', 'agentName', 'environment', 'impact'), + latency: roundNumber(opbeansNode?.currentStats.latency.value), + throughput: roundNumber(opbeansNode?.currentStats.throughput.value), + errorRate: roundNumber(opbeansNode?.currentStats.errorRate.value), + impact: opbeansNode?.currentStats.impact, + ...pick(opbeansNode?.location, 'serviceName', 'type', 'agentName', 'environment'), }; const count = 4; @@ -246,7 +255,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(values).to.eql({ agentName: 'nodejs', - environment: '', + environment: ENVIRONMENT_NOT_DEFINED.value, serviceName: 'opbeans-node', type: 'service', errorRate: roundNumber(errors / count), @@ -255,8 +264,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { impact: 100, }); - const firstValue = roundNumber(opbeansNode?.latency.timeseries[0].y); - const lastValue = roundNumber(last(opbeansNode?.latency.timeseries)?.y); + const firstValue = roundNumber(opbeansNode?.currentStats.latency.timeseries[0].y); + const lastValue = roundNumber(last(opbeansNode?.currentStats.latency.timeseries)?.y); expect(firstValue).to.be(roundNumber(20 / 3)); expect(lastValue).to.be('1.000'); @@ -264,16 +273,17 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns postgres as an external dependency', () => { const postgres = response.body.serviceDependencies.find( - (item) => item.type === 'external' && item.name === 'postgres' + (item) => getName(item.location) === 'postgres' ); expect(postgres !== undefined).to.be(true); const values = { - latency: roundNumber(postgres?.latency.value), - throughput: roundNumber(postgres?.throughput.value), - errorRate: roundNumber(postgres?.errorRate.value), - ...pick(postgres, 'spanType', 'spanSubtype', 'name', 'impact', 'type'), + latency: roundNumber(postgres?.currentStats.latency.value), + throughput: roundNumber(postgres?.currentStats.throughput.value), + errorRate: roundNumber(postgres?.currentStats.errorRate.value), + impact: postgres?.currentStats.impact, + ...pick(postgres?.location, 'spanType', 'spanSubtype', 'backendName', 'type'), }; const count = 1; @@ -283,8 +293,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(values).to.eql({ spanType: 'external', spanSubtype: 'http', - name: 'postgres', - type: 'external', + backendName: 'postgres', + type: 'backend', errorRate: roundNumber(errors / count), latency: roundNumber(sum / count), throughput: roundNumber(count / ((endTime - startTime) / 1000 / 60)), @@ -325,8 +335,25 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns at least one item', () => { expect(response.body.serviceDependencies.length).to.be.greaterThan(0); + expectSnapshot(response.body.serviceDependencies.length).toMatchInline(`4`); + + const { currentStats, ...firstItem } = sortBy( + response.body.serviceDependencies, + 'currentStats.impact' + ).reverse()[0]; + + expectSnapshot(firstItem.location).toMatchInline(` + Object { + "backendName": "postgresql", + "id": "d4e2a4d33829d41c096c26f8037921cfc7e566b2", + "spanSubtype": "postgresql", + "spanType": "db", + "type": "backend", + } + `); + expectSnapshot( - omit(response.body.serviceDependencies[0], [ + omit(currentStats, [ 'errorRate.timeseries', 'throughput.timeseries', 'latency.timeseries', @@ -340,19 +367,15 @@ export default function ApiTest({ getService }: FtrProviderContext) { "latency": Object { "value": 30177.8418777023, }, - "name": "postgresql", - "spanSubtype": "postgresql", - "spanType": "db", "throughput": Object { "value": 53.9666666666667, }, - "type": "external", } `); }); it('returns the right names', () => { - const names = response.body.serviceDependencies.map((item) => item.name); + const names = response.body.serviceDependencies.map((item) => getName(item.location)); expectSnapshot(names.sort()).toMatchInline(` Array [ "elasticsearch", @@ -365,7 +388,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the right service names', () => { const serviceNames = response.body.serviceDependencies - .map((item) => (item.type === 'service' ? item.serviceName : undefined)) + .map((item) => + item.location.type === NodeType.service ? getName(item.location) : undefined + ) .filter(Boolean); expectSnapshot(serviceNames.sort()).toMatchInline(` @@ -378,8 +403,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the right latency values', () => { const latencyValues = sortBy( response.body.serviceDependencies.map((item) => ({ - name: item.name, - latency: item.latency.value, + name: getName(item.location), + latency: item.currentStats.latency.value, })), 'name' ); @@ -409,8 +434,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the right throughput values', () => { const throughputValues = sortBy( response.body.serviceDependencies.map((item) => ({ - name: item.name, - throughput: item.throughput.value, + name: getName(item.location), + throughput: item.currentStats.throughput.value, })), 'name' ); @@ -440,10 +465,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the right impact values', () => { const impactValues = sortBy( response.body.serviceDependencies.map((item) => ({ - name: item.name, - impact: item.impact, - latency: item.latency.value, - throughput: item.throughput.value, + name: getName(item.location), + impact: item.currentStats.impact, + latency: item.currentStats.latency.value, + throughput: item.currentStats.throughput.value, })), 'name' ); diff --git a/x-pack/test/case_api_integration/security_only/tests/common/cases/reporters/get_reporters.ts b/x-pack/test/case_api_integration/security_only/tests/common/cases/reporters/get_reporters.ts index 4c72dafed053b..f72db1ac1b27e 100644 --- a/x-pack/test/case_api_integration/security_only/tests/common/cases/reporters/get_reporters.ts +++ b/x-pack/test/case_api_integration/security_only/tests/common/cases/reporters/get_reporters.ts @@ -34,7 +34,8 @@ export default ({ getService }: FtrProviderContext): void => { const supertestWithoutAuth = getService('supertestWithoutAuth'); const es = getService('es'); - describe('get_reporters', () => { + // Failing: See https://github.com/elastic/kibana/issues/106658 + describe.skip('get_reporters', () => { afterEach(async () => { await deleteCasesByESQuery(es); }); diff --git a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/server/index.ts b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/server/index.ts index 10846442d1c84..e1cf24521d1b1 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/server/index.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/api_consumer_plugin/server/index.ts @@ -134,7 +134,8 @@ function defineTypeWithMigration(core: CoreSetup, deps: PluginsSet core.savedObjects.registerType({ name: SAVED_OBJECT_WITH_MIGRATION_TYPE, hidden: false, - namespaceType: 'single', + namespaceType: 'multiple-isolated', // in data.json, we simulate that existing objects were created with `namespaceType: 'single'` + convertToMultiNamespaceTypeVersion: '8.0.0', // in this version we convert from a single-namespace type to a "share-capable" multi-namespace isolated type mappings: { properties: { nonEncryptedAttribute: { @@ -199,6 +200,18 @@ function defineTypeWithMigration(core: CoreSetup, deps: PluginsSet }, inputType: typePriorTo790, }), + + // NOTE FOR MAINTAINERS: do not add any more migrations before 8.0.0 unless you regenerate the test data for two of the objects in + // data.json: '362828f0-eef2-11eb-9073-11359682300a' and '36448a90-eef2-11eb-9073-11359682300a. These are used in the test cases 'for + // a saved object that does not need to be migrated before it is converted'. + + // This empty migration is necessary to ensure that the saved object is decrypted with its old descriptor/ and re-encrypted with its + // new descriptor, if necessary. This is included because the saved object is being converted to `namespaceType: 'multiple-isolated'` + // in 8.0.0 (see the `convertToMultiNamespaceTypeVersion` field in the saved object type registration process). + '8.0.0': deps.encryptedSavedObjects.createMigration({ + isMigrationNeededPredicate: (doc): doc is SavedObjectUnsanitizedDoc => true, + migration: (doc) => doc, // no-op + }), }, }); } diff --git a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/es_archiver/encrypted_saved_objects/data.json b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/es_archiver/encrypted_saved_objects/data.json index 88ec54cdf3a54..71ac4dfc974d4 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/fixtures/es_archiver/encrypted_saved_objects/data.json +++ b/x-pack/test/encrypted_saved_objects_api_integration/fixtures/es_archiver/encrypted_saved_objects/data.json @@ -223,6 +223,70 @@ } } +{ + "type": "doc", + "value": { + "id": "custom-space:saved-object-with-migration:a67c6950-eed8-11eb-9a62-032b4e4049d1", + "index": ".kibana_1", + "source": { + "saved-object-with-migration": { + "encryptedAttribute": "BIOBsx5SjLq3ZQdOJv06XeCAMY9ZrYj8K5bcGa5+wpd3TeT2sqln1+9AGblnfxT7LXRI3sLWQ900+wRQzBhJYx8PNKH+Yw+GdeESpu73PFHdWt/52cJKr+b4EPALFc00tIMEDHdT9FyQhqJ7nV8UpwtjcuTp9SA=", + "nonEncryptedAttribute": "elastic" + }, + "type": "saved-object-with-migration", + "references": [], + "namespace": "custom-space", + "migrationVersion": { + "saved-object-with-migration": "7.7.0" + }, + "updated_at": "2021-07-27T12:46:23.881Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "saved-object-with-migration:362828f0-eef2-11eb-9073-11359682300a", + "index": ".kibana_1", + "source": { + "saved-object-with-migration": { + "encryptedAttribute": "wWDAtF/5PkCb5BxjfWyRxoIoHbJXlb5cGAKg9ztZ1Bz9Zwo0/xf2yTa3Gq/CbYrvey/F9FZkZOUk03USPaqa5mfFO8FhORkfmNLQaPhgCIDNd6SbIhN8RYkqWVTYSVgcZrwes+VwiTUZ29mCJprVSHwXdyAOy4g=", + "nonEncryptedAttribute": "elastic-migrated", + "additionalEncryptedAttribute": "mszSQj0+Wv7G6kZJQsqf7CWwjJwwyriMlBcUjSHTLlj+tljbLTb7PI7gR07S9l7BXd3Lquc5PeOJifl2HvnTh8s871d/WdtIvt2K/ggwA2ae9NH6ui8A15cuPlXiGO612qccsIyBzhsftFyWJNuLBApmqeEy7HFe" + }, + "type": "saved-object-with-migration", + "references": [], + "migrationVersion": { + "saved-object-with-migration": "7.9.0" + }, + "updated_at": "2021-07-27T15:49:22.324Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "custom-space:saved-object-with-migration:36448a90-eef2-11eb-9073-11359682300a", + "index": ".kibana_1", + "source": { + "saved-object-with-migration": { + "encryptedAttribute": "33lfpnBI136UfkdcQLzovzBXdUaeDouN0Z32qkVutgZJ5SU60hMtaHWXNkaU9DGy9jtr0ptwm6FCYmZbyDrlGMwyZP2n0PzMhwW9fRcBh7he12Cm1mImWTrxgYoRtc1MX20/orbINx5VnuNl1Ide7htAm1oPRjM=", + "nonEncryptedAttribute": "elastic-migrated", + "additionalEncryptedAttribute": "e2rsxBijtMGcdw7A+WAWJNlLOhQCZnEP1sdcHxVO5aQouiUVeI1OTFcOY3h/+iZBlSGvZdGRURgimrSNc0HRicemZx3o4v1gVw0JX3RRatzdl02v3GJoFzBWfQGyf3xhNNWmkweGJrFQqr2kfdKjIHbdVmMt4LZj" + }, + "type": "saved-object-with-migration", + "references": [], + "namespace": "custom-space", + "migrationVersion": { + "saved-object-with-migration": "7.9.0" + }, + "updated_at": "2021-07-27T15:49:22.509Z" + } + } +} + { "type": "doc", "value": { @@ -367,4 +431,4 @@ "updated_at": "2020-06-17T16:29:27.563Z" } } -} \ No newline at end of file +} diff --git a/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts b/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts index 0b01f4f385da6..311228424afe3 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts @@ -527,20 +527,103 @@ export default function ({ getService }: FtrProviderContext) { ); }); - it('migrates unencrypted fields on saved objects', async () => { - const { body: decryptedResponse } = await supertest - .get( - `/api/saved_objects/get-decrypted-as-internal-user/saved-object-with-migration/74f3e6d7-b7bb-477d-ac28-92ee22728e6e` - ) - .expect(200); + function getGetApiUrl({ objectId, spaceId }: { objectId: string; spaceId?: string }) { + const spacePrefix = spaceId ? `/s/${spaceId}` : ''; + return `${spacePrefix}/api/saved_objects/get-decrypted-as-internal-user/saved-object-with-migration/${objectId}`; + } + + // For brevity, each encrypted saved object has the same decrypted attributes after migrations/conversion. + // An assertion based on this ensures all encrypted fields can still be decrypted after migrations/conversion have been applied. + const expectedDecryptedAttributes = { + encryptedAttribute: 'this is my secret api key', + nonEncryptedAttribute: 'elastic-migrated', // this field was migrated in 7.8.0 + additionalEncryptedAttribute: 'elastic-migrated-encrypted', // this field was added in 7.9.0 + }; + + // In these test cases, we simulate a scenario where some existing objects that are migrated when Kibana starts up. Note that when a + // document migration is triggered, the saved object "convert" transform is also applied by the Core migration algorithm. + describe('handles index migration correctly', () => { + describe('in the default space', () => { + it('for a saved object that needs to be migrated before it is converted', async () => { + const getApiUrl = getGetApiUrl({ objectId: '74f3e6d7-b7bb-477d-ac28-92ee22728e6e' }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); + }); + + it('for a saved object that does not need to be migrated before it is converted', async () => { + const getApiUrl = getGetApiUrl({ objectId: '362828f0-eef2-11eb-9073-11359682300a' }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); + }); + }); + + describe('in a custom space', () => { + const spaceId = 'custom-space'; + + it('for a saved object that needs to be migrated before it is converted', async () => { + const getApiUrl = getGetApiUrl({ + objectId: 'a98e22f8-530e-5d69-baf7-97526796f3a6', // This ID is not found in the data.json file, it is dynamically generated when the object is converted; the original ID is a67c6950-eed8-11eb-9a62-032b4e4049d1 + spaceId, + }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); + }); + + it('for a saved object that does not need to be migrated before it is converted', async () => { + const getApiUrl = getGetApiUrl({ + objectId: '41395c74-da7a-5679-9535-412d550a6cf7', // This ID is not found in the data.json file, it is dynamically generated when the object is converted; the original ID is 36448a90-eef2-11eb-9073-11359682300a + spaceId, + }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); + }); + }); + }); + + // In these test cases, we simulate a scenario where new objects are migrated upon creation. This happens because an outdated + // `migrationVersion` field is included below. Note that when a document migration is triggered, the saved object "convert" transform + // is *not* applied by the Core migration algorithm. + describe('handles document migration correctly', () => { + function getCreateApiUrl({ spaceId }: { spaceId?: string } = {}) { + const spacePrefix = spaceId ? `/s/${spaceId}` : ''; + return `${spacePrefix}/api/saved_objects/saved-object-with-migration`; + } + + const objectToCreate = { + attributes: { + encryptedAttribute: 'this is my secret api key', + nonEncryptedAttribute: 'elastic', + }, + migrationVersion: { 'saved-object-with-migration': '7.7.0' }, + }; + + it('in the default space', async () => { + const createApiUrl = getCreateApiUrl(); + const { body: savedObject } = await supertest + .post(createApiUrl) + .set('kbn-xsrf', 'xxx') + .send(objectToCreate) + .expect(200); + const { id: objectId } = savedObject; + + const getApiUrl = getGetApiUrl({ objectId }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); + }); + + it('in a custom space', async () => { + const spaceId = 'custom-space'; + const createApiUrl = getCreateApiUrl({ spaceId }); + const { body: savedObject } = await supertest + .post(createApiUrl) + .set('kbn-xsrf', 'xxx') + .send(objectToCreate) + .expect(200); + const { id: objectId } = savedObject; - expect(decryptedResponse.attributes).to.eql({ - // ensures the encrypted field can still be decrypted after the migration - encryptedAttribute: 'this is my secret api key', - // ensures the non-encrypted field has been migrated in 7.8.0 - nonEncryptedAttribute: 'elastic-migrated', - // ensures the non-encrypted field has been migrated into a new encrypted field in 7.9.0 - additionalEncryptedAttribute: 'elastic-migrated-encrypted', + const getApiUrl = getGetApiUrl({ objectId, spaceId }); + const { body: decryptedResponse } = await supertest.get(getApiUrl).expect(200); + expect(decryptedResponse.attributes).to.eql(expectedDecryptedAttributes); }); }); }); diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts index 182838f21dbda..06130775ec3cb 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts @@ -93,6 +93,7 @@ export default function (providerContext: FtrProviderContext) { delete packageInfoRes.body.response.savedObject.version; delete packageInfoRes.body.response.savedObject.updated_at; delete packageInfoRes.body.response.savedObject.coreMigrationVersion; + delete packageInfoRes.body.response.savedObject.migrationVersion; expectSnapshot(packageInfoRes.body.response).toMatch(); }); diff --git a/x-pack/test/functional/apps/dashboard/index.ts b/x-pack/test/functional/apps/dashboard/index.ts index d5aded01fce7b..5979ae378c22b 100644 --- a/x-pack/test/functional/apps/dashboard/index.ts +++ b/x-pack/test/functional/apps/dashboard/index.ts @@ -21,6 +21,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./dashboard_maps_by_value')); loadTestFile(require.resolve('./migration_smoke_tests/lens_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/visualize_migration_smoke_test')); loadTestFile(require.resolve('./migration_smoke_tests/tsvb_migration_smoke_test')); }); } diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson b/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson new file mode 100644 index 0000000000000..9b7ce6ffdd999 --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson @@ -0,0 +1,7 @@ +{"attributes":{"fieldAttrs":"{}","fields":"[]","runtimeFieldMap":"{}","title":"shakespeare"},"coreMigrationVersion":"7.12.1","id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"type":"index-pattern","updated_at":"2021-07-16T18:56:14.524Z","version":"WzM4LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Speaker Count (Area Chart By-Ref)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Speaker Count (Area Chart By-Ref)\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"customLabel\":\"Line Count\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"speaker\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Speaker\"},\"schema\":\"segment\"}],\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Line Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Line Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{}}}"},"coreMigrationVersion":"7.12.1","id":"9f90fae0-e66b-11eb-86e8-1ffd09dc5582","migrationVersion":{"visualization":"7.12.0"},"references":[{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-07-19T15:32:03.822Z","version":"WzU0NSwxXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Tag Cloud","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Tag Cloud\",\"type\":\"tagcloud\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"text_entry.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true}}"},"coreMigrationVersion":"7.12.1","id":"954e2df0-e66b-11eb-86e8-1ffd09dc5582","migrationVersion":{"visualization":"7.12.0"},"references":[{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-07-16T19:25:30.580Z","version":"WzIwMSwxXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Unique Speakers by Play (Pie chart By-Ref)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Unique Speakers by Play (Pie chart By-Ref)\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"params\":{\"field\":\"speaker\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"play_name\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}]}"},"coreMigrationVersion":"7.12.1","id":"6b818220-e66f-11eb-86e8-1ffd09dc5582","migrationVersion":{"visualization":"7.12.0"},"references":[{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-07-16T19:52:58.437Z","version":"WzMxMiwxXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"speaker : \\\"HAMLET\\\" \",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Hamlet Speaking Overtime (Area chart By-Ref)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Hamlet Speaking Overtime (Area chart By-Ref)\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"speech_number\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}]}"},"coreMigrationVersion":"7.12.1","id":"3b53b990-e8a6-11eb-86e8-1ffd09dc5582","migrationVersion":{"visualization":"7.12.0"},"references":[{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-07-19T15:30:22.251Z","version":"WzUxMSwxXQ=="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.12.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"b05dcb4e-d866-43cd-a6af-d26def3f6231\"},\"panelIndex\":\"b05dcb4e-d866-43cd-a6af-d26def3f6231\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Line Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Line Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{}},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"customLabel\":\"Line Count\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"speaker\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Speaker\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"7e9d4c70-e667-11eb-86e8-1ffd09dc5582\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Speaker Count (Area Chart By-Value)\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"52747d95-33a3-4c36-b870-4a23f3e4dfec\"},\"panelIndex\":\"52747d95-33a3-4c36-b870-4a23f3e4dfec\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"d7df311d-e0cf-45f2-82cf-80b5a891fa9a\"},\"panelIndex\":\"d7df311d-e0cf-45f2-82cf-80b5a891fa9a\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"Word Cloud\",\"description\":\"\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"text_entry.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"7e9d4c70-e667-11eb-86e8-1ffd09dc5582\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Words (Tag Cloud By-Ref)\",\"panelRefName\":\"panel_2\"},{\"version\":\"7.12.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"ab307583-e63e-41fe-adc6-5be5f9b8b053\"},\"panelIndex\":\"ab307583-e63e-41fe-adc6-5be5f9b8b053\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"text_entry.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"7e9d4c70-e667-11eb-86e8-1ffd09dc5582\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Words (Tag Cloud By-Value)\"},{\"version\":\"7.12.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"d6be9fb1-7f48-4175-a29a-fb80420cceb9\"},\"panelIndex\":\"d6be9fb1-7f48-4175-a29a-fb80420cceb9\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"params\":{\"field\":\"speaker\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"play_name\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"7e9d4c70-e667-11eb-86e8-1ffd09dc5582\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"hidePanelTitles\":false,\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"b8203dae-afe5-4d64-9c13-8ad62206b8e1\",\"triggers\":[\"VALUE_CLICK_TRIGGER\"],\"action\":{\"name\":\"Shakespeare Search\",\"config\":{\"url\":{\"template\":\"https://shakespeare.folger.edu/search/?search_text={{event.value}}\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}}},\"title\":\"Unique Speakers by Play (Pie chart By-Value)\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"5098cff8-0d4f-4a71-8d1b-18d19a018b1f\"},\"panelIndex\":\"5098cff8-0d4f-4a71-8d1b-18d19a018b1f\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"910c4965-8781-49b9-9d6d-18ea8241a96a\",\"triggers\":[\"VALUE_CLICK_TRIGGER\"],\"action\":{\"name\":\"Shakespeare Search\",\"config\":{\"url\":{\"template\":\"https://shakespeare.folger.edu/search/?search_text={{event.value}}\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.12.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"2fc385e6-dfe5-49d6-8302-62c17d7a50a4\"},\"panelIndex\":\"2fc385e6-dfe5-49d6-8302-62c17d7a50a4\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{}},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"speech_number\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"7e9d4c70-e667-11eb-86e8-1ffd09dc5582\",\"query\":{\"query\":\"speaker : \\\"HAMLET\\\" \",\"language\":\"kuery\"},\"filter\":[]}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Hamlet Speaking Overtime (Area chart By-Value)\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"964c5ffe-aae3-40b1-8240-14c5a218bbe2\"},\"panelIndex\":\"964c5ffe-aae3-40b1-8240-14c5a218bbe2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"}]","timeRestore":false,"title":"[7.12.1] Visualize Test Dashboard","version":1},"coreMigrationVersion":"7.12.1","id":"8a8f5a90-e668-11eb-86e8-1ffd09dc5582","migrationVersion":{"dashboard":"7.11.0"},"references":[{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"7e9d4c70-e667-11eb-86e8-1ffd09dc5582","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"9f90fae0-e66b-11eb-86e8-1ffd09dc5582","name":"panel_1","type":"visualization"},{"id":"954e2df0-e66b-11eb-86e8-1ffd09dc5582","name":"panel_2","type":"visualization"},{"id":"6b818220-e66f-11eb-86e8-1ffd09dc5582","name":"panel_5","type":"visualization"},{"id":"3b53b990-e8a6-11eb-86e8-1ffd09dc5582","name":"panel_7","type":"visualization"}],"type":"dashboard","updated_at":"2021-07-19T15:49:46.191Z","version":"WzU4NywxXQ=="} +{"exportedCount":6,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts b/x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts new file mode 100644 index 0000000000000..d3d6ca46cd227 --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* This test is importing saved objects from 7.13.0 to 8.0 and the backported version + * will import from 6.8.x to 7.x.x + */ + +import expect from '@kbn/expect'; +import path from 'path'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const testSubjects = getService('testSubjects'); + const dashboardPanelActions = getService('dashboardPanelActions'); + + const PageObjects = getPageObjects(['common', 'settings', 'header', 'savedObjects', 'dashboard']); + + describe('Export import saved objects between versions', () => { + before(async () => { + await esArchiver.loadIfNeeded( + 'x-pack/test/functional/es_archives/getting_started/shakespeare' + ); + await kibanaServer.uiSettings.replace({}); + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaSavedObjects(); + await PageObjects.savedObjects.importFile( + path.join(__dirname, 'exports', 'visualize_dashboard_migration_test_7_12_1.ndjson') + ); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/getting_started/shakespeare'); + await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); + }); + + it('should be able to import dashboard with various Visualize panels from 7.12.1', async () => { + // this will catch cases where there is an error in the migrations. + await PageObjects.savedObjects.checkImportSucceeded(); + await PageObjects.savedObjects.clickImportDone(); + }); + + it('should render all panels on the dashboard', async () => { + await PageObjects.common.navigateToApp('dashboard'); + await PageObjects.dashboard.loadSavedDashboard('[7.12.1] Visualize Test Dashboard'); + + // dashboard should load properly + await PageObjects.dashboard.expectOnDashboard('[7.12.1] Visualize Test Dashboard'); + await PageObjects.dashboard.waitForRenderComplete(); + + // There should be 0 error embeddables on the dashboard + const errorEmbeddables = await testSubjects.findAll('embeddableStackError'); + expect(errorEmbeddables.length).to.be(0); + }); + + it('should show the edit action for all panels', async () => { + await PageObjects.dashboard.switchToEditMode(); + + // All panels should be editable. This will catch cases where an error does not create an error embeddable. + const panelTitles = await PageObjects.dashboard.getPanelTitles(); + for (const title of panelTitles) { + await dashboardPanelActions.expectExistsEditPanelAction(title); + } + }); + + it('should retain all panel drilldowns from 7.12.1', async () => { + // Both panels configured with drilldowns in 7.12.1 should still have drilldowns. + const totalPanels = await PageObjects.dashboard.getPanelCount(); + let panelsWithDrilldowns = 0; + for (let panelIndex = 0; panelIndex < totalPanels; panelIndex++) { + if ((await PageObjects.dashboard.getPanelDrilldownCount(panelIndex)) === 1) { + panelsWithDrilldowns++; + } + } + expect(panelsWithDrilldowns).to.be(2); + }); + }); +} diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index bd70a50724a9c..c51e2968baee0 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -52,13 +52,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.indexLifecycleManagement.increasePolicyListPageSize(); - const allPolicies = await pageObjects.indexLifecycleManagement.getPolicyList(); + const createdPolicy = await pageObjects.indexLifecycleManagement.getPolicyRow(policyName); - const filteredPolicies = allPolicies.filter(function (policy) { - return policy.name === policyName; - }); - - expect(filteredPolicies.length).to.be(1); + expect(createdPolicy.length).to.be(1); }); }); }; diff --git a/x-pack/test/functional/apps/reporting_management/report_listing.ts b/x-pack/test/functional/apps/reporting_management/report_listing.ts index 0b1fce3700986..eb2e339e9be66 100644 --- a/x-pack/test/functional/apps/reporting_management/report_listing.ts +++ b/x-pack/test/functional/apps/reporting_management/report_listing.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import { REPORT_TABLE_ID } from '../../../../plugins/reporting/common/constants'; import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ getPageObjects, getService }: FtrProviderContext) => { @@ -37,7 +38,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // to reset the data after deletion testing await esArchiver.load('x-pack/test/functional/es_archives/reporting/archived_reports'); await pageObjects.common.navigateToApp('reporting'); - await testSubjects.existOrFail('reportJobListing', { timeout: 200000 }); + await testSubjects.existOrFail(REPORT_TABLE_ID, { timeout: 200000 }); }); after(async () => { @@ -52,7 +53,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('Confirm single report deletion works', async () => { log.debug('Checking for reports.'); await retry.try(async () => { - await testSubjects.click('checkboxSelectRow-k9a9xlwl0gpe1457b10rraq3'); + await testSubjects.click('checkboxSelectRow-krb7arhe164k0763b50bjm29'); }); const deleteButton = await testSubjects.find('deleteReportButton'); await retry.waitFor('delete button to become enabled', async () => { @@ -62,7 +63,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.exists('confirmModalBodyText'); await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - await testSubjects.waitForDeleted('checkboxSelectRow-k9a9xlwl0gpe1457b10rraq3'); + await testSubjects.waitForDeleted('checkboxSelectRow-krb7arhe164k0763b50bjm29'); }); }); @@ -71,10 +72,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const previousButton = await testSubjects.find('pagination-button-previous'); expect(await previousButton.getAttribute('disabled')).to.be('true'); - await testSubjects.find('checkboxSelectRow-k9a9xlwl0gpe1457b10rraq3'); // find first row of page 1 + await testSubjects.find('checkboxSelectRow-krb7arhe164k0763b50bjm29'); // find first row of page 1 await testSubjects.click('pagination-button-1'); // click page 2 - await testSubjects.find('checkboxSelectRow-k9a9uc4x0gpe1457b16wthc8'); // wait for first row of page 2 + await testSubjects.find('checkboxSelectRow-kraz0qle154g0763b569zz83'); // wait for first row of page 2 await testSubjects.click('pagination-button-2'); // click page 3 await testSubjects.find('checkboxSelectRow-k9a9p1840gpe1457b1ghfxw5'); // wait for first row of page 3 @@ -82,5 +83,73 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // previous CAN be clicked expect(await previousButton.getAttribute('disabled')).to.be(null); }); + + it('Displays types of report jobs', async () => { + const list = await pageObjects.reporting.getManagementList(); + expectSnapshot(list).toMatchInline(` + Array [ + Object { + "actions": "", + "createdAt": "2021-07-19 @ 10:29 PMtest_user", + "report": "Automated reportsearch", + "status": "Completed at 2021-07-19 @ 10:29 PMSee report info for warnings.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:47 PMtest_user", + "report": "Discover search [2021-07-19T11:47:35.995-07:00]search", + "status": "Completed at 2021-07-19 @ 06:47 PM", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:46 PMtest_user", + "report": "Discover search [2021-07-19T11:46:00.132-07:00]search", + "status": "Completed at 2021-07-19 @ 06:46 PMSee report info for warnings.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:44 PMtest_user", + "report": "Discover search [2021-07-19T11:44:48.670-07:00]search", + "status": "Completed at 2021-07-19 @ 06:44 PMSee report info for warnings.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:41 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Pending at 2021-07-19 @ 06:41 PMWaiting for job to be processed.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:41 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Failed at 2021-07-19 @ 06:43 PMSee report info for error details.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:41 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Completed at 2021-07-19 @ 06:41 PMSee report info for warnings.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:38 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Completed at 2021-07-19 @ 06:39 PMSee report info for warnings.", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:38 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Completed at 2021-07-19 @ 06:39 PM", + }, + Object { + "actions": "", + "createdAt": "2021-07-19 @ 06:38 PMtest_user", + "report": "[Flights] Global Flight Dashboarddashboard", + "status": "Completed at 2021-07-19 @ 06:38 PM", + }, + ] + `); + }); }); }; diff --git a/x-pack/test/functional/apps/security/field_level_security.js b/x-pack/test/functional/apps/security/field_level_security.js index f58e6837b9441..1f8ecb0df202c 100644 --- a/x-pack/test/functional/apps/security/field_level_security.js +++ b/x-pack/test/functional/apps/security/field_level_security.js @@ -14,11 +14,14 @@ export default function ({ getService, getPageObjects }) { const retry = getService('retry'); const log = getService('log'); const PageObjects = getPageObjects(['security', 'settings', 'common', 'discover', 'header']); + const kibanaServer = getService('kibanaServer'); describe('field_level_security', () => { before('initialize tests', async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/security/flstest/data'); //( data) - await esArchiver.load('x-pack/test/functional/es_archives/security/flstest/kibana'); //(savedobject) + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/security/flstest/index_pattern' + ); await browser.setWindowSize(1600, 1000); }); @@ -125,6 +128,9 @@ export default function ({ getService, getPageObjects }) { after(async function () { await PageObjects.security.forceLogout(); + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/security/flstest/index_pattern' + ); }); }); } diff --git a/x-pack/test/functional/apps/transform/creation_index_pattern.ts b/x-pack/test/functional/apps/transform/creation_index_pattern.ts index d8867527ba2ac..a6b3e8e41be99 100644 --- a/x-pack/test/functional/apps/transform/creation_index_pattern.ts +++ b/x-pack/test/functional/apps/transform/creation_index_pattern.ts @@ -578,6 +578,7 @@ export default function ({ getService }: FtrProviderContext) { await transform.table.assertTransformRowFields(testData.transformId, { id: testData.transformId, description: testData.transformDescription, + type: testData.type, status: testData.expected.row.status, mode: testData.expected.row.mode, progress: testData.expected.row.progress, diff --git a/x-pack/test/functional/apps/transform/creation_saved_search.ts b/x-pack/test/functional/apps/transform/creation_saved_search.ts index e5944c7f12578..b79bef82267d7 100644 --- a/x-pack/test/functional/apps/transform/creation_saved_search.ts +++ b/x-pack/test/functional/apps/transform/creation_saved_search.ts @@ -279,6 +279,7 @@ export default function ({ getService }: FtrProviderContext) { await transform.table.assertTransformRowFields(testData.transformId, { id: testData.transformId, description: testData.transformDescription, + type: testData.type, status: testData.expected.row.status, mode: testData.expected.row.mode, progress: testData.expected.row.progress, diff --git a/x-pack/test/functional/apps/transform/deleting.ts b/x-pack/test/functional/apps/transform/deleting.ts index 68530c586b6e2..c86171cdb1d6f 100644 --- a/x-pack/test/functional/apps/transform/deleting.ts +++ b/x-pack/test/functional/apps/transform/deleting.ts @@ -24,6 +24,7 @@ export default function ({ getService }: FtrProviderContext) { expected: { row: { status: TRANSFORM_STATE.STOPPED, + type: 'pivot', mode: 'batch', progress: 100, }, @@ -35,6 +36,7 @@ export default function ({ getService }: FtrProviderContext) { expected: { row: { status: TRANSFORM_STATE.STOPPED, + type: 'pivot', mode: 'continuous', progress: undefined, }, @@ -50,6 +52,7 @@ export default function ({ getService }: FtrProviderContext) { messageText: 'updated transform.', row: { status: TRANSFORM_STATE.STOPPED, + type: 'latest', mode: 'batch', progress: 100, }, @@ -106,6 +109,7 @@ export default function ({ getService }: FtrProviderContext) { await transform.table.assertTransformRowFields(testData.originalConfig.id, { id: testData.originalConfig.id, description: testData.originalConfig.description, + type: testData.expected.row.type, status: testData.expected.row.status, mode: testData.expected.row.mode, progress: testData.expected.row.progress, diff --git a/x-pack/test/functional/apps/transform/editing.ts b/x-pack/test/functional/apps/transform/editing.ts index 01f93d9e8c0a8..993c239a04304 100644 --- a/x-pack/test/functional/apps/transform/editing.ts +++ b/x-pack/test/functional/apps/transform/editing.ts @@ -70,6 +70,7 @@ export default function ({ getService }: FtrProviderContext) { messageText: 'updated transform.', row: { status: TRANSFORM_STATE.STOPPED, + type: 'pivot', mode: 'batch', progress: '100', }, @@ -85,6 +86,7 @@ export default function ({ getService }: FtrProviderContext) { messageText: 'updated transform.', row: { status: TRANSFORM_STATE.STOPPED, + type: 'latest', mode: 'batch', progress: '100', }, @@ -170,6 +172,7 @@ export default function ({ getService }: FtrProviderContext) { await transform.table.assertTransformRowFields(testData.originalConfig.id, { id: testData.originalConfig.id, description: testData.transformDescription, + type: testData.expected.row.type, status: testData.expected.row.status, mode: testData.expected.row.mode, progress: testData.expected.row.progress, diff --git a/x-pack/test/functional/apps/transform/permissions/full_transform_access.ts b/x-pack/test/functional/apps/transform/permissions/full_transform_access.ts index 3bced4fca9b40..d50943fad991a 100644 --- a/x-pack/test/functional/apps/transform/permissions/full_transform_access.ts +++ b/x-pack/test/functional/apps/transform/permissions/full_transform_access.ts @@ -13,8 +13,7 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const transform = getService('transform'); - // FLAKY: https://github.com/elastic/kibana/issues/107043 - describe.skip('for user with full transform access', function () { + describe('for user with full transform access', function () { describe('with no data loaded', function () { before(async () => { await transform.securityUI.loginAsTransformPowerUser(); diff --git a/x-pack/test/functional/apps/transform/permissions/read_transform_access.ts b/x-pack/test/functional/apps/transform/permissions/read_transform_access.ts index 5634ed4736e4d..6a04d33ff152d 100644 --- a/x-pack/test/functional/apps/transform/permissions/read_transform_access.ts +++ b/x-pack/test/functional/apps/transform/permissions/read_transform_access.ts @@ -13,8 +13,7 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const transform = getService('transform'); - // FLAKY: https://github.com/elastic/kibana/issues/107043 - describe.skip('for user with full transform access', function () { + describe('for user with read only transform access', function () { describe('with no data loaded', function () { before(async () => { await transform.securityUI.loginAsTransformViewer(); diff --git a/x-pack/test/functional/es_archives/reporting/archived_reports/data.json.gz b/x-pack/test/functional/es_archives/reporting/archived_reports/data.json.gz index 34a30bd84a592..22423aa1fc99f 100644 Binary files a/x-pack/test/functional/es_archives/reporting/archived_reports/data.json.gz and b/x-pack/test/functional/es_archives/reporting/archived_reports/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/reporting/archived_reports/mappings.json b/x-pack/test/functional/es_archives/reporting/archived_reports/mappings.json index 3c3225a70d47f..b2363174e92ec 100644 --- a/x-pack/test/functional/es_archives/reporting/archived_reports/mappings.json +++ b/x-pack/test/functional/es_archives/reporting/archived_reports/mappings.json @@ -4,6 +4,561 @@ "aliases": { }, "index": ".reporting-2020.04.19", + "mappings": { + "properties": { + "attempts": { + "type": "long" + }, + "browser_type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "completed_at": { + "type": "date" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "jobtype": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "kibana_id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "kibana_name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "max_attempts": { + "type": "long" + }, + "meta": { + "properties": { + "layout": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "objectType": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "output": { + "properties": { + "content": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "content_type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "csv_contains_formulas": { + "type": "boolean" + }, + "max_size_reached": { + "type": "boolean" + }, + "size": { + "type": "long" + } + } + }, + "payload": { + "properties": { + "basePath": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "browserTimezone": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "fields": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "forceNow": { + "type": "date" + }, + "headers": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "indexPatternId": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "indexPatternSavedObject": { + "properties": { + "attributes": { + "properties": { + "fieldFormatMap": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "fields": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "timeFieldName": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "title": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "migrationVersion": { + "properties": { + "index-pattern": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "updated_at": { + "type": "date" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "layout": { + "properties": { + "dimensions": { + "properties": { + "height": { + "type": "long" + }, + "width": { + "type": "long" + } + } + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "metaFields": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "objectType": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "relativeUrl": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "relativeUrls": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "searchRequest": { + "properties": { + "body": { + "properties": { + "_source": { + "type": "object" + }, + "docvalue_fields": { + "properties": { + "field": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "format": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "query": { + "properties": { + "bool": { + "properties": { + "filter": { + "properties": { + "match_all": { + "type": "object" + }, + "range": { + "properties": { + "order_date": { + "properties": { + "format": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "gte": { + "type": "date" + }, + "lte": { + "type": "date" + } + } + }, + "timestamp": { + "properties": { + "format": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "gte": { + "type": "date" + }, + "lte": { + "type": "date" + } + } + } + } + } + } + } + } + } + } + }, + "script_fields": { + "properties": { + "hour_of_day": { + "properties": { + "script": { + "properties": { + "lang": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "source": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + } + } + } + } + }, + "sort": { + "properties": { + "order_date": { + "properties": { + "order": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "unmapped_type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "timestamp": { + "properties": { + "order": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "unmapped_type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + } + } + }, + "stored_fields": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "type": "boolean" + } + } + }, + "index": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "title": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "priority": { + "type": "long" + }, + "process_expiration": { + "type": "date" + }, + "started_at": { + "type": "date" + }, + "status": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "timeout": { + "type": "long" + } + } + }, + "settings": { + "index": { + "number_of_replicas": "1", + "number_of_shards": "1" + } + } + } +} + +{ + "type": "index", + "value": { + "aliases": { + }, + "index": ".reporting-2021-07-18", "mappings": { "properties": { "attempts": { @@ -55,6 +610,9 @@ } } }, + "migration_version": { + "type": "keyword" + }, "output": { "properties": { "content": { @@ -72,6 +630,15 @@ }, "size": { "type": "long" + }, + "warnings": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" } } }, @@ -104,4 +671,4 @@ } } } -} \ No newline at end of file +} diff --git a/x-pack/test/functional/es_archives/security/flstest/kibana/data.json b/x-pack/test/functional/es_archives/security/flstest/kibana/data.json deleted file mode 100644 index ad52bd61c2ea5..0000000000000 --- a/x-pack/test/functional/es_archives/security/flstest/kibana/data.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "doc", - "value": { - "id": "index-pattern:845f1970-6853-11e9-a554-c17eedfbe970", - "index": ".kibana", - "source": { - "index-pattern" : { - "title" : "flstest", - "fields" : "[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"customer_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\": \"customer_name\"}}},{\"name\":\"customer_region\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_region.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\": \"customer_region\"}}},{\"name\":\"customer_ssn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_ssn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\": \"customer_ssn\"}}}]" - }, - "type" : "index-pattern", - "references" : [ ], - "migrationVersion" : { - "index-pattern" : "6.5.0" - }, - "updated_at" : "2019-04-26T18:45:54.517Z" - } - } -} diff --git a/x-pack/test/functional/es_archives/security/flstest/kibana/mappings.json b/x-pack/test/functional/es_archives/security/flstest/kibana/mappings.json deleted file mode 100644 index ca97d0505f5b1..0000000000000 --- a/x-pack/test/functional/es_archives/security/flstest/kibana/mappings.json +++ /dev/null @@ -1,413 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": {} - }, - "index": ".kibana_1", - "mappings": { - "dynamic": "strict", - "properties": { - "canvas-workpad": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "id": { - "index": false, - "type": "text" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "typeMeta": { - "type": "keyword" - } - } - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "map": { - "properties": { - "bounds": { - "dynamic": false, - "properties": {} - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "index-pattern": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "namespace": { - "type": "keyword" - }, - "references": { - "type": "nested", - "properties": { - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "id": { - "type": "keyword" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "initials": { - "type": "keyword" - }, - "disabledFeatures": { - "type": "keyword" - }, - "name": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "telemetry": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "number_of_replicas": "0", - "number_of_shards": "1" - } - } - } -} diff --git a/x-pack/test/functional/fixtures/kbn_archiver/security/flstest/index_pattern.json b/x-pack/test/functional/fixtures/kbn_archiver/security/flstest/index_pattern.json new file mode 100644 index 0000000000000..4715eec9ea7cc --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/security/flstest/index_pattern.json @@ -0,0 +1,15 @@ +{ + "attributes": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"customer_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"customer_name\"}}},{\"name\":\"customer_region\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_region.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"customer_region\"}}},{\"name\":\"customer_ssn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"customer_ssn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"customer_ssn\"}}}]", + "title": "flstest" + }, + "coreMigrationVersion": "7.15.0", + "id": "845f1970-6853-11e9-a554-c17eedfbe970", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2019-04-26T18:45:54.517Z", + "version": "WzEsMl0=" +} \ No newline at end of file diff --git a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts index 1d12da202e051..6706579d5c399 100644 --- a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts +++ b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts @@ -4,7 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { map as mapAsync } from 'bluebird'; import { FtrProviderContext } from '../ftr_provider_context'; interface Policy { @@ -83,29 +82,8 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider await testSubjects.click(`tablePagination-100-rows`); }, - async getPolicyList() { - const policies = await testSubjects.findAll('policyTableRow'); - return mapAsync(policies, async (policy) => { - const policyNameElement = await policy.findByTestSubject('policyTableCell-name'); - const policyLinkedIndicesElement = await policy.findByTestSubject( - 'policyTableCell-indices' - ); - const policyVersionElement = await policy.findByTestSubject('policyTableCell-version'); - const policyModifiedDateElement = await policy.findByTestSubject( - 'policyTableCell-modifiedDate' - ); - const policyActionsButtonElement = await policy.findByTestSubject( - 'policyActionsContextMenuButton' - ); - - return { - name: await policyNameElement.getVisibleText(), - indices: await policyLinkedIndicesElement.getVisibleText(), - version: await policyVersionElement.getVisibleText(), - modifiedDate: await policyModifiedDateElement.getVisibleText(), - actionsButton: policyActionsButtonElement, - }; - }); + async getPolicyRow(name: string) { + return await testSubjects.findAll(`policyTableRow-${name}`); }, }; } diff --git a/x-pack/test/functional/page_objects/monitoring_page.ts b/x-pack/test/functional/page_objects/monitoring_page.ts index acd9a443eb7ce..259af2c917f02 100644 --- a/x-pack/test/functional/page_objects/monitoring_page.ts +++ b/x-pack/test/functional/page_objects/monitoring_page.ts @@ -17,7 +17,7 @@ export class MonitoringPageObject extends FtrService { } async closeAlertsModal() { - return this.testSubjects.click('alerts-modal-button'); + return this.testSubjects.click('alerts-modal-remind-later-button'); } async clickBreadcrumb(subj: string) { diff --git a/x-pack/test/functional/page_objects/reporting_page.ts b/x-pack/test/functional/page_objects/reporting_page.ts index 742d41031004b..302e71304869b 100644 --- a/x-pack/test/functional/page_objects/reporting_page.ts +++ b/x-pack/test/functional/page_objects/reporting_page.ts @@ -10,6 +10,7 @@ import { format as formatUrl } from 'url'; import supertestAsPromised from 'supertest-as-promised'; import { FtrService } from '../ftr_provider_context'; +import { REPORT_TABLE_ID, REPORT_TABLE_ROW_ID } from '../../../plugins/reporting/common/constants'; export class ReportingPageObject extends FtrService { private readonly browser = this.ctx.getService('browser'); @@ -157,4 +158,21 @@ export class ReportingPageObject extends FtrService { const toTime = 'Sep 23, 1999 @ 18:31:44.000'; await this.timePicker.setAbsoluteRange(fromTime, toTime); } + + async getManagementList() { + const table = await this.testSubjects.find(REPORT_TABLE_ID); + const allRows = await table.findAllByTestSubject(REPORT_TABLE_ROW_ID); + + return await Promise.all( + allRows.map(async (row) => { + const $ = await row.parseDomContent(); + return { + report: $.findTestSubject('reportingListItemObjectTitle').text().trim(), + createdAt: $.findTestSubject('reportJobCreatedAt').text().trim(), + status: $.findTestSubject('reportJobStatus').text().trim(), + actions: $.findTestSubject('reportJobActions').text().trim(), + }; + }) + ); + } } diff --git a/x-pack/test/functional/page_objects/synthetics_integration_page.ts b/x-pack/test/functional/page_objects/synthetics_integration_page.ts index 81ddaf06febd9..daebb1d2a2f99 100644 --- a/x-pack/test/functional/page_objects/synthetics_integration_page.ts +++ b/x-pack/test/functional/page_objects/synthetics_integration_page.ts @@ -178,7 +178,7 @@ export function SyntheticsIntegrationPageProvider({ */ async configureHeaders(testSubj: string, headers: Record) { const headersContainer = await testSubjects.find(testSubj); - const addHeaderButton = await headersContainer.findByCssSelector('button'); + const addHeaderButton = await testSubjects.find(`${testSubj}__button`); const keys = Object.keys(headers); await Promise.all( diff --git a/x-pack/test/functional/services/monitoring/cluster_list.js b/x-pack/test/functional/services/monitoring/cluster_list.js index f63e7b6cd125e..bcf0e18ef4dd7 100644 --- a/x-pack/test/functional/services/monitoring/cluster_list.js +++ b/x-pack/test/functional/services/monitoring/cluster_list.js @@ -15,7 +15,7 @@ export function MonitoringClusterListProvider({ getService, getPageObjects }) { const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`; const SUBJ_CLUSTER_ROW_PREFIX = `${SUBJ_TABLE_CONTAINER} > clusterRow_`; - const ALERTS_MODAL_BUTTON = 'alerts-modal-button'; + const ALERTS_MODAL_BUTTON = 'alerts-modal-remind-later-button'; return new (class ClusterList { async assertDefaults() { diff --git a/x-pack/test/functional/services/monitoring/cluster_overview.js b/x-pack/test/functional/services/monitoring/cluster_overview.js index 5128cbffd34cf..5874606056db9 100644 --- a/x-pack/test/functional/services/monitoring/cluster_overview.js +++ b/x-pack/test/functional/services/monitoring/cluster_overview.js @@ -76,7 +76,7 @@ export function MonitoringClusterOverviewProvider({ getService }) { } closeAlertsModal() { - return testSubjects.click('alerts-modal-button'); + return testSubjects.click('alerts-modal-remind-later-button'); } getEsStatus() { diff --git a/x-pack/test/functional/services/transform/transform_table.ts b/x-pack/test/functional/services/transform/transform_table.ts index 7c4a45fb601ea..9e3ffcdfd8095 100644 --- a/x-pack/test/functional/services/transform/transform_table.ts +++ b/x-pack/test/functional/services/transform/transform_table.ts @@ -37,6 +37,11 @@ export function TransformTableProvider({ getService }: FtrProviderContext) { .find('.euiTableCellContent') .text() .trim(), + type: $tr + .findTestSubject('transformListColumnType') + .find('.euiTableCellContent') + .text() + .trim(), status: $tr .findTestSubject('transformListColumnStatus') .find('.euiTableCellContent') @@ -190,38 +195,54 @@ export function TransformTableProvider({ getService }: FtrProviderContext) { }); } - public async assertTransformExpandedRow() { - await testSubjects.click('transformListRowDetailsToggle'); + public async ensureDetailsOpen() { + await retry.tryForTime(30 * 1000, async () => { + if (!(await testSubjects.exists('transformExpandedRowTabbedContent'))) { + await testSubjects.click('transformListRowDetailsToggle'); + await testSubjects.existOrFail('transformExpandedRowTabbedContent', { timeout: 1000 }); + } + }); + } - // The expanded row should show the details tab content by default - await testSubjects.existOrFail('transformDetailsTab'); - await testSubjects.existOrFail('~transformDetailsTabContent'); + public async ensureDetailsClosed() { + await retry.tryForTime(30 * 1000, async () => { + if (await testSubjects.exists('transformExpandedRowTabbedContent')) { + await testSubjects.click('transformListRowDetailsToggle'); + await testSubjects.missingOrFail('transformExpandedRowTabbedContent', { timeout: 1000 }); + } + }); + } - // Walk through the rest of the tabs and check if the corresponding content shows up - await testSubjects.existOrFail('transformJsonTab'); - await testSubjects.click('transformJsonTab'); - await testSubjects.existOrFail('~transformJsonTabContent'); + public async switchToExpandedRowTab(tabSubject: string, contentSubject: string) { + await retry.tryForTime(30 * 1000, async () => { + await testSubjects.click(tabSubject); + await testSubjects.existOrFail(contentSubject, { timeout: 1000 }); + }); + } - await testSubjects.existOrFail('transformMessagesTab'); - await testSubjects.click('transformMessagesTab'); - await testSubjects.existOrFail('~transformMessagesTabContent'); + public async assertTransformExpandedRow() { + await this.ensureDetailsOpen(); + await retry.tryForTime(30 * 1000, async () => { + // The expanded row should show the details tab content by default + await testSubjects.existOrFail('transformDetailsTab', { timeout: 1000 }); + await testSubjects.existOrFail('~transformDetailsTabContent', { timeout: 1000 }); + }); - await testSubjects.existOrFail('transformPreviewTab'); - await testSubjects.click('transformPreviewTab'); - await testSubjects.existOrFail('~transformPivotPreview'); + // Walk through the rest of the tabs and check if the corresponding content shows up + await this.switchToExpandedRowTab('transformJsonTab', '~transformJsonTabContent'); + await this.switchToExpandedRowTab('transformMessagesTab', '~transformMessagesTabContent'); + await this.switchToExpandedRowTab('transformPreviewTab', '~transformPivotPreview'); } public async assertTransformExpandedRowMessages(expectedText: string) { - await testSubjects.click('transformListRowDetailsToggle'); + await this.ensureDetailsOpen(); // The expanded row should show the details tab content by default await testSubjects.existOrFail('transformDetailsTab'); await testSubjects.existOrFail('~transformDetailsTabContent'); // Click on the messages tab and assert the messages - await testSubjects.existOrFail('transformMessagesTab'); - await testSubjects.click('transformMessagesTab'); - await testSubjects.existOrFail('~transformMessagesTabContent'); + await this.switchToExpandedRowTab('transformMessagesTab', '~transformMessagesTabContent'); await retry.tryForTime(30 * 1000, async () => { const actualText = await testSubjects.getVisibleText('~transformMessagesTabContent'); expect(actualText.toLowerCase()).to.contain( diff --git a/yarn.lock b/yarn.lock index b728458d3a116..2e7d158407e85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2798,6 +2798,10 @@ version "0.0.0" uid "" +"@kbn/field-types@link:bazel-bin/packages/kbn-field-types": + version "0.0.0" + uid "" + "@kbn/i18n@link:bazel-bin/packages/kbn-i18n": version "0.0.0" uid ""