Merge branch 'main' into eui/62.2

This commit is contained in:
Greg Thompson 2022-08-17 13:55:18 -05:00
commit 4e09bdfd31
No known key found for this signature in database
GPG key ID: ED1F695C1077B958
43 changed files with 263 additions and 220 deletions

View file

@ -65,7 +65,7 @@ based on different timestamps.
. To specify your own {data-source} name, click *Show advanced settings*, then enter the name in the *Custom {data-source} ID* field. For example, enter your {es} index alias name.
. Click *Create {data-source}*.
. Click *Save {data-source} to {kib}*.
+
[[reload-fields]] {kib} is now configured to use your {es} data. When a new field is added to an index,
the {data-source} field list is updated
@ -149,4 +149,4 @@ WARNING: Deleting a {data-source} breaks all visualizations, saved searches, and
. Open the main menu, then click *Stack Management > Data Views*.
. Find the {data-source} that you want to delete, and then
click (image:management/index-patterns/images/delete.png[Delete icon]) in the *Actions* column.
click image:management/index-patterns/images/delete.png[Delete icon] in the *Actions* column.

View file

@ -27,13 +27,13 @@ data-type="inline"
Use drag and drop to organize the columns and improve the view of the data.
To reorder columns, do one of the following:
* To move a single column, click its header. In the dropdown menu,
click *Move left* or *Move right*.
* Click *Columns*. In the pop-up, select the column you want to move and drag it to the new location.
* To move multiple columns, click *Columns*.
In the pop-up, drag the column names to their new order.
* Click the header of the column you want to move. In the dropdown menu, click *Move left* or *Move right*.
To resize a column, drag the right edge of the column header until the column is the width that you want.
* To resize a column, drag the right edge of the column header until the column is the width that you want.
Column widths are stored with a saved search. When you visualize saved searches on dashboards, the saved search appears the same as in **Discover**.
@ -104,7 +104,7 @@ You can view the document in two ways. The **Table** view displays the document
The **JSON** (JavaScript Object Notation) view allows you to look at how {es} returns the document.
+
[role="screenshot"]
image::images/document-explorer-expand.png[Expanded view of the document table]
image::images/document-table-expanded.png[Expanded view of the document table]
+
. In the *Table* view, scan through the fields and their values, or search for a field by name.
@ -152,4 +152,4 @@ By default, the document table displays 100 rows per page. To change this number
click *Rows per page*.
[role="screenshot"]
image::images/document-table-rows-per-page.png["Menu with options for setting the number of rows in the document table", width=50%]
image::images/document-table-rows-per-page.png["Menu with options for setting the number of rows in the document table"]

View file

@ -16,7 +16,7 @@ the <<gs-get-data-into-kibana, sample web logs data>>, or you can use your own d
. Open the main menu, and click *Discover*.
. Expand the {data-source} dropdown, and select *kibana_sample_data_logs*.
. Expand the {data-source} dropdown, and select *Kibana Sample Data Logs*.
. If you dont see any results, expand the time range, for example, to *Last 7 days*.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 274 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 226 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 KiB

After

Width:  |  Height:  |  Size: 229 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 KiB

After

Width:  |  Height:  |  Size: 512 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 291 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 273 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 271 KiB

Before After
Before After

View file

@ -10,7 +10,7 @@ the <<gs-get-data-into-kibana, sample flights data set>>, or you can use your ow
. In *Discover*, open the {data-source} dropdown, and select the data that you want to work with.
+
For the sample flights data, set the {data-source} to *kibana_sample_data_flights*.
For the sample flights data, set the {data-source} to *Kibana Sample Data Flights*.
. Run your search. For the sample data, try:
+
@ -32,4 +32,4 @@ image::images/field-sorting-popover.png["Field sorting popover", width=60%]
Your table now sorts documents from most to least relevant.
+
[role="screenshot"]
image::images/discover-search-for-relevance.png["Documents are sorted from most relevant to least relevant.", width=75%]
image::images/discover-search-for-relevance.png["Documents are sorted from most relevant to least relevant."]

View file

@ -286,8 +286,8 @@ in the current data view is used.
The columns that appear by default on the *Discover* page. The default is
`_source`.
[[discover-samplesize]]`discover:sampleSize`::
The number of rows to show in the *Discover* table.
[[discover:enableSql]]`discover:enableSql`::
experimental[] Allows SQL queries for search.
[[discover-max-doc-fields-displayed]]`discover:maxDocFieldsDisplayed`::
Specifies the maximum number of fields to show in the document column of the *Discover* table.
@ -295,11 +295,14 @@ Specifies the maximum number of fields to show in the document column of the *Di
[[discover-modify-columns-on-switch]]`discover:modifyColumnsOnSwitch`::
When enabled, removes the columns that are not in the new data view.
[[discover-sample-size]]`discover:sampleSize`::
Specifies the number of rows to display in the *Discover* table.
[[discover-row-height-option]]`discover:rowHeightOption`::
The number of lines to allow in a row. A value of -1 automatically adjusts the row height to fit the contents. A value of 0 displays the content in a single line.
[[discover-sampleRowsPerPage]]`discover:sampleRowsPerPage`::
Specifies the number of rows to display per page in the *Discover* table.
Limits the number of rows per page in the document table.
[[discover-sample-size]]`discover:sampleSize`::
Sets the maximum number of rows for the entire document table. This is the maximum number of documents fetched from {es}.
[[discover-searchFieldsFromSource]]`discover:searchFieldsFromSource`::
Load fields from the original JSON {ref}/mapping-source-field.html[`_source`].
@ -310,8 +313,12 @@ When disabled, *Discover* loads fields using the {es} search API's
Controls whether a search is executed when *Discover* first loads. This setting
does not have an effect when loading a saved search.
[[discover:showFieldStatistics]]`discover:showFieldStatistics`::
beta[] Enables the Field statistics view. Examine details such as
the minimum and maximum values of a numeric field or a map of a geo field.
[[discover:showMultiFields]]`discover:showMultiFields`::
When enabled, displays multi-fields in the expanded document view.
Controls the display of multi-fields in the expanded document view.
[[discover-sort-defaultorder]]`discover:sort:defaultOrder`::
The default sort direction for time-based data views.
@ -319,9 +326,6 @@ The default sort direction for time-based data views.
[[doctable-hidetimecolumn]]`doc_table:hideTimeColumn`::
Hides the "Time" column in *Discover* and in all saved searches on dashboards.
[[discover:enableSql]]`discover:enableSql`::
When enabled, allows SQL queries for search.
[[doctable-highlight]]`doc_table:highlight`::
Highlights results in *Discover* and saved searches on dashboards. Highlighting
slows requests when working on big documents.
@ -331,6 +335,10 @@ Controls the way the document table looks and works.
To use the new *Document Explorer* instead of the classic view, turn off this option.
The *Document Explorer* offers better data sorting, resizable columns, and a full screen view.
[[truncate-max-height]]`truncate:maxHeight`::
The maximum height that a cell in a table can occupy. To disable truncation, set to 0.
[float]
[[kibana-ml-settings]]
==== Machine Learning

View file

@ -54,7 +54,7 @@ Tell {kib} where to find the data you want to explore, and then specify the time
+
{kib} uses a <<data-views,{data-source}>> to tell it where to find
your {es} data.
To view the ecommerce sample data, open the {data-source} menu, and select **kibana_sample_data_ecommerce**.
To view the ecommerce sample data, open the {data-source} menu, and then select **Kibana Sample Data Ecommerce**.
+
[role="screenshot"]
image::images/discover-data-view.png[How to set the {data-source} in Discover, width=50%]
@ -118,7 +118,7 @@ You can add a runtime field to your {data-source} from inside of **Discover**,
and then use that field for analysis and visualizations,
the same way you do with other fields.
. Open the data view menu, and then click *Add a field to this data view*.
. In the sidebar, click *Add a field*.
. In the *Create field* form, enter `hello` for the name.
@ -191,7 +191,7 @@ and more.
Exclude documents where day of week is not Wednesday:
. Click image:images/add-icon.png[Add icon] to the left of the query bar.
. Click image:images/add-icon.png[Add icon] next to the query bar.
. In the *Add filter* pop-up, set *Field* to *day_of_week*, *Operator* to *is not*, and *Value* to *Wednesday*.
+
[role="screenshot"]
@ -289,7 +289,7 @@ The *Create rule* form is pre-filled with the latest query sent to {es}.
. Click *Save*.
For more about this and other rules provided in {kib} {alert-features}, go to <<alerting-getting-started>>.
For more about this and other rules provided in {alert-features}, go to <<alerting-getting-started>>.
[float]

View file

@ -47,7 +47,7 @@ curl --location --request GET 'http://localhost:5601/api/security/role' \
[IMPORTANT]
============================================================================
API keys are intended for programatic access to {kib} and {es). Do not use API keys to authenticate access via a web browser.
API keys are intended for programmatic access to {kib} and {es}. Do not use API keys to authenticate access via a web browser.
============================================================================
[float]

View file

@ -396,7 +396,7 @@ This type of authentication is usually useful for machine-to-machine interaction
[IMPORTANT]
============================================================================
API keys are intended for programatic access to {kib} and {es). Do not use API keys to authenticate access via a web browser.
API keys are intended for programmatic access to {kib} and {es}. Do not use API keys to authenticate access via a web browser.
============================================================================

View file

@ -539,7 +539,6 @@
"redux-saga": "^1.1.3",
"redux-thunk": "^2.3.0",
"redux-thunks": "^1.0.0",
"regenerator-runtime": "^0.13.3",
"remark-parse": "^8.0.3",
"remark-stringify": "^8.0.3",
"require-in-the-middle": "^5.1.0",
@ -1180,7 +1179,6 @@
"file-loader": "^4.2.0",
"form-data": "^4.0.0",
"geckodriver": "^3.0.2",
"gulp-babel": "^8.0.0",
"gulp-brotli": "^3.0.0",
"gulp-postcss": "^9.0.1",
"gulp-sourcemaps": "2.6.5",
@ -1237,6 +1235,7 @@
"pbf": "3.2.1",
"peggy": "^1.2.0",
"pirates": "^4.0.1",
"piscina": "^3.2.0",
"playwright": "^1.17.1",
"pngjs": "^3.4.0",
"postcss": "^8.4.14",
@ -1265,6 +1264,7 @@
"superagent": "^3.8.2",
"supertest": "^3.1.0",
"supports-color": "^7.0.0",
"svgo": "^2.8.0",
"tape": "^5.0.1",
"tempy": "^0.3.0",
"terser": "^5.14.1",

View file

@ -31,7 +31,7 @@ module.exports = (_, options = {}) => {
// Because of that we should use for that value the same version we install
// in the package.json in order to have the same polyfills between the environment
// and the tests
corejs: '3.21.1',
corejs: '3.23.5',
bugfixes: true,
...(options['@babel/preset-env'] || {}),

View file

@ -18,7 +18,7 @@ module.exports = (_, options = {}) => {
modules: false,
// Please read the explanation for this
// in node_preset.js
corejs: '3.21.1',
corejs: '3.23.5',
bugfixes: true,
},
],

View file

@ -32,11 +32,11 @@ NPM_MODULE_EXTRA_FILES = [
RUNTIME_DEPS = [
"//packages/kbn-babel-preset",
"//packages/kbn-i18n",
"@npm//@babel/runtime",
"@npm//antlr4ts",
"@npm//babel-loader",
"@npm//monaco-editor",
"@npm//raw-loader",
"@npm//regenerator-runtime",
"@npm//rxjs",
]

View file

@ -9,7 +9,7 @@
// This module is intended to be run inside of a webworker
/* eslint-disable @kbn/eslint/module_migration */
import 'regenerator-runtime/runtime';
import '@babel/runtime/regenerator';
// @ts-ignore
import * as worker from 'monaco-editor/esm/vs/editor/editor.worker';
import { monaco } from '../../monaco_imports';

View file

@ -9,7 +9,7 @@
// Please note: this module is intended to be run inside of a webworker.
/* eslint-disable @kbn/eslint/module_migration */
import 'regenerator-runtime/runtime';
import '@babel/runtime/regenerator';
// @ts-ignore
import * as worker from 'monaco-editor/esm/vs/editor/editor.worker';
import { XJsonWorker } from './xjson_worker';

View file

@ -50,7 +50,6 @@ RUNTIME_DEPS = [
"@npm//react-router-dom",
"@npm//react-router",
"@npm//react",
"@npm//regenerator-runtime",
"@npm//rison-node",
"@npm//rxjs",
"@npm//styled-components",
@ -87,7 +86,6 @@ TYPES_DEPS = [
"@npm//react-is",
"@npm//react-router",
"@npm//react-router-dom",
"@npm//regenerator-runtime",
"@npm//rison-node",
"@npm//rxjs",
"@npm//styled-components",

View file

@ -34,7 +34,6 @@ module.exports = (_, argv) => {
'kbn-ui-shared-deps-npm': [
// polyfill code
'core-js/stable',
'regenerator-runtime/runtime',
'whatwg-fetch',
'symbol-observable',
// Parts of node-libs-browser that are used in many places across Kibana
@ -50,23 +49,28 @@ module.exports = (_, argv) => {
* node scripts/find_babel_runtime_helpers_in_use.js
*/
'@babel/runtime/helpers/assertThisInitialized',
'@babel/runtime/helpers/asyncToGenerator',
'@babel/runtime/helpers/classCallCheck',
'@babel/runtime/helpers/classPrivateFieldGet',
'@babel/runtime/helpers/classPrivateFieldSet',
'@babel/runtime/helpers/createClass',
'@babel/runtime/helpers/createForOfIteratorHelper',
'@babel/runtime/helpers/createSuper',
'@babel/runtime/helpers/defineProperty',
'@babel/runtime/helpers/extends',
'@babel/runtime/helpers/inherits',
'@babel/runtime/helpers/inheritsLoose',
'@babel/runtime/helpers/interopRequireDefault',
'@babel/runtime/helpers/interopRequireWildcard',
'@babel/runtime/helpers/objectSpread2',
'@babel/runtime/helpers/objectWithoutProperties',
'@babel/runtime/helpers/objectWithoutPropertiesLoose',
'@babel/runtime/helpers/slicedToArray',
'@babel/runtime/helpers/toArray',
'@babel/runtime/helpers/taggedTemplateLiteralLoose',
'@babel/runtime/helpers/toConsumableArray',
'@babel/runtime/helpers/typeof',
'@babel/runtime/helpers/wrapNativeSuper',
'@babel/runtime/regenerator',
// modules from npm
'@elastic/charts',

View file

@ -7,7 +7,7 @@
*/
require('core-js/stable');
require('regenerator-runtime/runtime');
require('@babel/runtime/regenerator');
if (typeof window.Event === 'object') {
// IE11 doesn't support unknown event types, required by react-use

View file

@ -79,7 +79,6 @@ export async function buildDistributables(log: ToolingLog, options: BuildOptions
await run(Tasks.BuildCanvasShareableRuntime);
}
await run(Tasks.BuildKibanaPlatformPlugins);
await run(Tasks.TranspileBabel);
await run(Tasks.CreatePackageJson);
await run(Tasks.InstallDependencies);
await run(Tasks.GeneratePackagesOptimizedAssets);
@ -94,7 +93,6 @@ export async function buildDistributables(log: ToolingLog, options: BuildOptions
await run(Tasks.UpdateLicenseFile);
await run(Tasks.RemovePackageJsonDeps);
await run(Tasks.CleanPackageManagerRelatedFiles);
await run(Tasks.CleanTypescript);
await run(Tasks.CleanExtraFilesFromModules);
await run(Tasks.CleanEmptyFolders);
await run(Tasks.FleetDownloadElasticGpgKey);

View file

@ -34,20 +34,6 @@ export const CleanPackageManagerRelatedFiles: Task = {
},
};
export const CleanTypescript: Task = {
description: 'Cleaning typescript source files that have been transpiled to JS',
async run(config, log, build) {
log.info(
'Deleted %d files',
await scanDelete({
directory: build.resolvePath(),
regularExpressions: [/\.(ts|tsx|d\.ts)$/, /tsconfig.*\.(json|tsbuildinfo)$/],
})
);
},
};
export const CleanExtraFilesFromModules: Task = {
description: 'Cleaning tests, examples, docs, etc. from node_modules',
@ -198,7 +184,7 @@ export const CleanExtraFilesFromModules: Task = {
'**/@elastic/eui/test-env',
'**/@elastic/eui/optimize',
'**/@elastic/eui/i18ntokens.json',
]);
]).concat([/\.(ts|tsx|d\.ts)$/, /tsconfig.*\.(json|tsbuildinfo)$/]);
log.info(
'Deleted %d files',

View file

@ -6,65 +6,69 @@
* Side Public License, v 1.
*/
import { discoverBazelPackages } from '@kbn/bazel-packages';
import { resolve } from 'path';
import { copyAll, Task } from '../lib';
import globby from 'globby';
import Piscina from 'piscina';
import { Task } from '../lib';
export const CopySource: Task = {
description: 'Copying source into platform-generic build directory',
async run(config, log, build) {
await copyAll(config.resolveFromRepo(), build.resolvePath(), {
dot: false,
select: [
'yarn.lock',
'.npmrc',
'kibana.d.ts',
'config/kibana.yml',
'config/node.options',
'typings/**',
'tsconfig*.json',
'.i18nrc.json',
'src/**',
const select = [
'yarn.lock',
'.npmrc',
'config/kibana.yml',
'config/node.options',
'.i18nrc.json',
'src/**',
'x-pack/plugins/**',
'x-pack/.i18nrc.json',
'x-pack/package.json',
'x-pack/plugins/**',
'x-pack/.i18nrc.json',
'x-pack/package.json',
'!{src,x-pack}/**/*.{test,test.mocks,mock,mocks}.*',
'!{src,x-pack}/**/target/**',
'!{src,x-pack}/**/{__stories__,storybook,.storybook}/**',
'!{src,x-pack}/**/{test,tests,test_resources,test_data,__tests__,manual_tests,__jest__,__snapshots__,__mocks__,mock_responses,mocks,fixtures,__fixtures__,cypress,integration_tests}/**',
'!src/dev/**',
'!src/**/mocks.{js,ts}',
'!src/cli*/dev.js',
'!src/plugins/telemetry/schema/**',
'!src/core/server/core_app/assets/favicons/favicon.distribution.{ico,png,svg}',
'!src/setup_node_env/index.js',
'!src/dev/**',
'!src/**/mocks.{js,ts}',
'!src/cli/repl/**',
'!src/cli*/dev.js',
'!src/plugins/telemetry/schema/**',
'!src/core/server/core_app/assets/favicons/favicon.distribution.{ico,png,svg}',
'!src/functional_test_runner/**',
'!src/setup_node_env/index.js',
'!x-pack/plugins/telemetry_collection_xpack/schema/**',
'!x-pack/plugins/**/{ftr_e2e,e2e}/**',
'!x-pack/plugins/**/scripts/**',
'!x-pack/plugins/telemetry_collection_xpack/schema/**',
'!**/jest*',
'!**/*.{story,stories}.{js,ts}',
'!**/test_mocks.ts',
'!**/*.{scss,console,d.ts,sh,md,mdx,asciidoc,docnav.json}',
'!**/*.{test,test.mocks,mock,mocks,spec}.*',
'!**/{packages,dev_docs,docs,public,__stories__,storybook,.storybook,ftr_e2e,e2e,scripts,test,tests,test_resources,test_data,__tests__,manual_tests,__jest__,__snapshots__,__mocks__,mock_responses,mocks,fixtures,__fixtures__,cypress,integration_tests}/**',
];
'!**/jest.config.js',
'!**/jest.config.dev.js',
'!**/jest.integration.config.js',
'!**/jest_setup.{js,ts}',
'!**/*.{story,stories}.{js,ts}',
'!**/test_mocks.ts',
'!**/*.{sh,md,mdx,asciidoc}',
'!**/*.console',
'!**/*.scss',
'!**/*.docnav.json',
'!**/{dev_docs,docs}/**',
'!**/public/**/*.{js,ts,tsx,json}',
// explicitly ignore all bazel package locations, even if they're not selected by previous patterns
...(await discoverBazelPackages()).map((pkg) => `!${pkg.normalizedRepoRelativeDir}/**`),
],
const piscina = new Piscina({
filename: resolve(__dirname, 'copy_source_worker.js'),
});
const globbyOptions = { cwd: config.resolveFromRepo('.') };
const tasks = (
await Promise.all([
globby(select, globbyOptions),
globby(
[
'{x-pack,src}/plugins/*/public/assets/**',
'src/plugins/data/server/scripts/**',
'x-pack/plugins/fleet/server/services/epm/packages/**',
'!x-pack/plugins/fleet/server/services/epm/packages/*.test.ts',
],
globbyOptions
),
])
)
.flat()
.map((source) => piscina.run({ source }));
await Promise.all(tasks);
await piscina.destroy();
},
};

View file

@ -0,0 +1,64 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
const { writeFileSync, readFileSync, copyFileSync, mkdirSync } = require('fs');
const { resolve, extname, dirname } = require('path');
const { optimize } = require('svgo');
const { transformFileSync } = require('@babel/core');
const presets = require('@kbn/babel-preset/node_preset');
const { REPO_ROOT } = require('@kbn/utils');
const BUILD_ROOT = resolve(REPO_ROOT, 'build', 'kibana');
const babelOptions = {
presets: [[presets, { 'kibana/rootDir': REPO_ROOT }]],
cwd: REPO_ROOT,
babelrc: false,
sourceMaps: false,
ast: false,
};
const svgOptions = {
removeComments: false,
};
module.exports = ({ source }) => {
const absoluteSource = resolve(REPO_ROOT, source);
const absoluteDest = resolve(BUILD_ROOT, source);
mkdirSync(dirname(absoluteDest), { recursive: true });
const extension = extname(source);
switch (extension) {
case '.js':
case '.ts':
case '.tsx':
const output = transformFileSync(absoluteSource, babelOptions);
if (output.code) {
const dest = absoluteDest.substring(0, absoluteDest.lastIndexOf('.')) + '.js';
writeFileSync(dest, output.code);
}
break;
case '.svg':
const input = readFileSync(absoluteSource, 'utf-8');
const result = optimize(input, {
path: source,
...svgOptions,
});
if (result.error) throw new Error(result.error);
if (typeof result.data === 'string') {
const output = Buffer.from(result.data);
writeFileSync(absoluteDest, output);
}
break;
default:
copyFileSync(absoluteSource, absoluteDest);
}
};

View file

@ -32,7 +32,6 @@ export * from './assert_file_time';
export * from './assert_no_uuid';
export * from './assert_path_length';
export * from './replace_favicon';
export * from './transpile_babel_task';
export * from './verify_env_task';
export * from './write_sha_sums_task';
export * from './fetch_agent_versions_list';

View file

@ -1,78 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { discoverBazelPackages } from '@kbn/bazel-packages';
import { pipeline } from 'stream';
import { promisify } from 'util';
// @ts-expect-error @types/gulp-babel is outdated and doesn't work for gulp-babel v8
import gulpBabel from 'gulp-babel';
import vfs from 'vinyl-fs';
import { Task, Build } from '../lib';
const asyncPipeline = promisify(pipeline);
const transpileWithBabel = async (srcGlobs: string[], build: Build, preset: string) => {
const buildRoot = build.resolvePath();
await asyncPipeline(
vfs.src(
srcGlobs.concat([
'!**/*.d.ts',
'!**/node_modules/**',
'!**/bower_components/**',
'!**/__tests__/**',
...(await discoverBazelPackages()).map((pkg) => `!${pkg.normalizedRepoRelativeDir}/**`),
]),
{
cwd: buildRoot,
}
),
gulpBabel({
babelrc: false,
presets: [
[
preset,
{
// we pass this so that @kbn/babel-plugin-synthetic-packages can correct absolute imports
// for packages to relative requests, without having to discover the Kibana repo root, which
// it can't do because at this point in the build there isn't a package.json file for the
// plugin to find.
'kibana/rootDir': build.resolvePath('.'),
},
],
],
}),
vfs.dest(buildRoot)
);
};
export const TranspileBabel: Task = {
description: 'Transpiling sources with babel',
async run(config, log, build) {
// Transpile server code
await transpileWithBabel(
['**/*.{js,ts,tsx}', '!**/public/**'],
build,
require.resolve('@kbn/babel-preset/node_preset')
);
// Transpile client code
// NOTE: For the client, as we have the optimizer, we are only
// pre-transpiling the typescript based files
await transpileWithBabel(
['**/public/**/*.{ts,tsx}'],
build,
require.resolve('@kbn/babel-preset/webpack_preset')
);
},
};

View file

@ -12,6 +12,7 @@ import { AggConfigs } from '../agg_configs';
import { mockAggTypesRegistry } from '../test_helpers';
import { IMetricAggConfig } from './metric_agg_type';
import { KBN_FIELD_TYPES } from '../../..';
import * as tabifyModule from '../../tabify/tabify_docs';
describe('Top hit metric', () => {
let aggDsl: Record<string, any>;
@ -79,6 +80,11 @@ describe('Top hit metric', () => {
aggDsl = aggConfig.toDsl(aggConfigs);
};
const flattenSpy = jest.spyOn(tabifyModule, 'flattenHit');
beforeEach(() => {
jest.clearAllMocks();
});
it('should return a label prefixed with Last if sorting in descending order', () => {
init({ fieldName: 'bytes' });
expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('Last bytes');
@ -208,6 +214,7 @@ describe('Top hit metric', () => {
init({ fieldName: '@tags' });
expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toBe('aaa');
expect(flattenSpy).toHaveLastReturnedWith({ '@tags': 'aaa' });
});
it('should return the object if the field value is an object', () => {
@ -232,6 +239,7 @@ describe('Top hit metric', () => {
expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual({
label: 'aaa',
});
expect(flattenSpy).toHaveLastReturnedWith({ '@tags': { label: 'aaa' } });
});
it('should return an array if the field has more than one values', () => {
@ -251,6 +259,7 @@ describe('Top hit metric', () => {
init({ fieldName: '@tags' });
expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual(['aaa', 'bbb']);
expect(flattenSpy).toHaveLastReturnedWith({ '@tags': ['aaa', 'bbb'] });
});
it('should return undefined if the field is not in the source nor in the doc_values field', () => {

View file

@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n';
import { aggTopHitFnName } from './top_hit_fn';
import { IMetricAggConfig, MetricAggType } from './metric_agg_type';
import { METRIC_TYPES } from './metric_agg_types';
import { KBN_FIELD_TYPES } from '../../..';
import { flattenHit, KBN_FIELD_TYPES } from '../../..';
import { BaseAggParams } from '../types';
export interface AggParamsTopHit extends BaseAggParams {
@ -216,7 +216,7 @@ export const getTopHitMetricAgg = () => {
let values = _.flatten(
hits.map((hit) =>
path === '_source' ? hit._source : agg.getIndexPattern().flattenHit(hit, true)[path]
path === '_source' ? hit._source : flattenHit(hit, agg.getIndexPattern())[path]
)
);

View file

@ -8,6 +8,7 @@
import { i18n } from '@kbn/i18n';
import { ThemeServiceSetup } from '@kbn/core/public';
import type { IEmbeddable } from '@kbn/embeddable-plugin/public';
import { toMountPoint } from '@kbn/kibana-react-plugin/public';
import { Action, createAction, IncompatibleActionError } from '@kbn/ui-actions-plugin/public';
// for cleanup esFilters need to fix the issue https://github.com/elastic/kibana/issues/131292
@ -21,9 +22,7 @@ export const ACTION_GLOBAL_APPLY_FILTER = 'ACTION_GLOBAL_APPLY_FILTER';
export interface ApplyGlobalFilterActionContext {
filters: Filter[];
timeFieldName?: string;
// Need to make this unknown to prevent circular dependencies.
// Apps using this property will need to cast to `IEmbeddable`.
embeddable?: unknown;
embeddable?: IEmbeddable;
// controlledBy is an optional key in filter.meta that identifies the owner of a filter
// Pass controlledBy to cleanup an existing filter(s) owned by embeddable prior to adding new filters
controlledBy?: string;

View file

@ -17,6 +17,7 @@
{ "path": "../../core/tsconfig.json" },
{ "path": "../data/tsconfig.json" },
{ "path": "../data_views/tsconfig.json" },
{ "path": "../embeddable/tsconfig.json" },
{ "path": "../usage_collection/tsconfig.json" },
{ "path": "../kibana_utils/tsconfig.json" },
{ "path": "../kibana_react/tsconfig.json" },

View file

@ -6,7 +6,7 @@
*/
import 'core-js/stable';
import 'regenerator-runtime/runtime';
import '@babel/runtime/regenerator';
import 'whatwg-fetch';
import 'jquery';
import '@kbn/flot-charts';

View file

@ -28,7 +28,15 @@ import {
jest.mock('../../hooks/endpoint/use_get_endpoint_policy_response');
jest.mock('../../hooks/endpoint/use_get_endpoint_details');
describe('when on the policy response', () => {
// FLAKY: https://github.com/elastic/kibana/issues/136272
// FLAKY: https://github.com/elastic/kibana/issues/139033
// FLAKY: https://github.com/elastic/kibana/issues/139032
// FLAKY: https://github.com/elastic/kibana/issues/139031
// FLAKY: https://github.com/elastic/kibana/issues/139030
// FLAKY: https://github.com/elastic/kibana/issues/139028
// FLAKY: https://github.com/elastic/kibana/issues/139029
// FLAKY: https://github.com/elastic/kibana/issues/139027
describe.skip('when on the policy response', () => {
const docGenerator = new EndpointDocGenerator();
const createPolicyResponse = (
overallStatus: HostPolicyResponseActionStatus = HostPolicyResponseActionStatus.success,

View file

@ -1,7 +1,7 @@
# Click the run button of each step to enable the module
# Upload scripts
# 1. Script to assign risk level based on risk score
PUT _scripts/ml_userriskscore_levels_script_{{space_name}}
PUT _scripts/ml_userriskscore_levels_script
{
"script": {
"lang": "painless",
@ -10,7 +10,7 @@ PUT _scripts/ml_userriskscore_levels_script_{{space_name}}
}
# 2. Map script for the User Risk Score transform
PUT _scripts/ml_userriskscore_map_script_{{space_name}}
PUT _scripts/ml_userriskscore_map_script
{
"script": {
"lang": "painless", "source": "// Get running sum of risk score per rule name per shard\\\\\nString rule_name = doc[\"signal.rule.name\"].value;\ndef stats = state.rule_risk_stats.getOrDefault(rule_name, 0.0);\nstats = doc[\"signal.rule.risk_score\"].value;\nstate.rule_risk_stats.put(rule_name, stats);"
@ -18,7 +18,7 @@ PUT _scripts/ml_userriskscore_map_script_{{space_name}}
}
# 3. Reduce script for the User Risk Score transform
PUT _scripts/ml_userriskscore_reduce_script_{{space_name}}
PUT _scripts/ml_userriskscore_reduce_script
{
"script": {
"lang": "painless",
@ -28,7 +28,7 @@ PUT _scripts/ml_userriskscore_reduce_script_{{space_name}}
# 4. Upload ingest pipeline
# Ingest pipeline to add ingest timestamp and risk level to documents
PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline_{{space_name}}
PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline
{
"processors": [
{
@ -49,7 +49,7 @@ PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline_{{space_name}}
},
{
"script": {
"id": "ml_userriskscore_levels_script_{{space_name}}",
"id": "ml_userriskscore_levels_script",
"params": {
"risk_score": "risk_stats.risk_score"
}
@ -97,7 +97,7 @@ PUT _transform/ml_userriskscore_pivot_transform_{{space_name}}
{
"dest": {
"index": "ml_user_risk_score_{{space_name}}",
"pipeline": "ml_userriskscore_ingest_pipeline_{{space_name}}"
"pipeline": "ml_userriskscore_ingest_pipeline"
},
"frequency": "1h",
"pivot": {
@ -112,7 +112,7 @@ PUT _transform/ml_userriskscore_pivot_transform_{{space_name}}
"combine_script": "return state",
"init_script": "state.rule_risk_stats = new HashMap();",
"map_script": {
"id": "ml_userriskscore_map_script_{{space_name}}"
"id": "ml_userriskscore_map_script"
},
"params": {
"max_risk": 100,
@ -120,7 +120,7 @@ PUT _transform/ml_userriskscore_pivot_transform_{{space_name}}
"zeta_constant": 2.612
},
"reduce_script": {
"id": "ml_userriskscore_reduce_script_{{space_name}}"
"id": "ml_userriskscore_reduce_script"
}
}
}
@ -135,7 +135,7 @@ PUT _transform/ml_userriskscore_pivot_transform_{{space_name}}
},
"source": {
"index": [
".siem-signals-{{space_name}}"
".alerts-security.alerts-{{space_name}}"
],
"query": {
"bool": {

View file

@ -4,7 +4,7 @@ exports[`readPrebuiltDevToolContentRoute should read content from "enable_host_r
"# Click the run button of each step to enable the module
# Upload scripts
# 1. Script to assign risk level based on risk score
PUT _scripts/ml_userriskscore_levels_script_default
PUT _scripts/ml_userriskscore_levels_script
{
\\"script\\": {
\\"lang\\": \\"painless\\",
@ -13,7 +13,7 @@ PUT _scripts/ml_userriskscore_levels_script_default
}
# 2. Map script for the User Risk Score transform
PUT _scripts/ml_userriskscore_map_script_default
PUT _scripts/ml_userriskscore_map_script
{
\\"script\\": {
\\"lang\\": \\"painless\\", \\"source\\": \\"// Get running sum of risk score per rule name per shard\\\\\\\\\\\\\\\\\\\\nString rule_name = doc[\\\\\\"signal.rule.name\\\\\\"].value;\\\\ndef stats = state.rule_risk_stats.getOrDefault(rule_name, 0.0);\\\\nstats = doc[\\\\\\"signal.rule.risk_score\\\\\\"].value;\\\\nstate.rule_risk_stats.put(rule_name, stats);\\"
@ -21,7 +21,7 @@ PUT _scripts/ml_userriskscore_map_script_default
}
# 3. Reduce script for the User Risk Score transform
PUT _scripts/ml_userriskscore_reduce_script_default
PUT _scripts/ml_userriskscore_reduce_script
{
\\"script\\": {
\\"lang\\": \\"painless\\",
@ -31,7 +31,7 @@ PUT _scripts/ml_userriskscore_reduce_script_default
# 4. Upload ingest pipeline
# Ingest pipeline to add ingest timestamp and risk level to documents
PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline_default
PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline
{
\\"processors\\": [
{
@ -52,7 +52,7 @@ PUT _ingest/pipeline/ml_userriskscore_ingest_pipeline_default
},
{
\\"script\\": {
\\"id\\": \\"ml_userriskscore_levels_script_default\\",
\\"id\\": \\"ml_userriskscore_levels_script\\",
\\"params\\": {
\\"risk_score\\": \\"risk_stats.risk_score\\"
}
@ -100,7 +100,7 @@ PUT _transform/ml_userriskscore_pivot_transform_default
{
\\"dest\\": {
\\"index\\": \\"ml_user_risk_score_default\\",
\\"pipeline\\": \\"ml_userriskscore_ingest_pipeline_default\\"
\\"pipeline\\": \\"ml_userriskscore_ingest_pipeline\\"
},
\\"frequency\\": \\"1h\\",
\\"pivot\\": {
@ -115,7 +115,7 @@ PUT _transform/ml_userriskscore_pivot_transform_default
\\"combine_script\\": \\"return state\\",
\\"init_script\\": \\"state.rule_risk_stats = new HashMap();\\",
\\"map_script\\": {
\\"id\\": \\"ml_userriskscore_map_script_default\\"
\\"id\\": \\"ml_userriskscore_map_script\\"
},
\\"params\\": {
\\"max_risk\\": 100,
@ -123,7 +123,7 @@ PUT _transform/ml_userriskscore_pivot_transform_default
\\"zeta_constant\\": 2.612
},
\\"reduce_script\\": {
\\"id\\": \\"ml_userriskscore_reduce_script_default\\"
\\"id\\": \\"ml_userriskscore_reduce_script\\"
}
}
}
@ -138,7 +138,7 @@ PUT _transform/ml_userriskscore_pivot_transform_default
},
\\"source\\": {
\\"index\\": [
\\".siem-signals-default\\"
\\".alerts-security.alerts-default\\"
],
\\"query\\": {
\\"bool\\": {

View file

@ -46,6 +46,11 @@
resolved "https://registry.yarnpkg.com/@appland/sql-parser/-/sql-parser-1.5.1.tgz#331d644364899858ba7aa6e884e2492596990626"
integrity sha512-R2FBHUOdzdBPUCCiL6WvXT9Fu+Xaj89exa1g+wMlatIe5z6vqitzLkY5a9zGDL3IByTiwbR0jiYuvFMfhp1Q+Q==
"@assemblyscript/loader@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06"
integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==
"@babel/cli@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.18.9.tgz#1fbc8424e5f74ae08bc61ec71609af29287d82d2"
@ -14843,6 +14848,11 @@ event-target-shim@^5.0.0:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
eventemitter-asyncresource@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b"
integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==
eventemitter2@^6.4.3:
version "6.4.3"
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820"
@ -16435,16 +16445,6 @@ gud@^1.0.0:
resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
gulp-babel@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-8.0.0.tgz#e0da96f4f2ec4a88dd3a3030f476e38ab2126d87"
integrity sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==
dependencies:
plugin-error "^1.0.1"
replace-ext "^1.0.0"
through2 "^2.0.0"
vinyl-sourcemaps-apply "^0.2.0"
gulp-brotli@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/gulp-brotli/-/gulp-brotli-3.0.0.tgz#7f5a1d8a6d43cab28056f9e56f29ae071dcfe4b4"
@ -16792,6 +16792,20 @@ hdr-histogram-js@^1.2.0:
base64-js "^1.2.0"
pako "^1.0.3"
hdr-histogram-js@^2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5"
integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==
dependencies:
"@assemblyscript/loader" "^0.10.1"
base64-js "^1.2.0"
pako "^1.0.3"
hdr-histogram-percentiles-obj@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c"
integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==
he@1.2.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@ -21106,6 +21120,14 @@ next-tick@1:
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
nice-napi@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b"
integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==
dependencies:
node-addon-api "^3.0.0"
node-gyp-build "^4.2.2"
nice-try@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
@ -21147,6 +21169,11 @@ node-abi@^3.3.0:
dependencies:
semver "^7.3.5"
node-addon-api@^3.0.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
node-addon-api@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
@ -21188,6 +21215,11 @@ node-gyp-build-optional-packages@5.0.3:
resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17"
integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==
node-gyp-build@^4.2.2:
version "4.5.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40"
integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==
node-gyp-build@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"
@ -22481,6 +22513,17 @@ pirates@^4.0.1, pirates@^4.0.5:
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
piscina@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154"
integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==
dependencies:
eventemitter-asyncresource "^1.0.0"
hdr-histogram-js "^2.0.1"
hdr-histogram-percentiles-obj "^3.0.0"
optionalDependencies:
nice-napi "^1.0.2"
pixelmatch@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
@ -26967,7 +27010,7 @@ svg-tags@^1.0.0:
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
svgo@^2.7.0:
svgo@^2.7.0, svgo@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
@ -28983,7 +29026,7 @@ vinyl-sourcemap@^1.1.0:
remove-bom-buffer "^3.0.0"
vinyl "^2.0.0"
vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1:
vinyl-sourcemaps-apply@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705"
integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=